oracle 基础知识(七)----动态性能视图
一,動態性能視圖介紹
動態性能視圖屬于數據字典,系統管理員用戶SYS可以訪問它們。在數據庫打開和使用時不斷進行更新,而且它們的內容主要與性能有關。雖然這些視圖很像普通的數據庫表,但它們不允許用戶直接進行修改。這些視圖提供內部磁盤結構和內存結構方面的數據。用戶可以對這些視圖進行查詢,以便對系統進行管理與優化。當數據庫管理員啟動某個例程時,數據庫會自動建立動態性能視圖;當停止某個例程時,數據庫又會自動刪除這些動態性能視圖。
我們能再動態視圖中掌握:
數據庫運行相關的性能數據,如內存的使用量、磁盤排序發生的機率等等。
取得與磁盤和內存結構相關的其他信息。
二,狀態轉換時的動態性能視圖
(1)數據庫處于“NOMOUNT”狀態。數據庫啟動例程時,Oracle數據庫會打開參數文件,分配SGA內存并啟動后臺進程。此時,其實數據庫還沒有掛栽。此時,動態性呢視圖收集的信息來源只有是SGA,而不會從控制文件中收集相關的信息。所以,動態性能視圖的數量要少得多。
(2)當數據庫處于MOUNT狀態時,數據庫會根據初始化參數打開所有的控制文件。所以,當例程處于Mount狀態時,動態性能視圖其收集到的信息就要第一個狀態多的多。因為此時,動態性能視圖還會去收集控制文件的相關信息。不過,此時動態性能視圖所收集到的資料還不是最全的。
(3)當用戶打開數據庫時,Oracle系統會根據控制文件所記載的信息去打開所有的數據庫文件以及重做日志。此時,數據庫管理員除了可以從SGA和控制文件中獲取信息的動態性能視圖外,還可能訪問與Oracle數據庫性能相關的動態性能視圖,如會話等待時間等視圖。另外需要注意一點,就是只有在這個狀態時,我們才能夠訪問數據庫的數據字典視圖。
三,V$, V_$, GV$,X$視圖說明
1,說明
GV$:全局視圖,針對多個實例環境
V$:針對某個實例的視圖。
X$:是GV$視圖的數據來源,Oracle內部表。
--v$?是v_$的同義詞,v_$是基于真正的視圖v$,而真正的v$視圖是在gv$的基礎上限制inst_id得到;
--gv$是gv_$的同義詞,gv_$基于真正的視圖gv$,而真正的gv$視圖基于系統表X$。
2,X$表
X$表包含了特定實例的各方面的信息,是Oracle數據庫的運行基礎,如當前的配置信息,連接到實例的會話,以及豐富而有價值的性能信息。X$表并不是駐留在數據庫文件的永久表或臨時表。X$表僅僅駐留在內存中,當實例啟動時,由Oracle應用程序動態創建,在內存中進行實時的維護。它們中的大多數至少需要裝載或已經打開的數據庫。X$表為SYS用戶所擁有,并且是只讀的。不能進行DML(更新,插入,刪除)。X$表對數據庫來說至關重要,所以Oracle不允許SYSDBA之外的用戶直接訪問,顯示授權不被允許。
查詢:
select * from v$fixed_table where rownum<5;
查詢X表的個數
SQL> select count(*) from v$fixed_table where name like 'X$%'; COUNT(*) ---------- 985 SQL> select * from bootstrap$; ---從bootstarop中查看X$表,里面記錄了數據庫啟動的基本及驅動信息。 LINE# OBJ# ---------- ---------- SQL_TEXT -------------------------------------------------------------------------------- -1 -1 8.0.0.0.0 0 0 CREATE ROLLBACK SEGMENT SYSTEM STORAGE ( INITIAL 112K NEXT 56K MINEXTENTS 1 MAX EXTENTS 32765 OBJNO 0 EXTENTS (FILE 1 BLOCK 128)) 20 20 CREATE TABLE ICOL$("OBJ#" NUMBER NOT NULL,"BO#" NUMBER NOT NULL,"COL#" NUMBER NO LINE# OBJ# ---------- ---------- SQL_TEXT -------------------------------------------------------------------------------- T NULL,"POS#" NUMBER NOT NULL,..........
3,V$視圖
動態性能視圖由前綴V_$標識。這些視圖的公用同義詞具有前綴V$。數據庫管理員或用戶應該只訪問V$對象,而不是訪問V_$對象。動態性能視圖由企業管理器和Oracle Trace使用,Oracle Trace是訪問系統性能信息的主要界面。一旦實例啟動,從內存讀取數據的V$視圖就可以訪問
查詢視圖:
select * from DBA_SYNONYMS where rownum<5;
SQL> select count(*) from v$fixed_table where name like 'V$%';
COUNT(*)
----------
552
4,GV$視圖
從Oracle8開始,GV$視圖開始被引入,GV$(Global V$,全局V$)。除了一些特例以外(如:V$CACHE_LOCK、V$LOCK_ACTIVITY、V$LOCKS_WITH_COLLISIONS和V$ROLLNAME),每個V$視圖都有一個對應的GV$視圖存在。在并行服務器環境下,可查詢GV$視圖從所有限定實例中檢索V$視圖的信息。V$視圖和GV$視圖是相同的,V$比GV$只是少了INST_ID字段。INST_ID列顯示從其獲得相關的V$視圖信息的實例號。INST_ID列可用作一個從可得到的實例集檢索V$信息的過濾器。
查詢GV視圖:
通過v$fixed_table查詢GV$視圖信息:
SQL> select count(*) from v$fixed_table where name like 'GV$%';
COUNT(*)
----------
523
5,G_$是全局視圖,多由x$表得來
查看
select * from v$fixed_view_definition where instr(view_name,'$')=3 and rownum<3;
select * from DBA_SYNONYMS where synonym_name like 'GV%' and rownum<5;
四,常用的動態性能視圖
(1)v$sysstat
--整個系統的統計信息展示系統狀態。
(2)v$sesstat
–-每個會話的統計信息
(3)v$sql & v$sql_plan
(4)v$sqltext & v$sqlarea
(5)v$session
(6)v$session_wait & v$session_event
當前活動的會話正在等待的事件情況或者每個會話對每個事件的等待情況
(7)v$process
作用: v$process視圖包含當前系統oracle運行的所有進程信息。常被用于將oracle或服務進程的操作系統進程ID與數據庫session之間建立聯系。
(8)v$lock & v$locked_object
(9)v$filestat
(10)v$session_longops
(11)v$latch$ v$latch_children
(12)v$db_object_cache
(13)v$open_cursor
(14)v$parameter & v$system_parameter
(15)v$rollstat
V$ROLLNAME顯示處于ONLINE狀態的UNDO段,V$ROLLSTAT顯示UNDO段的統計信息。通過二者執行連接查詢,以顯示UNDO的詳細統計信息
select a.name,b.xacts from V$rollname a,V$rollstat b where a.usn=b.usn;
(16)v$rowcache
shared pool / Library cache
(17)v$segstat & v$segment_statistics
(18)v$system_event
(19)v$undostat
(20)v$waitstat
(21)V$TABLESPACE
顯示表空間信息
(22)V$THREAD
取得重做線程的詳細信息,當使用RAC結構時,每個例程都對應一個重做線程,并且每個重做線程包含獨立的重做日志組。
select thread#,status,groups,instance,sequence# from v$thread ;
(23)V$LOCK
顯示鎖信息,通過與V$SESSION進行連接查詢,可以顯示占有鎖的會話,以及等待鎖的會話。
(24)V$LOCKED_OBJECT
顯示被加鎖的數據庫對象。通過與DBA_OBJECTS進行連接查詢,以顯示具體的對象名及執行加鎖操作的ORACLE用戶名。
例:
1 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;
View Code
(25)V$FIXED_TABLE
該動態性能視圖用于列出所有可用的動態性能視圖和動態性能表。
select * from v$fixed_table ;
(26)V$INSTANCE
獲取當前例程的詳細信息。
select instance_name,host_name,status from V$instance;
(27)V$SGA---V$SGAINFO
顯示SGA主要組成部分和更詳細的信息
(28)V$VERSION
獲取版本
(29)V$OPTION
顯示已經安裝的ORACLE選項
select * from v$option;
(30)V$BGPROCESS
顯示后臺進程詳細信息
select name,description from V$bgprocess
(31)$DATABASE
取得當前數據庫的詳細信息
(32)V$DATAFILE
select file#,name,bytes from v$datafile ;
(33)V$DBFILE
取得數據文件編號及名稱
select * from v$dbfile ;
(34)V$LOGFILE
顯示重做日志成員的信息
select group#,member from V$logfile;
(35)V$LOG
select group#,thread#,sequence#,bytes,members,status from V$log;
...等等
總結
以上是生活随笔為你收集整理的oracle 基础知识(七)----动态性能视图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 财产安全有哪些隐患
- 下一篇: 钱塘区属于杭州的什么区