Oracle 的数据字典真的是个值得好好研究的东西,是你平时喜欢深挖数据库底层逻辑的那种感觉。X$表、V$视图、GV$视图这些,都是 Oracle 核心运行的一部分,说白了就是数据库“脑子里”怎么想的,都藏在这套表里了。
像X$表这种,Oracle 一启动就会自动生成,里面全是底层状态、参数啥的,连数据库进程都在看它。普通用户可看不了,就连你是管理员都得有SYSDBA权限才行。你要是想随便授权别人访问,还真不行,会直接报ORA-02030
错。
再说V$和GV$视图,它们可以说是日常数据库监控的主力军。GV$算是 V$的“全局版”,适用于 RAC 那种多实例的环境。想查某个视图,GV$能看到所有节点的信息,V$就只给你当前实例的。别看它们名不一样,其实底层逻辑都来自同一个地方,只是 V$多加了个INST_ID
过滤。
平时用到的V$SESSION
、V$SQL
啥的,其实都不是直接连到真实表的,它们是通过catalog.sql
脚本创建的同义词,背后真正的数据来源是V_$SESSION
这种带下划线的视图,而这又是基于 X$构建的。你看,这一层层的结构,其实还挺绕,但理清之后就顺多了。
还有个V$FIXED_VIEW_DEFINITION,这个就适合研究视图结构,尤其你想知道某个 V$到底是怎么拼出来的,用这个查就对了。顺着它还能摸到 X$那一层,配合DBA_X$OBJECTS
一起查,能挖出不少底层秘密。
,Oracle 数据字典不光是个信息仓库,更像是数据库运行的“书”。你要是做 DBA,或者开发里有调优需求,建议你多摸摸它,挺多意外收获的。嗯,如果你还没看过这几篇资料,记得收藏:
如果你最近在搞 RAC 环境,或者想写点自定义监控脚本,建议重点看看 GV$部分,查询方式不太一样,别搞错了。