Database Support Blog

  • Oracle Database
2023.10.16

AWRデータを一括取得!Oracleの遅延を早期解決に導く「awrextr.sql」の使い方

弊社サポートセンターへのお問い合わせにおいて、比較的解決が難しいとされる障害の一つとしてデータベースの「パフォーマンス遅延」が挙げられます。

調査のアプローチは障害の発生状況によって様々ですが、多くのケースで自動ワークロード・リポジトリ(以下、AWR)のデータをソースとした資料(AWRレポートやActive Session History)から解析を行います。

本記事では、AWRデータをエクスポートするスクリプト「awrextr.sql」の利用方法と活用例をご紹介します。



AWR(自動ワークロード・リポジトリ)のおさらい

AWRはOracle Databaseのパフォーマンス統計情報を収集し管理する機能で、Enterprise Editionに加えてOracle Diagnostics Packをご契約された環境でご利用いただけます。

AWRはメモリ上の情報を自動で収集し、デフォルトで60分毎にスナップショットを生成します。
また、AWRスナップショットはデフォルトで8日間(11g R1以降)保存されます。


AWRのデータを活用した機能として、スナップショット間の差分を基にパフォーマンス統計をレポート化する「AWRレポート」が広く知られています。

弊社サポートセンターでも「データベースのレスポンスが遅くなった」といったご相談の際には、「まずはAWRレポート!」と言っても良いほど、初動で依頼する重要な資料です。


awrextr.sqlを使用するメリットとは?

AWRレポートは2つのスナップショット間の差分を基にパフォーマンス統計をレポート化します。そのため、スナップショット間の期間が短いほど、粒度の細かな情報を解析することができます。

従って、解析すべき期間が5時間であっても、デフォルトの「1時間」という期間で合計5つのレポートをお客様に依頼することが多々あります。しかし、冒頭で例に挙げたようなパフォーマンス遅延の障害は、お客様の業務システムへの影響が甚大なケースがほとんどです。そのような緊急の状況で、複数のレポートを採取する負担は大きいのではないかという懸念があるでしょう。

今回ご紹介する「awrextr.sql」は、AWRのデータをダンプファイルにエクスポートすることで、サポートセンターへ提供いただく資料を簡単に採取できます。これはコマンド一つで実行できるため、データの採取にかかる時間が最小限になり、その結果、問題の早期解決を期待できます。


awrextr.sqlの使用イメージ

Oracle 10g R2(10.2.0.4)以降、AWRデータをエクスポートするためのスクリプトとして、awrextr.sqlが提供されています。awrextr.sqlでは、内部的にData Pumpユーティリティが用いられ、実行したデータベースのAWRデータをダンプファイルとして出力します。

任意のAWRスナップショット間のデータを1つのファイルに出力できますので、例えばトラブルシュートに必要となる時間帯のデータを含むダンプファイルを出力し、そのファイルをサポートセンターへお送りいただくことで、弊社側にてデータを解析することが可能です。


awrextr.sqlの実行手順(AWRデータのエクスポート)

早速、AWRデータのエクスポート手順を確認していきましょう。


エクスポート対象のデータベースに接続

awrextr.sqlはSYSユーザーで実行する必要があります。SYSユーザーでデータベース(マルチテナント構成の場合CDB$ROOT)に接続のうえ、以下の手順を実施していきます。


awrextr.sqlを実行

awrextr.sqlは$ORACLE_HOME/rdbms/adminディレクトリに配置されているスクリプトです。
次のようにスクリプトを実行します。


SQL> @?/rdbms/admin/awrextr.sql ~~~~~~~~~~~~~ AWR EXTRACT ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ This script will extract the AWR data for a range of snapshots ~ ~ into a dump file. The script will prompt users for the ~ ~ following information: ~ ~ (1) database id ~ ~ (2) snapshot range to extract ~ ~ (3) name of directory object ~ ~ (4) name of dump file ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Databases in this Workload Repository schema ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

