日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

查看死鎖

SELECT 
s.sid "會話ID",
s.lockwAIt "等待鎖",
s.event "等待的資源/事件",  -- 最近等待或正在等待的資源/事件
DECODE(lo.locked_mode, 0, '尚未獲得鎖', 1, NULL, 2, '行共享鎖', 3, '行排它鎖', 4, '共享表鎖',
5,'共享行排它鎖',6, '排它表鎖') "鎖模式",
do.object_name "被鎖對象",
s.status "會話狀態",
sq.SQL_TEXT,
sq.SQL_FULLTEXT, 
sq.executions "SQL執行次數",
ROUND(sq.elapsed_time/1000000, 2) "SQL執行時間(秒)",
DECODE(sq.executions,0,'-',NULL,'-',ROUND(sq.elapsed_time/1000000/sq.executions, 2)) "SQL平均執行時間(秒)", 
DECODE(sq.executions,0,'-',NULL,'-',ROUND(sq.rows_processed/sq.executions, 2)) "平均返回行數", 
s.sql_exec_start "SQL開始執行時間",
sq.last_active_time "查詢計劃最后活躍時間",
lo.process "操作系統進程ID",
s.port "進程端口號",
s.program "進程名稱", 
lo.os_user_name "操作系統用戶名",
s.machine "操作系統機器名稱",
'ALTER SYSTEM KILL SESSSION '''||s.sid||','||s.serial#||''';' "終止會話操作"
FROM v$sql sq 
JOIN v$session s on s.sql_hash_value = sq.hash_value
JOIN v$locked_object lo on lo.session_id = s.sid
JOIN dba_objects do on do.object_id = lo.object_id
WHERE s.username='OPT_WMS_USER' ; -- Oracle用戶名稱,大寫

說明:

  • 如果lockwait值不為空(形如0000001F83D6C748),并且status為ACTIVE,則說明存在死鎖
  • event 最近等待或正在等待的資源/事件:
    • enq: TX - row lock contention :按模式6等待TX:當會話等待另一個會話已持有的行級鎖時發生該事件,即某個用戶正在更新、刪除另一個會話希望更新、刪除的行時,會發生這種情況。這種類型的TX排隊等待對應于等待事件 enq:TX - row lock contention。
    • 解決方案:已經持有鎖的第一個會話執行提交或回

查看慢查詢

查詢執行最慢的SQL

SELECT * FROM (
  SELECT s.sql_text,
  --s.sql_fulltext, 注釋掉該列,可以加快查詢速度(如果需要查詢完整sql文本,可以考慮通過sql_id二次查詢)
  s.sql_id,
  s.executions "執行次數",
  ROUND(s.elapsed_time / 1000000, 2) "總執行時間(秒)",
  ROUND(s.elapsed_time / 1000000 / s.executions, 2) "平均執行時間", --單位:秒
  s.first_load_time "父游標創建時間",
  s.parsing_user_id "用戶id",
  u.username "用戶名"
  FROM v$sqlarea s
  LEFT JOIN all_users u ON s.parsing_user_id = u.user_id
  WHERE s.executions > 0
  AND u.username = 'OPT_WMS_USER' --注意 用戶名大寫
  ORDER BY 平均執行時間 DESC)
WHERE rownum <= 50

說明:為什么不從v$sql統計信息?這是因為即便相同的SQL,每次執行耗時也可能不一樣,所以,考慮求平均值,所以需要對SQL分組統計,SQL_TEXT相同,大概率為同一條SQL,所以考慮從按SQL_TEXT分組統計的v$sqlarea讀取信息。當然,出于嚴謹的考慮,也可以不分組統計,把v$sqlarea替換成v$sql就好了。

查詢SQL執行次數,按次數降序排序

