執行 Oracle 資料庫執行個體的一般系統任務 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

執行 Oracle 資料庫執行個體的一般系統任務

您可以在下文中找到如何在執行 Oracle 的 Amazon RDS 資料庫執行個體上執行與系統相關的一般 DBA 任務。為了提供受管理的服務體驗,Amazon RDS 並不會提供資料庫執行個體的 Shell 存取權,而且會將存取權限制在某些需要進階權限的系統程序和資料表。

中斷工作階段的連線

若要透過結束專屬的伺服器程序來中斷與目前工作階段的連線,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.disconnectdisconnect 程序具有下列參數。

參數名稱 資料類型 預設 必要 描述

sid

數字

工作階段識別符。

serial

數字

工作階段的序號。

method

varchar

'IMMEDIATE'

有效值為 'IMMEDIATE''POST_TRANSACTION'

下列範例會中斷工作階段的連線。

begin rdsadmin.rdsadmin_util.disconnect( sid => sid, serial => serial_number); end; /

若要取得工作階段識別符和工作階段序號,請查詢 V$SESSION 檢視。下列範例會取得使用者 AWSUSER 的所有工作階段。

SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';

請務必開啟資料庫,才能使用此方法。如需中斷工作階段連線的詳細資訊,請參閱 Oracle 文件中的 ALTER SYSTEM

終止工作階段

若要終止工作階段,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.killkill 程序具有下列參數。

參數名稱 資料類型 預設 必要 描述

sid

數字

工作階段識別符。

serial

數字

工作階段的序號。

method

varchar

null

有效值為 'IMMEDIATE''PROCESS'。若您指定 IMMEDIATE,它與執行下列陳述式具有相同的效果:

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE

若您指定 PROCESS,則會終止與工作階段相關聯的程序。若使用 IMMEDIATE 終止工作階段未成功,則僅指定 PROCESS

若要取得工作階段識別符和工作階段序號,請查詢 V$SESSION 檢視。下列範例會取得使用者的所有工作階段AWSUSER

SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';

下列範例會終止工作階段。

BEGIN rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number, method => 'IMMEDIATE'); END; /

下列範例會終止與工作階段相關聯的程序。

BEGIN rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number, method => 'PROCESS'); END; /

取消工作階段中的 SQL 陳述式

若要取消工作階段中的 SQL 陳述式,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.cancel

注意

Oracle Database 19c (19.0.0) 和 Oracle RDS 的所有較新的主要版本和次要版本支援此程序。

cancel 程序具有下列參數。

參數名稱 資料類型 預設 必要 描述

sid

數字

工作階段識別符。

serial

數字

工作階段的序號。

sql_id

varchar2

null

SQL 陳述式的 SQL 識別符。

下列範例會取消工作階段中的 SQL 陳述式。

begin rdsadmin.rdsadmin_util.cancel( sid => sid, serial => serial_number, sql_id => sql_id); end; /

若要取得工作階段識別符、工作階段序號和 SQL 陳述式的 SQL 識別符,請查詢 V$SESSION 檢視。下列範例會取得使用者 AWSUSER 的所有工作階段和 SQL 識別碼。

select SID, SERIAL#, SQL_ID, STATUS from V$SESSION where USERNAME = 'AWSUSER';

啟用和停用受限制的工作階段

若要啟用和停用受限制的工作階段,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.restricted_sessionrestricted_session 程序具有下列參數。

參數名稱 資料類型 預設 描述

p_enable

布林值

true

設定為 true 可啟用受限制的工作階段,設定為 false 則可停用受限制的工作階段。

下列範例顯示如何啟用和停用受限制的工作階段。