データベースIDを入力

AWRデータをエクスポートしたいデータベース(awrextr.sqlの実行環境)のデータベースIDを入力します。
デフォルトで「DB Id」と画面へ出力されるため、その値を入力してください。


Databases in this Workload Repository schema ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id DB Name Host ------------ ------------ ---------------------- * 1671858766 ORCL awrtest.ashisuto.co.jp

The default database id is the local one: '1671858766'. To use this database id, press to continue, otherwise enter an alternative.
dbidに値を入力してください: 1671858766
Using 1671858766 for Database ID

入力した日数のスナップショットの一覧を表示

エクスポートするAWRデータのスナップショットを選択するために、スナップショットを一覧表示します。
日数(n)を入力すると指定した最新のn日分のスナップショットが表示され、何も入力せずにEnterキーを押下すると全てのスナップショットが表示されます。


Specify the number of days of snapshots to choose from ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Entering the number of days (n) will result in the most recent (n) days of snapshots being listed. Pressing without specifying a number lists all completed snapshots.

num_daysに値を入力してください: 3
Listing the last 3 days of Completed Snapshots
DB Name Snap Id Snap Started ------------ --------- ------------------ ORCL ・・・省略・・・ 8 06 8月 2023 00:00 9 06 8月 2023 01:00 10 06 8月 2023 02:00 11 06 8月 2023 03:00 12 06 8月 2023 04:00 13 06 8月 2023 05:00 14 06 8月 2023 06:00 ・・・省略・・・

スナップショットの始点と終点のIDを選択

スナップショットの一覧から、エクスポートするAWRデータの始点と終点のIDを入力します。


Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ begin_snapに値を入力してください: 8 Begin Snapshot Id specified: 8
end_snapに値を入力してください: 14 End Snapshot Id specified: 14

ダンプファイルを出力するディレクトリを選択

awrextr.sqlは内部的にData Pumpユーティリティが用いられるため、ダンプファイルの出力先はディレクトリオブジェクトです。スクリプトの実行前にあらかじめディレクトリオブジェクトを作成しておいても良いですし、デフォルトで作成済みのディレクトリオブジェクトから選択することも可能です。

今回の検証では、デフォルトのDATA_PUMP_DIRを使用しました。


Specify the Directory Name ~~~~~~~~~~~~~~~~~~~~~~~~~~
Directory Name Directory Path ------------------------------ -------------------------------------------------------------------- DATA_PUMP_DIR /u01/app/oracle/admin/orcl/dpdump/ JAVA$JOX$CUJS$DIRECTORY$ /u01/app/oracle/product/19.0.0/dbhome_1/javavm/admin/ OPATCH_INST_DIR /u01/app/oracle/product/19.0.0/dbhome_1/OPatch OPATCH_LOG_DIR /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/log OPATCH_SCRIPT_DIR /u01/app/oracle/product/19.0.0/dbhome_1/QOpatch ORACLE_BASE /u01/app/oracle ORACLE_HOME /u01/app/oracle/product/19.0.0/dbhome_1 ORACLE_OCM_CONFIG_DIR /u01/app/oracle/product/19.0.0/dbhome_1/ccr/state ORACLE_OCM_CONFIG_DIR2 /u01/app/oracle/product/19.0.0/dbhome_1/ccr/state SDO_DIR_ADMIN /u01/app/oracle/product/19.0.0/dbhome_1/md/admin SDO_DIR_WORK XMLDIR /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/xml XSDDIR /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/xml/schema

Choose a Directory Name from the above list (case-sensitive).
directory_nameに値を入力してください: DATA_PUMP_DIR
Using the dump directory: DATA_PUMP_DIR

ダンプファイルの名前を入力

最後に、出力するダンプファイルの名前を入力します。
デフォルトでは「awrdat_<Begin SnapID>_<End SnapID>.dmp」という命名規則がありますが、任意のファイル名を入力することもできます。何も入力せずにEnterキーを押下すると、デフォルトのファイル名で出力されます。


