oracle系統視圖總結

---dba視圖
select * from dba_data_files --指定表空間的數據文件及所在的路徑
select * from dba_free_space --指定表空間的剩餘空間
select * from dba_users --找出當前數據庫實例中的所有用戶
select * from dba_segments --找出當前數據庫實例中的所有對象的物理信息,如:所佔空間、pctincrease等
select * from dba_tab_columns --指定所有表對應的列名
select * from dba_col_comments --指定所有列的註釋信息
select * from dba_tablespaces --列出所有的表空間及相關信息
select * from dba_tab_partitions --所有表分區的信息
select * from dba_ind_columns --顯示所有的被索引的列
select * from dba_indexes --顯示所有的索引信息
select * from dba_jobs --顯示所有的job信息
select * from dba_jobs_running --顯示正在運行的job信息

---v$視圖
select * from v$session --顯示當前所有的session信息

v$lock視圖
反映內容:該視圖展示當前保持的鎖信息;
名稱 類型 說明部分
----------------------------------------- ---------------------------- ********************************
ADDR RAW(4) //鎖狀態對象地址
KADDR RAW(4) //鎖地址
SID NUMBER //保持鎖的會話的會話標識符
TYPE VARCHAR2(2) //鎖類型 TM:dml排隊TX:事務排隊UL:用戶提供
ID1 NUMBER //鎖標示1
ID2 NUMBER //鎖標示2
LMODE NUMBER //會話保持的鎖的模式 0,1,2,3,4,5,6
REQUEST NUMBER //進程請求鎖定時所處的模式
CTIME NUMBER //當前的鎖模式所消耗的時間
BLOCK NUMBER //阻塞其他鎖

0,1,2,3,4,5,6解釋:0代表無,1代表空(null),2代表行(ss),3代表行(sx),4共享S,5S/行X(SSX),6獨佔;
通過這個視圖你能初步瞭解鎖的模式,從而判斷鎖會出現的地方;
2. v$PROCESS視圖
放映內容:包含有關當前活動進程的信息;
SQL> desc v$process
名稱 類型 說明部分
----------------------------------------- ---------------------------- ********************************
ADDR RAW(4) //進程對象狀態地址
PID NUMBER //oracle進程標識符,類似於序號
SPID VARCHAR2(12) //操作系統進程標識符,可以用來和操作系統進程聯繫
USERNAME VARCHAR2(15) //操作系統進程用戶名
SERIAL# NUMBER //進程序列號
TERMINAL VARCHAR2(16) //操作系統終端標示符
PROGRAM VARCHAR2(64) //進程中的程序
TRACEID VARCHAR2(255) //跟蹤文件標識符
BACKGROUND VARCHAR2(1) //1表示後臺進程,null表示其它
LATCHWAIT VARCHAR2(8) //進程正在等待鎖的地址;如果該值爲n/a,則鎖地址爲null
LATCHSPIN VARCHAR2(8) //進程正在輪循的鎖的地址,如果該職位n/a,則爲地址nill
PGA_USED_MEM NUMBER //當前正在使用的pga內存
PGA_ALLOC_MEM NUMBER //當前已經分配的pga內存
PGA_FREEABLE_MEM NUMBER //可以釋放的已分配的pga內存
PGA_MAX_MEM NUMBER //曾經需要的最大的最大pga內存

這個視圖分很有用,可以和操做系統聯繫,這樣用來診斷跟蹤頂級系統資源使用很有益處。這裏就可以有個案例,經常用到的,通過消耗資源做大的系統進程號的到執行的sql語句,需要結合v$session視圖一起來完成;

