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

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

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

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

變更資料庫的全域名稱

若要變更資料庫的全域名稱,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.rename_global_namerename_global_name 程序具有下列參數。

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

p_new_global_name

varchar2

資料庫的新全域名稱。

必須開啟資料庫,才會發生名稱變更。如需變更資料庫全域名稱的詳細資訊,請參閱 Oracle 文件中的 ALTER DATABASE

下列範例會將資料庫的全域名稱變更為 new_global_name

EXEC rdsadmin.rdsadmin_util.rename_global_name(p_new_global_name => 'new_global_name');

建立和調整資料表空間的大小

Amazon RDS 僅支援將 Oracle Managed Files (OMF) 用於資料檔案、日誌檔案和控制檔案。建立資料檔案和日誌檔案時,您不可以指定實體檔案名稱。

依預設,如果未指定資料檔案大小,則資料表空間建立時會使用預設值 AUTOEXTEND ON,並且沒有大小上限。在下列範例中,資料表空間 users1 是可自動擴展的。

CREATE TABLESPACE users1;

由於這些預設設定,資料表空間可能成長以致於耗用所有配置的儲存體。建議您對永久和暫存資料表空間指定適當的大小,並且謹慎監控空間使用情況。

下列範例會建立名為 users2 的資料表空間,其中的起始大小為 1 GB。由於已指定資料檔案大小,但未指定 AUTOEXTEND ON,因此資料表空間無法自動擴展。

CREATE TABLESPACE users2 DATAFILE SIZE 1G;

下列範例會建立名為 users3 的資料表空間,其中的起始大小為 1 GB、開啟自動擴展,且大小上限為 10 GB:

CREATE TABLESPACE users3 DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 10G;

下列範例會建立名為 temp01 的暫存資料表空間:

CREATE TEMPORARY TABLESPACE temp01;

ALTER TABLESPACE 可幫助您調整大型檔案資料表空間的大小,您可以用 KB (K)、MB (M)、GB (G) 或 TB (T) 來指定大小。下列範例會將名為 users_bf 的大型檔案資料表空間大小調整為 200 MB。

ALTER TABLESPACE users_bf RESIZE 200M;

下列範例會將額外的資料檔案新增至名為 users_sf 的小型檔案資料表空間。

ALTER TABLESPACE users_sf ADD DATAFILE SIZE 100000M AUTOEXTEND ON NEXT 250m MAXSIZE UNLIMITED;

設定預設的資料表空間

若要設定預設的資料表空間,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.alter_default_tablespacealter_default_tablespace 程序具有下列參數。

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

tablespace_name

varchar

預設資料表空間的名稱。

下列範例會將預設資料表空間設定為 users2

EXEC rdsadmin.rdsadmin_util.alter_default_tablespace(tablespace_name => 'users2');

設定預設的暫存資料表空間

若要設定預設的暫存資料表空間,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.alter_default_temp_tablespacealter_default_temp_tablespace 程序具有下列參數。

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

tablespace_name

varchar

預設暫存資料表空間的名稱。

下列範例會將預設的暫存資料表空間設定為 temp01

EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => 'temp01');

在執行個體儲存體上建立暫存資料表空間

若要在執行個體儲存體上建立暫存資料表空間,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspacecreate_inst_store_tmp_tblspace 程序具有下列參數。

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

p_tablespace_name

varchar

暫存資料表空間的名稱。

下列範例會在執行個體儲存體中建立暫存資料表空間 temp01

EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace(p_tablespace_name => 'temp01');
重要

執行 rdsadmin_util.create_inst_store_tmp_tblspace 時,新建立的暫存資料表空間不會自動設為預設暫存資料表空間。若要將其設為預設值,請參閱 設定預設的暫存資料表空間

如需詳細資訊,請參閱 將暫存資料存放在 RDS for Oracle 執行個體儲存體中

將暫存檔新增至僅供讀取複本上的執行個體儲存體

當您在主要資料庫執行個體上建立暫存資料表空間時,僅供讀取複本不會建立暫存檔。假設出於以下原因之一,僅供讀取複本上存在空的暫存資料表空間:

  • 您已從僅供讀取複本的資料表空間捨棄暫存檔。如需詳細資訊,請參閱 捨棄僅供讀取複本上的暫存檔

  • 您已在主要資料庫執行個體上建立新的暫存資料表空間。在此情況下,RDS for Oracle 會將中繼資料同步至僅供讀取複本。

