Oracle 數(shù)據(jù)庫中視圖腳本

一、V$、GV$屡限、X$兼耀、V_$压昼、GV_$關系說明

原文鏈接https://blog.csdn.net/seagal890/article/details/82832024

類型 含義
GV$ 全局視圖,針對多個實例環(huán)境瘤运。
V$ 針對某個實例的視圖窍霞。
X$ 是GV$視圖的數(shù)據(jù)來源,Oracle內(nèi)部表拯坟。
GV_$ 是GV$的同義詞但金。
V_$ 是V$的同義詞。

我們可以使用V$FIXED_VIEW_DEFINITION視圖查詢到V$視圖和GV$視圖的定義郁季。

$ORACLE_HOME/rdbms/admin/catalog.sql中執(zhí)行了cdfixed.sql腳本冷溃。我們在這個腳本中可以找到GV_、$V_$同義詞的創(chuàng)建梦裂。

授權舉例

SQL> grant select on v$mystat to HR;
grant select on v$mystat to HR
                *
第 1 行出現(xiàn)錯誤:
ORA-02030: 只能從固定的表/視圖查詢

已用時間:  00: 00: 00.10
SQL>

為什么會出現(xiàn)上面的錯誤似枕?

因為因為v$這類我們經(jīng)常查的視圖都是v_$開頭視圖的同義詞

所以年柠,在進行授權時需要直接授予用戶v_$的查詢權限凿歼。

SQL> grant select on v_$mystat to HR;

授權成功。

已用時間:  00: 00: 00.12
SQL>

尤其是當需要給普通用戶授予對SQL查詢相關的幾個重要的動態(tài)性能視圖冗恨,需要了解:

v$session
v$sql
v$sql_plan
v$sql_plan_statistics
v$sql_workarea

二答憔、常用的V$視圖腳本

原文鏈接https://me.csdn.net/w892824196

1. 基本的數(shù)據(jù)庫信息

版本信息(v$version)

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 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

數(shù)據(jù)庫信息(v$database)

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

NAME   CREATED    LOG_MODE
--------- -------------- ------------
TEST   13-9月 -09   ARCHIVELOG

2. AWR的基本信息

自動工作量倉庫(AWR)在默認情況下,倉庫用小時填充掀抹,保留期是7天虐拓。

AWR使用多少空間(v$sysaux_occupants)

SQL>Select occupant_name,occupant_desc,space_usage_kbytes from v$sysaux_occupants where occupant_name like '%AWR%';

OCCUPANT_N OCCUPANT_DESC                    SPACE_USAGE_KBYTES
---------- --------------------------------------------------  ------------------
SM/AWR   Server Manageability - Automatic Workload Repository       51200

系統(tǒng)上最原始的AWR信息是什么

SQL> select dbms_stats.get_stats_history_availability from dual;

GET_STATS_HISTORY_AVAILABILITY
\---------------------------------------------------------------------------
21-8月 -09 09.18.15.359000000 上午 +08:00

什么是AWR信息的保留期

SQL> select dbms_stats.get_stats_history_retention from dual;

GET_STATS_HISTORY_RETENTION
\---------------------------
             31

將AWR信息的保留期更改為15天

SQL> EXEC dbms_stats.alter_stats_history_retention(15);

PL/SQL 過程已成功完成。

3. 基本許可信息

v$license視圖允許DBA監(jiān)控系統(tǒng)內(nèi)任何時候有關數(shù)據(jù)庫數(shù)量的所有系統(tǒng)活動的數(shù)量渴丸。會話警告級別為0表示沒有設置init.ora會話警告參數(shù)侯嘀,所以系統(tǒng)不會顯示警告信息另凌。會話最大級別為0表示沒有設置init.ora會話最大參數(shù),所以系統(tǒng)不會限制會話的數(shù)量戒幔。查詢v$license視圖吠谢,以查看所允許的最大會話數(shù)。也可以在接近最大數(shù)時設置警告诗茎。