3.v$session
反映內容:列出連接到實例的會話,這個視圖有非常多的信息字段也比較多。
SQL> desc v$session
名稱 類型
----------------------------------------- ------------
SADDR RAW(4) session地址
SID NUMBER session標識符
SERIAL# NUMBER session會話序列號
AUDSID NUMBER 審計的會話id
PADDR RAW(4) 擁有該會話的oracle進程號和v$process聯繫
USER# NUMBER oracle用戶
USERNAME VARCHAR2(30) oracle用戶名
COMMAND NUMBER 執行的命令
OWNERID NUMBER 會話的所有者
TADDR VARCHAR2(8) 事務地址
LOCKWAIT VARCHAR2(8) 鎖等待地址,null if none
STATUS VARCHAR2(8) 會話的狀態:active,inactive,killed,cached,sniped
SERVER VARCHAR2(9) 服務的類型,共享還是專用服務器
SCHEMA# NUMBER 用戶標示模式
SCHEMANAME VARCHAR2(30) 用戶模式名稱
OSUSER VARCHAR2(30) 客戶端操作系統名稱
PROCESS VARCHAR2(12) 操作系統客戶端進程號
MACHINE VARCHAR2(64) 操作系統機器名稱
TERMINAL VARCHAR2(16) 操作系統終端名
PROGRAM VARCHAR2(64) 操作系統程序名
TYPE VARCHAR2(10) session種類
SQL_ADDRESS RAW(4) 當前回話識別目前執行的sql語句的表示地址
SQL_HASH_VALUE NUMBER 和sql_address一起唯一標示一條執行的sql語句
SQL_ID VARCHAR2(13) 目前被執行的sql語句的標識符
SQL_CHILD_NUMBER NUMBER 目前被執行的sql語句的子句數量
PREV_SQL_ADDR RAW(4) 與sql_hash_value一起標示上一條被執行的sql語句
PREV_HASH_VALUE NUMBER 與PREV_SQL_ADDR 一起表示上一條被執行的sql語句
PREV_SQL_ID VARCHAR2(13) 前一條被執行的sql語句
PREV_CHILD_NUMBER NUMBER 上一條被執行的sql的子句數量
MODULE VARCHAR2(48) 這個沒太懂,oracle文檔上面的解釋比較清楚
MODULE_HASH NUMBER 這是針對上面一個字段的hash value
ACTION VARCHAR2(32) 當前 正在執行被DBMS_APPLICATION_INFO.SET_ACTION procedure調用名稱
ACTION_HASH NUMBER 針對上一字段name的hash value
CLIENT_INFO VARCHAR2(64) 由APPLICATION_INFO.SET_ACTION procedure設定的過程名
FIXED_TABLE_SEQUENCE NUMBER oracle文檔有着詳細的解釋session活動增長記錄,最好再去看oracle文檔
ROW_WAIT_OBJ# NUMBER 對象id,對象是table包含行源數據在OW_WAIT_ROW#中的id標識符
ROW_WAIT_FILE# NUMBER 標示數據文件,等待在OW_WAIT_ROW#中的row,這些行包含在這些數據文件中
ROW_WAIT_BLOCK# NUMBER 表示數據塊,這些數據塊中行源等待在OW_WAIT_ROW#中
ROW_WAIT_ROW# NUMBER 目前被鎖定的行
LOGON_TIME DATE time of logon
LAST_CALL_ET NUMBER 當前session爲active時 記錄的是session是session編程active狀態來的運行時間,相反則爲inactive的時間
PDML_ENABLED VARCHAR2(3) 已經被PDML_STATUS字段所取代
FAILOVER_TYPE VARCHAR2(13)
這是oracle文檔對以上這個字段的解釋:
Indicates whether and to what extent transparent application failover
(TAF) is enabled for the session:
■ NONE - Failover is disabled for this session
■ SESSION - Client is able to fail over its session following a disconnect
■ SELECT - Client is able to fail over queries in progress as well
See Also:
■ Oracle Database Concepts for more information on TAF
■ Oracle Database Net Services Administrator's Guide for information on
configuring TAF
FAILOVER_METHOD VARCHAR2(10)
oracle文檔的解釋:
Indicates the transparent application failover method for the session:
■ NONE - Failover is disabled for this session
■ BASIC - Client itself reconnects following a disconnect
■ PRECONNECT - Backup instance can support all connections from
every instance for which it is backed up
FAILED_OVER VARCHAR2(3) //判定是否session已經處於失敗狀態,yes或者no
RESOURCE_CONSUMER_GROUP VARCHAR2(32) 當前session用戶的源數據組
PDML_STATUS VARCHAR2(8)
oracle的文檔解釋:
If ENABLED, the session is in a PARALLEL DML enabled mode. If
DISABLED, PARALLEL DML enabled mode is not supported for the
session. If FORCED, the session has been altered to force PARALLEL DML.
PDDL_STATUS VARCHAR2(8)
oracle文檔解釋:
If ENABLED, the session is in a PARALLEL DDL enabled mode. If
DISABLED, PARALLEL DDL enabled mode is not supported for the
session. If FORCED, the session has been altered to force PARALLEL DDL
PQ_STATUS VARCHAR2(8)
oracle文檔解釋:
If ENABLED, the session is in a PARALLEL QUERY enabled mode. If
DISABLED, PARALLEL QUERY enabled mode is not supported for the
session. If FORCED, the session has been altered to force PARALLEL
QUERY.
CURRENT_QUEUE_DURATION NUMBER if 1則session已經在隊列中,if 0 則還未形成排隊
CLIENT_IDENTIFIER VARCHAR2(64) 客戶端session標識符
BLOCKING_SESSION_STATUS VARCHAR2(11)
oracle文檔資料註解:
Blocking session status:
■ VALID
■ NO HOLDER
■ GLOBAL
■ NOT IN WAIT
■ UNKNOWN
BLOCKING_INSTANCE NUMBER 模塊化的實例標識符
BLOCKING_SESSION NUMBER 模塊化的session標識符
SEQ# NUMBER 不唯一的標示每個等待的序列號
EVENT# NUMBER 事件數量
EVENT VARCHAR2(64) oracle的session正在等待的數據或者事件
P1TEXT VARCHAR2(64) 首個附加參數的描述
P1 NUMBER 首個附加參數
P1RAW RAW(4) 首個附加參數和前一個區別我還不是很懂
P2TEXT VARCHAR2(64) 第二個附加參數的描述
P2 NUMBER 第二個附加參數
P2RAW RAW(4) 第二個附加參數
P3TEXT VARCHAR2(64) 第三個附加參數的描述
P3 NUMBER 第三個附加參數
P3RAW RAW(4) 第三個附加參數
WAIT_CLASS_ID NUMBER 標記等待事件種類
WAIT_CLASS# NUMBER 等待事件的種類
WAIT_CLASS VARCHAR2(64) 等待事件的名稱
WAIT_TIME NUMBER 非0代表上一次session上次等待時間,0代表session當前正在等待
SECONDS_IN_WAIT NUMBER
oracle文檔的資料:
If WAIT_TIME = 0, then SECONDS_IN_WAIT is the seconds spent in the
current wait condition. If WAIT_TIME > 0, then SECONDS_IN_WAIT is the
seconds since the start of the last wait, and SECONDS_IN_WAIT - WAIT_
TIME / 100 is the active seconds since the last wait ended.
STATE VARCHAR2(19)
oracle資料文檔:
Wait state:
■ 0 - WAITING (the session is currently waiting)
■ -2 - WAITED UNKNOWN TIME (duration of last wait is unknown)
■ -1 - WAITED SHORT TIME (last wait <1/100th of a second)
■ >0 - WAITED KNOWN TIME (WAIT_TIME = duration of last wait)
SERVICE_NAME VARCHAR2(64) session的服務名稱
SQL_TRACE VARCHAR2(8) 標示sql是否能被跟蹤
SQL_TRACE_WAITS VARCHAR2(5) 標記是否等待事件被跟蹤
SQL_TRACE_BINDS VARCHAR2(5) 標記是否綁定跟蹤可用與否

