5.数据字典和动态性能视图(笔记)

5.数据字典和动态性能视图

数据字典是oracle数据库的最重要的组成部分,它提供了数据库的相关系统信息;动态性能视图记载了例程启动以来的相关性能信息。


数据字典记载了数据库的系统信息,它是只读表和视图的集会。数据字典包含数据字典基表和数据字典视图两部分,其中,基表存储数据库的

基本信息,普通用户不能之间访问数据字典基表;数据字典视图是基于数据字典基表建立的视图,普通用户可以通过查询数据字典视图取得系

统信息。数据字典视图主要包括USER_XXX,ALL_XXX,DBA_XXX三种类型。

all_xxx
在oracle数据库中,用户与方案(schema)是一一对应的,方案是用户所拥有对象的集合。
[oracle@tonykorn97 orcl]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Sep 1 20:05:22 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn system/oracle
Connected.
SQL> set wrap off
SQL> set linesize 130
SQL> col owner format a10
SQL> col table_name format a25
SQL> select owner,table_name from all_tables;


USER_XXX用于显示当前用户所拥有的所有对象,它只返回用户所对应的所有对象。
select table_name from user_tables;

DBA_XXX用于显示整个数据库范围内的详细系统信息,它会显示所有方案所拥有的数据库对象。
select table_name from dba_tables;

常用数据字典

DICT用于显示当前用户可访问的所有数据字典视图,并给出了这些数据字典视图的作用。
select table_name from dict where comments like '%grant%';

DICT_COLUMNS用于显示数据字典视图的每个列的作用。
select column_name,comments from dict_columns where table_name='dict';

DUAL用于取得函数的返回值。
SQL> select user from dual;

USER
------------------------------------------------------------
SYSTEM


GLOBAL_NAME用于显示当前数据库的全名。
SQL> select * from global_name;

GLOBAL_NAME
----------------------------------------------------------------------------------------------------------------------------

------
orcl.REGRESS.RDBMS.DEV.US.ORACLE.COM

SQL>


IND用于显示当前用户所拥有的所有索引和索引的统计信息。
SQL> col index_name format a10
SQL> col index_type format a10
SQL> col uniqueness format a10
SQL> select index_name,index_type,uniqueness from ind where table_name='emp';

no rows selected

SQL>

OBJ用于显示当前用户所拥有的所有对象。
SQL> col object_name format a15
SQL> select object_name,object_id,created from obj where object_type='table';

no rows selected

SQL>

SEQ用于显示当前用户所拥有的所有序列。
SQL> select sequence_name,increment_by from seq;

SEQUENCE_NAME INCREMENT_BY
------------------------------------------------------------ ------------
MVIEW$_ADVSEQ_GENERIC 1
MVIEW$_ADVSEQ_ID 1


SYN用于显示当前用户所拥有的同义词和同义词所对应的数据库对象名。
SQL> col synonym_name format a15
SQL> col owner_object format a15
SQL> select synonym_name,table_owner||'.'||table_name owner_object from syn;

SYNONYM_NAME OWNER_OBJECT
--------------- ---------------
SYSCATALOG SYS.SYSCATALOG
CATALOG SYS.CATALOG
TAB SYS.TAB
COL SYS.COL
TABQUOTAS SYS.TABQUOTAS
SYSFILES SYS.SYSFILES
PUBLICSYN SYS.PUBLICSYN
PRODUCT_USER_PR SYSTEM.SQLPLUS_

8 rows selected.


TAB用于显示当前用户所用于的表,视图和序列。
SQL> select * from tab;

动态性能视图用于记录当前例程的活动信息。启动例程时,oracle会自动建立动态性能视图;停止例程时,oracle会自动删除动态性能视图。

需要注意的时,数据字典的信息时从数据文件中取得,而动态性能视图时从SGA和控制文件中取得。通过查询动态性能视图,一方面可以获得性

能数据,另一方面可以取得与磁盘和内存结构相关的其他信息。所有的动态性能视图都是以V_$开始的,oracle为每个动态性能视图提供了相应

的同义词(以V$开始)

常用的动态性能视图

V$FIXED_TABLE用于列出所有可用的动态性能视图和动态性能表。
select name from v$fixed_table where name like 'V$%';


