oracle中的数据字典

数据字典
 
定义:数据字典是oracle数据库中最重要的组成部分,记录了数据库的系统
信息,它是只读表和视图的集合,数据字典的所有者为sys用户;
用户只能在数据字典上执行查询操作,而其维护和修改是由系统自动完成的!


数据字典的组成:
包括数据字典基表和数据字典视图 ,其中基表存储数据库的基本信息,普通
用户不能直接访问数据字典的基表,数据字典视图是基于数据字典基表所建
立的视图,普通用户可以通过查询数据字典视图取得系统信息.数据字典视图
主要包括user_xxx,all_xxx,dba_xxx三种类型




1)user_tables:用于显示当前用户所拥有的所有表,它只返回用户所对应方
案的所有表


比如:select table_name from user_tables;


2)all_tables:用于显示当前用户可以访问的所有表,它不仅会返回当前用户方
案的所有表,还会返回当前用户可以访问的其他方案的表


如:select table_name from all_tables;


3)dba_tables:它会显示所有方案拥有的数据库表,但是查询这种数据库字典视
图,要求用户必须是dba角色或是有select any table的系统权限


如:select table_name from dba_tables;






在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户授予
或是角色时,oracle会将权限和角色的信息存放到数据字典中;


a)通过查询dba_users可以显示所有数据库用户的详细信息;


b)通过查询数据字典视图dba_sys_privs,可以显示用户具有的系统权限


c)通过查询数据字典视图dba_tab_privs可以显示用户具有的对象权限


d)通过查询数据字典dba_col_privs可以显示用户具有的列权限


e)通过查询数据库字典视图dba_role_privs可以显示用户所具有的角色






下面将一些重要的查询语句:
1)查询oracle中所有的角色,一般是dba用户登录下;
如:select * from dba_roles;


2)查询oracle中所有的系统权限,一般是dba用户登录下;
如:select * from system_privilege_map order by name;


3)查询oracle中所有的对象权限,一般是dba用户登录下;
如:select distinct privilege from dba_tab_privs;


4)查询数据库的表空间
如:select tablespace_name  from dba_tablespaces;








select * from dba_roles;
### 查询 Oracle 数据中的系统数据字典Oracle 数据库中,系统数据字典是以一组只读视图的形式存在的,这些视图提供了关于数据库结构和其他元数据的信息。为了查询系统数据字典,可以根据不同的需求选择合适的视图。 #### 常见的系统数据字典视图分类 Oracle数据字典分为三类:USER_、ALL_ 和 DBA_ 开头的视图[^1]。 - **USER_** 视图:显示当前用户拥有的对象的相关信息。 - **ALL_** 视图:显示当前用户可以访问的对象的相关信息(包括自己拥有以及被授权访问的对象)。 - **DBA_** 视图:显示整个数据库的所有对象的相关信息,通常只有具有管理员权限的用户才能访问。 #### 查询示例 以下是一些常用的查询示例: 1. **查询表的列信息** 使用 `USER_TAB_COLUMNS` 或 `ALL_TAB_COLUMNS` 可以查看表的列定义。 ```sql SELECT column_name, data_type, data_length FROM USER_TAB_COLUMNS WHERE table_name = 'YOUR_TABLE_NAME'; ``` 2. **查询索引信息** 使用 `USER_INDEXES` 或 `ALL_INDEXES` 来获取索引的详细信息。 ```sql SELECT index_name, uniqueness FROM USER_INDEXES WHERE table_name = 'YOUR_TABLE_NAME'; ``` 3. **查询约束条件** 使用 `USER_CONSTRAINTS` 或 `ALL_CONSTRAINTS` 获取表上的约束信息。 ```sql SELECT constraint_name, constraint_type FROM USER_CONSTRAINTS WHERE table_name = 'YOUR_TABLE_NAME'; ``` 4. **查询存储过程或函数的源代码** 使用 `USER_SOURCE` 或 `ALL_SOURCE` 查看 PL/SQL 对象的源代码。 ```sql SELECT line, text FROM USER_SOURCE WHERE name = 'YOUR_PROCEDURE_OR_FUNCTION_NAME' AND type = 'PROCEDURE'; ``` 5. **查询段的空间使用情况** 使用 `USER_SEGMENTS` 或 `ALL_SEGMENTS` 查看表空间中段的大小。 ```sql SELECT segment_name, bytes / (1024 * 1024) AS size_mb FROM USER_SEGMENTS WHERE segment_name = 'YOUR_SEGMENT_NAME'; ``` 6. **查询缓存中的表** 如果想了解哪些表已经被加载到内存中,可以查询 `V$CACHE` 或其他动态性能视图。 ```sql SELECT object_name FROM V$DB_OBJECT_CACHE WHERE status = 'PINNED'; ``` #### 关于容器化后的变化 自 Oracle 12c 引入多租户架构以来,数据字典也进行了相应的调整以支持容器数据库(CDB)和可插拔数据库(PDB)。新增了一些专门针对 CDB/PDB 结构设计的数据字典视图,例如 `CDB_` 系列视图,它们允许跨多个 PDB 进行统一查询[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗兰随风小欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值