Oracle DB インスタンスのその他のタスクの実行
次に、Oracle を実行している Amazon RDS DB インスタンスでその他の DBA タスクを実行する方法を示します。マネージド型サービスの操作性を実現するために、Amazon RDS では DB インスタンスへのシェルアクセスは提供していません。また、上位の権限を必要とする特定のシステムプロシージャやシステムテーブルへのアクセスが制限されます。
トピック
主要データストレージ領域でのディレクトリの作成と削除
ディレクトリを作成するには、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
DB インスタンスのマスターユーザー名には、新しいディレクトリでの読み取りおよび書き込み権限があり、他のユーザーにアクセスを許可できます。EXECUTE
権限は、DB インスタンス上のディレクトリでは使用できません。ディレクトリはメインデータストレージ領域に作成され、領域および I/O 帯域幅を消費します。
以下の例では、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 プロシージャ
DB インスタンスディレクトリ内のファイルのリスト化
ディレクトリ内のファイルを一覧表示するには、Amazon RDS プロシージャ rdsadmin.rds_file_util.listdir
を使用します。このプロシージャは Oracle レプリカではサポートされていません。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'));
DB インスタンスディレクトリ内のファイルの読み取り
テキストファイルを読み取るには、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
コマンドです。Bring Your Own License (BYOL) の顧客のサービスリクエストを開くために、Oracle サポートは lsinventory
ファイルをリクエストします。Opatch によって生成される lsinventory_detail
ファイルをリクエストする場合もあります。
マネージドサービスエクスペリエンスを提供するために、Amazon RDS には Opatch へのシェルアクセスは用意されていません。代わりに、BDUMP ディレクトリのlsinventory-
には、現在のエンジンのバージョンに関連するパッチ情報が含まれています。マイナーアップグレードまたはメジャーアップグレードを実行すると、Amazon RDS はパッチを適用してから 1 時間以内にdbv
.txtlsinventory-
を更新します。適用されたパッチを確認するには、dbv
.txtlsinventory-
を読み取ります。このアクションは、dbv
.txtopatch lsinventory
コマンドの実行に似ています。
注記
このセクションの例では、BDUMP ディレクトリ名を BDUMP
としています。リードレプリカでは、BDUMP ディレクトリ名が異なります。BDUMP 名を取得するためにリードレプリカに対してクエリ V$DATABASE.DB_UNIQUE_NAME
を実行する方法については、「ファイルのリスト化」を参照してください。
インベントリファイルは Amazon RDS 命名規則 lsinventory-
および dbv
.txtlsinventory_detail-
を使用します。ここで、dbv
.txtdbv
は DB バージョンの完全な名前です。lsinventory-
ファイルはすべての DB バージョンで使用できます。対応する dbv
.txtlsinventory_detail-
は、19.0.0.0、ru-2020-01.rur-2020-01.r1 以降で利用できます。dbv
.txt
例えば、DB のバージョンが 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
DB エンジンの現在のバージョンと一致するファイルをダウンロードしてください。
コンソールを使用してインベントリファイルをダウンロードするには
Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、[データベース] を選択します。
-
表示するログファイルのある DB インスタンスの名前を選択します。
-
[ログとイベント] タブを選択します。
-
[ログ] セクションまで下にスクロールします。
-
[ログ] セクションで、
lsinventory
を検索します。 -
アクセスするファイルを選択し、[ダウンロード] を選択します。
SQL クライアントで lsinventory-
を読み取るには、dbv
.txtSELECT
ステートメントを使用できます。この手法では、rdsadmin
関数として rdsadmin.rds_file_util.read_text_file
または rdsadmin.tracefile_listing
のいずれかを使用します。
以下のサンプルクエリでは、dbv
を Oracle DB のバージョンに置き換えます。例えば、DB のバージョンは 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 DB のバージョンに置き換えます。例えば、DB のバージョンは 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 Database には、多数のアドバイザーが含まれています。各アドバイザーは、自動タスクと手動タスクをサポートします。rdsadmin.rdsadmin_util
パッケージ内のプロシージャを使用して、いくつかのアドバイザータスクを管理できます。
アドバイザータスク手順は、次のエンジンバージョンで使用できます。
-
Oracle Database 21c (21.0.0)
-
Version 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」を参照してください。
アドバイザータスクのパラメータの設定
一部のアドバイザータスクのパラメータを設定するには、Amazon RDS 手順 rdsadmin.rdsadmin_util.advisor_task_set_parameter
を使用します。advisor_task_set_parameter
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar2 |
— |
はい |
パラメータを変更するアドバイザータスクの名前。以下の値が有効です。
|
|
varchar2 |
— |
はい |
タスクパラメータの名前。アドバイザータスクの有効なパラメータを検索するには、次のクエリを実行します。
|
|
varchar2 |
— |
はい |
タスクパラメータの値。タスクパラメータの有効な値を検索するには、次のクエリを実行します。
|
次の PL/SQL プログラムは ACCEPT_PLANS
を FALSE
の SYS_AUTO_SPM_EVOLVE_TASK
に設定します。SQL Plan Management の自動化タスクでは、プランが検証され、その結果のレポートが生成されますが、プランを自動的には進化させません。レポートを使用して、新しい 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;
次の PL/SQL プログラムは EXECUTION_DAYS_TO_EXPIRE
を 10
の AUTO_STATS_ADVISOR_TASK
に設定します。事前定義されたタスク AUTO_STATS_ADVISOR_TASK
は、メンテナンスウィンドウで 1 日 1 回自動的に実行されます。この例では、タスク実行の保持期間を 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
手順は、次のパラメータを受け付けます。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
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()