您可以將暫存檔新增至空的暫存資料表空間,並將暫存檔存放在執行個體儲存體中。若要在執行個體儲存體上建立暫存檔,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.add_inst_store_tempfile。您只能在僅供讀取複本上使用此程序。 程序具有下列參數。

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

p_tablespace_name

varchar

僅供讀取複本上暫存資料表空間的名稱。

在下列範例中,僅供讀取複本上存在空的暫存資料表空間 temp01。執行下列命令,為此資料表空間建立暫存檔,並將它存放在執行個體儲存體中。

EXEC rdsadmin.rdsadmin_util.add_inst_store_tempfile(p_tablespace_name => 'temp01');

如需詳細資訊,請參閱 將暫存資料存放在 RDS for Oracle 執行個體儲存體中

捨棄僅供讀取複本上的暫存檔

您無法捨棄僅供讀取複本上的現有暫存資料表空間。您可以將僅供讀取複本上的暫存檔儲存體從 Amazon EBS 變更為執行個體儲存體,或從執行個體儲存體變更為 Amazon EBS。若要實現這些目標,請執行下列操作:

  1. 捨棄僅供讀取複本上暫存資料表空間中的目前暫存檔。

  2. 在不同的儲存體上建立新的暫存檔。

若要捨棄暫存檔,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util. drop_replica_tempfiles。您只能在僅供讀取複本上使用此程序。drop_replica_tempfiles 程序具有下列參數。

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

p_tablespace_name

varchar

僅供讀取複本上暫存資料表空間的名稱。

假設名為 temp01 的暫存資料表空間位於僅供讀取複本的執行個體儲存體中。執行下列命令,捨棄此資料表空間中的所有暫存檔。

EXEC rdsadmin.rdsadmin_util.drop_replica_tempfiles(p_tablespace_name => 'temp01');

如需詳細資訊,請參閱 將暫存資料存放在 RDS for Oracle 執行個體儲存體中

設定資料庫的檢查點

若要設定資料庫的檢查點,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.checkpointcheckpoint 程序沒有參數。

下列範例會設定資料庫的檢查點。

EXEC rdsadmin.rdsadmin_util.checkpoint;

設定分散式復原

若要設定分散式復原,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.enable_distr_recoverydisable_distr_recovery。這些程序沒有參數。

下列範例會啟用分散式復原。

EXEC rdsadmin.rdsadmin_util.enable_distr_recovery;

下列範例會停用分散式復原。

EXEC rdsadmin.rdsadmin_util.disable_distr_recovery;

設定資料庫時區

您可以使用下列方式設定 Amazon RDS Oracle 資料庫的時區:

  • Timezone 選項

    Timezone 選項會在主機層級變更時區並且會影響所有日期欄和值,例如 SYSDATE。如需更多詳細資訊,請參閱 Oracle 時區

  • Amazon RDS 程序 rdsadmin.rdsadmin_util.alter_db_time_zone

    alter_db_time_zone 程序只會變更某些資料類型的時區,並且不會變更 SYSDATEOracle 文件中列出了設定時區的額外限制。

注意

您也可以設定「Oracle 排程器」的預設時區。如需更多詳細資訊,請參閱 設定 Oracle Scheduler 任務的時區

alter_db_time_zone 程序具有下列參數。

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

p_new_tz

varchar2

此參數會以具名區域或國際標準時間 (UTC) 的絕對偏移量來表示新時區。有效的偏移範圍從 -12:00 至 +14:00。

下列範例會將時區變更為 UTC 加 3 小時。

EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => '+3:00');

下列範例會將時區變更為非洲/阿爾及爾時區。

EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => 'Africa/Algiers');

使用 alter_db_time_zone 程序更改時區後,您必須重新啟動資料庫執行個體,變更才會生效。如需更多詳細資訊,請參閱 重新啟動中的資料庫執行個體。如需升級時區的相關資訊,請參閱時區考量

使用 Oracle 外部資料表

Oracle 外部資料表,指的是該資料表所具有的資料不在資料庫中。反而資料是位在資料庫可以存取的外部檔案中。您可以使用外部資料表來存取資料,而不需將資料載入資料庫。如需外部資料表的詳細資訊,請參閱 Oracle 文件中的管理外部資料表