應該定期執(zhí)行腳本工坊,以向DBA提供系統(tǒng)一天中實際的會話數(shù)量,從而保證正確的許可授權敢订。設置init.ora參數(shù)LICENSE_MAX_SESSIONS = 110王污,將會話數(shù)限制為110。設置init.ora參數(shù)LICENSE_SESSIONS_WARNING = 100楚午,系統(tǒng)將向每位在第100個會話之后的用戶顯示警告信息昭齐,這樣他們就會通知DBA,系統(tǒng)因遇到問題而關閉(希望能如此)矾柜。init.ora參數(shù)LICENSE_MAX_USERS用于設置數(shù)據(jù)庫中可以創(chuàng)建的已命名的用戶數(shù)阱驾。在以下程序清單中,該值為0怪蔑,所以沒有限制里覆。

基本許可信息(v$license)

SQL> select * from v$license;

SESSIONS_MAX SESSIONS_WARNING SESSIONS_CURRENT SESSIONS_HIGHWATER USERS_MAX
------------ ---------------- ---------------- ------------------ ----------
      0        0        9         18     0

4. 已安裝產(chǎn)品項

查詢v$option視圖,可以獲取您已安裝的Oracle產(chǎn)品項缆瓣。v$option視圖將給出已安裝的基本產(chǎn)品項的版本喧枷。

已安裝產(chǎn)品項(v$option)

SQL> select * from v$option;

PARAMETER                            VALUE
---------------------------------------------------------------- -----
Partitioning                         TRUE
Objects                              TRUE
Real Application Clusters            FALSE
Advanced replication                 TRUE
Bit-mapped indexes                   TRUE
Oracle Data Guard                    TRUE
Oracle Label Security                FALSE
Flashback Database                   TRUE
Data Mining Scoring Engine           FALSE
Transparent Data Encryption          TRUE
Backup Encryption                    TRUE
Unused Block Compression             TRUE
... ...

5. 內(nèi)存分配摘要

v$sga視圖給出了系統(tǒng)的系統(tǒng)全局區(qū)(System Global Area,SGA)內(nèi)存結構的摘要信息弓坞。Data Buffers是在內(nèi)存中分配給數(shù)據(jù)的字節(jié)數(shù)量隧甚。它根據(jù)init.ora的參數(shù)DB_CACHE_SIZE得到。Redo Buffers主要是依據(jù)init.ora參數(shù)LOG_BUFFER計算得到昼丑,每當COMMIT命令提交數(shù)據(jù)時呻逆,它被用于緩存已改變的記錄并將它們保存到重做日志中。訪問v$sga視圖可以得到系統(tǒng)的物理內(nèi)存分配的基本概念菩帝,包括在Oracle中為數(shù)據(jù)咖城、共享池、large池呼奢、java池以及日志緩沖區(qū)分配的內(nèi)存宜雀。

內(nèi)存分配摘要(v$sga)

SQL> COLUMN value FORMAT 999,999,999,999
SQL> select * from v$sga;

NAME              VALUE
-------------------- ----------------
Fixed Size         1,248,576
Variable Size       100,664,000
Database Buffers     180,355,072
Redo Buffers        7,139,328

如果使用SGA_TARGET-- 內(nèi)部動態(tài)調(diào)整大小:
SQL> select ((select sum(value) from v$sga) -(select current_size from v$sga_dynamic_free_memory)) "
SGA_TARGET" from dual;

SGA_TARGET
\----------
 289406976

6.內(nèi)存分配的細節(jié)

V$視圖中握础,可以查詢v$sgastat視圖來提供有關SGA更詳細的內(nèi)存分配信息辐董。這個視圖提供了SGA和內(nèi)存資源的動態(tài)信息(訪問數(shù)據(jù)庫時會出現(xiàn)相應變化)。這個語句非常詳細地描述了SGA的尺寸禀综。在v$sgav$sgastat視圖中均包含記錄FIXED_SGA简烘、BUFFER_CACHELOG_BUFFER.V$SGASTAT視圖可獲取Oracle SGA詳細的分類列表以及共享池分配中各存儲容器的詳細信息苔严。

內(nèi)存分配細節(jié)(v$sgastat)

SQL> select * from v$sgastat;

POOL     NAME              BYTES
------------ -------------------------- ----------
       fixed_sga           1248576
       buffer_cache        180355072
       log_buffer          7139328