4.v$SQL
反映內容:包括查詢遊標等級的詳細信息,可以用來找到負責解析遊標的會話或者人;同樣也有着繁多的信息字段,我下面只拿出一些常用的關鍵的列:
SQL> desc v$sql;
名稱 類型
----------------------------------------- ------------
SQL_TEXT VARCHAR2(1000) sql語句的前1千個字符
SQL_FULLTEXT CLOB sql語句的全部分,作爲一個clob字段
SQL_ID VARCHAR2(13) sql與在liberary cache中的parent cursor的標識符
SHARABLE_MEM NUMBER 被子cursor所使用的共享內存的和bytes
PERSISTENT_MEM NUMBER 整個生命週期child cursor所使用的固定內存的大小bytes
USERS_OPENING NUMBER
FETCHES NUMBER 這條sql語句返回的數據行數量
EXECUTIONS NUMBER library cache中這條sql語句被執行的次數
USERS_EXECUTING NUMBER 執行這條sql語句的用戶的數量
LOADS NUMBER sql或者object被裝載load或者被reloaded次數
FIRST_LOAD_TIME VARCHAR2(38) parent cursor創建的時間
INVALIDATIONS NUMBER this child cursor 曾經無效的數量
PARSE_CALLS NUMBER 做語法分析調用child cursor的次數
DISK_READS NUMBER 直接做磁盤讀取的次數
DIRECT_WRITES NUMBER 直接做磁盤寫的次數
BUFFER_GETS NUMBER 邏輯讀次數
APPLICATION_WAIT_TIME NUMBER 應用等待時間 單位微秒
CLUSTER_WAIT_TIME NUMBER 集羣等待時間 單位微妙
USER_IO_WAIT_TIME NUMBER 用戶由於I/O造成等待時間
PLSQL_EXEC_TIME NUMBER plsql程序執行時間 單位微秒
ROWS_PROCESSED NUMBER 通過語法分析的sql返回的數據總行數
OPTIMIZER_MODE VARCHAR2(10) 優化器選擇方式
OPTIMIZER_COST NUMBER 採用上面指定優化器所要花費的代價
HASH_VALUE NUMBER Hash value of the parent statement in the library cache
SERVICE VARCHAR2(64) 服務名,能夠知道是oracle用戶進程做得還是oracle後臺進程
CPU_TIME NUMBER CPU time (in microseconds) used by this cursor for parsing, executing,and fetching
ELAPSED_TIME NUMBER 用在解析,分析,取回返回數據所使用的總的時間
REMOTE VARCHAR2(1) 是否是遠程調用
LAST_LOAD_TIME VARCHAR2(38) 上次加載時間
CHILD_LATCH NUMBER 受保護的子閂鎖數量
LAST_ACTIVE_TIME DATE 上次活動時間
BIND_DATA RAW(2000) 綁定數據
這個視圖,你能很容易的得到造成過多的解析、物理讀、物理寫、邏輯讀等待sql語句;對於查找低效率sql語句很方便;
5、v$event_name
反映內容:所有等待事件以及相關參數(p1-p3的定義),沒有全部寫出來,只寫了最重要的字段
SQL> desc v$event_name
名稱 類型
----------------------------------------------------- --------------------
EVENT# NUMBER 該事件的引用編號
EVENT_ID NUMBER 該事件的標識符
NAME VARCHAR2(64) oracle針對次事件的名稱
PARAMETER1 VARCHAR2(64) P1信息的描述
PARAMETER2 VARCHAR2(64) P2信息的描述
PARAMETER3 VARCHAR2(64) P3信息的描述

