5.資料字典和動態效能檢視(筆記)

tonykorn97發表於2006-04-08

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章