shared pool dpslut_kfdsg           256
shared pool hot latch diagnostics       80
shared pool ENQUEUE STATS          8360
shared pool transaction          264528
shared pool KCB buffer wait statistic    3352
shared pool invalid low rba queue       320
shared pool KQF optimizer stats table    2396
... ...

7. 顯示init.ora信息

程序清單中的腳本顯示了系統(tǒng)中的init.ora參數(shù)。它還提供了有關參數(shù)的信息孤澎,確定每一個參數(shù)的當前值是否就是默認值(ISDEFAULT=TRUE)届氢。查詢V$PARAMETER視圖,將得到init.ora參數(shù)的當前值覆旭。它還顯示了哪些init.ora參數(shù)已經(jīng)改動了原始的默認值:ISDEFAULT = FALSE退子。它還顯示了對于一個給定的會話侣夷,只能修改哪些參數(shù)(當ISSES_MODIFIABLE = TRUE時)鲸拥。最后,它顯示了在不用關閉和重啟數(shù)據(jù)庫可以修改哪些參數(shù)(當ISSYS_MODIFIABLE = IMMEDIATE時)踏枣;而ISSYS_MODIFIABLE = DEFERRED說明該參數(shù)對所有新登錄的七兜,但當前未登錄會話的用戶有效丸凭。如果參數(shù)ISSYS _MODIFIABLE =FALSE,則說明該實例必須關閉并重啟惊搏,才能使設置生效贮乳。

動態(tài)參數(shù)(v$parameter)

SQL>select name, value, isdefault, isses_modifiable,issys_modifiable from v$parameter order by name;

NAME      VALUE                ISDEFAULT ISSES ISSYS_MOD
--------------- ----------------------------------- --------- ----- ---------
active_instance                   TRUE   FALSE FALSE
asm_diskgroups                   TRUE   FALSE IMMEDIATE
audit_file_dest D:/ORACLE/ADMIN/TEST/ADUMP     FALSE   FALSE DEFERRED
audit_sys_opera FALSE                TRUE   FALSE FALSE
background_dump D:/ORACLE/ADMIN/TEST/BDUMP     FALSE   FALSE IMMEDIATE
backup_tape_io_ FALSE                TRUE   FALSE DEFERRED
... ...

8.測定數(shù)據(jù)的命中率

查詢V$SYSSTAT視圖(如下程序清單所示)可以查看從內(nèi)存中讀取數(shù)據(jù)的頻率。它提供了數(shù)據(jù)庫中設置的數(shù)據(jù)塊緩存區(qū)的命中率恬惯。這個信息可以幫助您判斷系統(tǒng)何時需要更多的數(shù)據(jù)緩存DB_CACHE_SIZE,或者系統(tǒng)的狀態(tài)何時調(diào)整得不佳(二者均將導致較低的命中率)亚茬。通常情況下酪耳,您應當確保讀數(shù)據(jù)的命中率保持在95%以上。將系統(tǒng)的命中率從98%提高到99%刹缝,可能意味著性能提高了100%(取決于引起磁盤讀操作的語句)碗暗。

系統(tǒng)性能累積(v$sysstat)

SELECT  1
    \- ( SUM (DECODE (NAME, 'physical reads', VALUE, 0))
     / ( SUM (DECODE (NAME, 'db block gets', VALUE, 0))
       \+ (SUM (DECODE (NAME, 'consistent gets', VALUE, 0)))
      )
     ) "Read Hit Ratio"
 FROM v$sysstat;

Read Hit Ratio
\--------------
  .993067726

在Oracle 10g中,也可以直接獲得V$SYSMETRIC中的 AWR 信息:

系統(tǒng)性能指標(v$sysmetric):緩沖區(qū)緩存命中率(Buffer Cache Hit Ratio)

SQL> select metric_name,value from v$sysmetric where metric_name='Buffer Cache Hit Ratio';

METRIC_NAME                              VALUE
---------------------------------------------------------------- ----------
Buffer Cache Hit Ratio                         100
Buffer Cache Hit Ratio                         100

9.測定數(shù)據(jù)字典命中率