SELECT * FROM (
  SELECT s.sql_text,
    --s.sql_fulltext,
    s.sql_id,
    s.executions "執行次數",
    s.last_active_time "最后執行時間",
    s.first_load_time "父游標創建時間",
    s.parsing_user_id "執行用戶id",
    u.username "執行用戶", 
  RANK() OVER(ORDER BY executions DESC) executions_rank
  FROM v$sql s
  LEFT JOIN all_users u
  ON u.user_id = s.parsing_user_id) T
WHERE executions_rank <= 100;

注意:之所以從v$sql獲取統計數據,是因為這里未對SQL_TEXT做GROUP BY(SQL_TEXT是完整SQL文本前1000個字符,存在截斷的可能,按在這個統計可能不準確),就針對每條SQL(不管是否相同)單獨統計,當然,也可以考慮按SQL_TEXT分組統計,把v$sql改成v$sqlarea就好了。

查看存在TABLE ACCESS FULL行為的SQL

SELECT s.sql_text, s.sql_fulltext, sp.sql_id 
FROM v$sql_plan sp
LEFT JOIN v$sql s on sp.sql_id = s.sql_id
WHERE sp.operation = 'TABLE ACCESS'
AND sp.options = 'FULL'
AND sp.object_owner = 'OPT_WMS_USER_B' --注意 用戶名大寫 --可選查詢條件

V$SQL

V$SQL列出了關于共享SQL區,不含GROUP BY子句的統計,輸入的原始SQL文本的每個子項各占一行。通常在查詢執行結束時更新V$SQL中展示的統計信息,然而針對長耗時查詢,每5秒更新一次。這樣更容易在運行期間查看長時間運行的SQL語句帶來的影響

Column

Datatype

Description

SQL_TEXT

VARCHAR2(1000)

當前游標的SQL文本的前1000個字符

SQL_FULLTEXT

CLOB

以<CLOB>方式展示的SQL語句全文。可使用該列檢索SQL語句全文,而無需連接V$SQLTEXT動態性能視圖。

SQL_ID

VARCHAR2(13)

類庫緩存中父游標的SQL標識。

SHARABLE_MEM

NUMBER

子游標使用的共享內存量(字節為單位)

PERSISTENT_MEM

NUMBER

子游標生存周期內使用的固定內存量(字節為單位)

RUNTIME_MEM

NUMBER

子游標運行期間所需的固定內存量(字節為單位)

SORTS

NUMBER

子游標完成的排序次數

LOADED_VERSIONS

NUMBER

指示是否已加載上下文堆,1表示已加載,0表示未加載。

OPEN_VERSIONS

NUMBER

指示子游標是否被鎖定,1表示被鎖定,0表示未被鎖定

USERS_OPENING

NUMBER

任意子游標打開的用戶數。

FETCHES

NUMBER

與SQL語句關聯的FETCHES的次數

EXECUTIONS

NUMBER

自從對象被加載到類庫緩存后,該對象被執行次數。

PX_SERVERS_EXECUTIONS

NUMBER

并行執行服務器執行的總次數 ( 當語句從未被并行執行時為0)

END_OF_FETCH_COUNT

NUMBER

游標被加載到類庫緩存后,被完整執行的次數。當游標部分執行時,此統計值不會增加,不管是因為在執行過程中失敗,還是在關閉或重新執行游標之前只提取了此游標生成的前幾行。根據定義,END_of_FETCH_COUNT列的值應小于或等于EXECUTIONS列的值。

USERS_EXECUTING

NUMBER

執行語句的用戶數

LOADS

NUMBER

對象被加載或者重新加載的次數

FIRST_LOAD_TIME

VARCHAR2(19)

父游標的創建時間

INVALIDATIONS

NUMBER

子游標無效的次數

PARSE_CALLS

NUMBER

子游標的解析調用次數

DISK_READS

NUMBER

子游標的磁盤讀取次數

DIRECT_WRITES

NUMBER

子游標的直接寫次數

BUFFER_GETS

NUMBER

子游標的獲取緩存區次數

AppLICATION_WAIT_TIME

NUMBER

應用等待時間(微秒為單位)

