本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行 Oracle 資料庫執行處理的雜項任務
您可以在下文中找到如何在執行 Oracle 的 Amazon RDS 資料庫執行個體上執行雜項 DBA 任務。為了提供受管理的服務體驗,Amazon RDS 並不會提供資料庫執行個體的 Shell 存取權,而且會將存取權限制在某些需要進階權限的系統程序和資料表。
在主要資料儲存空間中建立和捨棄目錄
若要建立目錄,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.create_directory
。您可以建立最多 10,000 個目錄,全位於您的主要資料儲存空間。若要建立目錄,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.drop_directory
。
create_directory
和 drop_directory
程序具有下列必要參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
目錄名稱。 |
下列範例會建立名為 PRODUCT_DESCRIPTIONS
的新目錄。
EXEC rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'product_descriptions');
資料字典會以大寫存放目錄名稱。您可以查詢 DBA_DIRECTORIES
來列出目錄。系統會自動選擇實際的主機路徑名稱。下列範例會取得名為 PRODUCT_DESCRIPTIONS
目錄的目錄路徑:
SELECT DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME='PRODUCT_DESCRIPTIONS'; DIRECTORY_PATH ---------------------------------------- /rdsdbdata/userdirs/01
資料庫執行個體的主要使用者名稱會具有新目錄中的讀寫權限,並且可將存取權授予其他使用者。EXECUTE
權限不適用於資料庫執行個體上的目錄。目錄會在您的主要資料儲存空間中建立,並且將耗用空間和輸入/輸出頻寬。
下列範例會捨棄名為 PRODUCT_DESCRIPTIONS
的目錄。
EXEC rdsadmin.rdsadmin_util.drop_directory(p_directory_name => 'product_descriptions');
注意
您也可以使用 Oracle SQL 命令 DROP
DIRECTORY
捨棄目錄。
捨棄目錄不會移除其內容。這是因為 rdsadmin.rdsadmin_util.create_directory
程序可能會重複使用路徑名稱,而已捨棄目錄中的檔案可能會出現在新建立的目錄中。捨棄目錄之前,我們建議您使用 UTL_FILE.FREMOVE
從目錄中移除檔案。如需更多詳細資訊,請參閱 Oracle 文件中的 FREMOVE 程序
列出資料庫執行個體目錄中的檔案
若要列出目錄中的檔案,請使用 Amazon RDS 程序 rdsadmin.rds_file_util.listdir
。listdir
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
要列出的目錄名稱。 |
下列範例授予目錄 PRODUCT_DESCRIPTIONS
的讀/寫權限給使用者 rdsadmin
,然後列出此目錄中的檔案。
GRANT READ,WRITE ON DIRECTORY PRODUCT_DESCRIPTIONS TO rdsadmin; SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'PRODUCT_DESCRIPTIONS'));
讀取資料庫執行個體目錄中的檔案
若要讀取文字檔案,請使用 Amazon RDS 程序 rdsadmin.rds_file_util.read_text_file
。read_text_file
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
包含檔案的目錄名稱。 |
|
varchar2 |
— |
是 |
要讀取的檔案名稱。 |
下列範例會在目錄 rice.txt
中建立檔案 PRODUCT_DESCRIPTIONS
。
declare fh sys.utl_file.file_type; begin fh := utl_file.fopen(location=>'PRODUCT_DESCRIPTIONS', filename=>'rice.txt', open_mode=>'w'); utl_file.put(file=>fh, buffer=>'AnyCompany brown rice, 15 lbs'); utl_file.fclose(file=>fh); end; /
下列範例會從目錄 rice.txt
讀取 PRODUCT_DESCRIPTIONS
檔案。
SELECT * FROM TABLE (rdsadmin.rds_file_util.read_text_file( p_directory => 'PRODUCT_DESCRIPTIONS', p_filename => 'rice.txt'));
存取 Opatch 檔案
Opatch 是可將修補程式套用和復原到 Oracle 軟體的 Oracle 公用程式。針對確定已將哪些修補程式套用至資料庫,Oracle 採用機制是 opatch lsinventory
命令。為針對使用自有授權 (BYOL) 客戶開立服務請求,Oracle 支援會要求 lsinventory
檔案,有時也會要求 Opatch 產生的 lsinventory_detail
檔案。
為了提供受管的服務體驗,Amazon RDS 並不會提供 Opatch 的 Shell 存取權。相反地,BDUMP 目錄中的 lsinventory-
包含與您目前引擎版本相關的修補程式資訊。當您執行次要或主要升級時,Amazon RDS 會在套用修補程式的一小時內更新 dbv
.txtlsinventory-
。如要確認套用的修補程式,請參閱 dbv
.txtlsinventory-
。此動作與執行 dbv
.txtopatch lsinventory
命令類似。
注意
本節的範例假設 BDUMP 目錄已命名為 BDUMP
。在僅供讀取複本上,BDUMP 目錄名稱不同。若要了解如何透過在僅供讀取複本上查詢 V$DATABASE.DB_UNIQUE_NAME
以取得 BDUMP 名稱,請參閱列出檔案。
庫存檔案會使用 Amazon RDS 命名慣例 lsinventory-
和 dbv
.txtlsinventory_detail-
,其中 dbv
.txtdbv
是資料庫版本的完整名稱。lsinventory-
檔案可在所有資料庫版本上使用。可在下列資料庫版本上取得對應的 dbv
.txtlsinventory_detail-
:dbv
.txt
-
19.0.0.0,ru-2020-01.rur-2020-01.r1 或更新版本
-
12.2.0.1,ru-2020-01.rur-2020-01.r1 或更新版本
-
12.1.0.2,第 19 版或更新版本
例如,若您的資料庫版本為 19.0.0.0.ru-2021-07.rur-2021-07.r1,則您的庫存檔案具有下列名稱。
lsinventory-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt lsinventory_detail-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt
確保您下載的檔案符合您資料庫引擎的目前版本。
如何使用主控台下載庫存檔案
前往 https://console.aws.amazon.com/rds/
,開啟 Amazon RDS 主控台。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇您想檢視的日誌檔案所在的資料庫執行個體的名稱。
-
選擇 Logs & events (日誌與事件) 標籤。
-
向下捲動至 Logs (日誌) 區段。
-
在日誌區段中,搜尋
lsinventory
。 -
選取您要存取的檔案,然後選擇下載。
若要在 SQL 用戶端中讀取 lsinventory-
,您可以使用 dbv
.txtSELECT
陳述式。針對此技術,請使用下列 rdsadmin
函數:rdsadmin.rds_file_util.read_text_file
或 rdsadmin.tracefile_listing
。
在下列範例查詢中,將 dbv
取代為您的 Oracle 資料庫版本。例如,您的資料庫版本可能是 19.0.0.0.ru-2020-04.rur-2020-04.r1。
SELECT text FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'lsinventory-
dbv
.txt'));
若要在 SQL 用戶端中讀取 lsinventory-
,您可以寫入 PL/SQL 程式。此程式會使用 dbv
.txtutl_file
來讀取檔案,並使用 dbms_output
來列印檔案。這些是 Oracle 提供的套件。
在下列範例程式中,將 dbv
取代為您的 Oracle 資料庫版本。例如,您的資料庫版本可能是 19.0.0.0.ru-2020-04.rur-2020-04.r1。
SET SERVEROUTPUT ON DECLARE v_file SYS.UTL_FILE.FILE_TYPE; v_line VARCHAR2(1000); v_oracle_home_type VARCHAR2(1000); c_directory VARCHAR2(30) := 'BDUMP'; c_output_file VARCHAR2(30) := 'lsinventory-
dbv
.txt'; BEGIN v_file := SYS.UTL_FILE.FOPEN(c_directory, c_output_file, 'r'); LOOP BEGIN SYS.UTL_FILE.GET_LINE(v_file, v_line,1000); DBMS_OUTPUT.PUT_LINE(v_line); EXCEPTION WHEN no_data_found THEN EXIT; END; END LOOP; END; /
或者,查詢 rdsadmin.tracefile_listing
,然後將輸出多工緩衝處理至檔案。下列範例會將輸出多工緩衝處理至 /tmp/tracefile.txt
。
SPOOL /tmp/tracefile.txt SELECT * FROM rdsadmin.tracefile_listing WHERE FILENAME LIKE 'lsinventory%'; SPOOL OFF;
管理建議程式任務
Oracle 資料庫包含許多建議程式。每個建議程式均支援自動化和手動任務。您可以使用 rdsadmin.rdsadmin_util
套件來管理一些建議程式任務。
下列引擎版本提供建議程式任務程序:
-
Oracle Database 21c (21.0.0)
-
19.0.0.0.ru-2021-01.rur-2021-01.r1 版及更新的 Oracle Database 19c 版本
如需詳細資訊,請參閱 Amazon RDS for Oracle 版本備註中的版本 19.0.0.0.ru-2021-01.rur-2021-01.r1。
-
12.2.0.1.ru-2021-01.rur-2021-01.r1 版及更新的 Oracle Database 12c (版本 2) (12.2.0.1) 版本
如需詳細資訊,請參閱 Amazon RDS for Oracle 版本備註中的版本 12.2.0.1.ru-2021-01.rur-2021-01.r1。
設定建議程式任務的參數
若要設定某些建議程式任務的參數,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.advisor_task_set_parameter
。advisor_task_set_parameter
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
您要變更其參數的建議程式任務名稱。有效值如下:
|
|
varchar2 |
— |
是 |
任務參數的名稱。若要尋找建議程式任務的有效參數,請執行下列查詢。用
|
|
varchar2 |
— |
是 |
任務參數的值。若要尋找任務參數的有效值,請執行下列查詢。用
|
對於 ACCEPT_PLANS
,下列 PL/SQL 程式將 FALSE
設定為 SYS_AUTO_SPM_EVOLVE_TASK
。SQL 計劃管理自動化任務會驗證計劃,並產生其問題清單的報告,但不會自動演進計劃。您可以使用報告來識別新的 SQL 計劃基準並手動接受它們。
BEGIN rdsadmin.rdsadmin_util.advisor_task_set_parameter( p_task_name => 'SYS_AUTO_SPM_EVOLVE_TASK', p_parameter => 'ACCEPT_PLANS', p_value => 'FALSE'); END;
對於 EXECUTION_DAYS_TO_EXPIRE
,下列 PL/SQL 程式將 10
設定為 AUTO_STATS_ADVISOR_TASK
。預先定義的任務 AUTO_STATS_ADVISOR_TASK
每天會在維護視窗中自動執行一次。此範例會將任務執行的保留期設定為 10 天。
BEGIN rdsadmin.rdsadmin_util.advisor_task_set_parameter( p_task_name => 'AUTO_STATS_ADVISOR_TASK', p_parameter => 'EXECUTION_DAYS_TO_EXPIRE', p_value => '10'); END;
停用 AUTO_STATS_ADVISOR_TASK
若要停用 AUTO_STATS_ADVISOR_TASK
,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.advisor_task_drop
。advisor_task_drop
程序接受下列參數。
注意
此程序適用於 Oracle 資料庫 12c 版本 2 (12.2.0.1) 及更新版本。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
varchar2 |
— |
是 |
待停用建議程式任務的名稱。唯一有效的值為 |
下列命令會捨棄 AUTO_STATS_ADVISOR_TASK
。
EXEC rdsadmin.rdsadmin_util.advisor_task_drop('AUTO_STATS_ADVISOR_TASK')
您可以使用 rdsadmin.rdsadmin_util.dbms_stats_init
重新啟用 AUTO_STATS_ADVISOR_TASK
。
重新啟用 AUTO_STATS_ADVISOR_TASK
若要重新啟用 AUTO_STATS_ADVISOR_TASK
,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.dbms_stats_init
。dbms_stats_init
程序不需採用任何參數。
下列命令會重新啟用 AUTO_STATS_ADVISOR_TASK
。
EXEC rdsadmin.rdsadmin_util.dbms_stats_init()