6、V$session_event
反映的內容:最近的所有等待事件的統計信息
SQL> desc v$session_event
名稱 類型
----------------------- --------
SID NUMBER 標識符
EVENT VARCHAR2(64) 該事件的名稱
TOTAL_WAITS NUMBER 該會話總的等待次數
TOTAL_TIMEOUTS NUMBER 該會話在等待事件期間遇到的超時次數
TIME_WAITED NUMBER 該會話等待該事件所消耗的總時間單位0.01秒
AVERAGE_WAIT NUMBER 該會話等待該事件所消耗平均等待時間0.01秒
MAX_WAIT NUMBER 進程必須等待該事件的最大時間總值單位0.01秒
EVENT_ID NUMBER 等待事件的唯一標識符對應V$event_name表

通過這個動態性能視圖,你應該很容易瞭解到最近常常發生的等待事件的大體情況;

7、v$session_wait
反映的內容:提供了當前會話的當前等待事件的詳細信息
SQL> desc v$session_wait
名稱 是否爲空? 類型
----------------------- -------- ----------------
SID NUMBER 唯一表示符
SEQ# NUMBER 等待次序的計數器,進程每開始一次新的等待就就增加1
EVENT VARCHAR2(64) Resource or event for which the session is waiting
P1TEXT VARCHAR2(64) 等待事件P1參數名稱
P1 NUMBER p1的值
P1RAW RAW(4) p1參數2進制值
P2TEXT VARCHAR2(64) 等待事件P2參數名稱
P2 NUMBER p2的值
P2RAW RAW(4) p2參數2進制值
P3TEXT VARCHAR2(64) 等待事件P3參數名稱
P3 NUMBER p3的值
P3RAW RAW(4) p3參數2進制值
WAIT_TIME NUMBER 上一次等待持續的時間單位0.01秒
SECONDS_IN_WAIT NUMBER 等待時間單位秒
STATE VARCHAR2(19) 指出進程是已經完成了等待還是還在等待
比如:
SQL> select event name,p1text p1name,p1 p1value from v$session_wait;

NAME P1NAME P1VALUE
------------------------------ --------------- ------------
jobq slave wait 0
SQL*Net message from client driver id 1111838976
Streams AQ: qmn slave idle wai 0
t

Streams AQ: qmn coordinator id 0
le wait

Streams AQ: waiting for time m 0
anagement or cleanup tasks

rdbms ipc message timeout 100
rdbms ipc message timeout 300
rdbms ipc message timeout 500

很容易看到當前等待事件的情況;
8、v$system_event
反映的內容:列出自從實例啓動以來的等待事件的統計信息
SQL> desc v$system_event
名稱 類型
----------------------- -------------------
EVENT VARCHAR2(64) 等待事件的名稱
TOTAL_WAITS NUMBER 次等待事件的總的等待次數
TOTAL_TIMEOUTS NUMBER 總的超時等待事件的次數
TIME_WAITED NUMBER 等待事件的總的等待時間
AVERAGE_WAIT NUMBER 平均等待時間單位0.01s
EVENT_ID NUMBER 等待事件的唯一標示符 和v$event_name中的對應