Specify the Name of the Extract Dump File ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The prefix for the default dump file name is awrdat_8_14. To use this name, press to continue, otherwise enter an alternative.
file_nameに値を入力してください:
Using the dump file prefix: awrdat_8_14 | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | The AWR extract dump file will be located | in the following directory/file: | /u01/app/oracle/admin/orcl/dpdump/ | awrdat_8_14.dmp | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | *** AWR Extract Started ... | | This operation will take a few moments. The | progress of the AWR extract operation can be | monitored in the following directory/file: | /u01/app/oracle/admin/orcl/dpdump/ | awrdat_8_14.log |
End of AWR Extract

ダンプファイルが出力されたことを確認

ダンプファイルを出力したら、次のステップはサポートセンターに送付いただくだけです。その後は弊社のサポート担当者がダンプファイルからデータベースの稼働統計を解析していきます。


$ ll /u01/app/oracle/admin/orcl/dpdump/awrdat_8_14.dmp -rw-r----- 1 oracle oinstall 18403328 8月 7 08:24 /u01/app/oracle/admin/orcl/dpdump/awrdat_8_14.dmp

応用: awrload.sqlの実行手順(AWRデータのロード)

応用編として、awrextr.sqlでエクスポートしたAWRデータをロードする手順もご紹介します。

基本的には弊社へダンプファイルを提供いただくため、お客様ご自身が利用されるシーンは少ないかもしませんが、例えば「複数のシステムのAWRデータを一元管理するためのデータベースを設けるような運用をしたい」といったニーズがある場合にご活用ください。


AWRをロードするデータベースに接続

既に耳にタコができるほどお聞きになっているお客様も多くいらっしゃると思いますが、Oracle Database 21cからはマルチテナントの構成が必須となります。そのため、AWRデータを格納するためのPDBとして「AWR_MGMT_PDB」をロード先データベースに準備しました。
次のように、alter sessionコマンドでPDBに接続します。


SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCL_PDB READ WRITE NO 4 AWR_MGMT_PDB READ WRITE NO
SQL> alter session set container=AWR_MGMT_PDB;
セッションが変更されました。

awrload.sqlを実行

awrextr.sqlでエクスポートしたダンプファイルは、awrload.sqlでロードします。
awrextr.sqlと同様に$ORACLE_HOME/rdbms/adminディレクトリに配置されています。


SQL> @?/rdbms/admin/awrload.sql ~~~~~~~~~~ AWR LOAD ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ This script will load the AWR data from a dump file. The ~ ~ script will prompt users for the following information: ~ ~ (1) name of directory object ~ ~ (2) name of dump file ~ ~ (3) staging schema name to load AWR data into ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ロード対象のダンプファイルを配置したディレクトリを選択

ダンプファイルを配置したディレクトリを選択します。
awrextr.sqlによるエクスポート時と同様に、Data Pumpユーティリティが内部的に使用されるため、ディレクトリオブジェクトに紐づくディレクトリにダンプファイルを配置してください。


Specify the Directory Name ~~~~~~~~~~~~~~~~~~~~~~~~~~
Directory Name Directory Path ------------------------------ -------------------------------------------------------------------- DATA_PUMP_DIR /u01/app/oracle/admin/orcl/dpdump/02632853E3570A4AE0636F38A8C0A3F9 JAVA$JOX$CUJS$DIRECTORY$ /u01/app/oracle/product/19.0.0/dbhome_1/javavm/admin/ OPATCH_INST_DIR /u01/app/oracle/product/19.0.0/dbhome_1/OPatch OPATCH_LOG_DIR /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/log OPATCH_SCRIPT_DIR /u01/app/oracle/product/19.0.0/dbhome_1/QOpatch ORACLE_BASE /u01/app/oracle ORACLE_HOME /u01/app/oracle/product/19.0.0/dbhome_1 ORACLE_OCM_CONFIG_DIR /u01/app/oracle/product/19.0.0/dbhome_1/ccr/state ORACLE_OCM_CONFIG_DIR2 /u01/app/oracle/product/19.0.0/dbhome_1/ccr/state SDO_DIR_ADMIN /u01/app/oracle/product/19.0.0/dbhome_1/md/admin SDO_DIR_WORK XMLDIR /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/xml XSDDIR /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/xml/schema