V$INSTANCE用于获取当前例程的详细信息。
SQL> col host_name format a20
SQL> select instance_name,host_name,status from v$instance;

INSTANCE_NAME HOST_NAME STATUS
-------------------------------- -------------------- ------------------------
orcl tonykorn97 OPEN

SQL>


V$SGA用于取得SGA更详细的信息。
SQL> select * from v$sga;

NAME VALUE
---------------------------------------- ----------
Fixed Size 1220868
Variable Size 171970300
Database Buffers 436207616
Redo Buffers 2969600

SQL>

V$SGAINFO改动态性能用于取得SGA更详细的信息
SQL> select * from v$sgainfo;

NAME BYTES RESIZE
---------------------------------------------------------------- ---------- ------
Fixed SGA Size 1220868 No
Redo Buffers 2969600 No
Buffer Cache Size 436207616 Yes
Shared Pool Size 163577856 Yes
Large Pool Size 4194304 Yes
Java Pool Size 4194304 Yes
Streams Pool Size 0 Yes
Granule Size 4194304 No
Maximum SGA Size 612368384 No
Startup overhead in Shared Pool 37748736 No
Free SGA Memory Available 0

11 rows selected.


V$PARAMETER用于取得初始化参数的详细信息。
SQL> col name format a10
SQL> col description format a30
SQL> col value format a10
SQL> select name,value,description from v$parameter where name='db_name';

NAME VALUE DESCRIPTION
---------- ---------- ------------------------------
db_name orcl database name specified in CRE

SQL>


V$VERSION用于取得oracle版本的详细信息。
SQL> select * from v$version;

BANNER
----------------------------------------------------------------------------------------------------------------------------

----
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SQL>


V$OPTION 用于显示已经安装的oracle选项。其中,TRUE表示该选项已经安装,FALSE表示该选项没有安装。
SQL> col parameter format a40
SQL> col value format a10
SQL> select * from v$option;


V$SESSION 用于显示会话的详细信息。

SQL> select sid,serial#,username from v$session where username is not null;

SID SERIAL# USERNAME
---------- ---------- ------------------------------------------------------------
143 48 SYSTEM

SQL>


V$PROCESS 用于显示与oracle相关的所有进程的信息(包括后台进程和服务器进程)。
SQL> 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';

no rows selected


V$BGPROCESS 用于显示后台进程的详细信息。
SQL> col description format a40
SQL> select name,description from v$bgprocess where paddr<>'00';

NAME DESCRIPTION
---------- ----------------------------------------
PMON process cleanup
PSP0 process spawner 0
MMAN Memory Manager
DBW0 db writer process 0
LGWR Redo etc.
CKPT checkpoint
SMON System Monitor Process
RECO distributed recovery
CJQ0 Job Queue Coordinator
QMNC AQ Coordinator
MMON Manageability Monitor Process

NAME DESCRIPTION
---------- ----------------------------------------
MMNL Manageability Monitor Process 2

12 rows selected.

SQL>


V$DATABASE 用于取得当前数据库的详细信息(如数据库名,日志模式以及建立时间)。

SQL> select name,log_mode,created from v$database;

NAME LOG_MODE CREATED
---------- ------------------------ ------------
orcl NOARCHIVELOG 01-SEP-07

SQL>


V$CONTROLFILE 用于取得当前数据库所有控制文件的信息。
SQL> col name format a50
SQL> select name from v$controlfile;

NAME
--------------------------------------------------
/oracle/oradata/orcl/control01.ctl
/oracle/oradata/orcl/control02.ctl
/oracle/oradata/orcl/control03.ctl

SQL>


V$DATAFILE 用于取得当前数据库所有数据文件的详细信息。
SQL> select file#,name,bytes from v$datafile;