可以使用v$rowcache視圖(如程序清單所示)來發(fā)現(xiàn)對數(shù)據(jù)字典的調(diào)用是否有效地利用了通過init.ora參數(shù)SHARED_POOL_SIZE分配的內(nèi)存緩存.如果字典的命中率不高梢夯,系統(tǒng)的綜合性能將大受影響言疗。推薦的命中率是95%或者更高。如果命中率低于這個百分比颂砸,說明可能需要增加init.ora參數(shù)SHARED_POOL_SIZE噪奄。但要記住,在V$SGASTAT視圖中看到的共享池包括多個部分人乓,而這里僅僅就是其中之一勤篮。注意:在大幅度使用公共同名的環(huán)境中,字典命中率可能難以超過75%色罚,即使共享池的尺寸很大碰缔。這是因為Oracle必須經(jīng)常檢查不存在的對象是否依舊存在。

數(shù)據(jù)字典緩存(v$rowcache)

SQL>select sum(gets),sum(getmisses),(1 - (sum(getmisses) / (sum(gets)+ sum(getmisses)))) * 100 HitRate from v$rowcache;

 SUM(GETS) SUM(GETMISSES)  HITRATE
---------- -------------- ----------
  370854     11068 97.1020261

在Oracle 10g中戳护,也可以直接獲得v$sysmetric中的AWR信息:

系統(tǒng)性能指標(v$sysmetric):數(shù)據(jù)字典緩存命中率(Library Cache Hit Ratio)

select metric_name, value from v$sysmetric where metric_name ='Library Cache Hit Ratio';
METRIC_NAME                              VALUE
---------------------------------------------------------------- ----------------
Library Cache Hit Ratio                     98.0281690140845
Library Cache Hit Ratio                     98.0281690140845

10.測定共享SQL和PL/SQL的命中率

訪問V$LIBRARYCACHE視圖可以顯示實際使用的語句(SQL和PL/SQL)訪問內(nèi)存的情況金抡。如果init.ora的參數(shù)SHARED_POOL_SIZE設置得太小瀑焦,內(nèi)存中就沒有足夠的空間來存儲所有的語句。固定命中率通常應該是95%或更高梗肝,而重載的次數(shù)不應該超過1%榛瓮。查詢V$SQL_BIND_CAPTURE視圖,看看每個SQL綁定是否太高统捶,是否需要CURSOR_SHARING榆芦。

數(shù)據(jù)字典緩存(v$librarycache)

select sum(pins) "Executions", sum(pinhits) "Hits",((sum(pinhits) / sum(pins)) * 100) "PinHitRatio",sum(reloads) "Misses", ((sum(pins) / (sum(pins)+ sum(reloads))) * 100) "RelHitRatio" from v$librarycache;

Executions    Hits PinHitRatio   Misses RelHitRatio
---------- ---------- ----------- ---------- -----------
  417954   403489 96.5390928    4092 99.0304374

查詢 v$sql_bind_capture,看看 average binds是否大于15 (issue):

綁定變量值(v$sql_bind_capture)

select sql_id, count(*) bind_count from v$sql_bind_capture where child_number = 0 group by sql_id having count(*) > 20order by count(*);

SQL_ID    BIND_COUNT
------------- ----------
9qgtwh66xg6nz     21

11.確定需要固定的PL/SQL對象

碎片化現(xiàn)象造成共享池中的可用空間均成為許多零散的片段喘鸟,而沒有足夠大的連續(xù)空間匆绣,這是共享池中的普遍現(xiàn)象。消除共享池錯誤(參閱第4章和第13章以了解更多信息)的關鍵是理解哪些對象會引起問題什黑。一旦知道了會引起潛在問題的PL/SQL對象崎淳,就可以在數(shù)據(jù)庫啟動時固定這個代碼(這時共享池是完全連續(xù)的)。

在庫緩存(v$db_object_cache)

SQL>select name, sharable_mem from v$db_object_cache where sharable_mem > 100000 and type in ('PACKAGE', 'PACKAGE BODY','FUNCTION', 'PROCEDURE') and kept = 'NO'; 
NAME       SHARABLE_MEM
----------------- ------------
DBMS_BACKUP_RESTO    258495
DBMS_STATS       131422