CONCURRENCY_WAIT_TIME

NUMBER

并發等待時間(微秒為單位)

CLUSTER_WAIT_TIME

NUMBER

集群等待時間(微秒為單位)

USER_IO_WAIT_TIME

NUMBER

用戶I/O等待時間(微秒為單位)

PLSQL_EXEC_TIME

NUMBER

PL/SQL執行時間(微秒為單位)

JAVA_EXEC_TIME

NUMBER

Java執行時間(微秒為單位)

ROWS_PROCESSED

NUMBER

已解析SQL語句返回的總行數

COMMAND_TYPE

NUMBER

Oracle命令類型定義

OPTIMIZER_MODE

VARCHAR2(10)

SQL語句執行模式(優化器模型)

OPTIMIZER_COST

NUMBER

優化器給出的查詢成本

PARSING_USER_ID

NUMBER

最初構建此子游標的用戶ID

PARSING_SCHEMA_ID

NUMBER

最初構建子游標使用的模式ID

PARSING_SCHEMA_NAME

VARCHAR2(30)

最初構建子游標使用的模式名稱

SERVICE

VARCHAR2(64)

服務名稱

SERVICE_HASH

NUMBER

SERVICE列展示的服務名稱的哈希值

MODULE

VARCHAR2(64)

SQL語句第一次被解析時正在執行的模塊名稱,該名稱可通過調用
DBMS_APPLICATION_INFO.SET_MODULE進行設置。

MODULE_HASH

NUMBER

MODULE列展示的模塊名稱的哈希值

SERIALIZABLE_ABORTS

NUMBER

每個游標事務序列化失敗并產生ORA-08177錯誤的次數

CPU_TIME

NUMBER

此游標用于解析,執行,獲取(fetch)的CPU耗時 (以微秒為單位)

ELAPSED_TIME

NUMBER

此游標用于解析,執行,獲取的占用時間(以微秒為單位)。如果游標采用并行執行,則ELAPSED_TIME 為查詢協調器及所有并行查詢slave進程的累計占用時間。

OBJECT_STATUS

VARCHAR2(19)

游標的狀態:VALID - 有效,無錯誤授權 VALID_AUTH_ERROR - 有效,有授權錯誤授權。VALID_COMPILE_ERROR - 有效, 有編譯錯誤授權。VALID_UNAUTH - 有效,未授權。INVALID_UNAUTH - 無效,未授權。INVALID - 無效,未授權,但保留時間戳。

LAST_LOAD_TIME

VARCHAR2(19)

查詢計劃被加載到類庫緩存的時間

IS_OBSOLETE

VARCHAR2(1)

指示游標是否已過時,是(Y) 或者否(N)。如果子游標的數量太大,則可能發生這種情況。

LAST_ACTIVE_TIME

DATE

查詢計劃最后活躍時間(即完成SQL解析的時間,可以當做SQL最后執行的時間)

IO_INTERCONNECT_BYTES

NUMBER

Oracle 數據庫和存儲系統之間交換的I/O字節數。

PHYSICAL_READ_REQUESTS

NUMBER

被監控SQL發起的物理讀I/O請求

PHYSICAL_READ_BYTES

NUMBER

被監控SQL從磁盤讀取的字節數。

PHYSICAL_WRITE_REQUESTS

NUMBER

被監控SQL發起的物理寫I/O請求。

PHYSICAL_WRITE_BYTES

NUMBER

被監控SQL寫入磁盤的字節數

OPTIMIZED_PHY_READ_REQUESTS

NUMBER

被監控SQL從數據庫智能閃存緩存發起的物理讀取I/O請求數

LOCKED_TOTAL

NUMBER

子游標被鎖定的總次數

V$SQLAREA顯示共享SQL區域的統計信息,每條SQL字符串為一行。它提供內存中、已解析并準備執行的SQL語句的統計信息。V$SQLAREA和V$SQL兩個視圖的不同之處在于,V$SQL中為每一條SQL保留一個條目,而V$SQLAREA中根據SQL_TEXT進行GROUP BY,通過VERSION_COUNT計算子指針的個數

