一、数据字典
1.简介
数据字典的内容包括逻辑结构和物理结构、数据库对象、空间分配信息、Oracle用户名、权限和角色信息、列的约束信息。
2.分类
(1)内部表x$......
①常见的有X$BH和X$KSMSP
②在Oracle启动时自动创建,只有管理员有权限
(2)数据字典表......$
①数据字典表中存储的是oracle系统数据,如表、函数、过程等
②数据字典表的表名都以$结尾
③数据字典表的owner只能是数据库管理员sys
④不能被直接查询和使用
(3)数据字典视图user_....../all_....../dba_......
①以数据字典表为基础创建的视图,可以被使用和查询,静态
(4)动态性能视图gv$....../v$......
①以X$内部表为基础的创建的视图,可以被使用和查询,动态,记录一个变化的视图,在性能调优方面有很大的运用价值。
3.常用数字字典
(1)数据字典视图的分类
①dba_
----有关整个数据库中对象的信息
----dba权限的用户可查询和使用,那么要如何查询哪些用户有dba权限呢?
=>可以通过查询数据字典视图dba_role_privs查询
SQL> select * from dba_role_privs where granted_role='DBA';
GRANTEE
--------------------------------------------------------------------------------
GRANTE ADMIN_ DELEGA DEFAUL COMMON INHERI
------ ------ ------ ------ ------ ------
SCOTT
DBA NO NO YES NO NO
SYS
DBA YES NO YES YES YES
SYSTEM
DBA NO NO YES YES YES
------常见的dba_数据字典视图
dba_catalog描述表、视图、同义词
SQL> select owner,table_name,table_type from dba_catalog where table_type='TABLE';
dba_tab_colums描述表、视图的列
SQL> select table_name,owner,column_name from dba_tab_columns fetch first 5 rows
only;
data_tablespaces描述表空间信息(表空间名、块大小、状态)
SQL> select tablespace_name,block_size,status from dba_tablespaces;
dba_source描述存储函数、触发器、包的源代码、包的所有者&类型&名称
SQL> select owner,name,type from dba_source where owner='SYSTEM' and type='PACKAGE BODY';
未选定行
②all_
用户可访问的对象的信息(所属&有权限)
----常用数据字典视图
all_tables描述当前用户可访问的所有表信息(表名、所有者等)
SQL> select owner,table_name,tablespace_name from all_tables fetch first 5 rows only;
OWNER
--------------------------------------------------------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------------------------------------
SYS
TS$
SYSTEM
SYS
ICOL$
SYSTEM
OWNER
--------------------------------------------------------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------------------------------------
SYS
USER$
SYSTEM
SYS
CDEF$
OWNER
--------------------------------------------------------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------------------------------------
SYSTEM
SYS
CCOL$
SYSTEM
all_users描述用户信息(用户名、创建日期等等)
SQL> select * from all_users where user_id>4 and user_id<10;
USERNAME USER_ID CREATED COMMO OR INHERI DEFAULT_COLLATION IMPLICIT ALL_SH
-------------------- ------- --------------- ----- -- ------ -------------------- ---------- ------
AUDSYS 8 30-5月 -19 YES Y YES USING_NLS_COMP NO NO
SYSTEM 9 30-5月 -19 YES Y YES USING_NLS_COMP NO NO
all_constraints描述约束信息、表名
SQL> select constraint_name,table_name,owner from all_constraints fetch first 5 rows only;
all_procedures描述存储过程相关信息(过程名、所有者)
SQL> select owner,procedure_name from all_procedures fetch first 5 rows only;
③user_
----存储用户所拥有的对象信息
-----常用数据字典视图
user_tables存储表名、列数及其他关于表的信息,例如要查询scott用户的表相关信息怎么实现?
SQL> conn scott/tiger
已连接。
SQL> select table_name,tablespace_name from user_tables;
TABLE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------------------------------------
DEPT
USERS
EMP
USERS
BONUS
USERS
TABLE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------------------------------------
SALGRADE
USERS
user_objects存储数据库对象名称、数据库对象类型及其他信息。例如要查询当前用户可查询的数据库相关信息可以这样操作:
SQL> select object_name,object_type from user_objects where object_name like 'A%'
;
未选定行
SQL> select object_name,object_type from user_objects;
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPE
----------------------------------------------
PK_DEPT
INDEX
DEPT
TABLE
EMP
TABLE
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPE
----------------------------------------------
PK_EMP
INDEX
BONUS
TABLE
SALGRADE
TABLE
已选择 6 行。
user_triggers触发器的名称、类型及其相关信息
SQL> select trigger_name,trigger_type from user_triggers;
未选定行
user_indexes存储索引名称、索引所属表名称
SQL> select index_name,table_name from user_indexes;
INDEX_NAME
--------------------------------------------------------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
PK_DEPT
DEPT
PK_EMP
EMP
二、总结
user_objects相比all_objects、dba_objects多了一列owner
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(18)
EDITIONABLE VARCHAR2(1)
ORACLE_MAINTAINED VARCHAR2(1)
APPLICATION VARCHAR2(1)
DEFAULT_COLLATION VARCHAR2(100)
DUPLICATED VARCHAR2(1)
SHARDED VARCHAR2(1)
CREATED_APPID NUMBER
CREATED_VSNID NUMBER
MODIFIED_APPID NUMBER
MODIFIED_VSNID NUMBER
SQL> desc all_objects
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(128)
OBJECT_NAME NOT NULL VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(128)
OBJECT_ID NOT NULL NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(23)
CREATED NOT NULL DATE
LAST_DDL_TIME NOT NULL DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NOT NULL NUMBER
EDITION_NAME VARCHAR2(128)
SHARING VARCHAR2(18)
EDITIONABLE VARCHAR2(1)
ORACLE_MAINTAINED VARCHAR2(1)
APPLICATION VARCHAR2(1)
DEFAULT_COLLATION VARCHAR2(100)
DUPLICATED VARCHAR2(1)
SHARDED VARCHAR2(1)
CREATED_APPID NUMBER
CREATED_VSNID NUMBER
MODIFIED_APPID NUMBER
MODIFIED_VSNID NUMBER
SQL> desc dba_objects
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
OWNER VARCHAR2(128)
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(18)
EDITIONABLE VARCHAR2(1)
ORACLE_MAINTAINED VARCHAR2(1)
APPLICATION VARCHAR2(1)
DEFAULT_COLLATION VARCHAR2(100)
DUPLICATED VARCHAR2(1)
SHARDED VARCHAR2(1)
CREATED_APPID NUMBER
CREATED_VSNID NUMBER
MODIFIED_APPID NUMBER
MODIFIED_VSNID NUMBER