12.查找有問題的查詢

V$SQLAREA視圖提供了一種識別有潛在問題或者需要優(yōu)化的SQL語句的方法愕把,從而可通過減少磁盤的訪問來優(yōu)化數(shù)據(jù)庫的綜合性能拣凹。

資源消耗-聚合(v$sqlarea):按sql語句

select b.username username, a.disk_reads reads,a.executions exec, a.disk_reads /decode(a.executions, 0, 1,a.executions) rds_exec_ratio,a.command_type, a.sql_text Statement from    v$sqlarea a, dba_users b where a.parsing_user_id = b.user_id and a.disk_reads > 100000 order by a.disk_reads desc;

13.檢查用戶當前操作及其使用資源

V$SESSIONV$SQLTEXT連接就可以顯示目前每一個會話正在執(zhí)行的SQL語句,如下面的程序清單所示恨豁。這在有些時候是極為有用的嚣镜,例如DBA希望查看某一個給定的時間點上系統(tǒng)究竟執(zhí)行了哪些操作。

資源消耗-聚合(v$session):按session

資源消耗-聚合(v$sess_io):按session io

資源消耗(v$sqltext):按sql語句

select a.sid, a.username, s.sql_text from v$session a, v$sqltext s where a.sql_address = s.address and a.sql_hash_value = s.hash_value order by a.username, a.sid, s.piece;

select a.username, b.block_gets, b.consistent_gets,b.physical_reads, b.block_changes, b.consistent_changes from v$session a, v$sess_io b where a.sid = b.sid order by a.username;

USERNAME            BLOCK_GETS CONSISTENT_GETS PHYSICAL_READS
------------------------------ ---------- --------------- --------------
DBSNMP                 27     118917      246
DBSNMP                4383     111119      268
SYSMAN               45617     123434      660
SYSMAN                9416      94902      157
SYSMAN                380      37019       47
SYSTEM                 11     256588      147

14.查找用戶正訪問的對象

通過查詢V$ACCESS視圖可查看在給定的時間點上用戶所訪問的所有對象橘蜜。這有助于查明有問題的對象菊匿,在想修改一個特定的對象時也很有用(查找誰在訪問它)。然而计福,當系統(tǒng)有一個很大的共享池和數(shù)百個用戶時跌捆,這個操作的開銷將很大。

鎖定對象(v$access)

select a.sid, a.username, b.owner, b.object, b.type from v$session a, v$access b where a.sid = b.sid;

15.使用索引

Oracle 9i提供了監(jiān)控索引使用的功能象颖。這個新的視圖表示索引是否被引用佩厚,但不能反映索引使用的頻率。要監(jiān)控的索引需要單獨打開和關閉说订〕撸可以使用alter index命令來初始化監(jiān)控工作,然后通過對視圖V$OBJECT_USAGE的查詢來實現(xiàn)索引的跟蹤克蚂。

索引監(jiān)控(v$object_usage)

select * from v$object_usage;

開始監(jiān)控索引:

索引監(jiān)控(v$object_usage)

alter index HRDT_INDEX1 monitoring usage; 
select index_name, table_name, monitoring, used,start_monitoring, end_monitoring from v$object_usage;

INDEX_NAME TABLE_NAME MON USE START_MONITORING  END_MONITORING
----------- ---------- --- --- ------------------- ------------------
HRDT_INDEX1 HRS_DETAIL YES NO  10/13/2002 03:11:34

16.確定鎖定問題

確定鎖定問題將有助于定位正在等待其他某些用戶或者某些東西的用戶闺鲸。可以使用這個策略來確定當前被鎖定在系統(tǒng)中的用戶埃叭。這也使DBA們可以確認一個相關的Oracle進程是否真地被鎖定了摸恍,還是僅僅運行得比較慢。您還能夠識別當前的語句是否正在執(zhí)行鎖定用戶的操作。

鎖請求(v$lock)

select /*+ ordered */ b.username, b.serial#, d.id1, a.sql_text from v$lock d, v$session b, v$sqltext a where b.lockwait = d.kaddr and a.address = b.sql_address and   a.hash_value = b.sql_hash_value;