9、dba_tables
反映內容:記錄數據庫表所有信息,這裏我也只是列出用於性能測試多的字段
SQL> desc dba_tables;
名稱 類型
----------------------- -------------
OWNER NOT NULL VARCHAR2(30) 所有者
TABLE_NAME NOT NULL VARCHAR2(30) 表名
TABLESPACE_NAME VARCHAR2(30) 表所在的表空間名
CLUSTER_NAME VARCHAR2(30) 所在集羣的名稱
PCT_FREE NUMBER 數據塊允許空閒的最小百分比
PCT_USED NUMBER 數據塊允許使用的最大百分比
MAX_TRANS NUMBER 最大事務數
FREELISTS NUMBER 被分配給段的空閒進程數量
LOGGING VARCHAR2(3) 是否記錄日誌生成重做日誌記錄
NUM_ROWS NUMBER 總共有多少行數據記錄
BLOCKS NUMBER 此表使用的塊數
EMPTY_BLOCKS NUMBER 表中從來不沒有被使用的空塊
AVG_SPACE NUMBER 表中平均可用空閒空間
AVG_SPACE_FREELIST_BLOC NUMBER Average freespace of all blocks on a freelist
NUM_FREELIST_BLOCKS NUMBER 空閒列表的塊數
CACHE VARCHAR2(5) 檢查表是否被cache到buffer中
TABLE_LOCK VARCHAR2(8) 表名錶是正在否被鎖定
SAMPLE_SIZE NUMBER 表被分析的比例或者數量
LAST_ANALYZED DATE 表上一次被分析的時間點
NESTED VARCHAR2(3) 表是否嵌套
BUFFER_POOL VARCHAR2(7) buffer_pool中被用於表塊的default、keep、recycle
MONITORING VARCHAR2(3) 表名錶是否正被監控

這個視圖非常的有用,一般可以用來作爲健康檢查,檢查數據庫表的分析情況等,對於oracle9以後的版本都推薦使用基於成本的優化器cbo,基於規則的優化器逐漸被放棄了,所以分析的瞭解很重要:
如下:
TABLE_NAME TABLESPACE_NAME PCT_FREE PCT_USED NUM_ROWS BUFFER_ SAMPLE_SIZE LAST_ANALYZED
------------------------------ ------------------------------ ---------- ---------- ---------- ------- ----------- --------------
LT_LHT_COUNT LHT_BBS_SPACE 10 8 DEFAULT 8 24-6月 -09
LT_LHT_CYXX LHT_BBS_SPACE 10 26 DEFAULT 26 24-6月 -09
LT_LHT_FLBK LHT_BBS_SPACE 10 7 DEFAULT 7 24-6月 -09
LT_LHT_SORT LHT_BBS_SPACE 10 3 DEFAULT 3 24-6月 -09
LT_LHT_STYLE LHT_BBS_SPACE 10 15 DEFAULT 15 24-6月 -09
LT_LHT_XTYH LHT_BBS_SPACE 10 6 DEFAULT 6 24-6月 -09
LT_LHT_ZCYH LHT_BBS_SPACE 10 36 DEFAULT 36 24-6月 -09
LT_LHT_FT LHT_BBS_SPACE 10 24 DEFAULT 24 24-6月 -09
LT_LHT_HT LHT_BBS_SPACE 10 21 DEFAULT 21 24-6月 -09
TEST LHT_BBS_SPACE 10 0 DEFAULT 0 29-6月 -09
TEST_LOG LHT_BBS_SPACE 10 6 DEFAULT 6 29-6月 -09

可以清晰的瞭解到裱褙分析的情況,如果LAST_ANALYZED沒有值或者時間很早了,那就必須重新的分析這張表得到更爲準確統計信 息,SAMPLE_SIZE代表分析的採樣值,如果不合理也可以在分析的時候作調整,這些檢查有利於卻確定基於成本的優化器能夠按照最優化的路經化最小的 成本來完成操作和響應。

既然對於dba_tables有這樣應用,那麼dba_indexes也就有同樣的使用方式了,索引和表達大同小異就不再說了。

