12cから増えたオンライン操作をOracle SE2で試した
Oracle 12cの新機能のオンライン操作をOracle Standard Edition2でできるか確認したのでメモ。
↓を基にいろいろ確認した。
- バージョンは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 INDEX
をSQL_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じゃないな。。