查看系統(tǒng)中是哪個用戶造成了前一個用戶被鎖定的問題

鎖請求(v$lock)

select /*+ ordered */ a.serial#, a.sid, a.username, b.id1, c.sql_text from v$lock b, v$session a, v$sqltext c where b.id1 in(select /*+ ordered */ distinct e.id1 from v$lock e, v$session d where d.lockwait= e.kaddr) and a.sid = b.sid and c.hash_value = a.sql_hash_value and b.request = 0;

17. 關閉有問題會話

資源消耗-聚合(v$session):按session

select username, sid, serial#, program, terminal from v$session;
alter system kill session '11,18';

You can't kill your own session though:
alter system kill session '10,4';
*ERROR at line 1:ORA-00027: cannot kill current session

18.查找使用多會話的用戶

有些時候立镶,用戶喜歡使用多會話來一次完成多個任務壁袄,但這會引起問題。開發(fā)人員也會有同樣的問題媚媒,如果他開發(fā)了一個創(chuàng)建了會派生大量進程的糟糕的應用程序嗜逻。所有這些都可能降低系統(tǒng)的綜合性能。用戶名NULL是后臺進程缭召。

資源消耗-聚合(v$session):按session

SQL> select username, count(*) from v$session group by username;

USERNAME             COUNT(*)
------------------------------ ----------
                    17
SYSTEM                 4
SYSMAN                 3
DBSNMP                 2

19.查找磁盤I/O問題

視圖V$DATAFILE栈顷、V$FILESTATV$DBA_DATA_FILES提供了數(shù)據(jù)庫中所有數(shù)據(jù)文件和磁盤的文件I/O活動信息。理想情況下嵌巷,物理的讀和寫應當平均分布萄凤。如果沒有合理的配置系統(tǒng),其綜合性能就會受到影響搪哪。

數(shù)據(jù)文件(v$datafile)

物理文件io讀寫狀態(tài)(v$filestat)

select a.file#, a.name, a.status, a.bytes,b.phyrds, b.phywrts from v$datafile a, v$filestat b where a.file# = b.file#;

   FILE# NAME       STATUS    BYTES   PHYRDS  PHYWRTS
---------- ----------------- ------- ---------- ---------- ----------
     1 D:/ORACLE/ORADATA SYSTEM  534773760    7732    1506
     2 D:/ORACLE/ORADATA ONLINE  31457280     54    2778
     3 D:/ORACLE/ORADATA ONLINE  356515840    2680    7905
     4 D:/ORACLE/ORADATA ONLINE   5242880     25     3

20.查找回滾段的內(nèi)容

這個有幫助的查詢顯示了一個回滾段的實際等待數(shù)靡努。可以顯示回滾信息(包括自動撤消)晓折。還可以從程序清單顯示的視圖中查詢Shrinkwrap信息惑朦。查詢V$ROLLNAME、V$ROLLSTATV$TRANSACTION視圖可以提供用戶如何使用回滾段和撤消表空間的信息漓概。通常情況下漾月,在一個時間點上不應讓多個用戶訪問同一個回滾段(盡管這是被允許的)。

回滾清單(v$rollname)

回滾狀態(tài)(v$rollstat)

select a.name, b.extents, b.rssize, b.xacts,b.waits, b.gets, optsize, status from v$rollname a, v$rollstat b where a.usn = b.usn;
NAME         EXTENTS   RSSIZE   XACTS   WAITS    GETS STATUS
----------------- ---------- ---------- ---------- ---------- ---------- -------
SYSTEM           6   385024     0     0    215 ONLINE
_SYSSMU1$         3  1171456     0     0    3191 ONLINE

21.檢查空閑列表是否充足

