Oracle DB インスタンスの一般的な DBA データベースタスク - Amazon Relational Database Service

Oracle DB インスタンスの一般的な DBA データベースタスク

次に、Oracle を実行している Amazon RDS DB インスタンスのデータベースに関連する特定の一般的な DBA タスクを実行する方法を示します。マネージド型サービスの操作性を実現するために、Amazon RDS では DB インスタンスへのシェルアクセスは提供していません。また Amazon RDS では、上位の権限を必要とする特定のシステムプロシージャやシステムテーブルへのアクセスを制限しています。

データベースのグローバル名の変更

データベースのグローバル名を変更するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.rename_global_name を使用します。rename_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) のみをサポートしています。データファイルとログファイルを作成するときは、物理ファイル名を指定することはできません。

デフォルトでは、テーブルスペースは自動拡張機能を有効にして作成され、最大サイズでは作成されません。これらのデフォルト設定のため、テーブルスペースはすべての割り当てられたストレージを消費するまで大きくなります。永続テーブルスペースと一時テーブルスペースに適切な最大サイズを指定し、リージョンの使用状況を注意深くモニタリングすることをお勧めします。

次の例では、開始サイズが 1 ギガバイト、最大サイズが 10 ギガバイトのテーブルスペース users2 を作成します。

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

次の例では、一時テーブルスペース 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 RESIZE 200M;

次の例では、smallfile テーブルスペース users2 に追加のデータファイルを追加します。

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

デフォルトテーブルスペースの設定

デフォルトのテーブルスペースを設定するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.alter_default_tablespace を使用します。alter_default_tablespace プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

tablespace_name

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 プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

tablespace_name

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_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 プロシージャは、特定のデータ型のみのタイムゾーンを変更し、SYSDATE は変更しません。タイムゾーンの設定に関する他の制限については、Oracle ドキュメントに示されています。

注記

Oracle Scheduler のデフォルトのタイムゾーンを設定することもできます。詳細については、「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 プロシージャを使用してタイムゾーンを変更した後、変更を有効にするために DB インスタンスを再起動します。詳細については、「DB インスタンスの再起動」を参照してください。タイムゾーンのアップグレードについては、「タイムゾーンに関する考慮事項」を参照してください。

Oracle 外部テーブルの使用

Oracle 外部テーブルは、データベースにないデータのテーブルです。代わりに、データはデータベースがアクセスできる外部ファイルにあります。外部テーブルを使用して、データベースにロードしないでデータにアクセスできます。外部テーブルの詳細については、Oracle ドキュメントの「外部表の管理」を参照してください。

Amazon RDS では、外部テーブルファイルをディレクトリオブジェクトに保存できます。ディレクトリオブジェクトは、新規作成するか、Oracle データベースに定義済みのもの (DATA_PUMP_DIR ディレクトリなど) を使用できます。ディレクトリオブジェクトの作成方法については、「主要データストレージ領域でのディレクトリの作成と削除」を参照してください。Amazon RDS Oracle DB インスタンスのディレクトリオブジェクトを一覧表示するには、ALL_DIRECTORIES ビューをクエリできます。

注記

ディレクトリオブジェクトは、インスタンスで使用されているメインのデータストレージ領域 (Amazon EBS ボリューム) を参照します。データファイル、REDO ログ、監査、追跡、およびその他のファイルで使用される領域は、割り当てられたストレージの消費としてカウントされます。

外部データファイルを Oracle データベース間で移行するには、DBMS_FILE_TRANSFER パッケージまたは UTL_FILE パッケージを使用できます。外部データファイルは、移行元のデータベースのディレクトリから、移行先のデータベースの指定されたディレクトリに移行されます。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 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 マネジメントコンソール からはアクセスできません。

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 統合」を参照してください。

Oracle DB エンジンのバージョンには、次の Amazon RDS の rdsadmin_diagnostic_util プロシージャを使用できます。

  • 11.2.0.4.v24 以降の 11.2 バージョン

  • 12.1.0.2.v20 以降の 12.1 バージョン

  • 12.2.0.1.ru-2020-04.rur-2020-04.r1 以降の 12.2 バージョン

  • 18.0.0.0.ru-2020-04.rur-2020-04.r1 以降の 18c バージョン

  • 19.0.0.0.ru-2020-04.rur-2020-04.r1 以降の 19c バージョン

Diagnostic Utility Package の一般的なパラメータ

rdsadmin_diagnostic_util パッケージを使用して AWR および ADDM を管理する場合は、通常、次のパラメータを使用します。

Parameter データ型 デフォルト値 必須 説明

begin_snap_id

NUMBER

あり

開始スナップショットの ID。

