Amazon RDS for Oracle入門(2)

マツナミです。前回に引き続いてAmazon RDS for Oracleのオンプレ環境との違いについて見ていきたいと思います。

初期化パラメータ

OracleDBを管理するうえで重要な項目の1つに初期化パラメータがあると思います。

オンプレではPFILE(initSID.ora)を手で修正したり、ALTER SYSTEMで動的に変更したり、という管理方法になりますがRDSではこれらの方法は不可となります。

ではどうするかというとAWSのマネジメントコンソール(Web)かAWS CLIを利用するということになります。

パラメータグループと呼ばれる初期化パラメータのグループを用意し、それを作成したDBに割り当てることになります。

デフォルトのパラメータグループは編集できませんが、追加したグループであれば編集可能です。

マネジメントコンソールでのパラメータ操作については直感的にわかるのでここでは割愛させていただきます。
まずは、デフォルトのパラメータグループを付与したときの初期化パラメータを見てみましょう。
マスターユーザにはv$parameterを参照するための権限が付与されてますので、パラメータを見るだけなら従来どおりsqlplusで確認することができます。

SQL> select name, value from v$parameter where isdefault = 'FALSE' order by 1;

NAME                           VALUE
 -------------------------------------------------------------------------------------
archive_lag_target             300
audit_file_dest                /rdsdbdata/admin/ORCL/adump
control_files                  /rdsdbdata/db/ORCL_A/controlfile/control-01.ctl
db_block_checking              MEDIUM
db_create_file_dest            /rdsdbdata/db
db_name                        ORCL
db_recovery_file_dest_size     1073741824
db_unique_name                 ORCL_A
dg_broker_config_file1         /rdsdbdata/config/dr1ORCL.dat
dg_broker_config_file2         /rdsdbdata/config/dr2ORCL.dat
diagnostic_dest                /rdsdbdata/log
filesystemio_options           setall
local_listener                 (ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
log_archive_dest_1             location="/rdsdbdata/db/ORCL_A/arch/redolog",  valid_for=(ALL_LOGFILES,ALL_ROLES)
log_archive_format             -%s-%t-%r.arc
memory_max_target              624951296
memory_target                  624951296
open_cursors                   300
processes                      84
recyclebin                     OFF
spfile                         /rdsdbbin/oracle/dbs/spfileORCL.ora
standby_file_management        AUTO
undo_tablespace                UNDO_T1

23行が選択されました。

SQL>

上記SQLはデフォルト値から変更されているパラメータを確認してます。
チューニングの基本項目であるmemory_targetやprocessesなどはかなり控え目な値になっていますが
これはRDSを最小ランクにしているためです。
また、各種ファイルのパスが/rdsdbdata/以下に指定されていることがわかります。spfileだけは/rdsdbbinですね。

REDOログ

REDOログはデフォルトで128MBのファイルが4つ作成されています。

SQL> select GROUP#, THREAD#, BYTES/1024/1024 MB from v$log;

    GROUP#    THREAD#         MB
---------- ---------- ----------
         1          1        128
         2          1        128
         3          1        128
         4          1        128

SQL>

オンプレ環境でDBCAを使った場合、デフォルトでは50MBのファイルが3つ作成されるのでオンプレとの構成は異なります。

といってもREDOログのサイズは、各システムにあわせてチューニングされるのが常なので、ファイルサイズのデフォルト値が異なることはDBA的にあまり気にするところではありません。

どちらかというとREDOログメンバー数が1固定となっている方が気になりそうですが、メンバー数を2以上にする方法は公開されていません。

表領域・データファイル

RDS for Oracleのデータファイル管理の特徴はOMFとBIGFILEといえると思います。

OMF(Oracle Managed Files)

OMFはデータファイル名をOracleが自動的に付与する機能です。

オンプレでも使っているシステムは普通にあるかと思います。RMANでリストアのテストをするとファイル名が変わってしまったりするアイツです。

OMFだとデータファイル作成時にファイル名を指定しなくてよいため、マネージドサービスのRDSにはうってつけの機能なのだと思います。

データファイルの作成先は前述のパラメータのとおり、/rdsdbdata/db です。

BIGFILE

RDSでは、導入初期から存在する表領域(SYSTEMやSYSAUXなど)はBIGFILEです。

SQL> select tablespace_name, bigfile from dba_tablespaces;

TABLESPACE_NAME                BIGFILE
------------------------------ ----------
SYSTEM                         YES
SYSAUX                         YES
UNDO_T1                        YES
TEMP                           YES
USERS                          YES
RDSADMIN                       YES

6行が選択されました。

SQL>

オンプレ環境ではSMALLFILEがデフォルトなので、その差異には気をつけないといけませんね。

差異についてざっくり説明するとSMALLFILE表領域は複数のデータファイルから構成されるのに対し、BIGFILE表領域は1つのデータファイルから構成されます。

SMALLFILEの場合、データファイルのサイズの上限は約32GB(ブロックサイズが8KBの場合)ですがBIGFILEの場合、32TBです。

SQL> create smallfile tablespace TESTTBS datafile size 100M autoextend on;

表領域が作成されました。

SQL> select tablespace_name, maxbytes/1024/1024/1024 GB from dba_data_files;

TABLESPACE_NAME                    GB
------------------------------ ------
SYSTEM                          32768
SYSAUX                          32768
UNDO_T1                           100
USERS                           32768
RDSADMIN                        32768
TESTTBS                            32

6行が選択されました。

SQL>

オンプレシステムではデータファイルのサイズは固定として、自動拡張としないシステムが少なくありません。

そういうシステムでは表領域の使用率の監視を定期的に行い、ディスクフルになる前にDBAがファイルサイズの拡張、もしくはデータファイルの追加を行います。
が、BIGFILE表領域ではデータファイルの追加は行えないことになります。保守の手順がシンプルになると喜ぶところでしょうか。

ちなみに、新規に作る表領域については上記の通りSMALLFILE表領域とすることもできますが、AWSはBIGFILEを推奨していますので素直にBIGFILEにした方がよさそうです。

SMALLFILE表領域のサイズ変更や自動拡張設定の変更をするにはALTER DATABASEが必要になる(つまりRDSでは実行できない)ので、保守性を考えてもBIGFILEです。

BIGFILEとするうえで気をつけておかないといけない点として挙げられるのは、そのままではデータファイルが32GB以上に自動拡張するという点でしょうか。
データが急に大きくなることはあまりないですが、UNDOやTEMPがクエリーによって一気に数10GB利用したという話は珍しくありません。
そのような事態になり、ファイルシステムが逼迫しても嫌なので、サイズ管理は必要ですね。

長くなってしまったので、今回はこの辺で。
次回はオプショングループや運用面について書きたいと思います。