kenken0807_DBメモ

つば九郎が好きなDBAです。Oracle Standard Editionでの運用やツールとかとかの備忘録。特に記載がない場合はoracle11gR2です。時々MySQL

12cから増えたオンライン操作をOracle SE2で試した

Oracle 12cの新機能のオンライン操作をOracle Standard Edition2でできるか確認したのでメモ。
↓を基にいろいろ確認した。

docs.oracle.com

  • バージョンはOracle 12.1.0.2 SE2

オンラインでのデータファイル移動 結果: ×

これはもちろんできません。

alter database move datafile '/opt/app/oracle/oradata/soe.dbf' to '/opt/app/oracle/oradata/testdb/soe.dbf';

行1でエラーが発生しました。:
ORA-00439: 機能は有効ではありません: online move datafile

オンライン実行可能なDDLの強化

制約の削除 結果:×

SQL> ALTER TABLE aa DROP CONSTRAINT aapk  ONLINE; 
ALTER TABLE aa DROP CONSTRAINT aapk  ONLINE
*
行1でエラーが発生しました。:
ORA-00439: 機能は有効ではありません: Online Index Build

索引の使用禁止 結果: ×

SQL> ALTER INDEX aa_idx UNUSABLE ONLINE;
ALTER INDEX aa_idx UNUSABLE ONLINE
*
行1でエラーが発生しました。:
ORA-00439: 機能は有効ではありません: Online Index Build

索引の削除 結果:

SQL> DROP INDEX idx3 ONLINE;

索引が削除されました。

列の未使用マーク付け 結果:

SQL> ALTER TABLE aa SET UNUSED COLUMN id2  ONLINE;

表が変更されました。

というわけで、もちろんほとんど不可でしたが例外的に索引の削除列の未使用マーク付けONLINE句をつけても動作するみたい。

実際にオンラインになってるのかDROP INDEXSQL_TRACEで確認してみた。

  • ONLINE句あり
LOCK TABLE  FOR INDEX "IDX3" IN ROW SHARE MODE  NOWAIT
drop index IDX3 online
・
・
  • ONLINE句なし
LOCK TABLE  FOR INDEX "IDX2" IN EXCLUSIVE MODE  NOWAIT
drop index IDX2
・
・

ONLINE句ありではロックモードをIN ROW SHARE MODEで取得しているため更新は可能。
ONLINE句なしではロックモードをIN EXCLUSIVE MODEで取得しているため更新は不可。
ちゃんとオンラインの動作になっている模様。

まとめ

OracleのStandard Editionで一切使えなかったオンライン処理が一部のみできるようになったみたい。
しかし、両処理ともわざわざオンライン処理でなくてもすぐ完了するのでよっぽどトラフィックがないと使いどころないな。。。
って、よっぽどトラフィックあればそもそもSE2じゃないな。。