从哪里能查询到数据字典信息?
对于初学者来说,从什么地方法查询数据字典的信息是一个基本的要求,因为,你必须先了解从哪里查询到数据字典的名称及其存储的信息内容,你才能从这些数据字典中查询你需要的信息。
✿问题的提出
在你想获取某个对象/或Oracle系统执行情况信息时,你可以从数据字典和性能视图中查询到。对于新手和熟悉Oracle系统的使用者来说,都必须了解的数据字典就是DICT了。DICT 包含有数据字典信息和性能视图的信息。
✿实现技术
为了获取Oracle系统的数据字典和视图的信息,你最好以sysdba登录Oracle系统,然后查询DICT数据字典即可。
✿实现步骤
你要DBA或sysdba登录到SQL>下,然后查询DICT即可:
-- --适应版本:Oracle 9i~12c -- -- 连接到: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show user USER 为 "SYS" SQL> SQL> desc dict 名称 是否为空? 类型 ----------------------------------------- -------- ------------------ TABLE_NAME VARCHAR2(30) COMMENTS VARCHAR2(4000)
SQL> col comments for a70 SQL> set line 120 SQL>select * from dict where rownum<11 ;
TABLE_NAME COMMENTS ------------------------------ --------------------------------------------------------------------- DBA_2PC_NEIGHBORS information about incoming and outgoing connections for pending transa ctions
DBA_2PC_PENDING info about distributed transactions awaiting recovery DBA_ADDM_FDG_BREAKDOWN DBA_ADDM_FINDINGS DBA_ADDM_INSTANCES DBA_ADDM_SYSTEM_DIRECTIVES DBA_ADDM_TASKS DBA_ADDM_TASK_DIRECTIVES DBA_ADVISOR_ACTIONS |
✿说明
Oracle 系统数据字典多数都是以DBA_xxx命名;而性能视图均以V$xxx命名,如果你的Oracle环境属于RAC集群的话,则要查询的性能视图均以GV$xxx命名。
如何获取Oracle系统性能视图
Oracle系统性能视图自动记录Oracle系统运行时的相关数据,比如:某个SQL运行所使用CPU的时间、排序操作所使用的内存大小等。
✿问题的提出
当你希望查询某项Oracle 系统运行期间的信息时,你需要查询相应的性能视图(也称动态性能视图),比如,你要查询当前会话登录的时间,则需要访问V$MYSTAT视图。那么如何查询到当前Oracle系统的所有性能视图信息呢?
✿实现技术
为了获取Oracle系统的数据字典和视图的信息,你最好以sysdba登录Oracle系统,然后查询DICT数据字典即可。
✿实现步骤
下面脚本从DICT中查询表名称和表的注释信息:
-- --适应版本:Oracle 9i~12c -- CONNECT sys/password AS SYSDBA -- set line 160 col comments for a70 col table_name for a30
Select table_name,comments from dict where table_name like ‘V$%’ ;
|
✿说明
Oracle 系统性能视图除了以V$xxx命名外,性能视图所记录的信息基本是动态的,所谓动态就是指Oracle系统在运行中,不断采集Oracle实例运行的情况信息,并记录到性能视图中,此外,从Oracle 10g开始,部分性能视图保留的信息可持续1周时间。
用户从哪里查询自己拥有对象的信息?
所谓用户对象指的是某个用户拥有的表、视图、索引、存储过程等的实体。对于普通用户(没有DBA权限)来说,主要关心自己使用和维护的对象的基本信息,比如,当前用户有哪些表、哪些索引等。
✿问题的提出
在使用和维护Oracle系统的应用过程中,用户需要了解当前用户的表、索引、视图等对象信息,从而对这些对象进行维护。那么,用户从哪些数据字典中看到属于自己的对象的信息呢?
✿实现技术
用户拥有的对象就是指用户创建的对象,要查询到用户拥有对象的信息,需要查询两组数据字典,首选,你要了解当前用户拥有的对象的基本信息,然后再查询某个对象的详细信息。
✿实现步骤
下面我们给出用户查询自己用户对象的基本信息,然后再查询某个对象的详细信息:
-- --适应版本:Oracle 12c -- 连接到: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show user USER 为 "SCOTT" SQL> SQL> alter session set container=pdborcl;
会话已更改。
SQL> desc user_objects 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- OBJECT_NAME VARCHAR2(128) SUBOBJECT_NAME VARCHAR2(128) OBJECT_ID NUMBER DATA_OBJECT_ID NUMBER OBJECT_TYPE VARCHAR2(23) CREATED DATE LAST_DDL_TIME DATE TIMESTAMP VARCHAR2(19) STATUS VARCHAR2(7) TEMPORARY VARCHAR2(1) GENERATED VARCHAR2(1) SECONDARY VARCHAR2(1) NAMESPACE NUMBER EDITION_NAME VARCHAR2(128) SHARING VARCHAR2(13) EDITIONABLE VARCHAR2(1) ORACLE_MAINTAINED VARCHAR2(1)
SQL> --查询对象基本信息 -- Col object_type for a20 Col object_name for a30 Select object_type,object_name,status,created from user_objects ; -- --查询表的信息: -- Select table_name,tablespace_name,initial_extents,next_extent From user_tables table_name like ‘xxx’; -- --查询索引的信息: -- Select index_name,table_name from user_indexes Order by table_name; |
✿说明
从这里给出的样例,你可能已经明白,一般维护和开发人员都需要了解和查询user_objects数据字典信息,从中可以了解到当前用户拥有的对象的基本信息,然后再去查询某个具体对象的详细信息。这里给出只是入门级的查询脚本,后面章节有较复杂的数据字典样例。

Oready即为“One Technology Ready”!
Oready不仅仅是数据库领域的专家,同时也是一个社区,我们汇集百位数据库领域资深顾问、讲师,服务于数据中心的技术支持与技能传授,注重对客户的关键数据库运营支撑,强调经验的分享-Skill Transfer,聚焦数据中心的完美结合.