如果使用多進程完成大量的插入操作胃珍,空閑列表(空閑的數(shù)據(jù)庫數(shù)據(jù)塊的列表)的默認值1可能是不夠的栅屏。如果沒有使用自動空間段管理(Automatic Space Segment Management,簡稱ASSM)堂鲜,您可能需要增加空閑列表,或者空閑列表組护奈。在使用多進程完成大量的插入操作時缔莲,應確保有足夠的空閑列表和空閑列表組∶蛊欤空閑列表的默認存儲值是1痴奏。如果您使用了ASSM,Oracle將為您管理這些參數(shù)厌秒,但是一個有大量數(shù)據(jù)交換的事務環(huán)境中读拆,在應用ASSM前應經(jīng)過仔細的測試。雖然如此鸵闪,但通常最好使用ASSM檐晕。

空閑列表(V$WaitStat)

select ((A.Count/(B.Value + C.Value))*100)Pct 
from V$WaitStat A, V$SysStat B, V$SysStat C 
where A.Class = 'free list' 
and B.Statistic# = (select Statistic# from V$StatName where Name = 'db block gets') 
and C.Statistic# = (select Statistic# from V$StatName where Name = 'consistent gets');

22 檢查角色和權限設置

根據(jù)用戶名進行授權的對象級特權

select b.owner || '.' || b.table_name obj,b.privilege what_granted, b.grantable,a.username 
from sys.dba_users a, sys.dba_tab_privs b 
where a.username = b.grantee 
order by 1,2,3;

根據(jù)被授權人進行授權的對象級特權

Select owner || '.' || table_name obj,privilege what_granted, grantable, grantee 
from sys.dba_tab_privs 
where not exists(select 'x'from sys.dba_users where username = grantee)
order by 1,2,3;

根據(jù)用戶名進行授予的系統(tǒng)級特權

select b.privilege what_granted,b.admin_option, a.username 
from sys.dba_users a, sys.dba_sys_privs b 
where a.username = b.grantee 
order by 1,2;

根據(jù)被授權人進行授予的系統(tǒng)級特權

select privilege what_granted,admin_option, grantee 
from sys.dba_sys_privs 
where not exists ( select 'x' from sys.dba_users where username = grantee ) 
order by 1,2;

根據(jù)用戶名授予的角色

select b.granted_role ||decode(admin_option, 'YES',' (With Admin Option)',null) what_granted, a.username 
from sys.dba_users a, sys.dba_role_privs b 
where a.username = b.grantee 
order by 1;

根據(jù)被授權人授予的角色

select granted_role ||decode(admin_option, 'YES',' (With Admin Option)', null) what_granted,grantee 
from sys.dba_role_privs 
where not exists(select 'x'from sys.dba_users where username = grantee ) 
order by 1;

用戶名及已被授予的相應權限

select a.username,b.granted_role || decode(admin_option,'YES',' (With Admin Option)',null) what_granted 
from sys.dba_users a,sys.dba_role_privs b 
where  a.username = b.grantee 
UNION
select a.username,b.privilege || decode(admin_option,'YES',' (With Admin Option)', null) what_granted 
from sys.dba_users a,sys.dba_sys_privs b 
where a.username = b.grantee 
UNION
select a.username,b.table_name ||'-' || b.privilege|| decode(grantable,'YES',' (With Grant Option)',null) what_granted 
from sys.dba_users a, sys.dba_tab_privs b 
where a.username = b.granteeorder 
by 1;

查詢用戶名及相應的配置文件、默認的表空間和臨時表空間

Select username, profile, default_tablespace,temporary_tablespace, created 
from sys.dba_users 
order by username;

23.等待事件V$視圖

在Oracle 10g中V$SESSION_WAIT中的所有等待事件列現(xiàn)在都在V$SESSION中辟灰。因此个榕,確保查詢等待信息的V$SESSION,因為它是一個更快的視圖芥喇。V$ACTIVE_SESSION_HISTORY (ASH)將許多重要統(tǒng)計數(shù)據(jù)合并為一個視圖或一個報表(ASH報表)西采。

馬上該誰等待——查詢V$SESSION_WAIT/V$SESSION

select 
    event, 
    sum(decode(wait_time,0,1,0)) "Waiting Now",
    sum(decode(wait_time,0,0,1)) "Previous Waits",
    count(*) "Total" 
from v$session_wait 
group by event order by count(*);

馬上該誰等待_SPECIFIC Waits——查詢V$SESSION_WAIT