/* Verify that the database is currently unrestricted. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ------- ALLOWED /* Enable restricted sessions */ EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => true); /* Verify that the database is now restricted. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ---------- RESTRICTED /* Disable restricted sessions */ EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => false); /* Verify that the database is now unrestricted again. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ------- ALLOWED

清空共用集區

若要清空共用集區,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.flush_shared_poolflush_shared_pool 程序沒有參數。

下列範例會清空共用集區。

EXEC rdsadmin.rdsadmin_util.flush_shared_pool;

清空緩衝區快取

若要清空緩衝區快取,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.flush_buffer_cacheflush_buffer_cache 程序沒有參數。

下列範例會清空緩衝區快取。

EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;

排清資料庫智慧型快閃記憶體快取

若要排清資料庫智慧型快閃記憶體快取,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.flush_flash_cacheflush_flash_cache 程序沒有參數。下列範例會排清資料庫智慧型快閃記憶體快取。

EXEC rdsadmin.rdsadmin_util.flush_flash_cache;

如需搭配 RDS for Oracle 使用資料庫智慧型快閃記憶體快取的詳細資訊,請參閱 將暫存資料存放在 RDS for Oracle 執行個體儲存體中

將 SELECT 或 EXECUTE 權限授予 SYS 物件

您通常可以使用角色來傳輸權限,角色中可能包含許多物件。若要授予權限給單一物件,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.grant_sys_object。該程序只會授予主要使用者透過角色或直接授予所取得的權限。

grant_sys_object 程序具有下列參數。

重要

針對所有參數值,除非您已使用區分大小寫的識別符來建立使用者,否則請使用大寫字母。例如,如果您執行 CREATE USER myuserCREATE USER MYUSER,資料字典會存放 MYUSER。不過,如果您在 CREATE USER "MyUser" 中使用雙引號,資料字典則會存放 MyUser

參數名稱 資料類型 預設 必要 描述

p_obj_name

varchar2

要從其授予權限的來源物件名稱。物件可以是目錄、函數、套件、程序、順序、資料表或檢視。物件名稱的拼寫必須完全符合 DBA_OBJECTS 中的顯示內容。多數系統物件是以大寫定義,因此建議您先嘗試採用大寫。

p_grantee

varchar2

要對其授予權限的目標物件名稱。物件可以是結構描述或角色。

p_privilege

varchar2

null

p_grant_option

布林值

false

設定為 true 以使用 WITH GRANT OPTION。

下列範例會將名為 V_$SESSION 物件上的 SELECT 權限授予名為 USER1 的使用者。

begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT'); end; /

下列範例會將名為 V_$SESSION 物件上的 SELECT 權限授予名為 USER1 且擁有 GRANT OPTION 的使用者。

begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT', p_grant_option => true); end; /

您必須使用 GRANT OPTION 或透過使用 with admin option 授予的角色直接將這些權限授予帳戶,才能夠在物件上授予權限。在最常見的情況下,您可能需要在獲授予 SELECT 角色的 DBA 檢視上授予 SELECT_CATALOG_ROLE。如果您尚未使用 with admin option 將該角色直接授予使用者,則無法轉移權限。如果您擁有 DBA 權限,就能夠將該角色直接授予另一位使用者。

下列範例會授予 SELECT_CATALOG_ROLEEXECUTE_CATALOG_ROLEUSER1。由於使用了 with admin optionUSER1 現在可以將存取權授予給已獲授予 SELECT_CATALOG_ROLE 的 SYS 物件。

GRANT SELECT_CATALOG_ROLE TO USER1 WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE to USER1 WITH ADMIN OPTION;

已獲授予 PUBLIC 的物件不需要重新授予。如果使用 grant_sys_object 程序來重新授予存取,則程序呼叫會成功。

撤銷 SYS 物件上的 SELECT 或 EXECUTE 權限

若要撤銷單一物件上的權限,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.revoke_sys_object。該程序只會撤銷已透過角色或直接授與主帳戶的權限。

revoke_sys_object 程序具有下列參數。

參數名稱 資料類型 預設 必要 描述

p_obj_name

varchar2

要撤銷其權限的物件名稱。物件可以是目錄、函數、套件、程序、順序、資料表或檢視。物件名稱的拼寫必須完全符合 DBA_OBJECTS 中的顯示內容。多數系統物件是以大寫定義,因此建議您先嘗試採用大寫。

p_revokee

varchar2

要撤銷其權限的物件名稱。物件可以是結構描述或角色。

p_privilege

varchar2

null

下列範例會從名為 V_$SESSION 的使用者撤銷名為 USER1 物件上的 SELECT 權限。

begin rdsadmin.rdsadmin_util.revoke_sys_object( p_obj_name => 'V_$SESSION', p_revokee => 'USER1', p_privilege => 'SELECT'); end; /

管理 Oracle 資料庫執行個體的 RDS_X 視觀表

您可能需要存取SYS.X$固定資料表,這些資料表只能由存取SYS。若要在合格的資X$料表上建立SYS.RDS_X$檢視,請使用rdsadmin.rdsadmin_util封裝中的程序。系統會自動授予您的主要用戶SELECT … WITH GRANT OPTIONRDS_X$視圖的權限。

這些程rdsadmin.rdsadmin_util序適用於下列資料庫引擎版本:

  • 21.0.0.0.ru-2023-10.rur-2023-10.r1和更高的甲骨文數據庫 21c 版本

  • 19.0.0.0.ru-2023-10.rur-2023-10.r1和更高的甲骨文數據庫 19c 版本

重要

在內部,rdsadmin.rdsadmin_util封裝會在X$資料表上建立檢視。這些X$表格是「Oracle 資料庫」說明文件中未說明的內部系統物件。我們建議您在非生產資料庫中測試特定檢視,並且只在 Oracle 客戶 Support 務部的指導下,在生產資料庫中建立檢視。

列出可在 RDS_X $ 檢視中使用的 X$ 固定資料表

若要列出有資格在RDS_X$檢視中使用的 X$ 資料表,請使用 RDS 程序rdsadmin.rdsadmin_util.list_allowed_sys_x$_views。此程序不接受任何參數。下列陳述式會列出所有符合資格的資X$料表 (包括範例輸出)。

SQL> SET SERVEROUTPUT ON SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views); 'X$BH' 'X$K2GTE' 'X$KCBWBPD' 'X$KCBWDS' 'X$KGLLK' 'X$KGLOB' 'X$KGLPN' 'X$KSLHOT' 'X$KSMSP' 'X$KSPPCV' 'X$KSPPI' 'X$KSPPSV' 'X$KSQEQ' 'X$KSQRS' 'X$KTUXE' 'X$KQRFP'

符合條件的X$表格清單可能會隨時間變更。若要確定符合資格的X$固定表格清單是最新的,請list_allowed_sys_x$_views定期重新執行。

建立系統視圖

若要在合格的資料X$表上建立RDS_X$檢視,請使用 RDS 程序rdsadmin.rdsadmin_util.create_sys_x$_view。您只能為的輸出中列出的表格建立檢視rdsadmin.rdsadmin_util.list_allowed_sys_x$_viewscreate_sys_x$_view 程序接受下列參數。

參數名稱 資料類型 預設 必要 描述

p_x$_tbl

varchar2

Null

有效的X$資料表名稱。該值必須是報告的其中一個X$表格list_allowed_sys_x$_views

p_force_creation

Boolean

FALSE

指出是否強制建立資料表已存在的RDS_X$檢視X$表的值。根據預設,如果 RDS 已存在,則不會建立檢視。若要強制建立,請將此參數設定為TRUE

下列範例會在資料表上建立SYS.RDS_X$KGLOB檢視X$KGLOB。視圖名稱的格式為RDS_X$tablename

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.

下列資料字典查詢會列出檢視SYS.RDS_X$KGLOB並顯示其狀態。您的主要使用者會自動授與此檢視SELECT ... WITH GRANT OPTION的權限。

SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; OWNER OBJECT_NAME STATUS ------------------------------ ------------------------------ ------------------------------ SYS RDS_X$KGLOB VALID
重要

X$不保證表在升級之前和之後保持不變。RDS for Oracle 會在引擎升級期間放棄並重新建立X$資料表上的RDS_X$檢視。然後,它將SELECT ... WITH GRANT OPTION權限授予主用戶。升級之後,視需要授與對應RDS_X$檢視的權限給資料庫使用者。

列出 X 視圖

若要列出現有的RDS_X$檢視,請使用 RDS 程序rdsadmin.rdsadmin_util.list_created_sys_x$_views。此程序只會列出程序所建立的視圖create_sys_x$_view。下列範例會列出具有對應RDS_X$檢視X$表 (包含範例輸出) 的資料表。

SQL> SET SERVEROUTPUT ON SQL> COL XD_TBL_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views); XD_TBL_NAME STATUS ------------------------------ ------------------------------ X$BH VALID X$K2GTE VALID X$KCBWBPD VALID 3 rows selected.

刪除 RDS_X $ 視圖

若要刪除SYS.RDS_X$檢視,請使用 RDS 程序rdsadmin.rdsadmin_util.drop_sys_x$_view。您只能刪除的輸出中列示的視圖rdsadmin.rdsadmin_util.list_allowed_sys_x$_viewsdrop_sys_x$_view 程序接受下列參數。

參數名稱 資料類型 預設 必要 描述

p_x$_tbl

varchar2

Null

有效的X$固定資料表名稱。該值必須是其中一個由報告的X$固定表格list_created_sys_x$_views

下面的例子刪除,這是在表上創建的RDS_X$KGLOB視圖X$KGLOB

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.

下列範例顯示SYS.RDS_X$KGLOB已卸除檢視 (包含範例輸出)。

SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; no rows selected

將權限授予非主要使用者

您可以使用 SYS 角色,將選取權限授予 SELECT_CATALOG_ROLE 結構描述中的許多物件。SELECT_CATALOG_ROLE 角色可提供使用者資料字典檢視上的 SELECT 權限。下列範例會將角色 SELECT_CATALOG_ROLE 授予名為 user1 的使用者。

GRANT SELECT_CATALOG_ROLE TO user1;

您可以使用 EXECUTE 角色,將 SYS 權限授予 EXECUTE_CATALOG_ROLE 結構描述中的許多物件。EXECUTE_CATALOG_ROLE 角色可為使用者提供資料字典中套件和程序的 EXECUTE 權限。下列範例會將 EXECUTE_CATALOG_ROLE 角色授予名為「user1」的使用者。

GRANT EXECUTE_CATALOG_ROLE TO user1;

下列範例會取得 SELECT_CATALOG_ROLE 角色和 EXECUTE_CATALOG_ROLE 角色允許的許可。

SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE IN ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') ORDER BY ROLE, TABLE_NAME ASC;

下列範例會建立名為 user1 的非主要使用者,並授予其 CREATE SESSION 權限,以及名為 sh.sales 資料庫上的 SELECT 權限。

CREATE USER user1 IDENTIFIED BY PASSWORD; GRANT CREATE SESSION TO user1; GRANT SELECT ON sh.sales TO user1;

建立自訂函數以驗證密碼

您可以透過以下方式建立自訂密碼驗證函數。

  • 若要使用標準驗證邏輯,以及在 SYS 結構描述中存放您的函數,請使用 create_verify_function 程序。

  • 若要使用自訂驗證邏輯,或避免在 SYS 結構描述中存放您的函數,請使用 create_passthrough_verify_fcn 程序。

create_verify_function 程序

您可以建立自訂函數以使用 Amazon RDS 程序 rdsadmin.rdsadmin_password_verify.create_verify_function 來驗證密碼。該create_verify_function程序適用於甲骨文的所有版本的 RDS 都支持。

create_verify_function 程序具有下列參數。

參數名稱 資料類型 預設 必要 描述

p_verify_function_name

varchar2

自訂函數的名稱。系統會在 SYS 結構描述中為您建立此函數。您可以將此函數指派給使用者描述檔。

p_min_length

數字

8

需要的字元數下限。

p_max_length

數字

256

允許的字元數上限。

p_min_letters

數字

1

需要的字母數下限。

p_min_uppercase

數字

0

需要的大寫字母數下限。

p_min_lowercase

數字

0

需要的小寫字母數下限。

p_min_digits

數字

1

需要的數字下限。

p_min_special

數字

0

需要的特殊字元數下限。

p_min_different_chars

數字

3

新舊密碼間需要的不同字元數下限。

p_disallow_username

布林值

true

設定為 true 可禁止在密碼中使用使用者名稱。

p_disallow_reverse

布林值

true

設定為 true 可禁止在密碼中使用倒寫的使用者名稱。

p_disallow_db_name

布林值

true

設定為 true 可禁止在密碼中使用資料庫或伺服器名稱。

p_disallow_simple_strings

布林值

true

設定為 true 可禁止使用簡易字串做為密碼。

p_disallow_whitespace

布林值

false

設定為 true 可禁止在密碼中使用空白字元。

p_disallow_at_sign

布林值

false

設定為 true 可禁止在密碼中使用 @ 字元。

您可以建立多個密碼驗證函數。

自訂函數的名稱有一些限制。您的自訂函數名稱不能與現有系統物件相同,且該名稱長度不得超過 30 個字元。此外,名稱需包括下列其中一個字串:PASSWORDVERIFYCOMPLEXITYENFORCESTRENGTH

下列範例會建立名為 CUSTOM_PASSWORD_FUNCTION 的函數。該函數要求密碼至少有 12 個字元、2 個大寫字元、1 個數字和 1 個特殊字元,並且密碼禁止使用 @ 字元。

begin rdsadmin.rdsadmin_password_verify.create_verify_function( p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', p_min_length => 12, p_min_uppercase => 2, p_min_digits => 1, p_min_special => 1, p_disallow_at_sign => true); end; /

若要查看您驗證函數的文字,請查詢 DBA_SOURCE。下列範例會取得名為 CUSTOM_PASSWORD_FUNCTION 的自訂密碼函數的文字。

COL TEXT FORMAT a150 SELECT TEXT FROM DBA_SOURCE WHERE OWNER = 'SYS' AND NAME = 'CUSTOM_PASSWORD_FUNCTION' ORDER BY LINE;

若要將您的驗證函數與使用者描述檔建立關聯,請使用 alter profile。下列範例會將驗證函數與 DEFAULT 使用者描述檔建立關聯。

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

若要查看什麼使用者描述檔已與什麼驗證函數建立關聯,請查詢 DBA_PROFILES。下列範例會取得已與名為 CUSTOM_PASSWORD_FUNCTION 的自訂驗證函數關聯的設定檔。

SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD' AND LIMIT = 'CUSTOM_PASSWORD_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION

下列範例會取得所有設定檔和其關聯的密碼驗證函數。

SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION RDSADMIN PASSWORD_VERIFY_FUNCTION PASSWORD NULL

create_passthrough_verify_fcn 程序

create_passthrough_verify_fcn程序適用於甲骨文的所有版本的 RDS 都支持。

您可以建立自訂函數以使用 Amazon RDS 程序 rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn 來驗證密碼。create_passthrough_verify_fcn 程序具有下列參數。

參數名稱 資料類型 預設 必要 描述

p_verify_function_name

varchar2

自訂驗證函數的名稱。這是系統為您在 SYS 結構描述中所建立的包裝函數,並且不包含任何驗證邏輯。您可以將此函數指派給使用者描述檔。

p_target_owner

varchar2

自訂驗證函數的結構描述擁有者。

p_target_function_name

varchar2

現有的自訂函數名稱,其中包含驗證邏輯。您的自訂函數必須傳回布林值。如果密碼有效,您的函數應該傳回 true,以及如果密碼無效,則傳回 false

下列範例會使用來自名為 PASSWORD_LOGIC_EXTRA_STRONG 函數的邏輯,來建立密碼驗證函數。

begin rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn( p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', p_target_owner => 'TEST_USER', p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG'); end; /

若要將驗證函數與使用者描述檔建立關聯,請使用 alter profile。下列範例會將驗證函數與 DEFAULT 使用者描述檔建立關聯。

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

設定自訂 DNS 伺服器

Amazon RDS 在您執行 Oracle 的資料庫執行個體上支援傳出網路存取。如需傳出網路存取的詳細資訊 (包括先決條件),請參閱 使用憑證和 Oracle 錢包設定 UTL_HTTP 存取

Amazon RDS Oracle 允許透過客戶擁有的自訂 DNS 伺服器進行網域名稱服務 (DNS) 解析。您僅可以透過您的自訂 DNS 伺服器,解析來自您 Amazon RDS 資料庫執行個體的完整網域名稱。

設定您的自訂 DNS 名稱伺服器之後,需要最多 30 分鐘的時間,才能將變更傳播到您的資料庫執行個體。變更傳播到您的資料庫執行個體之後,所有傳出網路流量都需要透過連接埠 53 對您的 DNS 伺服器進行 DNS 查閱查詢。

若要為您的 Amazon RDS for Oracle 資料庫執行個體設定自訂的 DNS 伺服器,請執行下列動作:

  • 從連接至您 Virtual Private Cloud (VPC) 的 DHCP 選項集,將 domain-name-servers 選項設定為您 DNS 名稱伺服器的 IP 地址。如需詳細資訊,請參閱 DHCP 選項集

    注意

    domain-name-servers 選項會接受最多四個值,但您的 Amazon RDS 資料庫執行個體只會使用第一個值。

  • 請確保您的 DNS 伺服器可以解析所有查閱查詢,包括公有 DNS 名稱、Amazon EC2 私有 DNS 名稱,以及客戶特定的 DNS 名稱。如果傳出網路流量包含您的 DNS 伺服器無法處理的任何 DNS 查閱,您的 DNS 伺服器就必須設定適當的上游 DNS 提供者。

  • 設定您的 DNS 伺服器以產生 512 個位元組或更少的使用者資料包通訊協定 (UDP) 回應。

  • 設定您的 DNS 伺服器以產生 1024 個位元組或更少的傳輸控制通訊協定 (TCP) 回應。

  • 設定您的 DNS 伺服器以允許來自您的 Amazon RDS 資料庫執行個體透過連接埠 53 的傳入流量。如果您的 DNS 伺服器位於 Amazon VPC 中,VPC 必須具有一個安全群組,其中包含允許連接埠 53 上的 UDP 和 TCP 流量的傳入規則。如果您的 DNS 伺服器不在 Amazon VPC 中,則必須具有適當的防火牆允許清單,才能允許連接埠 53 上的 UDP 和 TCP 傳入流量。

    如需更多詳細資訊,請參閱 VPC 安全群組新增與移除規則

  • 設定您 Amazon RDS 資料庫執行個體的 VPC,以允許透過連接埠 53 的傳出流量。您的 VPC 必須具有一個安全群組,其中包含允許連接埠 53 上的 UDP 和 TCP 流量的傳出規則。

    如需更多詳細資訊,請參閱 VPC 安全群組新增與移除規則

  • 您必須正確設定 Amazon RDS 資料庫執行個體和 DNS 伺服器之間的路由路徑,才能允許 DNS 流量。

    • 如果 Amazon RDS 資料庫執行個體和 DNS 伺服器不在相同的 VPC 中,則必須在兩者之間設定對等連接。如需詳細資訊,請參閱什麼是 VPC 互連?

設定和取消設定系統診斷事件

若要在工作階段層級設定和取消設定診斷事件,您可以使用 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.0.0.ru-2020-10.r 1

重要

在內部,rdsadmin.rdsadmin_util 套件會使用 ALTER SYSTEM SET EVENTS 陳述式來設定事件。此 ALTER SYSTEM 陳述式並未記錄在 Oracle 資料庫文件中。某些系統診斷事件可能會產生大量的追蹤資訊、造成爭用或影響資料庫可用性。建議您在非生產資料庫中測試特定的診斷事件,並且只在 Oracle Support 的指導下,在生產資料庫中設定事件。

列出允許的系統診斷事件

若要列出您可以設定的系統事件,請使用 Amazon RDS Procedure (程序)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 程序接受下列參數。

參數名稱 資料類型 預設 必要 描述

p_event

數字

系統事件編號。該值必須是由 list_allowed_system_events 報告的其中一個事件編號。

p_level

數字

事件層級。如需不同層級值的說明,請參閱 Oracle 資料庫文件或 Oracle 支援。

程序 set_system_event 會根據下列原則建構並執行所需的 ALTER SYSTEM SET EVENTS 陳述式:

  • 自動決定事件類型 (contexterrorstack)。

  • 表單 ALTER SYSTEM SET EVENTS 'event LEVEL event_level' 中的陳述式會設定內容事件。此標記法等同於 ALTER SYSTEM SET EVENTS 'event TRACE NAME CONTEXT FOREVER, LEVEL event_level'

  • 表單中 ALTER SYSTEM SET EVENTS 'event ERRORSTACK (event_level)' 的陳述式會設定錯誤堆疊事件。此標記法等同於 ALTER SYSTEM SET EVENTS 'event TRACE NAME ERRORSTACK LEVEL event_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 程序接受下列參數。

參數名稱 資料類型 預設 必要 描述

p_event

數字

系統事件編號。該值必須是由 list_allowed_system_events 報告的其中一個事件編號。

下列範例會取消設定事件 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.