日期:2014-05-16 浏览次数:20588 次
34.数据字典是Oracle数据库最重要的组成部分,它提供了数据库的相关系统信息。
动态性能试图记载了例程启动以来的相关性能信息。
数据字典是只读表和视图的集合。
数据字典包括数据字典基表和数据字典视图两部分。
基表存储数据库的基本信息,普通用户不能直接访问数据字典基表。
数据字典视图是基于数据字典基表建立的视图,普通用户可以通过查询数据字典视图取得系统信息。
三种数据字典视图:
DBA_XXX:所有数据库对象。
ALL_XXX:当前用户可存取的所有对象。
USER_XXX:当前用户所拥有的对象。
在Oracle数据库中,用户与方案(Schema)是一一对应的,方案是用户所拥有对象的集合。用户可以访问其方案的所有对象。
select owner, table_name from dba_tables;
select owner, table_name from all_tables;
select table_name from user_tables;
如果用户要查询DBA_XXX数据字典视图,必须具有DBA角色或SELECT_CATALOG_ROLE角色。
35.当执行CREATE命令建立对象时,Oracle会将对象定义存放到数据字典中,使用包DBMS_METADATA可以取得对象定义语句。
set long 4000
select dbms_metadata.get_ddl('TABLE','EMP') ddl from dual;
查询段所占用的空间
select bytes from user_segments where segment_name=’EMP’;
查询段剩余空间和已使用空间,可以通过数据字典USER_TABLES取得该信息,应首先使用ANALYZE TABLE命令分析表。
analyze table emp compute statistics;
select empty_blocks, blocks from user_tables where table_name=’EMP’;
列信息
Select column_name,data_type,data_default from user_tab_columns where table_name=’EMP’;
约束信息
Select a.constraint_name, a.constraint_type, b.column_name, b.position
From user_constraints a, user_cons_columns b
Where a.constraint_name = b.constraint_name and a.table_name=’EMP’;
?
36.用户名、权限和角色
DBA_USERS:显示所有数据库用户的详细信息。
DBA_SYS_PRIVS:显示用户或角色所具有的系统权限。
DBA_TAB_PRIVS:显示用户或角色所具有的对象权限。
DBA_COL_PRIVS:显示用户或角色所具有的列权限。
DBA_ROLE_PRIVS:显示用户或角色所具有的其他角色。
DICT:显示当前用户可以访问的所有数据字典视图,并给出了这些数据字典视图的作用。
DICT_COLUMNS:显示数据字典视图每个列的作用。
DUAL,GLOBAL_NAME
IND:显示当前用户拥有的所有索引和索引统计信息。
OBJ:显示当前用户所拥有的所有对象。
SYN:显示当前用户所拥有的同义词和同义词所对应的数据库对象名。
TAB:显示当前用户所拥有的表、视图和序列。
?
37.数据字典信息是从数据文件中取得的,而动态性能视图信息则是从SGA和控制文件中取得。通过查询动态性能视图,可以获得性能数据还能取得与磁盘和内存结构相关的其他信息。
通过查询V$FIXED_TABLE可以显示所有动态性能视图。
X$表:这一部分是Oracle数据库的运行基础,在数据库启动时由Oracle应用程序动态创建。
GV$和V$视图:GV_$,V_$视图和V$,GV$同义词,所有动态性能视图都是以V_$开始的,Oracle为每个动态性能视图提供了相应的同义词(以V$开始)
除了一些特例以外,每个V$视图都有一个对应的GV$视图存在。
GV$视图的产生是为了满足OPS环境的需要,在OPS环境中,查询GV$视图返回所有实例信息,而每个V$视图基于GV$视图,增加了INST_ID列判断后建立,只包含当前连接实例信息。
当数据库处于不同状态时可以访问的动态性能视图不同。
nomount:只能访问从SGA?中获取信息的动态新能视图。
mount:不仅可以访问从SGA中获取信息的还可以访问从控制文件中获取信息的动态性能视图。
open:SGA,controlfile,Oracle性能相关的动态性能视图。
只有处于OPEN状态时,才能访问数据字典视图。
?
38.V$FIXED_TABLE列出所有可用的动态性能视图和动态性能表。
select name from v$fixed_table where name like ‘V$%’;
取得当前例程的详细信息
select instance_name, host_name, status from v$instance;
显示SGA主要组成部分
select * from v$sga;
取得SGA更详细的信息
select * from v$sgainfo;
取得初始化参数的详细信息
select name, value, description from v$parameter;
取得Oracle版本的详细信息
select * from v$version;
显示已经安装的Oracle选项
select * from v$option;
显示会话的详细信息
select sid,serial#,username from v$session;
sid用于标识会话ID号,serial#用于标识会话序列号,username用于标识会话所对应的数据库用户。
如果username为NULL表示是后台进程会话。
显示与Oracle相关的所有进程的信息(包括后台进程和服务器进程)
select * from v$process;
select a.terminal, a.spid, a.pga_alloc_mem from v$process a, v$session b
where a.addr=b.paddr and b.username=’SCOTT’;
显示后台进程的详细信息
select name,description from v$bgprocess where paddr <> ‘00’;
取得当前数据库的详细信息(数据库名、日志操作模式以及建立时间等)
select name,log_mode,created from v$database;
取得当前数据库所有控制文件的信息
select name from v$controlfile;
取得当前数据库所有数据文件的详细信息
select file#,name,bytes from v$datafile;
取得数据文件编号及名称
select * from v$dbfile;
显示重做日志成员的信息
select group#,member from v$logfile;
group#用于标识日志组组号,member用于标识重做日志成员的名称。
显示日志组的详细信息
select group#,thread#,sequence#,bytes,members,status from v$log;
取得重做线程的详细信息
select thread#,status,groups,instance,sequence# from v$thread;
显示锁的信息,与V$SESSION进行连接查询,可以显示占有锁的会话,以及等待锁得会话。
select a.username,a.machine,b.lmode,b.request from v$session a,v$lock b
where a.sid=b.sid and a.type=’USER’;
显示被加锁的数据库对象。通过与DBA_OBJECTS进行连接查询,可以显示具体的对象名及执行加锁操作的Oracle用户名。
select a.oracle_username, b.owner || ‘.’ || b.object_name object fro