FILE# NAME BYTES
---------- -------------------------------------------------- ----------
1 /oracle/oradata/orcl/system01.dbf 503316480
2 /oracle/oradata/orcl/undotbs01.dbf 36700160
3 /oracle/oradata/orcl/sysaux01.dbf 241172480
4 /oracle/oradata/orcl/users01.dbf 5242880
5 /oracle/oradata/orcl/example01.dbf 104857600
6 /oracle/oradata/orcl/NNC_DATA01.dbf 1572864000
7 /oracle/oradata/orcl/NNC_DATA02.dbf 209715200
8 /oracle/oradata/orcl/NNC_DATA03.dbf 943718400
9 /oracle/oradata/orcl/NNC_INDEX01.dbf 943718400
10 /oracle/oradata/orcl/NNC_INDEX02.dbf 314572800
11 /oracle/oradata/orcl/NNC_INDEX03.dbf 943718400

FILE# NAME BYTES
---------- -------------------------------------------------- ----------
12 /oracle/oradata/orcl/IUFO01.dbf 209715200
13 /oracle/oradata/orcl/U8.dbf 104857600

13 rows selected.

SQL>


V$DBFILE 用于取得数据文件编号及名称。
SQL> select * from v$dbfile;

FILE# NAME
---------- --------------------------------------------------
4 /oracle/oradata/orcl/users01.dbf
3 /oracle/oradata/orcl/sysaux01.dbf
2 /oracle/oradata/orcl/undotbs01.dbf
1 /oracle/oradata/orcl/system01.dbf
5 /oracle/oradata/orcl/example01.dbf

V$LOGFILE 用于显示重做日志成员的信息。
SQL> col member format a50
SQL> select group#,member from v$logfile;

GROUP# MEMBER
---------- --------------------------------------------------
3 /oracle/oradata/orcl/redo03.log
2 /oracle/oradata/orcl/redo02.log
1 /oracle/oradata/orcl/redo01.log

SQL>


V$LOG 用于显示日志组的详细信息。
SQL> select group#,thread#,sequence#,bytes,members,status from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------------------------
1 1 2 52428800 1 CURRENT
2 1 0 52428800 1 UNUSED
3 1 1 52428800 1 INACTIVE

SQL>


V$THREAD 用于取得重做线程的详细信息。
SQL> col instance format a10
SQL> select thread#,status,groups,instance,sequence# from v$thread;

THREAD# STATUS GROUPS INSTANCE SEQUENCE#
---------- ------------ ---------- ---------- ----------
1 OPEN 3 orcl 2

SQL>


V$LOCK 用于显示锁信息。
SQL> col username format a10
SQL> col machine format a25
SQL> 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';

no rows selected

SQL>


V$LOCKED_OBJECT 用于显示被加锁的数据库对象。
SQL> col oracle_username format a20
SQL> col object format a20
SQL> select a.oracle_username,b.owner||'.'||b.object_name object
2 from v$locked_object a,dba_objects b
3 where a.object_id=b.object_id;

no rows selected

SQL>


V$ROLLNAME和V$ROLLSTAT
V$ROLLNAME动态性能视图用于显示处于Online状态的undo段,而v$rollstat用于显示undo段统计信息,通过二者之间执行连接查询,可以显示

undo段详细的统计信息:
SQL> select a.name,b.xacts from v$rollname a,v$rollstat b where a.usn=b.usn;

NAME XACTS
-------------------------------------------------- ----------
SYSTEM 0
_SYSSMU1$ 0
_SYSSMU2$ 0
_SYSSMU3$ 0
_SYSSMU4$ 0
_SYSSMU5$ 0
_SYSSMU6$ 0
_SYSSMU7$ 0
_SYSSMU8$ 0
_SYSSMU9$ 0
_SYSSMU10$ 0

11 rows selected.

SQL>

V$TABLESPACE 用于显示表空间的信息。
SQL> select * from v$tablespace;

TS# NAME INCLUD BIGFIL FLASHB ENCRYP
---------- -------------------------------------------------- ------ ------ ------ ------
0 SYSTEM YES NO YES
1 UNDOTBS1 YES NO YES
2 SYSAUX YES NO YES
4 USERS YES NO YES
3 TEMP NO NO YES
6 EXAMPLE YES NO YES


V$TEMPFILE 用于显示当前数据库所包含的临时文件。
SQL> select name from v$tempfile;

NAME
--------------------------------------------------
/oracle/oradata/orcl/temp01.dbf

SQL>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/312079/viewspace-245213/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/312079/viewspace-245213/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值