マツナミです。前回に引き続いて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利用したという話は珍しくありません。 そのような事態になり、ファイルシステムが逼迫しても嫌なので、サイズ管理は必要ですね。
長くなってしまったので、今回はこの辺で。 次回はオプショングループや運用面について書きたいと思います。