Oracle数据字典

发布于:2025-03-06 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、数据字典

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


网站公告

今日签到

点亮在社区的每一天
去签到