select /*+ ordered */ 
    sid, 
    event, 
    owner, 
    segment_name, 
    segment_type,
    p1,p2,p3 
from v$session_wait sw, dba_extents de 
where 
    de.file_id = sw.p1 
and sw.p2 between de.block_id 
and de.block_id+de.blocks - 1 
and (event = 'buffer busy waits' or event = 'write complete waits') 
and p1 is not null 
order by event,sid;

誰在等待_最后10個等待數(shù)——查詢V$SESSION_WAIT_HISTORY

select /*+ ordered */ 
    sid, 
    event, 
    owner, 
    segment_name, 
    segment_type,
    p1,p2,p3 
from v$session_wait sw, dba_extents de 
where 
    de.file_id = sw.p1 
and sw.p2 between de.block_id 
and de.block_id+de.blocks - 1 
and (event = 'buffer busy waits' or event = 'write complete waits') 
and p1 is not null 
order by event,sid;

查找P1, P2, P3代表什么——查詢V$EVENT_NAME

select event#,name,parameter1 p1,parameter2 p2,parameter3 p3 
from v$event_name 
where name in ('buffer busy waits', 'write complete waits');

會話開始后的所有等待數(shù)——查詢 V$SESSION_EVENT

select sid, event, total_waits, time_waited, event_id 
from v$session_event 
where time_waited > 0 
order by time_waited;

類的所有會話等待數(shù)——查詢V$SESSION_WAIT_CLASS

select sid, wait_class, total_waits from v$session_wait_class;

系統(tǒng)啟動后的所有等待數(shù)——查詢V$SYSTEM_EVENT

select event, total_waits, time_waited, event_id 
from v$system_event 
where time_waited > 0 
order by time_waited;

類的系統(tǒng)等待數(shù)——查詢V$SYSTEM_WAIT_CLASS

select wait_class, total_waits from v$system_wait_class order by total_waits desc;

類的系統(tǒng)等待數(shù)——查詢V$ACTIVE_SESSION_HISTORY

--In the query below, the highest count session is leader in non-idle wait events.
select session_id,count(1) from v$active_session_history group by session_id order by 2;
--In the query below, find the SQL for the leader in non-idle wait events.
select 
    c.sql_id, 
    a.sql_text 
from 
    v$sql a, 
    (select sql_id,count(1) 
   from v$active_session_history b 
   where sql_id is not null 
   group by sql_idorder by 2 desc 
  ) c 
where rownum <= 5 
order by rownum;
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市继控,隨后出現(xiàn)的幾起案子械馆,更是在濱河造成了極大的恐慌,老刑警劉巖武通,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霹崎,死亡現(xiàn)場離奇詭異,居然都是意外死亡厅须,警方通過查閱死者的電腦和手機仿畸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朗和,“玉大人错沽,你說我怎么就攤上這事】衾” “怎么了千埃?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長忆植。 經(jīng)常有香客問我放可,道長,這世上最難降的妖魔是什么朝刊? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任耀里,我火速辦了婚禮,結果婚禮上拾氓,老公的妹妹穿的比我還像新娘冯挎。我一直安慰自己,他們只是感情好咙鞍,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布房官。 她就那樣靜靜地躺著,像睡著了一般续滋。 火紅的嫁衣襯著肌膚如雪翰守。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天疲酌,我揣著相機與錄音蜡峰,去河邊找鬼。 笑死,一個胖子當著我的面吹牛事示,可吹牛的內(nèi)容都是我干的早像。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼肖爵,長吁一口氣:“原來是場噩夢啊……” “哼卢鹦!你這毒婦竟也來了?” 一聲冷哼從身側響起劝堪,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤冀自,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后秒啦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熬粗,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年余境,在試婚紗的時候發(fā)現(xiàn)自己被綠了驻呐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡芳来,死狀恐怖含末,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情即舌,我是刑警寧澤佣盒,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站顽聂,受9級特大地震影響肥惭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜紊搪,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一蜜葱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耀石,春花似錦笼沥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馆纳。三九已至诗良,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鲁驶,已是汗流浹背鉴裹。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人径荔。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓督禽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親总处。 傳聞我的和親對象是個殘疾皇子狈惫,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容