Oracle数据字典
Oracle数据字典是存放有关数据的地方,它的用途是用来描述数据。数据字典可以分为静态和动态。
静态数据字典
一、静态数据字典:用户访问数据字典不会发生变化,主要是由表和视图组成,数据字典中的表是不能直接被访问的,但是我们可以访问数据字典中的视图。静态数据字典分为三类,它们的前缀分别是user_*、 all_*、 dba_*。
- user_*:该视图存储了关于当前用户下所有对象的信息
- all_* :该视图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
- dba_*:该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限
以上三类处理访问范围不同之外(权限不同),其他均具有一致性,只有SYS和拥有DBA系统权限的用户可以看到所有的视图。没有DBA权限的用户只能看到user_*和all_*视图。如果没有被授予相关的SELECT权限的话,他们是不能看到 dba_*视图的。
select * from dictionary;
dba_data_file:记录的是物理数据文件的信息,这些信息包括数据文件的名称、大小、所属表空间等信息,数据文件的基本信息
dba_tab_grant :数据库中对象所授权的权限
dba_tab_privs :查看数据库中用户的权限
dba_sys_privs:查看所用用户以及角色的特权
dba_tab_quotas:查看所有用户表空间限额
dba_ts_quotas :所有用户表空间限额
dba_uers:查看所有用户信息
dba_view:查看所有视图信息
dba_roles:显示所有角色信息
dba_tablespaces: 查询关于表空间的一些基本的数据字典
dba_free_tablespaces:显示表空间的空闲空间
dba_temp_files:临时文件的基本信息
dba_tables; dba_tab_columns: DBA 用户的所有的表的基本信息
dba_synonyms:DBA 用户的所有的同义词的基本信息
dba_sequences:DBA 用户的所有的序列的信息
dba_constraints:DBA 用户的所有的约束的信息
dba_indexes:DBA 用户的所有的索引的基本信息
dba_ind_columns :所有表及簇上压缩索引的列
dba_triggers:DBA 用户的所有的触发器的基本信息
dba_source:DBA 用户的所有的存储过程的基本信息
dba_segments:DBA 用户的所有的段的基本信息
dba_extents :DBA 用户的所有的区的基本信息
dba_objects:DBA 用户的所有的对象的基本信息
cat:当前用户可以访问的所有的基表
system.tab:当前用户可以访问的所有的基表,视图,同义词
dict:构成数据字典的所有的表信息
role_tab_privs:所有角色被授予的表对象的特权
user_sys_privs:查看自己的权限,查看当前用户的系统权限和表级权限
user_role_privs:显示用户角色,查看当前用户的角色
user_tab_privs:该视图主要是存储当前用户下对所有表的权限信息。
user_users:主要描述当前用户的信息,查看当前用户的缺省表空间,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等,所有用户相关数据
user_tables:查询该用户拥有哪些表,主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。通过此视图可以清楚了解当前用户可以操作的表有哪些。
user_objects:主要描述当前用户拥有的所有对象的信息,对象包括表、视图、存储过程、触发器、包、索引、序列等。该视图比user_tables视图更加全面
user_indexes:查询该用户拥有哪些索引
user_views:查询该用户拥有哪些视图
user_objects:查询该用户拥有哪些数据库对象,对象包括表、视图、存储过程、触发器、包、索引、序列、JAVA文件等
动态数据字典
二、动态数据字典 Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。Oracle中这些动态性能视图都是以v$开头的视图
v$_:当前实例的动态视图,包含系统管理和系统优化等所使用的视图
gv_:分布式环境下所有实例的动态视图,包括系统管理和系统优化使用的视图
v$access :该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。
v$session:该视图列出当前会话的详细信息。
v$active_instance:该视图主要描述当前数据库下的活动的实例的信息。
v$context:该视图列出当前会话的属性信息。比如命名空间、属性值等。
v$instance:数据库实例的基本信息。
v$datafile;:数据文件的基本信息
v$controlfile; 控制文件的基本信息
v$logfile:日志文件的基本信息, 有关实例重置日志组文件名及其位置的信息
v$log 从控制文件中提取有关重做日志组的信息
v$archived_dest 记录归档日志文件的路径信息
v$database:数据库的基本信息
show parameter log_archive_dest:日志文件参数信息
v$parameter:记录初始化参数文件中所有项的值
v$system_parameter 显示实例当前有效的参数信息
v$process 当前进程的信息
v$bgprocess: 后台进程信息
v$archived_log:归档状态日志文件的一些基本信息
v$sga: 显示实例的SGA区大小
v$db_object_cache; v$sql:关于内存结构的一些信息
v$sgastat: 统计SGA使用情况的信息
v$lock :通过访问数据库会话,设置对象锁的所有信息
v$sql :记录SQL语句的详细信息
v$sqltext: 记录SQL语句的语句信息
数据字典使用实例:
- 显示用户信息(所属表空间) :select default_tablespace,temporary_tablespace from dba_users where username='GAME';
- 查看当前用户的缺省表空间 select username,default_tablespace from user_users;
- 查看当前用户的角色 select * from user_role_privs;
- 查看当前用户的系统权限和表级权限 select * from user_sys_privs; select * from user_tab_privs;
- 显示当前会话所具有的权限 select * from session_privs;
- 显示指定用户所具有的系统权限 select * from dba_sys_privs where grantee='GAME';
- 显示特权用户 select * from v$pwfile_users;
- 显示用户信息(所属表空间) select default_tablespace,temporary_tablespace from dba_users where username='GAME';
- 显示用户的PROFILE select profile from dba_users where username='GAME';
- 查看用户下所有的表 select * from user_tables;
- 查看名称包含log字符的表 select object_name,object_id from user_objects where instr(object_name,'LOG')>0;
- 查看某表的创建时间 select object_name,created from user_objects where object_name=upper('&table_name');
- 查看某表的大小 select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&table_name');
- 查看放在Oracle的内存区里的表 select table_name,cache from user_tables where instr(cache,'Y')>0;
- 查看索引个数和类别 select index_name,index_type,table_name from user_indexes order by table_name;
- 查看索引被索引的字段 select * from user_ind_columns where index_name=upper('&index_name');
- 查看索引的大小 select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name');
- 查看序列号,last_number是当前值 select * from user_sequences;
- 查看视图的名称 select view_name from user_views;
- 查看创建视图的select语句 set view_name,text_length from user_views; set long 2000; 说明:可以根据视图的text_length值设定set long 的大小 select text from user_views where view_name=upper('&view_name');
- 查看同义词的名称 select * from user_synonyms;
- 查看某表的约束条件 select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper('&table_name');
select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position;
- 查看函数和过程的状态 select object_name,status from user_objects where object_type='FUNCTION'; select object_name,status from user_objects where object_type='PROCEDURE';
- 查看函数和过程的源代码 select text from all_source where owner=user and name=upper('&plsql_name');