Choose a Directory Name from the list above (case-sensitive).
directory_nameに値を入力してください: DATA_PUMP_DIR
Using the dump directory: DATA_PUMP_DIR

ダンプファイル名を入力

ディレクトリオブジェクトに配置したダンプファイル名を入力します。
ここでは拡張子(.dmp)を除いたファイル名を指定することにご注意ください。


Specify the Name of the Dump File to Load ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Please specify the prefix of the dump file (.dmp) to load:
file_nameに値を入力してください: awrdat_10421_10427
Loading from the file name: awrdat_10421_10427.dmp

AWRデータをロードするステージングスキーマ名を入力

AWRデータをロードするためのステージングスキーマの名前を入力します。
このスキーマはスクリプトの実行後に削除されますので、特に指定がなければデフォルト(無入力でEnterキーを押下)の「AWR_STAGE」で実施ください。


Staging Schema to Load AWR Snapshot Data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The next step is to create the staging schema where the AWR snapshot data will be loaded. After loading the data into the staging schema, the data will be transferred into the AWR tables in the SYS schema.
The default staging schema name is AWR_STAGE. To use this name, press to continue, otherwise enter an alternative.
schema_nameに値を入力してください:
Using the staging schema name: AWR_STAGE

ステージングスキーマのデフォルト表領域を選択

ステージングスキーマのデフォルト表領域を選択します。
こちらも特に指定がなければデフォルト(無入力でEnterキーを押下)のSYSAUX表領域を選択ください。


Choose the Default tablespace for the AWR_STAGE user ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Choose the AWR_STAGE users's default tablespace. This is the tablespace in which the AWR data will be staged.
TABLESPACE_NAME CONTENTS DEFAULT TABLESPACE -------------------- --------------- ------------------ SYSAUX PERMANENT *
Pressing will result in the recommended default tablespace (identified by *) being used.
default_tablespaceに値を入力してください:
Using tablespace SYSAUX as the default tablespace for the AWR_STAGE

ステージングスキーマの一時表領域を選択

ステージングスキーマの一時表領域を選択します。
こちらも特に指定がなければデフォルト(無入力でEnterキーを押下)のTEMP表領域を選択ください。


Choose the Temporary tablespace for the AWR_STAGE user ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Choose the AWR_STAGE user's temporary tablespace.
TABLESPACE_NAME CONTENTS DEFAULT TEMP TABLESPACE -------------------- --------------- ----------------------- TEMP TEMPORARY *
Pressing will result in the database's default temporary tablespace (identified by *) being used.
temporary_tablespaceに値を入力してください:
Using tablespace TEMP as the temporary tablespace for AWR_STAGE

ロードの完了を確認

「End of AWR Load」とエラーなく出力されたら、AWRデータのロードは完了です。


... Creating AWR_STAGE user | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Loading the AWR data from the following | directory/file: | /u01/app/oracle/admin/orcl/dpdump/02632853E3570A4AE0636F38A8C0A3F9 | awrdat_10421_10427.dmp | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | *** AWR Load Started ... | | This operation will take a few moments. The | progress of the AWR load operation can be | monitored in the following directory/file: | /u01/app/oracle/admin/orcl/dpdump/02632853E3570A4AE0636F38A8C0A3F9 | awrdat_10421_10427.log | ... Dropping AWR_STAGE user
End of AWR Load

参考: ロードしたAWRデータの管理

ロードしたAWRデータを確認する