9、V$SGA_TARGET_ADVICE
採用動態sga內存管理,但是你希望能知道如何設置這個最大大小才合適呢,那可以採用這個視圖;
SQL> desc V$SGA_TARGET_ADVICE
名稱 類型
----------------------- ------------------------
SGA_SIZE NUMBER sga大小
SGA_SIZE_FACTOR NUMBER 此表中的sga_size和當前的parameter中的sga大小的比值
ESTD_DB_TIME NUMBER
ESTD_DB_TIME_FACTOR NUMBER
ESTD_PHYSICAL_READS NUMBER 估計的物理讀的次數
比如:
SQL> select sga_size,sga_size_factor,estd_db_time,estd_db_time_factor,estd_physical_reads from V$SGA_TARGET_ADVICE;

SGA_SIZE SGA_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR ESTD_PHYSICAL_READS
---------- --------------- ------------ ------------------- -------------------
276 1 154 1 10828
138 .5 191 1.2403 12666
207 .75 154 1 10828
552 2 154 1 10828
414 1.5 154 1 10828
483 1.75 154 1 10828
345 1.25 154 1 10828

已選擇7行。
可以發現當sga設置爲207M或者更大的時候就沒有性能上的提升了,所以最大也就設置爲207左右是比較合適的。

10、 V$pga_TARGET_ADVICE
結合9的sga設置pga的pga_target_max設置同樣可以採用這樣的方式;
SQL> desc V$pga_TARGET_ADVICE
名稱 類型
----------------------------------------- --------------------------
PGA_TARGET_FOR_ESTIMATE NUMBER pga設置大小bytes
PGA_TARGET_FACTOR NUMBER 與當前parameter中設置的值的比例
ADVICE_STATUS VARCHAR2(3) 表名advice是否課可採用on/off,取決於STATISTICS_LEVEL
BYTES_PROCESSED NUMBER 被所有的進程所佔用的資源bytes
ESTD_EXTRA_BYTES_RW NUMBER 被估計的用於讀和寫的資源佔用
ESTD_PGA_CACHE_HIT_PERCENTAGE NUMBER 估計的命中率,當PGA_TARGET_FOR_ESTIMATE等於實際設置的pgaparameter時
ESTD_OVERALLOC_COUNT NUMBER 這裏的值如果爲零表示pga設置足夠大,非零說明pga的設置不是足夠大的
QL> select * from V$pga_TARGET_ADVICE;

GA_TARGET_FOR_ESTIMATE PGA_TARGET_FACTOR ADV BYTES_PROCESSED ESTD_EXTRA_BYTES_RW ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COU
T
---------------------- ----------------- --- --------------- ------------------- ----------------------------- ------------------
-
11927552 .125 ON 202396672 6168576 97
4
23855104 .25 ON 202396672 0 100
0
47710208 .5 ON 202396672 0 100


Oracle維護常用SQL語句(查詢系統表和視圖)

提要:
1、查看錶空間的名稱及大小
2、查看錶空間物理文件的名稱及大小
3、查看回滾段名稱及大小
4、查看控制文件
5、查看日誌文件
6、查看錶空間的使用情況
7、查看數據庫庫對象
8、查看數據庫的版本 
9、查看數據庫的創建日期和歸檔方式
10、捕捉運行很久的SQL
11。查看數據表的參數信息
12.查看還沒提交的事務
13。查找object爲哪些進程所用
14。回滾段查看
15。耗資源的進程(top session)
16。查看鎖(lock)情況
17。查看等待(wait)情況
18。查看sga情況
19。查看catched object
20。查看V$SQLAREA
21。查看object分類數量
22。按用戶查看object種類
23。有關connection的相關信息
1)查看有哪些用戶連接
2)根據v.sid查看對應連接的資源佔用等情況
3)根據sid查看對應連接正在運行的sql
24.查詢表空間使用情況
25.查詢表空間的碎片程度
26.查詢正在運行的數據庫實例


1、查看錶空間的名稱及大小


select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size

from dba_tablespaces t, dba_data_files d

where t.tablespace_name = d.tablespace_name

group by t.tablespace_name;


2、查看錶空間物理文件的名稱及大小


select tablespace_name, file_id, file_name,

round(bytes/(1024*1024),0) total_space

from dba_data_files

order by tablespace_name;


3、查看回滾段名稱及大小


select segment_name, tablespace_name, r.status,