您可以使用 Amazon RDS 在目錄物件中儲存外部資料表檔案。您可以建立目錄物件,也可以使用 Oracle 資料庫中預先定義的目錄物件,例如 DATA_PUMP_DIR 目錄。如需建立目錄物件的詳細資訊,請參閱 在主要資料儲存空間中建立和捨棄目錄。您可以查詢 ALL_DIRECTORIES 檢視,來列出您 Amazon RDS Oracle 資料庫執行個體的目錄物件。

注意

目錄物件會指向您執行個體使用的主要資料儲存空間 (Amazon EBS 磁碟區)。根據配置的儲存體來計算的已使用空間 (以及資料檔案、重做日誌、稽核、追蹤和其他檔案)。

您可以使用 DBMS_FILE_TRANSFER 套件或 UTL_FILE 套件,在不同 Oracle 資料庫之間移動外部資料檔案。外部資料檔案會從來源資料庫上的目錄,移動至目的地資料庫上指定的目錄。如需使用 DBMS_FILE_TRANSFER 的詳細資訊,請參閱 使用 Oracle Data Pump 匯入

移動外部資料檔案後,該檔案即可用來建立外部資料表。下列範例會建立採用 USER_DIR1 目錄中 emp_xt_file1.txt 檔案的外部資料表。

CREATE TABLE emp_xt ( emp_id NUMBER, first_name VARCHAR2(50), last_name VARCHAR2(50), user_name VARCHAR2(20) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY USER_DIR1 ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ',' MISSING FIELD VALUES ARE NULL (emp_id,first_name,last_name,user_name) ) LOCATION ('emp_xt_file1.txt') ) PARALLEL REJECT LIMIT UNLIMITED;

假設您要將 Amazon RDS Oracle 資料庫執行個體中的資料移動至外部資料表檔案。在此情況下,您可以透過建立外部資料表並從資料庫中的資料表選取資料,來填入外部資料檔案。例如,下列 SQL 陳述式會透過查詢資料庫中的 orders_xt 資料表來建立 orders 外部資料表。

CREATE TABLE orders_xt ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION ('orders_xt.dmp') ) AS SELECT * FROM orders;

在此範例中,資料會填入 DATA_PUMP_DIR 目錄中的 orders_xt.dmp 檔案。

使用自動工作負載儲存庫 (AWR) 產生效能報告。

若要收集效能資料並產生報告,Oracle 建議您使用自動工作負載儲存庫 (AWR)。AWR 需要 Oracle Database Enterprise Edition 以及診斷和調整套件的授權。若要啟用 AWR,請將 CONTROL_MANAGEMENT_PACK_ACCESS 初始化參數設定為 DIAGNOSTICDIAGNOSTIC+TUNING

在 RDS 中使用 AWR 報告

若要產生 AWR 報告,您可以執行指令碼,例如 awrrpt.sql。這些指令碼會安裝在資料庫主機伺服器上。在 Amazon RDS 中,您不能直接存取主機。不過,您可以從另一個 Oracle 資料庫安裝版本取得 SQL 指令碼的複本。

您也可以執行 SYS.DBMS_WORKLOAD_REPOSITORY PL/SQL 套件中的程序來使用 AWR。您可以使用此套件來管理基準和快照,也可以用來顯示 ASH 和 AWR 報告。例如,若要以文字格式產生 AWR 報告,請執行 DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT 程序。不過,您無法從 AWS Management Console連上這些 AWR 報告。

使用 AWR 時,我們建議您使用 rdsadmin.rdsadmin_diagnostic_util 程序。您可以使用這些程序來產生下列項目:

  • AWR 報告

  • 作用中工作階段歷史記錄 (ASH) 報告

  • 自動資料庫診斷監控 (ADDM) 報告

  • AWR 資料的 Oracle 資料匯出傾印檔案

rdsadmin_diagnostic_util 程序會將報告儲存至資料庫執行個體檔案系統。您可以從主控台存取這些報告。您也可以使用 rdsadmin.rds_file_util 程序來存取報告,而且可以使用 S3 整合選項來存取複製到 Amazon S3 的報告。如需更多詳細資訊,請參閱 讀取資料庫執行個體目錄中的檔案Amazon S3 整合

您可以在下列 Amazon RDS for Oracle 資料庫引擎版本中使用 rdsadmin_diagnostic_util 程序:

  • 所有 Oracle Database 21c 版本

  • 19.0.0.0.ru-2020-04.rur-2020-04.r1 及更新的 Oracle Database 19c 版本