awrload.sqlでロードしたAWRデータは、ロード先のSYSAUX表領域に存在するAWRオブジェクト内に格納されます。ロード先のデータベース自身にもAWRデータが保持されているため、1つのデータベース内に複数のデータベースのAWRデータが同居する状態になります。

ここで、「ローカルデータベースのAWRデータ」と「awrload.sqlでロードしたAWRデータ」をどのように見分ければよいのか、疑問に思う方がいるかもしれません。

AWRのデータにはDBID(データベースを一意に判別する識別子)とCON_DBID(コンテナを一意に識別する識別子)の列を持っているため、この値からどのデータベースの情報であるかを判別します。


エクスポート元データベースのDBIDを確認

まずは、awrextr.sqlを実行したデータベース側で、データベースと各コンテナのDBIDを確認しておきます。
今回の検証では、エクスポート元のデータベースはPDBを4つ持つマルチテナントの構成でした。


SQL> select DBID from V$DATABASE;
DBID ---------- 1086378460
SQL> select CON_ID,DBID,NAME from V$CONTAINERS 2 order by 1;
CON_ID DBID NAME ---------- ---------- -------------------- 1 1086378460 CDB$ROOT 2 911871807 PDB$SEED 3 2315985887 PDB1 4 2984607664 PDB2 5 2141674043 PDB3 6 3682022934 PDB4

ロードしたAWRデータの確認

それでは、ロード先のデータベース側でAWRデータを確認してみましょう。

まずは、AWRのスナップショット情報から確認します。SQLの実行結果から、2つの異なるDBIDのスナップショットが格納されていることが分かります。エクスポート元のデータベースのDBIDは「1086378460」のため、AWRデータがロードされていることが確認できます。


SQL> select DB_NAME,INSTANCE_NAME,CDB,CDB_ROOT_DBID,DBID,CON_ID 2 from AWR_PDB_DATABASE_INSTANCE 3 order by CDB_ROOT_DBID,DBID,CON_ID;
DB_NAME INSTANCE_NAME CDB CDB_ROOT_DBID DBID CON_ID ---------- --------------- --------- ------------- ---------- ---------- ORCLEXTR orclextr YES 1086378460 1086378460 ORCL orcl YES 1671858766 1123156973 3
SQL> select DBID,min(SNAP_ID),max(SNAP_ID) from DBA_HIST_SNAPSHOT 2 where DBID=1086378460 3 group by DBID;
DBID MIN(SNAP_ID) MAX(SNAP_ID) ---------- ------------ ------------ 1086378460 10421 10427

また、awrextr.sqlではASHの情報もエクスポートされるため、DBA_HIST_ACTIVE_SESS_HISTORYビューにもロードされた情報が格納されます。AWRスナップショットの確認と同様に、DBIDが「1086378460」のレコードがロードされた情報であることが確認できます。

さらに、CON_DBID列はエクスポート元のデータベースのV$CONTAINERS.DBIDと紐づくことから、各レコードがどのPDBのアクティブセッションであるかも判別できます。


SQL> select DBID,CON_DBID,min(SNAP_ID),min(SAMPLE_TIME),max(SNAP_ID),max(SAMPLE_TIME) 2 from DBA_HIST_ACTIVE_SESS_HISTORY 3 group by DBID,CON_DBID 4 order by 1,2;
DBID CON_DBID MIN(SNAP_ID) MIN(SAMPLE_TIME) MAX(SNAP_ID) MAX(SAMPLE_TIME) ---------- ---------- ------------ --------------------- ------------ --------------------- 1086378460 911871807 10423 23-08-08 01:32:11.763 10423 23-08-08 01:32:11.763 1086378460 1086378460 10421 23-08-07 23:00:48.883 10427 23-08-08 05:58:15.923 1086378460 2141674043 10422 23-08-08 00:42:21.683 10427 23-08-08 05:40:51.443 1086378460 2315985887 10421 23-08-07 23:10:42.803 10427 23-08-08 05:57:45.203 1086378460 3682022934 10424 23-08-08 02:12:48.884 10426 23-08-08 04:42:49.843 1671858766 165178933 30 23-08-08 13:54:38.970 36 23-08-08 19:23:25.690