(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,

max_extents, v.curext CurExtent

From dba_rollback_segs r, v$rollstat v

Where r.segment_id = v.usn(+)

order by segment_name ;


4、查看控制文件


select name from v$controlfile;


5、查看日誌文件


select member from v$logfile;


6、查看錶空間的使用情況


select sum(bytes)/(1024*1024) as free_space,tablespace_name

from dba_free_space

group by tablespace_name;


SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,

(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"

FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C

WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;


7、查看數據庫庫對象


select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;


8、查看數據庫的版本 


Select version FROM Product_component_version

Where SUBSTR(PRODUCT,1,6)='Oracle';


9、查看數據庫的創建日期和歸檔方式


Select Created, Log_Mode, Log_Mode From V$Database;


10、捕捉運行很久的SQL


column username format a12

column opname format a16

column progress format a8


select username,sid,opname,

round(sofar*100 / totalwork,0) || '%' as progress,

time_remaining,sql_text

from v$session_longops , v$sql

where time_remaining <> 0

and sql_address = address

and sql_hash_value = hash_value

/

11。查看數據表的參數信息

SELECT partition_name, high_value, high_value_length, tablespace_name,
pct_free, pct_used, ini_trans, max_trans, initial_extent,
next_extent, min_extent, max_extent, pct_increase, FREELISTS,
freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks,
empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size,
last_analyzed
FROM dba_tab_partitions
--WHERE table_name = :tname AND table_owner = :towner
ORDER BY partition_position


12.查看還沒提交的事務

select * from v$locked_object;

select * from v$transaction;


13。查找object爲哪些進程所用

select
p.spid,
s.sid,
s.serial# serial_num,
s.username user_name,
a.type object_type,
s.osuser os_user_name,
a.owner,
a.object object_name,
decode(sign(48 - command),
1,
to_char(command), 'Action Code #' || to_char(command) ) action,
p.program oracle_process,
s.terminal terminal,
s.program program,
s.status session_status
from v$session s, v$access a, v$process p
where s.paddr = p.addr and
s.type = 'USER' and
a.sid = s.sid and
a.object='SUBSCRIBER_ATTR'
order by s.username, s.osuser


14。回滾段查看

select rownum, sys.dba_rollback_segs.segment_name Name, v$rollstat.extents
Extents, v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs,
v$rollstat.gets Gets, v$rollstat.waits Waits, v$rollstat.writes Writes,
sys.dba_rollback_segs.status status from v$rollstat, sys.dba_rollback_segs,
v$rollname where v$rollname.name(+) = sys.dba_rollback_segs.segment_name and
v$rollstat.usn (+) = v$rollname.usn order by rownum


15。耗資源的進程(top session)

select s.schemaname schema_name, decode(sign(48 - command), 1,
to_char(command), 'Action Code #' || to_char(command) ) action, status
session_status, s.osuser os_user_name, s.sid, p.spid , s.serial# serial_num,
nvl(s.username, '[Oracle process]') user_name, s.terminal terminal,
s.program program, st.value criteria_value from v$sesstat st, v$session s , v$process p
where st.sid = s.sid and st.statistic# = to_number('38') and ('ALL' = 'ALL'
or s.status = 'ALL') and p.addr = s.paddr order by st.value desc, p.spid asc, s.username asc, s.osuser asc


16。查看鎖(lock)情況

select /*+ RULE */ ls.osuser os_user_name, ls.username user_name,
decode(ls.type, 'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock', 'TX',
'Transaction enqueue lock', 'UL', 'User supplied lock') lock_type,
o.object_name object, decode(ls.lmode, 1, null, 2, 'Row Share', 3,
'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', null)
lock_mode, o.owner, ls.sid, ls.serial# serial_num, ls.id1, ls.id2
from sys.dba_objects o, ( select s.osuser, s.username, l.type,
l.lmode, s.sid, s.serial#, l.id1, l.id2 from v$session s,
v$lock l where s.sid = l.sid ) ls where o.object_id = ls.id1 and o.owner
<> 'SYS' order by o.owner, o.object_name

17。查看等待(wait)情況

SELECT v$waitstat.class, v$waitstat.count count, SUM(v$sysstat.value) sum_value
FROM v$waitstat, v$sysstat WHERE v$sysstat.name IN ('db block gets',
'consistent gets') group by v$waitstat.class, v$waitstat.count

18。查看sga情況

SELECT NAME, BYTES FROM SYS.V_$SGASTAT ORDER BY NAME ASC

19。查看catched object

SELECT owner, name, db_link, namespace,
type, sharable_mem, loads, executions,
locks, pins, kept FROM v$db_object_cache

20。查看V$SQLAREA

SELECT SQL_TEXT, SHARABLE_MEM, PERSISTENT_MEM, RUNTIME_MEM, SORTS,
VERSION_COUNT, LOADED_VERSIONS, OPEN_VERSIONS, USERS_OPENING, EXECUTIONS,
USERS_EXECUTING, LOADS, FIRST_LOAD_TIME, INVALIDATIONS, PARSE_CALLS, DISK_READS,
BUFFER_GETS, ROWS_PROCESSED FROM V$SQLAREA

21。查看object分類數量

select decode (o.type#,1,'INDEX' , 2,'TABLE' , 3 , 'CLUSTER' , 4, 'VIEW' , 5 ,
'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) object_type , count(*) quantity from
sys.obj$ o where o.type# > 1 group by decode (o.type#,1,'INDEX' , 2,'TABLE' , 3
, 'CLUSTER' , 4, 'VIEW' , 5 , 'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) union select
'COLUMN' , count(*) from sys.col$ union select 'DB LINK' , count(*) from

22。按用戶查看object種類

select u.name schema, sum(decode(o.type#, 1, 1, NULL)) indexes,
sum(decode(o.type#, 2, 1, NULL)) tables, sum(decode(o.type#, 3, 1, NULL))
clusters, sum(decode(o.type#, 4, 1, NULL)) views, sum(decode(o.type#, 5, 1,
NULL)) synonyms, sum(decode(o.type#, 6, 1, NULL)) sequences,
sum(decode(o.type#, 1, NULL, 2, NULL, 3, NULL, 4, NULL, 5, NULL, 6, NULL, 1))
others from sys.obj$ o, sys.user$ u where o.type# >= 1 and u.user# =
o.owner# and u.name <> 'PUBLIC' group by u.name order by
sys.link$ union select 'CONSTRAINT' , count(*) from sys.con$

23。有關connection的相關信息

1)查看有哪些用戶連接

select s.osuser os_user_name, decode(sign(48 - command), 1, to_char(command),
'Action Code #' || to_char(command) ) action, p.program oracle_process,
status session_status, s.terminal terminal, s.program program,
s.username user_name, s.fixed_table_sequence activity_meter, '' query,
0 memory, 0 max_memory, 0 cpu_usage, s.sid, s.serial# serial_num
from v$session s, v$process p where s.paddr=p.addr and s.type = 'USER'
order by s.username, s.osuser
2)根據v.sid查看對應連接的資源佔用等情況

select n.name,
v.value,
n.class,
n.statistic#
from v$statname n,
v$sesstat v
where v.sid = 71 and
v.statistic# = n.statistic#
order by n.class, n.statistic#
3)根據sid查看對應連接正在運行的sql

select /*+ PUSH_SUBQ */
command_type,
sql_text,
sharable_mem,
persistent_mem,
runtime_mem,
sorts,
version_count,
loaded_versions,
open_versions,
users_opening,
executions,
users_executing,
loads,
first_load_time,
invalidations,
parse_calls,
disk_reads,
buffer_gets,
rows_processed,
sysdate start_time,
sysdate finish_time,
'>' || address sql_address,
'N' status
from v$sqlarea
where address = (select sql_address from v$session where sid = 71)


24.查詢表空間使用情況

select a.tablespace_name "表空間名稱",

100-round((nvl(b.bytes_free,0)/a.bytes_alloc)*100,2) "佔用率(%)",

round(a.bytes_alloc/1024/1024,2) "容量(M)",

round(nvl(b.bytes_free,0)/1024/1024,2) "空閒(M)",

round((a.bytes_alloc-nvl(b.bytes_free,0))/1024/1024,2) "使用(M)",

Largest "最大擴展段(M)",

to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "採樣時間"

from (select f.tablespace_name,

sum(f.bytes) bytes_alloc,

sum(decode(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) maxbytes

from dba_data_files f

group by tablespace_name) a,

(select f.tablespace_name,

sum(f.bytes) bytes_free

from dba_free_space f

group by tablespace_name) b,

(select round(max(ff.length)*16/1024,2) Largest,

ts.name tablespace_name

from sys.fet$ ff, sys.file$ tf,sys.ts$ ts

where ts.ts#=ff.ts# and ff.file#=tf.relfile# and ts.ts#=tf.ts#

group by ts.name, tf.blocks) c

where a.tablespace_name = b.tablespace_name and a.tablespace_name = c.tablespace_name


25. 查詢表空間的碎片程度


select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_name

having count(tablespace_name)>10;


alter tablespace name coalesce;

alter table name deallocate unused;


create or replace view ts_blocks_v as

select tablespace_name,block_id,bytes,blocks,'free space' segment_name from dba_free_space

union all

select tablespace_name,block_id,bytes,blocks,segment_name from dba_extents;


select * from ts_blocks_v;


select tablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_space

group by tablespace_name;


26。查詢有哪些數據庫實例在運行

select inst_name from v$active_instances;
發佈了90 篇原創文章 · 獲贊 0 · 訪問量 2339
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章