本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定和取消設定系統診斷事件
若要在工作階段層級設定和取消設定診斷事件,您可以使用 Oracle SQL陳述式 ALTER SESSION SET EVENTS
。不過,若要在系統層級設定事件,則無法使用 Oracle SQL。而是使用 rdsadmin.rdsadmin_util
套件中的系統事件程序。下列引擎版本提供系統事件程序:
-
所有 Oracle Database 21c 版本
-
19.0.0.0.ru-2020-10.rur-2020-10.r1 及更新的 Oracle Database 19c 版本
如需詳細資訊,請參閱 Amazon RDS for Oracle 版本備註中的版本 19.0.0.0.ru-2020-10.rur-2020-10.r1
重要
在內部,rdsadmin.rdsadmin_util
套件會使用 ALTER SYSTEM SET EVENTS
陳述式來設定事件。此 ALTER
SYSTEM
陳述式並未記錄在 Oracle 資料庫文件中。某些系統診斷事件可能會產生大量的追蹤資訊、造成爭用或影響資料庫可用性。建議您在非生產資料庫中測試特定的診斷事件,並且只在 Oracle Support 的指導下,在生產資料庫中設定事件。
列出允許的系統診斷事件
若要列出您可以設定的系統事件,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.list_allowed_system_events
。此程序不接受任何參數。
下列範例會列出您可以設定的所有系統事件。
SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;
下列範例輸出列出事件編號及其描述。使用 Amazon RDS 程序set_system_event
來設定這些事件,並unset_system_event
取消設定它們。
604 - error occurred at recursive SQL level 942 - table or view does not exist 1401 - inserted value too large for column 1403 - no data found 1410 - invalid ROWID 1422 - exact fetch returns more than requested number of rows 1426 - numeric overflow 1427 - single-row subquery returns more than one row 1476 - divisor is equal to zero 1483 - invalid length for DATE or NUMBER bind variable 1489 - result of string concatenation is too long 1652 - unable to extend temp segment by in tablespace 1858 - a non-numeric character was found where a numeric was expected 4031 - unable to allocate bytes of shared memory ("","","","") 6502 - PL/SQL: numeric or value error 10027 - Specify Deadlock Trace Information to be Dumped 10046 - enable SQL statement timing 10053 - CBO Enable optimizer trace 10173 - Dynamic Sampling time-out error 10442 - enable trace of kst for ORA-01555 diagnostics 12008 - error in materialized view refresh path 12012 - error on auto execute of job 12504 - TNS:listener was not given the SERVICE_NAME in CONNECT_DATA 14400 - inserted partition key does not map to any partition 31693 - Table data object failed to load/unload and is being skipped due to error:
注意
允許的系統事件清單可能會隨著時間而變更。若要確定您擁有最新的符合資格事件的清單,請使用 rdsadmin.rdsadmin_util.list_allowed_system_events
。
設定系統診斷事件
若要設定系統事件,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.set_system_event
。您只能設定 rdsadmin.rdsadmin_util.list_allowed_system_events
的輸出中列出的事件。set_system_event
程序接受下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
數字 |
— |
是 |
系統事件編號。該值必須是由 |
|
數字 |
— |
是 |
事件層級。如需不同層級值的說明,請參閱 Oracle 資料庫文件或 Oracle 支援。 |
程序 set_system_event
會根據下列原則建構並執行所需的 ALTER SYSTEM SET EVENTS
陳述式:
-
自動決定事件類型 (
context
或errorstack
)。 -
表單
ALTER SYSTEM SET EVENTS '
中的陳述式會設定內容事件。此標記法等同於event
LEVELevent_level
'ALTER SYSTEM SET EVENTS '
。event
TRACE NAME CONTEXT FOREVER, LEVELevent_level
' -
表單中
ALTER SYSTEM SET EVENTS '
的陳述式會設定錯誤堆疊事件。此標記法等同於event
ERRORSTACK (event_level
)'ALTER SYSTEM SET EVENTS '
。event
TRACE NAME ERRORSTACK LEVELevent_level
'
下列範例會在層級 3 設定事件 942,並在層級 10 設定事件 10442。包括範例輸出。
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(942,3); Setting system event 942 with: alter system set events '942 errorstack (3)' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(10442,10); Setting system event 10442 with: alter system set events '10442 level 10' PL/SQL procedure successfully completed.
列出已設定的系統診斷事件
若要列出目前設定的系統事件,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.list_set_system_events
。此程序只會報告在系統層級由 set_system_event
設定的事件。
下列範例會列出作用中的系統事件。
SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_set_system_events;
下列範例輸出顯示事件清單、事件類型、目前設定事件的層級,以及設定事件的時間。
942 errorstack (3) - set at 2020-11-03 11:42:27 10442 level 10 - set at 2020-11-03 11:42:41 PL/SQL procedure successfully completed.
取消設定系統診斷事件
若要取消設定系統事件,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.unset_system_event
。您只能取消設定 rdsadmin.rdsadmin_util.list_allowed_system_events
的輸出中列出的事件。unset_system_event
程序接受下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
數字 |
— |
是 |
系統事件編號。該值必須是由 |
下列範例會取消設定事件 942 和 10442。包括範例輸出。
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(942); Unsetting system event 942 with: alter system set events '942 off' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(10442); Unsetting system event 10442 with: alter system set events '10442 off' PL/SQL procedure successfully completed.