ロードしたAWRレポートをawrrpti.sqlで出力する

ロードしたAWRデータからレポートを出力するにはawrrpti.sql(※1)を使用します。
手順は、通常のAWRレポートの出力時とほぼ同一ですが、ロードしたAWRデータを選択してレポートを出力する手順にご注意ください。

  • ※1:awrrpt.sqlはローカルデータベースインスタンスのレポートを出力するスクリプトにつきORA-20200が発生するため、awrrpti.sqlでレポートを出力します。


--AWRはPDBに格納しているためAWR_PDBを選択します。
Specify the location of AWR Data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AWR_ROOT - Use AWR data from root (default) AWR_PDB - Use AWR data from PDB awr_locationに値を入力してください: AWR_PDB Location of AWR Data Specified: AWR_PDB

--レポートを出力したいデータベースのDBIDとインスタンス番号を入力します。 RACデータベースからエクスポートしたAWRデータであれば、ここでインスタンス番号を選択できます。
Instances in this Workload Repository schema ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DB Id Inst Num DB Name Instance Host ------------ ---------- --------- ---------- ------ 1086378460 1 ORCLEXTR orclextr lar-singles 1123156973 1 ORCL orcl awrtest.ashi
dbidに値を入力してください: 1086378460 Using 1086378460 for database Id inst_numに値を入力してください: 1 Using 1 for instance number

ロードしたAWRデータのメンテナンス

一定範囲のAWRデータを削除する

ロードしたAWRデータは、ローカルデータベースのAWRデータとは異なり、MMONプロセスの日次パージの対象にはなりません。
そのため、不要となったAWRのスナップショットは DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGEプロシージャ を用いて削除してください。


--削除したい最小のスナップショット(LOW_SNAP_ID)と最大のスナップショット(HIGH_SNAP_ID)、 削除対象のデータベースのDBIDを入力します。
SQL> begin 2 DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE (low_snap_id => 10421, 3 high_snap_id => 10423, 4 dbid => 1086378460); 5 end; 6 /
PL/SQLプロシージャが正常に完了しました。

--SNAP_ID 10421から10423が削除され、最小のSNAP_IDが10424となったことが確認できます。
SQL> select DBID,min(SNAP_ID),max(SNAP_ID) from DBA_HIST_SNAPSHOT 2 where DBID=1086378460 3 group by DBID;
DBID MIN(SNAP_ID) MAX(SNAP_ID) ---------- ------------ ------------ 1086378460 10424 10427

ロードした全てのAWRデータを削除する

また、ロードしたAWRデータをすべて削除したい場合は、 My Oracle Support Notes 1251795.1 に記載されているDBMS_SWRF_INTERNAL.UNREGISTER_DATABASEプロシージャを用いて削除できます。


--削除対象のロードしたAWRデータのDBIDを確認します。
SQL> select DB_NAME,INSTANCE_NAME,CDB,CDB_ROOT_DBID,DBID,CON_ID 2 from AWR_PDB_DATABASE_INSTANCE 3 order by CDB_ROOT_DBID,DBID,CON_ID;
DB_NAME INSTANCE_NAME CDB CDB_ROOT_DBID DBID CON_ID ---------- --------------- --------- ------------- ---------- ---------- ORCLEXTR orclextr YES 1086378460 1086378460 ORCL orcl YES 1671858766 1123156973 3

--CDB$ROOTへ接続し_AWR_RESTRICT_MODEパラメーターをTRUEにします。  静的パラメーターのため、インスタンスの再起動後にパラメーターが反映されます。
SQL> conn / as sysdba 接続されました。 SQL> alter system set "_AWR_RESTRICT_MODE"=TRUE scope=spfile;
システムが変更されました。
SQL> shutdown immediate データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 SQL> startup ORACLEインスタンスが起動しました。 ・・・省略・・・ データベースがマウントされました。 データベースがオープンされました。

