Oracle DB インスタンスの一般的なデータベースタスクの実行
次に、Oracle を実行している Amazon RDS DB インスタンスのデータベースに関連する特定の一般的な DBA タスクを実行する方法を示します。マネージドサービスエクスペリエンスを提供するために、Amazon RDS は DB インスタンスへのシェルアクセスを提供していません。また、Amazon RDS では、高度な特権を必要とする、一部のシステムプロシージャやテーブルへのアクセスが制限されます。
トピック
- データベースのグローバル名の変更
- テーブルスペースの作成とサイズ変更
- デフォルトテーブルスペースの設定
- デフォルトのテンポラリテーブルスペースの設定
- データベースのチェックポイント機能
- 分散復旧の設定
- データベースタイムゾーンの設定
- Oracle 外部テーブルの使用
- 自動ワークロードリポジトリ (AWR) を使用したパフォーマンスレポートの生成
- VPC の DB インスタンスで使用するデータベースリンクの調整
- DB インスタンスのデフォルトエディションの設定
- SYS.AUD$ テーブルの監査を有効にする
- SYS.AUD$ テーブルの監査を無効にする
- 中断したオンラインインデックス構築のクリーンアップ
- 破損ブロックのスキップ
- リードレプリカのテンポラリテーブルスペースのサイズ変更
- ごみ箱を空にする
- 完全リダクションのための Data Redaction ポリシーの設定
データベースのグローバル名の変更
データベースのグローバル名を変更するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.rename_global_name
を使用します。rename_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) のみをサポートしています。データファイルとログファイルを作成するときは、物理ファイル名を指定することはできません。
デフォルトでは、テーブルスペースは自動エクステンションを有効にして作成され、最大サイズでは作成されません。これらのデフォルト設定のため、テーブルスペースはすべての割り当てられたストレージを消費するまで大きくなります。永続テーブルスペースとテンポラリテーブルスペースに適切な最大サイズを指定し、リージョンの使用状況を注意深くモニタリングすることをお勧めします。
次の例では、スタートサイズが 1 ギガバイト、最大サイズが 10 ギガバイトのテーブルスペース users2
を作成します。
CREATE TABLESPACE
users2
DATAFILE SIZE1G
AUTOEXTEND ON MAXSIZE10G
;
次の例では、テンポラリテーブルスペース temp01
を作成します。
CREATE TEMPORARY TABLESPACE
temp01
;
Amazon RDS for Oracle では smallfile テーブルスペースをサイズ変更できないため、smallfile テーブルスペースは使用しないことをお勧めします。ただし、smallfile テーブルスペースにはデータファイルを追加できます。
ALTER TABLESPACE
を使用すると、bigfile テーブルスペースをサイズ変更できます。サイズは、キロバイト (K)、メガバイト (M)、ギガバイト (G)、またはテラバイト (T) で指定できます。
次の例では、bigfile テーブルスペース users2
のサイズを 200 MB に変更します。
ALTER TABLESPACE
users2
RESIZE200M
;
次の例では、smallfile テーブルスペース users2
に追加のデータファイルを追加します。
ALTER TABLESPACE
users2
ADD DATAFILE SIZE100000M
AUTOEXTEND ON NEXT250m
MAXSIZEUNLIMITED
;
デフォルトテーブルスペースの設定
デフォルトのテーブルスペースを設定するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.alter_default_tablespace
を使用します。alter_default_tablespace
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar |
— |
はい |
デフォルトのテーブルスペースの名前。 |
次の例では、デフォルトのテーブルスペースを users2
に設定します。
EXEC rdsadmin.rdsadmin_util.alter_default_tablespace(tablespace_name => '
users2
');
デフォルトのテンポラリテーブルスペースの設定
デフォルトのテンポラリテーブルスペースを設定するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.alter_default_temp_tablespace
を使用します。alter_default_temp_tablespace
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar |
— |
はい |
デフォルトのテンポラリテーブルスペースの名前。 |
次の例では、デフォルトのテンポラリテーブルスペースを temp01
に設定します。
EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => '
temp01
');
データベースのチェックポイント機能
データベースのチェックポイントを作成するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.checkpoint
を使用します。checkpoint
プロシージャにはパラメータはありません。
次の例では、データベースのチェックポイントを作成します。
EXEC rdsadmin.rdsadmin_util.checkpoint;
分散復旧の設定
分散復旧を設定するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.enable_distr_recovery
と disable_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
プロシージャは、特定のデータ型のみのタイムゾーンを変更し、SYSDATE
は変更しません。タイムゾーンの設定に関する他の制限については、Oracle ドキュメントに示されています。
Oracle Scheduler のデフォルトのタイムゾーンを設定することもできます。詳細については、「Oracle Scheduler ジョブのタイムゾーンの設定」を参照してください。
alter_db_time_zone
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
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
プロシージャを使用してタイムゾーンを変更した後、変更を有効にするために DB インスタンスを再起動します。詳細については、「 DB インスタンスの再起動」を参照してください。タイムゾーンのアップグレードについては、「タイムゾーンに関する考慮事項」を参照してください。
Oracle 外部テーブルの使用
Oracle 外部テーブルは、データベースにないデータのテーブルです。代わりに、データはデータベースがアクセスできる外部ファイルにあります。外部テーブルを使用して、データベースにロードしないでデータにアクセスできます。外部テーブルの詳細については、Oracle ドキュメントの「外部表の管理
Amazon RDS では、外部テーブルファイルをディレクトリオブジェクトに保存できます。ディレクトリオブジェクトは、新規作成するか、Oracle データベースに定義済みのもの (DATA_PUMP_DIR ディレクトリなど) を使用できます。ディレクトリオブジェクトの作成方法については、「主要データストレージ領域でのディレクトリの作成と削除」を参照してください。Amazon RDS Oracle DB インスタンスのディレクトリオブジェクトを一覧表示するには、ALL_DIRECTORIES ビューをクエリできます。
ディレクトリオブジェクトは、インスタンスで使用されているメインのデータストレージ領域 (Amazon EBS ボリューム) を参照します。データファイル、REDO ログ、監査、追跡、およびその他のファイルで使用される領域は、割り当てられたストレージの消費としてカウントされます。
外部データファイルを Oracle データベース間で移行するには、DBMS_FILE_TRANSFER
移行した外部データファイルを使用して、外部テーブルを作成できます。次の例では、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 DB インスタンスにあるデータを外部データファイル内に移行するとします。この場合、外部テーブルを作成し、データベースのテーブルから選択したデータを外部データファイルに入力できます。例えば、次の 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
に、DIAGNOSTIC
または DIAGNOSTIC+TUNING
を設定します。
RDS での AWR レポートの使用
AWR レポートを生成するには、awrrpt.sql
などのスクリプトを実行します。これらのスクリプトは、データベースホストサーバーにインストールされます。Amazon RDS では、ホストに直接アクセスすることはできません。ただし、Oracle Database の別のインストールから SQL スクリプトのコピーを取得することは可能です。
また、SYS.DBMS_WORKLOAD_REPOSITORY
PL/SQL パッケージでプロシージャを実行して AWR を使用することもできます。このパッケージを使用して、ベースラインとスナップショットを管理したり、ASH および AWR レポートを表示したりできます。例えば、テキスト形式で AWR レポートを生成するには、DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT
プロシージャを実行します。ただし、これらの AWR レポートには、AWS Management Console からはアクセスできません。
AWR を使用する場合は、rdsadmin.rdsadmin_diagnostic_util
プロシージャを使用することをお勧めします。これらのプロシージャを使用すると、次の項目を生成できます。
-
AWR レポート
-
アクティブセッション履歴 (ASH) レポート
-
自動データベース診断モニター (ADDM) レポート
-
AWR データの Oracle Data Pump Export ダンプファイル
rdsadmin_diagnostic_util
プロシージャは、レポートを DB インスタンスファイルシステムに保存します。これらのレポートには、コンソールからアクセスできます。rdsadmin.rds_file_util
プロシージャを使用してレポートにアクセスしたり、S3 統合オプションを使用して Amazon S3 にコピーされたレポートにアクセスすることもできます。詳細については、「DB インスタンスディレクトリ内のファイルの読み取り」および「Amazon S3 統合」を参照してください。
以下の Amazon RDS for Oracle DB エンジンバージョンの rdsadmin_diagnostic_util
手順を使用できます。
-
すべての Oracle Database 21c バージョン
-
19.0.0.0.ru-2020-04.rur-2020-04.r1 以上の Oracle Database 19c バージョン
-
12.2.0.1.ru-2020-04.rur-2020-04.r1 以上の Oracle Database 12c Release 2 (12.2) バージョン
-
12.1.0.2.v20 以上の Oracle Database 12c Release 1 (12.1) バージョン
Diagnostic Utility Package の一般的なパラメータ
rdsadmin_diagnostic_util
パッケージを使用して AWR および ADDM を管理する場合は、通常、次のパラメータを使用します。
パラメータ | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
|
— |
はい |
スタートスナップショットの ID。 |
|
|
— |
はい |
終了スナップショットの ID。 |
|
|
|
いいえ |
レポートまたはエクスポートファイルの書き込み先のディレクトリ。デフォルト以外のディレクトリを指定する場合、 |
|
|
— |
いいえ |
バックアップの用途や使用方法を示すためにバックアップを区別する目的で使用できる 最大 30 文字を指定できます。有効な文字は、 タグは一意である必要はないので、複数のバックアップに同じタグを付けることができます。タグを指定しない場合、RMAN は、
|
|
|
|
いいえ |
レポートの形式。有効な値は、 |
|
|
— |
いいえ |
Oracle の |
rdsadmin_diagnostic_util パッケージで ASH を管理する場合は、通常、次のパラメータを使用します。
Parameter | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
|
— |
はい |
ASH 分析のスタート時刻。 |
|
|
— |
はい |
ASH 分析の終了時刻。 |
|
|
|
いいえ |
ASH レポートの「Top Activity」セクションで使用されるスロットの期間 (秒単位)。このパラメータを指定しない場合、 |
|
|
Null |
いいえ |
セッション ID。 |
|
|
Null |
いいえ |
SQL ID。 |
|
|
Null |
いいえ |
待機クラス名。 |
|
|
Null |
いいえ |
サービス名のハッシュ。 |
|
|
Null |
いいえ |
モジュール名。 |
|
|
Null |
いいえ |
アクション名。 |
|
|
Null |
いいえ |
データベースセッションのアプリケーション固有の ID。 |
|
|
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
プロシージャを使用します。
次の例では、14 分前から現在の時刻までのデータを含む ASH レポートを生成します。出力ファイルの名前は ashrpt
の形式を使用し、begin_time
end_time
.txt
および begin_time
は end_time
YYYYMMDDHH24MISS
の形式を使用します。ファイルには、コンソールからアクセスできます。
BEGIN rdsadmin.rdsadmin_diagnostic_util.ash_report( begin_time => SYSDATE-14/1440, end_time => SYSDATE, report_type => 'TEXT'); END; /
次の例では、2019 年 11 月 18 日の午後 6:07 から 2019 年 11 月 18 日の午後 6:15 までのデータを含む ASH レポートを生成します。出力 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 を使用します。詳細については、「データベースログファイルのダウンロード」を参照してください。
VPC の DB インスタンスで使用するデータベースリンクの調整
同じ Virtual Private Cloud (VPC) 内またはピア接続された VPC 内の Amazon RDS DB インスタンスで Oracle データベースリンクを使用するには、2 つの DB インスタンス間に有効なルートが存在する必要があります。VPC ルーティングテーブルおよびネットワークアクセス制御リスト (ACL) を使用して、DB インスタンス間の有効なルートを確認します。
各 DB インスタンスのセキュリティグループは他の DB インスタンスの受信と送信を許可する必要があります。インバウンドルールとアウトバウンドルールは、同じ VPC またはピアリング接続先 VPC からセキュリティグループを参照できます。詳細については、「セキュリティグループの更新によるピア VPC セキュリティグループの参照」を参照してください。
VPC で DHCP オプションセットを使用してカスタム DNS サーバーを設定した場合、カスタム DNS サーバーはデータベースリンクターゲットの名前を解決できる必要があります。詳細については、「カスタム DNS サーバーのセットアップ」を参照してください。
Oracle Data Pump でのデータベースリンクの使用の詳細については、「Oracle Data Pump を使用したインポート」を参照してください。
DB インスタンスのデフォルトエディションの設定
データベースオブジェクトは、エディションと呼ばれるプライベート環境で再定義できます。エディションベースの再定義を使用して、最小限のダウンタイムでアプリケーションのデータベースオブジェクトをアップグレードできます。
Amazon RDS Oracle DB インスタンスのデフォルトエディションは、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.alter_default_edition
を使用して設定できます。
次の例では、Amazon RDS Oracle DB インスタンスのデフォルトエディションを RELEASE_V1
に設定します。
EXEC rdsadmin.rdsadmin_util.alter_default_edition('RELEASE_V1');
次の例では、Amazon RDS Oracle DB インスタンスのデフォルトエディションを Oracle のデフォルトに設定し直します。
EXEC rdsadmin.rdsadmin_util.alter_default_edition('ORA$BASE');
Oracle エディションベースの再定義の詳細については、Oracle ドキュメントの「エディションおよびエディションに基づく再定義の概要
SYS.AUD$ テーブルの監査を有効にする
データベースの監査証跡テーブル SYS.AUD$
の監査を有効にするには、Amazon RDS プロシージャ rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table
を使用します。サポートされている監査プロパティは、ALL
のみです。個々のステートメントまたはオペレーションは監査することもしないこともできません。
監査の有効化は、次のバージョンを実行している Oracle DB インスタンスでサポートされています。
-
Oracle Database 21c (21.0.0)
-
Oracle Database 19c (19.0.0)
-
Oracle Database 12c Release 2 (12.2)
-
Oracle Database 12c リリース 1 (12.1.0.2.v14) 以降
audit_all_sys_aud_table
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
boolean |
true |
いいえ |
|
シングルテナント CDB では、以下のオペレーションは機能しますが、お客様が表示可能なメカニズムはオペレーションの現在のステータスを検出できません。監査情報は PDB 内から利用できません。詳細については、「シングルテナント CDB の制限事項」を参照してください。
以下のクエリでは、データベースの 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$
の監査を無効にするには、Amazon RDS プロシージャ rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table
を使用します。この手順では、パラメータは使用しません。
以下のクエリでは、データベースの 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
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
binary_integer |
|
いいえ |
インデックスのオブジェクト ID。通常、ORA-08104 エラーテキストからのオブジェクト ID を使用できます。 |
|
binary_integer |
|
いいえ |
デフォルトの
|
以下の例は、失敗したオンラインインデックス構築のクリーンアップを示しています。
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 Function
破損ブロックのスキップ
インデックスとテーブルのスキャンの中に破損ブロックをスキップするには、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
インデックスとテーブルのスキャン中に破損ブロックをスキップするには
-
修復テーブルが存在しない場合は、以下のプロシージャを実行して作成します。
EXEC rdsadmin.rdsadmin_dbms_repair.create_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table;
-
適切な場合は、以下の手順を実行して、既存のレコードを確認し、消去します。
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;
-
以下の手順を実行して、破損ブロックを確認します。
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';
-
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';
-
すべての修復作業が完了したら、以下の手順を実行して修復テーブルを削除します。
EXEC rdsadmin.rdsadmin_dbms_repair.drop_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table;
リードレプリカのテンポラリテーブルスペースのサイズ変更
デフォルトでは、Oracle テーブルスペースは自動エクステンションを有効にして作成され、最大サイズでは作成されません。これらのデフォルト設定のため、場合によっては。テーブルスペースが大きくなりすぎる可能性があります。永続テーブルスペースとテンポラリテーブルスペースに適切な最大サイズを指定し、リージョンの使用状況を注意深くモニタリングすることをお勧めします。
Oracle DB インスタンスのリードレプリカのテンポラリスペースのサイズを変更するには、Amazon RDS の rdsadmin.rdsadmin_util.resize_temp_tablespace
または rdsadmin.rdsadmin_util.resize_tempfile
プロシージャを使用します。
resize_temp_tablespace
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar2 |
— |
はい |
サイズを変更するテンポラリテーブルスペースの名前。 |
|
varchar2 |
— |
はい |
サイズは、バイトで (デフォルト)、キロバイト (K)、メガバイト (M)、またはギガバイト (G) で指定できます。 |
resize_tempfile
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
binary_integer |
— |
はい |
サイズを変更するテンポラリテーブルスペースのファイル識別子。 |
|
varchar2 |
— |
はい |
サイズは、バイトで (デフォルト)、キロバイト (K)、メガバイト (M)、またはギガバイト (G) で指定できます。 |
次の例は、リードレプリカで TEMP
というテンポラリテーブルスペースのサイズを 4 ギガバイトに変更します。
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4G');
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4096000000');
次の例は、ファイル識別子が 1
のテンポラリファイルに基づいて、リードレプリカでテンポラリテーブルスペースのサイズを 2 メガバイトに変更します。
EXEC rdsadmin.rdsadmin_util.resize_tempfile(1,'2M');
Oracle DB インスタンスのリードレプリカの詳細については、「Amazon RDS での Oracle レプリカの使用」を参照してください。
ごみ箱を空にする
テーブルを削除しても、Oracle データベースはただちにストレージ領域を削除しません。データベースによってテーブルの名前が変更され、テーブルと関連オブジェクトがごみ箱に入れられます。ごみ箱を空にすると、これらのアイテムが削除され、ストレージ領域が解放されます。
ごみ箱全体を空にするには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.purge_dba_recyclebin
を使用します。ただし、このプロシージャでは、 SYS
および RDSADMIN
オブジェクトのごみ箱は空になりません。これらのオブジェクトを消去する必要がある場合は、AWS サポートにお問い合わせください。
次の例は、ごみ箱全体を空にします。
EXEC rdsadmin.rdsadmin_util.purge_dba_recyclebin;
完全リダクションのための Data Redaction ポリシーの設定
Amazon RDS Oracle インスタンスでの完全リダクションの Data Redaction ポリシーのデフォルト表示値を変更するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val
を使用します。
dbms_redact_upd_full_rdct_val
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
number |
Null |
いいえ |
NUMBER データ型の列のデフォルト値を変更します。 |
|
binary_float |
Null |
いいえ |
BINARY_FLOAT データ型の列のデフォルト値を変更します。 |
|
binary_double |
Null |
いいえ |
BINARY_DOUBLE データ型の列のデフォルト値を変更します。 |
|
char |
Null |
いいえ |
CHAR データ型の列のデフォルト値を変更します。 |
|
varchar2 |
Null |
いいえ |
VARCHAR2 データ型の列のデフォルト値を変更します。 |
|
nchar |
Null |
いいえ |
NCHAR データ型の列のデフォルト値を変更します。 |
|
nvarchar2 |
Null |
いいえ |
NVARCHAR2 データ型の列のデフォルト値を変更します。 |
|
date |
Null |
いいえ |
DATE データ型の列のデフォルト値を変更します。 |
|
timestamp |
Null |
いいえ |
TIMESTAMP データ型の列のデフォルト値を変更します。 |
|
timestamp with time zone |
Null |
いいえ |
TIMESTAMP WITH TIME ZONE データ型の列のデフォルト値を変更します。 |
|
blob |
Null |
いいえ |
BLOB データ型の列のデフォルト値を変更します。 |
|
clob |
Null |
いいえ |
CLOB データ型の列のデフォルト値を変更します。 |
|
nclob |
Null |
いいえ |
NCLOB データ型の列のデフォルト値を変更します。 |
次の例では、char データ型のデフォルトのリダクション値を* に変更します。
EXEC rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val(p_char_val => '*');
次の例では、number、date、および char データ型のデフォルトのリダクション値を変更します。
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 プロシージャを使用して完全リダクションのデフォルト値を変更した後、変更を有効にするために DB インスタンスを再起動します。詳細については、「 DB インスタンスの再起動」を参照してください。