Oracle Autonomous DatabaseにはAutonomous Transaction Processing (ATP)とAutonomous Data Warehouse (ADW)が提供されています。どちらもOracle Databaseソフトウェアが稼働しています。Always Free環境を使って、ATPとADWの初期設定の違いについて検証しました。
バージョンとエディション
現時点ではATPとADWはどちらもOracle Database 18cを使っており、エディションにも違いは無いようです。V\$INSTANCEビューやV$DATABASEビューの属性にも違いはありませんでした。
SQL> SELECT * FROM V$VERSION;
BANNER BANNER_FULL
-------------------------------------------------------------------------------- ---------------------------------------------------------------------------------
BANNER_LEGACY CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production 0
有償版ではATP/ADW共にOracle Database 19cを選択できます。
初期化パラメーター
初期化パラメーターは初期状態で以下の違いがありました。Always Free環境なのでCPU数は1です。
初期化パラメーター名 | ATP | ADW |
---|---|---|
optimizer_ignore_hints | FALSE | TRUE |
optimizer_ignore_parallel_hints | FALSE | TRUE |
parallel_degree_policy | MANUAL | AUTO |
parallel_min_degree | 1 | CPU |
pdb_lockdown | OLTP | DWCS |
pga_aggregate_limit | 6,291,456,000 | 10,695,475,200 |
pga_aggregate_target | 3,145,728,000 | 5,347,737,600 |
resource_manager_plan | FORCE:OLTP_PLAN | FORCE:DWCS_PLAN |
result_cache_max_result | 5 | 1 |
result_cache_mode | MANUAL | FORCE |
sga_target | 8,388,608,000 | 3,565,158,400 |
上記以外に名前や接続インスタンスに関するパラメータには違いが見られます。
初期化パラメーター名 | {異なる部分} |
---|---|
audit_file_dest | /u02/app/oracle/admin/{db_name}/adump |
control_files | +DATA/{db_name}/CONTROLFILE/current.{id}, +RECO/{db_name}/CONTROLFILE/current.{id} |
core_dump_dest | /u02/app/oracle/diag/rdbms/{db_name}/{instance_name}/cdump |
db_name | {db_name} |
db_unique_name | {db_name} |
dg_broker_config_file1 | /u02/app/oracle/product/18.1.0.0/dbhome_1/dbs/dr1{db_name}.dat |
dg_broker_config_file2 | /u02/app/oracle/product/18.1.0.0/dbhome_1/dbs/dr2{db_name}.dat |
dispatchers | (PROTOCOL=TCP) (SERVICE={db_name}XDB) |
instance_name | {instance_name} |
service_names | {instance_name} |
thread | {接続インスタンス} |
ヒント
ADW環境ではオプティマイザ・ヒントが無視される設定になっています(optimizer_ignore_hints, optimizer_ignore_parallel_hints)。データウェアハウス環境で多用される複雑なSQLの解析はオプティマイザに任せて余計なヒントは使ってくれるなということでしょう。これらの初期化パラメーターは変更することもできます。
パラレル・クエリー
ADWでは自動パラレル度設定(parallel_degree_policy, parallel_min_degree)が有効化されています。大規模な全件検索処理が多いデータウェアハウス向けのセッティングと言えます。これらの初期化パラメーターは変更できません。
SQL> ALTER SYSTEM SET parallel_min_degree=1;
ORA-01031: insufficient privileges
SQL> ALTER SESSION SET parallel_min_degree=1;
ORA-01031: insufficient privileges
ただし「ALTER SESSION DISABLE PARALLEL DML」文は実行できるため、一時的にパラレル・クエリーの使用を停止することはできます。
メモリー設定
SGAとPGAの割り振りがATPとADWでは異なります(sga_target, pga_aggregate_*)。ADWではSGAを小さめに、PGAを大きめに確保しています。これはデータ量が多いためキャッシュにデータが乗りきらず、個別のソート処理が多いことを前提にした設計だと思われます。リザルトキャッシュ設定(result_cache_mode, result_cache_max_result)もADWでは有効化されています。
一般的にデータウェアハウス系のデータベースではブロックサイズを大きめに取ることが多いのですが、ADWではdb_block_sizeはデフォルトの8KBのままです。
リソース制限
ロックダウン・プロファイル名(pdb_lockdown)が異なることから、ATPとADWでは設定できる項目に違いがあると思われますが調べられていません。またリソースプラン(resource_manager_plan)についても違いが見られます。
ストレージ
物理構成はわかりませんが、ASMのレベルのストレージ設定はATP/ADW共に変わらないようです。
データ用とリカバリ用で同サイズのストレージが構成されています。
SQL> SELECT NAME, ALLOCATION_UNIT_SIZE, BLOCK_SIZE, TYPE, TOTAL_MB FROM V$ASM_DISKGROUP;
NAME ALLOCATION_UNIT_SIZE BLOCK_SIZE TYPE TOTAL_MB
------------------------------ -------------------- ---------- ------ ----------
DATA 4194304 4096 HIGH 269035456
RECO 4194304 4096 NORMAL 67239936
データ型
ADWのデフォルトではハイブリッド列圧縮(HCC)が有効になっています。このため圧縮しない指定をしない限りLONG型やLONG RAW型の列は作成できません。
CREATE TABLE data1(c1 NUMBER, c2 LONG)
エラー・レポート -
ORA-64308: Hybrid Columnar圧縮表には、LONGデータ型の列を使用できません
64308. 00000 - "hybrid columnar compressed table cannot have column with LONG data type"
*Document: YES
*Cause: One of the following was attempted
- Create a hybrid columnar compressed table with a LONG data type.
- Alter an existing table with a LONG data type to be hybrid columnar compressed.
- Add a LONG data type column to a hybrid columnar compressed table.
*Action: LONG data types are not supported with hybrid columnar compressed
tables. Create table without LONG column or change table to not be
hybrid columnar compressed. If adding a column, do not use
LONG data type. If modifying attributes of a column to change data
type to LONG, the table cannot be hybrid columnar compressed.
まとめ
内部的な動作については異なる可能性もありますが、思ったよりもATPとADWの初期状態は変わらないという印象です。逆に目に見える部分の設定をそれほど変えずにOLTPとデータウェアハウス両方のワークロードを捌けるとすれば、それはOracle Databaseの優れた部分だと思います。