如需說明如何在複寫案例中使用診斷報告的部落格,請參閱為 Amazon RDS for Oracle 僅供讀取複本產生 AWR 報告

診斷公用程式套件的常見參數

透過 rdsadmin_diagnostic_util 套件管理 AWR 和 ADDM 時,通常會使用下列參數。

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

begin_snap_id

NUMBER

開始快照的 ID。

end_snap_id

NUMBER

結束快照的 ID。

dump_directory

VARCHAR2

BDUMP

要寫入報告或匯出檔案的目錄。如果您指定非預設目錄,則執行 rdsadmin_diagnostic_util 程序的使用者必須具有目錄的寫入許可。

p_tag

VARCHAR2

可用於區分備份的字串,以指明備份的目的或用法,例如 incrementaldaily

最多可以指定 30 個字元。有效字元為 a-zA-Z0-9、底線 (_)、破折號 (-) 和句點 (.)。標籤不區分大小寫。無論輸入標籤時使用的大小寫為何,RMAN 一律以大寫形式儲存標籤。

標籤不需是唯一的,因此多個備份可以有相同的標籤。如果沒有指定標籤,RMAN 會使用 TAGYYYYMMDDTHHMMSS 格式自動指派預設標籤,其中 YYYY 是年、MM 是月、DD 是日、HH 是時 (24 小時制)、MM 是分、SS 是秒。日期和時間指出 RMAN 開始備份的時間。例如,具有預設標籤 TAG20190927T214517 的備份,表示備份是在 2019-09-27 的 21:45:17 開始。

下列 RDS for Oracle 資料庫引擎版本支援 p_tag 參數:

  • Oracle Database 21c (21.0.0)

  • 使用 19.0.0.0.ru-2021-10.rur-2021-10.r1 及更新版本的 Oracle Database 19c (19.0.0)

report_type

VARCHAR2

HTML

報告的格式。有效值為 TEXTHTML

dbid

NUMBER

顯示在 Oracle DBA_HIST_DATABASE_INSTANCE 檢視中的有效資料庫識別碼 (DBID)。如果未指定此參數,RDS 會使用 V$DATABASE.DBID 檢視中顯示的目前 DBID。

透過 rdsadmin_diagnostic_util 套件管理 ASH 時,您通常使用下列參數。

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

begin_time

DATE

ASH 分析的開始時間。

end_time

DATE

ASH 分析的結束時間。

slot_width

NUMBER

0

ASH 報告的「最常發生的活動」區段中使用的時段持續時間 (秒)。如果未指定此參數,則 begin_timeend_time 之間的時間間隔不得超過 10 個時段。

sid

NUMBER

Null

工作階段 ID。

sql_id

VARCHAR2

Null

SQL ID。

wait_class

VARCHAR2

Null

等待類別名稱。

service_hash

NUMBER

Null

服務名稱雜湊。

module_name

VARCHAR2

Null

模組名稱。

action_name

VARCHAR2

Null

動作名稱。

client_id

VARCHAR2

Null

資料庫工作階段的應用程式特定 ID。

plsql_entry

VARCHAR2

Null

PL/SQL 進入點。

產生 AWR 報告

若要產生 AWR 報告,請使用 rdsadmin.rdsadmin_diagnostic_util.awr_report 程序。

下列範例會產生快照範圍 101–106 的 AWR 報告。輸出文字檔案命名為 awrrpt_101_106.txt。您可以從 AWS Management Console存取此報告。

EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(101,106,'TEXT');

下列範例會產生快照範圍 63–65 的 HTML 報告。輸出的 HTML 檔案命名為 awrrpt_63_65.html。此程序會將報告寫入名為 AWR_RPT_DUMP 的非預設資料庫目錄。

EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(63,65,'HTML','AWR_RPT_DUMP');

將 AWR 資料擷取至傾印檔案

若要將 AWR 資料擷取至傾印檔案,請使用 rdsadmin.rdsadmin_diagnostic_util.awr_extract 程序。

下列範例會擷取快照集範圍 101–106。輸出傾印檔案命名為 awrextract_101_106.dmp。您可以透過主控台存取此檔案。

EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(101,106);

下列範例會擷取快照範圍 63–65。輸出傾印檔案命名為 awrextract_63_65.dmp。檔案存放在名為 AWR_RPT_DUMP 的非預設資料庫目錄中。

EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(63,65,'AWR_RPT_DUMP');

產生 ADDM 報告