--AWRデータを格納しているPDBへ接続します。
SQL> alter session set container=AWR_MGMT_PDB;
セッションが変更されました。

--DBMS_SWRF_INTERNAL.UNREGISTER_DATABASEの引数にはDBIDを指定し、AWRデータを削除します。
SQL> exec DBMS_SWRF_INTERNAL.UNREGISTER_DATABASE(1086378460);
PL/SQLプロシージャが正常に完了しました。
SQL> select DB_NAME,INSTANCE_NAME,CDB,CDB_ROOT_DBID,DBID,CON_ID 2 from AWR_PDB_DATABASE_INSTANCE 3 order by CDB_ROOT_DBID,DBID,CON_ID;
DB_NAME INSTANCE_NAME CDB CDB_ROOT_DBID DBID CON_ID ---------- --------------- --------- ------------- ---------- ---------- ORCL orcl YES 1671858766 1123156973 3

--作業後は_AWR_RESTRICT_MODEパラメーターをデフォルトに戻します。
SQL> conn / as sysdba 接続されました。 SQL> alter system reset "_AWR_RESTRICT_MODE" scope=spfile;
システムが変更されました。
SQL> shutdown immediate データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 SQL> startup ORACLEインスタンスが起動しました。 ・・・省略・・・ データベースがマウントされました。 データベースがオープンされました。

まとめ

AWRはOracle Databaseで発生するパフォーマンス障害の解析ツールとして、非常に有効なデータを保存しています。このデータが失効してしまうと、事象の解決が困難になるケースが多々あります。

もし今後のデータベース運用において「夜間バッチが終わらず朝方に中断する必要があった」「オンライン処理が長時間化している」といった問題に直面した場合には、awrextr.sqlを使用して事象の発生時間前後を含むAWRデータを採取し弊社へ連絡いただければ、調査の初動時間短縮に繋がり、課題解決までの時間短縮が期待できます。

また、応用編として、awrextr.sqlでダンプしたAWRデータをロードするawrload.sqlの使用方法についても紹介しました。一例として、本番システムのデータベースとは別のAWR管理用データベースにAWRデータを一元管理するなど、ぜひawrextr.sqlを用いてAWRデータを活用いただけると幸いです。


執筆者情報

なかがき けいすけ プロフィール画像

アシスト北海道

2016年アシスト北海道へ入社後、Oracle Databaseのサポート業務に従事。入社2年目より夜間休日帯など営業時間外の緊急対応を主に担当。現在は通常時間帯のサポート業務を担当しており、第一線で日々奮闘中。...show more


■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • Oracle Database
2024.04.08

【Oracle Database】FAQで安定運用に貢献!サポートセンターのナレッジ公開の取り組み

アシストオラクルサポートセンターが公開しているFAQは、仕様に関するQAやエラー発生時の対処方法などはもちろん、不具合情報や障害発生時の情報取得方法といった安定運用に役立つ内容も扱っています。そのFAQをどのように作成しているのか、サポートセンターの取り組みをご紹介します。

  • Oracle Cloud
  • Oracle Database
2024.02.02

OCIにおけるOracle Database 11g R2、12g R1、12g R2の新規プロビジョニング終了とその影響

Oracle Databaseのバージョン11g R2、12g.R1、12g.R2は既にすべてのメーカーサポートが終了しています。OCIのBase Database Serviceでも2024年1月中旬ころから11g R2、12g R1、12g R2での新規プロビジョニングができなくなりました。

  • Oracle Database
  • その他
2023.12.21

【Oracle Database】サポートセンターでの生成AI(Glean)活用

アシストでは全社員にAIアシスタントGleanを導入しました。サポートセンターで2ヶ月間使ってみて感じた効果やメリットをお伝えします。

ページの先頭へ戻る