本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行 Oracle 資料庫執行個體的一般系統任務
您可以在下文中找到如何在執行 Oracle 的 Amazon RDS 資料庫執行個體上執行與系統相關的一般 DBA 任務。為了提供受管理的服務體驗,Amazon RDS 並不會提供資料庫執行個體的 Shell 存取權,而且會將存取權限制在某些需要進階權限的系統程序和資料表。
主題
中斷工作階段的連線
若要透過結束專屬的伺服器程序來中斷與目前工作階段的連線,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.disconnect
。disconnect
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
數字 |
— |
是 |
工作階段識別符。 |
|
數字 |
— |
是 |
工作階段的序號。 |
|
varchar |
'IMMEDIATE' |
否 |
有效值為 |
下列範例會中斷工作階段的連線。
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.kill
。kill
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
數字 |
— |
是 |
工作階段識別符。 |
|
數字 |
— |
是 |
工作階段的序號。 |
|
varchar |
null |
否 |
有效值為
若您指定 |
若要取得工作階段識別符和工作階段序號,請查詢 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
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
數字 |
— |
是 |
工作階段識別符。 |
|
數字 |
— |
是 |
工作階段的序號。 |
|
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_session
。restricted_session
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 是 | 描述 |
---|---|---|---|---|
|
布林值 |
true |
否 |
設定為 |
下列範例顯示如何啟用和停用受限制的工作階段。
/* 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_pool
。flush_shared_pool
程序沒有參數。
下列範例會清空共用集區。
EXEC rdsadmin.rdsadmin_util.flush_shared_pool;
清空緩衝區快取
若要清空緩衝區快取,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.flush_buffer_cache
。flush_buffer_cache
程序沒有參數。
下列範例會清空緩衝區快取。
EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;
排清資料庫智慧型快閃記憶體快取
若要排清資料庫智慧型快閃記憶體快取,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.flush_flash_cache
。flush_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
myuser
或 CREATE USER MYUSER
,資料字典會存放 MYUSER
。不過,如果您在 CREATE USER
"MyUser"
中使用雙引號,資料字典則會存放 MyUser
。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
要從其授予權限的來源物件名稱。物件可以是目錄、函數、套件、程序、順序、資料表或檢視。物件名稱的拼寫必須完全符合 |
|
varchar2 |
— |
是 |
要對其授予權限的目標物件名稱。物件可以是結構描述或角色。 |
|
varchar2 |
null |
是 |
— |
|
布林值 |
false |
否 |
設定為 |
下列範例會將名為 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_ROLE
和 EXECUTE_CATALOG_ROLE
給 USER1
。由於使用了 with
admin option
,USER1
現在可以將存取權授予給已獲授予 SELECT_CATALOG_ROLE
的 SYS 物件。
GRANT SELECT_CATALOG_ROLE TO
USER1
WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE toUSER1
WITH ADMIN OPTION;
已獲授予 PUBLIC
的物件不需要重新授予。如果使用 grant_sys_object
程序來重新授予存取,則程序呼叫會成功。
撤銷 SYS 物件上的 SELECT 或 EXECUTE 權限
若要撤銷單一物件上的權限,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.revoke_sys_object
。該程序只會撤銷已透過角色或直接授與主帳戶的權限。
revoke_sys_object
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
要撤銷其權限的物件名稱。物件可以是目錄、函數、套件、程序、順序、資料表或檢視。物件名稱的拼寫必須完全符合 |
|
varchar2 |
— |
是 |
要撤銷其權限的物件名稱。物件可以是結構描述或角色。 |
|
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 OPTION
對RDS_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$_views
。create_sys_x$_view
程序接受下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
Null |
是 |
有效的 |
|
Boolean |
FALSE |
否 |
指出是否強制建立資料表已存在的 |
下列範例會在資料表上建立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$_views
。drop_sys_x$_view
程序接受下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
Null |
是 |
有效的 |
下面的例子刪除,這是在表上創建的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 TOuser1
; GRANT SELECT ONsh.sales
TOuser1
;
建立自訂函數以驗證密碼
您可以透過以下方式建立自訂密碼驗證函數。
-
若要使用標準驗證邏輯,以及在
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
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
自訂函數的名稱。系統會在 SYS 結構描述中為您建立此函數。您可以將此函數指派給使用者描述檔。 |
|
數字 |
8 |
否 |
需要的字元數下限。 |
|
數字 |
256 |
否 |
允許的字元數上限。 |
|
數字 |
1 |
否 |
需要的字母數下限。 |
|
數字 |
0 |
否 |
需要的大寫字母數下限。 |
|
數字 |
0 |
否 |
需要的小寫字母數下限。 |
|
數字 |
1 |
否 |
需要的數字下限。 |
|
數字 |
0 |
否 |
需要的特殊字元數下限。 |
|
數字 |
3 |
否 |
新舊密碼間需要的不同字元數下限。 |
|
布林值 |
true |
否 |
設定為 |
|
布林值 |
true |
否 |
設定為 |
|
布林值 |
true |
否 |
設定為 |
|
布林值 |
true |
否 |
設定為 |
|
布林值 |
false |
否 |
設定為 |
|
布林值 |
false |
否 |
設定為 |
您可以建立多個密碼驗證函數。
自訂函數的名稱有一些限制。您的自訂函數名稱不能與現有系統物件相同,且該名稱長度不得超過 30 個字元。此外,名稱需包括下列其中一個字串:PASSWORD
、VERIFY
、COMPLEXITY
、ENFORCE
或 STRENGTH
。
下列範例會建立名為 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_FUNCTIONCUSTOM_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
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
自訂驗證函數的名稱。這是系統為您在 SYS 結構描述中所建立的包裝函數,並且不包含任何驗證邏輯。您可以將此函數指派給使用者描述檔。 |
|
varchar2 |
— |
是 |
自訂驗證函數的結構描述擁有者。 |
|
varchar2 |
— |
是 |
現有的自訂函數名稱,其中包含驗證邏輯。您的自訂函數必須傳回布林值。如果密碼有效,您的函數應該傳回 |
下列範例會使用來自名為 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_FUNCTIONCUSTOM_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 傳入流量。
-
設定您 Amazon RDS 資料庫執行個體的 VPC,以允許透過連接埠 53 的傳出流量。您的 VPC 必須具有一個安全群組,其中包含允許連接埠 53 上的 UDP 和 TCP 流量的傳出規則。
-
您必須正確設定 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
程序接受下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
數字 |
— |
是 |
系統事件編號。該值必須是由 |
|
數字 |
— |
是 |
事件層級。如需不同層級值的說明,請參閱 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.