若要產生 ADDM 報告,請使用 rdsadmin.rdsadmin_diagnostic_util.addm_report 程序。

下列範例會產生快照範圍 101–106 的 ADDM 報告。輸出文字檔案命名為 addmrpt_101_106.txt。您可以透過主控台存取報告。

EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(101,106);

下列範例會產生快照範圍 63–65 的 ADDM 報告。輸出文字檔案命名為 addmrpt_63_65.txt。檔案存放在名為 ADDM_RPT_DUMP 的非預設資料庫目錄中。

EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(63,65,'ADDM_RPT_DUMP');

產生 ASH 報告

若要產生 ASH 報告,請使用 rdsadmin.rdsadmin_diagnostic_util.ash_report 程序。

下列範例會產生 ASH 報告,其中包含 14 分鐘前到目前時間的資料。輸出檔案的名稱使用格式 ashrptbegin_timeend_time.txt,其中 begin_timeend_time 使用格式 YYYYMMDDHH24MISS。您可以透過主控台存取該檔案。

BEGIN rdsadmin.rdsadmin_diagnostic_util.ash_report( begin_time => SYSDATE-14/1440, end_time => SYSDATE, report_type => 'TEXT'); END; /

下列範例會產生 ASH 報告,其中包含 2019 年 11 月 18 日下午 6 時 07 分至 2019 年 11 月 18 日下午 6 時 15 分的資料。輸出 HTML 報告的名稱為 ashrpt_20190918180700_20190918181500.html。報告存放在名為 AWR_RPT_DUMP 的非預設資料庫目錄中。

BEGIN rdsadmin.rdsadmin_diagnostic_util.ash_report( begin_time => TO_DATE('2019-09-18 18:07:00', 'YYYY-MM-DD HH24:MI:SS'), end_time => TO_DATE('2019-09-18 18:15:00', 'YYYY-MM-DD HH24:MI:SS'), report_type => 'html', dump_directory => 'AWR_RPT_DUMP'); END; /

從主控台或 CLI 存取 AWR 報告

若要存取 AWR 報告或匯出傾印檔案,您可以使用 AWS Management Console 或 AWS CLI. 如需詳細資訊,請參閱 下載資料庫日誌檔案

若要使用 Oracle 資料庫連結搭配相同 Virtual Private Cloud (VPC) 或對等 VPC 內的 Amazon RDS 資料庫執行個體,兩個資料庫執行個體之間應具備有效路由。請使用您的 VPC 路由資料表和網路存取控制清單 (ACL),來驗證資料庫執行個體之間的有效路由。

這兩個資料庫執行個體的安全群組,皆必須允許輸入和輸出到其他資料庫執行個體。傳入和傳出規則可以參考相同 VPC 或對等連接 VPC 的安全群組。如需詳細資訊,請參閱更新您的安全群組以參考對等連接的 VPC 安全群組

如果已使用您 VPC 中的 DHCP 選項集設定了自訂 DNS 伺服器,您的自訂 DNS 伺服器就必須可解析資料庫連結目標的名稱。如需更多詳細資訊,請參閱 設定自訂 DNS 伺服器

如需使用資料庫連結搭配 Oracle Data Pump 的詳細資訊,請參閱 使用 Oracle Data Pump 匯入

設定資料庫執行個體的預設版本

您可以重新定義稱為版本的私有環境中的資料庫物件。您可以使用版本式重新定義來升級應用程式的資料庫物件,只需要最短的停機時間。

您可以使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.alter_default_edition 來設定 Amazon RDS Oracle 資料庫執行個體的預設版本。

下列範例會將 Amazon RDS Oracle 資料庫執行個體的預設版本設定為 RELEASE_V1

EXEC rdsadmin.rdsadmin_util.alter_default_edition('RELEASE_V1');

下列範例會將 Amazon RDS Oracle 資料庫執行個體的預設版本設定回 Oracle 預設值。

EXEC rdsadmin.rdsadmin_util.alter_default_edition('ORA$BASE');

如需 Oracle 版本式重新定義的詳細資訊,請參閱 Oracle 文件中的關於版本和版本式重新定義

為 SYS.AUD$ 資料表啟用稽核

若要在 SYS.AUD$ 資料庫稽核線索資料表上啟用稽核功能,請使用 rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table 程序 Amazon RDS。ALL 是唯一支援的稽核屬性,您無法選擇是否稽核個別陳述式或操作。