V$SESSION

V$SESSION 顯示當前會話的會話信息,常見視圖字段及字段描述說明如下:

描述

SID

會話ID

SERIAL#

會話序列號。用于唯一標識會話的對象。如果會話結束,而另一個會話以相同的會話ID開始,則保證將會話級命令應用于當前會話的對象。

USER#

Oracle用戶ID

USERNAME

Oracle用戶名稱

COMMAND

正在執行的命令(解析的最后一條語句)。可以通過運行以下SQL查詢來查找此COMMAND列中返回的任何值 n 的命令名:SELECT Command_name FROM v$sqlcommand WHERE command_type=n COMMAND”列值為 0,則表示該命令未記錄在V$SESSION中。

LOCKWAIT

會話正在等待的鎖的地址。NULL值表示沒有等待鎖。

STATUS

會話狀態:ACTIVE-會話當前正在執行SQL,INACTIVE-處于非活動狀態且沒有配置限制或尚未超過配置的限制的會話。KILLED-標記為被終止的會話。CACHED-為Oracle XA臨時緩存的會話。SNIPED-超出某些配置限制(例如,為資源管理器消費者組指定的資源限制或用戶配置文件中指定的idle_time)的非活動會話。此類會話將不允許再次激活。

SCHEMA#

Schema用戶ID

SCHEMANAME

Schema用戶名稱

OSUSER

操作系統客戶端用戶名稱

PROCESS

操作系統客戶端進程ID

MACHINE

操作系統機器名稱

PORT

客戶端進程端口號

TERMINAL

操作系統終端名稱

PROGRAM

操作系統進程名稱

TYPE

會話類型

SQL_HASH_VALUE

配合 SQL_HASH_VALUE使用,用于標識當前正在執行的SQL語句。

SQL_ID

當前正在執行的SQL語句的ID

SQL_EXEC_START

會話當前執行的SQL開始執行的時間;如果SQL_ID為NULL,則為NULL

SQL_EXEC_ID

SQL執行標識。 如果SQL_ID為NULL或者該SQL執行還未啟動,則為NULL

LAST_CALL_ET

如果會話STATUS當前為ACTIVE,則該值表示自會話變為活動狀態以來經過的時間(以秒為單位),如果會話STATUS當前為INACTIVE,則該值表示自會話變為非活動狀態以來經過的時間(以秒為單位)

EVENT

如果會話當前正在等待,則為會話正在等待的資源或事件。如果會話不在等待中,則為會話最近等待的資源或事件。查閱: "Oracle Wait Events"

V$LOCKED_OBJECT

V$LOCKED_OBECT列出了系統上每個事務獲取的所有鎖。它顯示了哪些會話在什么對象上以及在什么模式下持有DML鎖(即TM類型的隊列)。視圖常見字段及描述如下:

描述

OBJECT_ID

正被鎖住的對象ID

SESSION_ID

會話ID

ORACLE_USERNAME

Oracle用戶名

OS_USER_NAME

操作系統用戶名

PROCESS

操作系統進程ID

LOCKED_MODE

鎖模式。此列的數值映射到表鎖的鎖模式的這些文本值:0-無:請求但尚未獲得的鎖;1-NULL;2-ROWS_S(SS):行共享鎖;3-Row_X(SX):行排它鎖;4-Share(S):共享表鎖;5-S/Row-X(SSX):共享行排它鎖;6-獨占(X):排它表鎖。另請參閱:Oracle數據庫概念,以獲取有關表鎖鎖模式的更多信息

SELECT object_id "被鎖住的對象ID",
locked_mode "鎖模式",
session_id "會話ID",
oracle_username "Oracle用戶名",
os_user_name "操作系統用戶名",
process "操作系統進程ID"
FROM V$LOCKED_OBJECT;

分享到:
標簽:Oracle
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定