end_snap_id

NUMBER

あり

終了スナップショットの ID。

dump_directory

VARCHAR2

BDUMP

いいえ

レポートまたはエクスポートファイルの書き込み先のディレクトリ。デフォルト以外のディレクトリを指定する場合、 rdsadmin_diagnostic_util プロシージャを実行するユーザーは、そのディレクトリに対する書き込み権限を持っている必要があります。

report_type

VARCHAR2

HTML

いいえ

レポートの形式。有効な値は、TEXT および HTML です。

dbid

NUMBER

いいえ

Oracle の DBA_HIST_DATABASE_INSTANCE ビューに表示される有効なデータベース識別子 (DBID)。このパラメータを指定しない場合、RDS は V$DATABASE.DBID ビューに表示される現在の DBID を使用します。

rdsadmin_diagnostic_util パッケージで ASH を管理する場合は、通常、次のパラメータを使用します。

Parameter データ型 デフォルト値 必須 説明

begin_time

DATE

あり

ASH 分析の開始時刻。

end_time

DATE

あり

ASH 分析の終了時刻。

slot_width

NUMBER

0

いいえ

ASH レポートの「Top Activity」セクションで使用されるスロットの期間 (秒単位)。このパラメータを指定しない場合、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 マネジメントコンソール からアクセスできます。

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 レポートを生成します。出力ファイルの名前は ashrptbegin_timeend_time.txt の形式を使用し、begin_time および end_timeYYYYMMDDHH24MISS の形式を使用します。ファイルには、コンソールからアクセスできます。

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 マネジメントコンソール または AWS CLI を使用します。詳細については、「データベースログファイルのダウンロード」を参照してください。

同じ 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$ テーブルの監査を有効にする

データベースの監査証跡テーブル rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table の監査を有効にするには、Amazon RDS プロシージャ SYS.AUD$ を使用します。サポートされている監査プロパティは、ALL のみです。個々のステートメントまたはオペレーションは監査することもしないこともできません。

監査の有効化は、次のバージョンを実行している Oracle DB インスタンスでサポートされています。

  • 11.2.0.4.v18 以降の 11.2 バージョン

  • 12.1.0.2.v14 以降の 12.1 バージョン

  • すべての 12.2.0.1 バージョン

  • すべての 18.0.0.0 バージョン

  • すべての 19.0.0.0 バージョン

audit_all_sys_aud_table プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

p_by_access

boolean

true

いいえ

BY ACCESS を監査するには、true に設定します。BY SESSION を監査するには、false に設定します。

以下のクエリでは、データベースの SYS.AUD$ に対する現在の監査設定が返ります。

select * from dba_obj_audit_opts where owner='SYS' and object_name='AUD$';

以下のコマンドでは、SYS.AUD$ BY ACCESSALL の監査を有効にします。

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

以下のコマンドでは、SYS.AUD$ BY SESSIONALL の監査を有効にします。

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

詳細については、Oracle ドキュメントの「AUDIT (従来の監査)」を参照してください。

SYS.AUD$ テーブルの監査を無効にする

データベースの監査証跡テーブル rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table の監査を無効にするには、Amazon RDS プロシージャ SYS.AUD$ を使用します。この手順では、パラメータは使用しません。

以下のクエリでは、データベースの SYS.AUD$ に対する現在の監査設定が返ります。

select * from dba_obj_audit_opts where owner='SYS' and object_name='AUD$';

以下のコマンドでは、SYS.AUD$ALL の監査が無効にされます。

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 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」ドキュメントをよく確認してください。

インデックスとテーブルのスキャン中に破損ブロックをスキップするには

  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 テーブルスペースは自動拡張機能を有効にして作成され、最大サイズでは作成されません。これらのデフォルト設定のため、場合によっては。テーブルスペースが大きくなりすぎる可能性があります。永続テーブルスペースと一時テーブルスペースに適切な最大サイズを指定し、リージョンの使用状況を注意深くモニタリングすることをお勧めします。

Oracle DB インスタンスのリードレプリカの一時スペースのサイズを変更するには、Amazon RDS の rdsadmin.rdsadmin_util.resize_temp_tablespace または rdsadmin.rdsadmin_util.resize_tempfile プロシージャを使用します。

resize_temp_tablespace プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

temp_tbs

varchar2

あり

サイズを変更する一時テーブルスペースの名前。

size

varchar2

はい

サイズは、バイトで(デフォルト)、キロバイト (K)、メガバイト (M)、またはギガバイト (G) で指定できます。

resize_tempfile プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

file_id

binary_integer

あり

サイズを変更する一時テーブルスペースのファイル識別子。

size

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;