執行下列版本的 Oracle 資料庫執行個體皆支援啟用稽核功能:

  • Oracle Database 21c (21.0.0)

  • Oracle 資料庫 19c (19.0.0)

audit_all_sys_aud_table 程序具有下列參數。

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

p_by_access

布林值

true

設定 true 可稽核 BY ACCESS。設定 false 可稽核 BY SESSION

下列查詢會傳回資料庫中 SYS.AUD$ 目前的稽核組態。

SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';

下列命令會在 ALL SYS.AUD$ 上啟用BY ACCESS 的稽核功能。

EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table; EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => true);

下列命令會在 ALL SYS.AUD$ 上啟用BY SESSION 的稽核功能。

EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => false);

如需詳細資訊,請參閱 Oracle 文件中的 AUDIT (傳統稽核功能)

為 SYS.AUD$ 資料表停用稽核

若要在 SYS.AUD$ 資料庫稽核線索資料表上停用稽核功能,請使用 rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table 程序 Amazon RDS。這個程序不需採用任何參數。

下列查詢會傳回資料庫中 SYS.AUD$ 目前的稽核組態:

SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';

下列命令會在 ALL 上停用SYS.AUD$ 的稽核功能。

EXEC rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table;

如需詳細資訊,請參閱 Oracle 文件中的 NOAUDIT (傳統稽核功能)

清除中斷的線上索引建置

若要清除失敗的線上索引建置,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_dbms_repair.online_index_clean

online_index_clean 程序具有下列參數。

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

object_id

binary_integer

ALL_INDEX_ID

索引的物件 ID。通常,您可以使用來自 ORA-08104 錯誤文字的物件 ID。

wait_for_lock

binary_integer

rdsadmin.rdsadmin_dbms_repair.lock_wait

指定 rdsadmin.rdsadmin_dbms_repair.lock_wait (預設值),來嘗試取得對基礎物件的鎖定,並在鎖定失敗時,重試直到達到內部限制為止。

指定 rdsadmin.rdsadmin_dbms_repair.lock_nowait,來嘗試取得對基礎物件的鎖定,但若鎖定失敗,不會重試。

下列範例清除失敗的線上索引建置:

declare is_clean boolean; begin is_clean := rdsadmin.rdsadmin_dbms_repair.online_index_clean( object_id => 1234567890, wait_for_lock => rdsadmin.rdsadmin_dbms_repair.lock_nowait ); end; /

如需詳細資訊,請參閱 Oracle 文件中的 ONLINE_INDEX_CLEAN 函式

略過損毀的區塊

若要在索引和資料表掃描期間略過損毀的區塊,請使用 rdsadmin.rdsadmin_dbms_repair 套件。

下列程序包裝 sys.dbms_repair.admin_table 程序的功能,而且不會採用任何參數:

  • rdsadmin.rdsadmin_dbms_repair.create_repair_table

  • rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table

  • rdsadmin.rdsadmin_dbms_repair.drop_repair_table

  • rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table

  • rdsadmin.rdsadmin_dbms_repair.purge_repair_table

  • rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table

下列程序會採用與其在 Oracle 資料庫 DBMS_REPAIR 套件中的對等項目相同的參數:

  • rdsadmin.rdsadmin_dbms_repair.check_object

  • rdsadmin.rdsadmin_dbms_repair.dump_orphan_keys

  • rdsadmin.rdsadmin_dbms_repair.fix_corrupt_blocks

  • rdsadmin.rdsadmin_dbms_repair.rebuild_freelists

  • rdsadmin.rdsadmin_dbms_repair.segment_fix_status

  • rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks

如需處理資料庫損毀的詳細資訊,請參閱 Oracle 文件中的 DBMS_REPAIR

範例 回應損毀的區塊

此範例顯示回應損毀區塊的基本工作流程。您的步驟將取決於區塊損毀的位置和性質。

重要

嘗試修復損毀的區塊前,請仔細檢閱 DBMS_REPAIR 文件。

