数据字典内容包括:
DBA:所有方案中的视图(可以看到所有数据字典里的信息)
ALL:用户可以访问的视图(可以看到所有这个用户可以看到的信息)
USER:用户方案中的视图(仅仅是这个用户拥有的信息)
三者直接的关系:
Oracle为了便于汇总数据字典表的信息,把所有的数据字典都汇集到dictionary表里了,通过对这个表的查询,我们可以很方便的找到数据库提供的数据字典。(数据库中一共有835张表)
静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_xxx、 all_xxx、 dba_xxx。
USER_XXX:该视图存储了当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
ALL_XXX:该试图存储了当前用户能够访问的对象的信息, 而不是当前用户拥有的对象。(与user_xxx相比,all_xxx 并不需要拥有该对象,只需要具有访问该对象的权限即可)
DBA_XXX:该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
user_tablespaces:表空间使用状态
SQL> select tablespace_name,status from user_tablespaces;
![]()
user_free_space:查看用户表空间的剩余空间
案例:select tablespace_name,sum(bytes)/(1024*1024),sum(blocks)/(1024*1024) from user_free_space group by tablespace_name;
user_users:主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、缺省表空间、创建时间等。
![]()
user_role_privs:查看当前用户的角色。
SQL>SELECT * FROM user_role_privs;
SQL>SELECT * FROM user_role_privs;
比如下面是SYS的角色
SQL> select * from user_role_privs;部分截图
user_sys_privs:查看当前用户的系统权限和表级权限
SQL>SELECT * FROM user_sys_privs;
user_sys_privs:下面是SYS用户的系统权限和表级权限
![]()
user_tables:主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。通过此视图可以清楚了解当前用户可以操作的表有哪些。
SQL> select table_name,tablespace_name from user_tables;
![]()
select * from user_objects;user_objects:查询该用户拥有哪些数据库对象,对象包括表、视图、存储过程、触发器、包、索引、序列、JAVA文件等
select object_name,created from user_objects ;
all_objects:查询某一用户下的所有表、过程、函数等信息。
select owner,object_name,object_type from all_objects where owner='SCOTT';
user_segments:查看某表的大小
SQL> select sum(bytes)/(1024*1024) "表大小(M兆)"
2 from user_segments where segment_name=UPPER('&table_name');
![]()
user_indexes 查看该用户拥有哪些索引
SQL> select index_name,table_owner,table_name,tablespace_name from user_indexes;
查看索引个数和类别
SQL>SELECT index_name,index_type,table_name FROM user_indexes ORDER BY table_name;
查看索引被索引的字段
SQL> col INDEX_NAME for a15
SQL> col TABLE_NAME for a10
SQL> col COLUMN_NAME for a30
SQL> col COLUMN_NAME for a15
SQL>SELECT * FROM user_ind_columns WHERE index_name=UPPER('&index_name');
查看索引的大小
SQL>SELECT SUM(bytes)/(1024*1024)AS size(M)
FROM user_segments WHERE segment_name=UPPER('&index_name');
user_views:查询该用户拥有哪些视图以及视图名
查看数据库的版本信息
版本信息:
SQL> select * from v$version;
查看数据库的数据大小 和 总的大小
select sum(bytes/1024/1024/1024) from user_segment where owner = 'ETL' and segment_type = 'TABLE';
select sum(bytes/1024/1024/1024) from user_segment where owner = 'ETL';