如何在索引和資料表掃描期間略過損毀的區塊
  1. 執行下列程序來建立修復資料表 (如果尚未存在的話)。

    EXEC rdsadmin.rdsadmin_dbms_repair.create_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table;
  2. 執行下列程序來檢查是否存在現有記錄,並清除它們 (若適用)。

    SELECT COUNT(*) FROM SYS.REPAIR_TABLE; SELECT COUNT(*) FROM SYS.ORPHAN_KEY_TABLE; SELECT COUNT(*) FROM SYS.DBA_REPAIR_TABLE; SELECT COUNT(*) FROM SYS.DBA_ORPHAN_KEY_TABLE; EXEC rdsadmin.rdsadmin_dbms_repair.purge_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table;
  3. 執行下列程序來檢查是否存在損毀的區塊。

    SET SERVEROUTPUT ON DECLARE v_num_corrupt INT; BEGIN v_num_corrupt := 0; rdsadmin.rdsadmin_dbms_repair.check_object ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', corrupt_count => v_num_corrupt ); dbms_output.put_line('number corrupt: '||to_char(v_num_corrupt)); END; / COL CORRUPT_DESCRIPTION FORMAT a30 COL REPAIR_DESCRIPTION FORMAT a30 SELECT OBJECT_NAME, BLOCK_ID, CORRUPT_TYPE, MARKED_CORRUPT, CORRUPT_DESCRIPTION, REPAIR_DESCRIPTION FROM SYS.REPAIR_TABLE; SELECT SKIP_CORRUPT FROM DBA_TABLES WHERE OWNER = '&corruptionOwner' AND TABLE_NAME = '&corruptionTable';
  4. 使用 skip_corrupt_blocks 程序,針對受影響的資料表啟用或停用損毀略過。您可能也需要根據情況,將資料擷取到新的資料表,然後捨棄包含損毀區塊的資料表。

    執行下列程序來對受影響的資料表啟用損毀略過。

    begin rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', object_type => rdsadmin.rdsadmin_dbms_repair.table_object, flags => rdsadmin.rdsadmin_dbms_repair.skip_flag); end; / select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';

    執行下列程序來啟用損毀略過。

    begin rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', object_type => rdsadmin.rdsadmin_dbms_repair.table_object, flags => rdsadmin.rdsadmin_dbms_repair.noskip_flag); end; / select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
  5. 當您完成所有修復作業時,請執行下列程序來捨棄修復資料表。

    EXEC rdsadmin.rdsadmin_dbms_repair.drop_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table;

調整資料表空間、資料檔案和暫存檔的大小

依預設,Oracle 資料表空間建立時會開啟自動擴展,並且沒有大小上限。由於這些預設設定,資料表空間有時可能會成長得太大。建議您對永久和暫存資料表空間指定適當的大小,並且謹慎監控空間使用情況。

調整永久資料表空間的大小

若要調整 RDS for Oracle 資料庫執行個體中永久資料表空間的大小,請使用下列任一 Amazon RDS 程序:

  • rdsadmin.rdsadmin_util.resize_datafile

  • rdsadmin.rdsadmin_util.autoextend_datafile

resize_datafile 程序具有下列參數。

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

p_data_file_id

數字

要調整大小的資料檔案識別符。

p_size

varchar2

資料檔案的大小。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。

autoextend_datafile 程序具有下列參數。

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

p_data_file_id

數字

要調整大小的資料檔案識別符。

p_autoextend_state

varchar2

自動擴展功能的狀態。指定 ON 以自動擴展資料檔案,以及指定 OFF 以關閉自動擴展。

p_next

varchar2

下一個資料檔案增量的大小。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。

p_maxsize

varchar2

允許自動擴展的磁碟空間上限。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。您可以指定 UNLIMITED 來移除檔案大小限制。

下列範例會將資料檔案 4 的大小調整為 500 MB。

EXEC rdsadmin.rdsadmin_util.resize_datafile(4,'500M');

下列範例會關閉資料檔案 4 的自動擴展。它也會開啟資料檔案 5 的自動擴展,增量為 128 MB 且沒有大小上限。

EXEC rdsadmin.rdsadmin_util.autoextend_datafile(4,'OFF'); EXEC rdsadmin.rdsadmin_util.autoextend_datafile(5,'ON','128M','UNLIMITED');

調整暫存資料表空間的大小

若要調整 RDS for Oracle 資料庫執行個體中者存資料表空間的大小,包括僅供讀取複本,請使用下列任一 Amazon RDS 程序:

  • rdsadmin.rdsadmin_util.resize_temp_tablespace

  • rdsadmin.rdsadmin_util.resize_tempfile

  • rdsadmin.rdsadmin_util.autoextend_tempfile

resize_temp_tablespace 程序具有下列參數。

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

p_temp_tablespace_name

varchar2

要調整大小的暫時資料表空間的名稱。

p_size

varchar2

資料表空間的大小。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。

resize_tempfile 程序具有下列參數。

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

p_temp_file_id

數字

要調整大小的暫存檔識別符。

p_size

varchar2

暫存檔的大小。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。

autoextend_tempfile 程序具有下列參數。

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

p_temp_file_id

數字

要調整大小的暫存檔識別符。

p_autoextend_state

varchar2

自動擴展功能的狀態。指定 ON 以自動擴展暫存檔,以及指定 OFF 以關閉自動擴展。

p_next

varchar2

下一個暫存檔增量的大小。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。

p_maxsize

varchar2

允許自動擴展的磁碟空間上限。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。您可以指定 UNLIMITED 來移除檔案大小限制。

下列範例會將名為 TEMP 的暫存資料表空間大小調整為 4 GB。

EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4G');
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4096000000');

下列範例會根據檔案識別符為 1 的暫存檔,將暫時資料表空間大小調整為 2 MB。

EXEC rdsadmin.rdsadmin_util.resize_tempfile(1,'2M');

下列範例會關閉暫存檔 1 的自動擴展。它還將暫存檔 2 的自動擴展大小上限設定為 10 GB,增量為 100 MB。

EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(1,'OFF'); EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(2,'ON','100M','10G');

如需有關 Oracle 資料庫執行個體的僅供讀取複本的詳細資訊,請參閱 使用適用於 Amazon RDS for Oracel 的僅供讀取複本

清除資源回收筒

當您丟棄資料表時,Oracle 資料庫不會立即移除其儲存空間。資料庫會重新命名該資料表,並將其和任何相關聯的物件放在資源回收筒中。清除資源回收筒會移除這些項目,並釋放其儲存空間。

若要清除整個資源回收筒,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.purge_dba_recyclebin。不過,此程序無法清除 SYSRDSADMIN 物件的資源回收筒。如果您需要清除這些物件,請聯絡 AWS Support。

下列範例會清除整個資源回收筒。

EXEC rdsadmin.rdsadmin_util.purge_dba_recyclebin;

設定完全修訂的預設顯示值

若要更改 Amazon RDS Oracle 執行個體上完全修訂的預設顯示值,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val。請注意,您可以使用 DBMS_REDACTPL/SQL 套裝建立修訂政策,如 Oracle 資料庫說明文件所述。dbms_redact_upd_full_rdct_val 程序會針對受現有政策影響的不同資料類型,指定其顯示的字元。

dbms_redact_upd_full_rdct_val 程序具有下列參數。

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

p_number_val

數字

Null

修改 NUMBER 資料類型資料欄的預設值。

p_binfloat_val

binary_float

Null

修改 BINARY_FLOAT 資料類型資料欄的預設值。

p_bindouble_val

binary_double

Null

修改 BINARY_DOUBLE 資料類型資料欄的預設值。

p_char_val

char

Null

修改 CHAR 資料類型資料欄的預設值。

p_varchar_val

varchar2

Null

修改 VARCHAR2 資料類型資料欄的預設值。

p_nchar_val

nchar

Null

修改 NCHAR 資料類型資料欄的預設值。

p_nvarchar_val

nvarchar2

Null

修改 NVARCHAR2 資料類型資料欄的預設值。

p_date_val

date

Null

修改 DATE 資料類型資料欄的預設值。

p_ts_val

timestamp

Null

修改 TIMESTAMP 資料類型資料欄的預設值。

p_tswtz_val

timestamp with time zone

Null

修改 TIMESTAMP WITH TIME ZONE 資料類型資料欄的預設值。

p_blob_val

blob

Null

修改 BLOB 資料類型資料欄的預設值。

p_clob_val

clob

Null

修改 CLOB 資料類型資料欄的預設值。

p_nclob_val

nclob

Null

修改 NCLOB 資料類型資料欄的預設值。

以下範例將 CHAR 資料類型的預設修訂值更改為 *:

EXEC rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val(p_char_val => '*');

以下範例更改了 NUMBERDATECHAR 資料類型的預設修訂值:

BEGIN rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val( p_number_val=>1, p_date_val=>to_date('1900-01-01','YYYY-MM-DD'), p_varchar_val=>'X'); END; /

使用 dbms_redact_upd_full_rdct_val 程序變更完整修訂的預設值後,必須重新啟動資料庫執行個體,變更才會生效。如需更多詳細資訊,請參閱 重新啟動中的資料庫執行個體