Oracle の各種バージョン毎の接続可否一覧表(support matrix)

今、お仕事で Oracle 10g R1 関連のお仕事をしています。Oracle って下位互換性が完全にあるわけではないので、意外と見落としがちになるのが移行作業。単純に export / import をすれば動作するというものじゃぁないのです。

Oracle が公開している「Oracle 8、8i から Database 10g へのアップグレード」の情報に詳しい手順がかかれていますが、移行手順的にはもう少しパターンが考えられそう。そこで情報をまとめてみました。

- スポンサーリンク -

以下の図は、僕が移行するならこうやるという意味で書いています。
oracle.jpg


メリットデメリット
DBUA
  • DBサイズに関係なく高速
  • 移行に必要な容量が最小
  • GUIベースで簡易に操作可能
  • バックアップ必須
  • DB全体のみの移行
  • アップグレード処理中に予測されるすべてのエラーが削除される
  • 異なる H/W、OSへの移行が不可
  • 新機能を使用する場合に、セグメントの再作成が必要な場合がある
Exp / Imp
  • Oracle のバージョンに依存しない移行
  • 断片化を解消可能
  • 文字コードの変換可能
  • 異なる H/W、OS への移行が可能
  • バックアップ不要
  • 容量に比例して時間がかかる
  • ダンプファイル用の大容量ディスクが必要
  • 索引の再作成、統計情報の再取得が必要
DB-Link +
CTAS / Copy
  • Oracle のバージョンに依存しない移行
  • 断片化を解消可能
  • 文字コードの変換可能
  • 異なる H/W、OS への移行が可能
  • バックアップ不要
  • 容量に比例して時間がかかる
  • 操作中は両方のデータベースが同時に使用可能である必要がある
  • ネットワーク環境の影響あり
  • 索引の再作成、統計情報の再取得が必要

僕的におすすめの移行手順は、

  1. R8.1.6 → R8.1.7 のようなメンテナンス・リリース番号レベルのバージョンアップであれば、DBUA を使ってデータベースをアップグレードする
  2. R8.1.6 → R10.1.0 のようなメンテナンス・リリース番号レベルのバージョンアップであれば、Exp/Imp もしくは、データコピー(DB-Link + CTAS/Copy) を使ってデータベース移行する

です。この手順の意味するところは2点。

  • 意外とテスト環境の時のようにうまくいかない場合がある。移行に失敗したときを考慮し、即座切り戻しが可能とすること。
  • Oracle のデータベース移行するくらい続くサービスであれば、移行時に領域再設計とか断片化の解消を実行する良い機会。

なんてことを考えると、Oracle のデータベース移行のベストソリューションは、Exp/Imp もしくは DB-Link + CTAS / Copy だと思います。

ちなみに、Oracle が公式にサポートしているバージョン間の互換性というか接続可否は下記の通りです(手持ちの R8.1.6 の情報を加えてみました)。各バージョンのターミナルバージョンを使っていない場合、意外と接続できなくてヤバスなんて場合が多いです。
参考:Oracleシステム製品データベース対応一覧表

接続先データベース
接続元データベース7.3.48.0.68.1.68.1.79.0.19.2.010.1.010.2.0
Oracle7 R7.3.4×××
Oracle8 R8.0.6××
Oracle8i R8.1.6××
Oracle8i R8.1.7
Oracle9i Database Release 1 (9.0.1)×
Oracle9i Database Release 2 (9.2.0)×◎(※4)
Oracle Database 10g Release 1 (10.1.0)×××○(※3)
Oracle Database 10g Release 2 (10.2.0)××××◎(※4)
接続元 SQL *Net / Net8 / Oracle Net7.3.48.0.68.1.68.1.79.0.19.2.010.1.010.2.0
SQL*Net××
Net8 R8.0.6××
Net8 R8.1.6××
Net8 R8.1.7
Oracle Net R9.0.1×
Oracle Net R9.2.0×◎(※4)
Oracle Net R10.1.0×××○(※3)
Oracle Net R10.2.0××××◎(※4)
接続元 JDBC Thin7.3.48.0.68.1.68.1.79.0.19.2.010.1.010.2.0
JDBC Thin R8.0.6?×××××
JDBC Thin R8.1.6?××××
JDBC Thin R8.1.7?○(※1)×○(※2)○(※2)
JDBC Thin R9.0.1?×××
JDBC Thin R9.2.0××?◎(※2)◎(※2)
JDBC Thin R10.1.0×××
JDBC Thin R10.2.0××××◎(※4)
接続元 JDBC OCI7.3.48.0.68.1.68.1.79.0.19.2.010.1.010.2.0
JDBC OCI R8.0.6?×××××
JDBC OCI R8.1.6?××××
JDBC OCI R8.1.7○(※1)×○(※2)○(※2)
JDBC OCI R9.0.1?×××
JDBC OCI R9.2.0××?◎(※2)◎(※2)
JDBC OCI R10.1.0×××
JDBC OCI R10.2.0××××◎(※4)
接続元 OCI7.3.48.0.68.1.68.1.79.0.19.2.010.1.010.2.0
OCI R8.0.6××
OCI R8.1.6××
OCI R8.1.7
OCI/OCCI R9.0.1×
OCI/OCCI R9.2.0×◎(※4)
OCI/OCCI R10.1.0×××○(※3)
OCI/OCCI R10.2.0××××◎(※4)
備考
◎:接続可 (推奨される組み合わせ) / ○:接続可 / ×:接続不可

※1
Oracle JDBC Thin Driverは R8.1.7.2以降、Oracle JDBC OCI DriverはR8.1.7.0から対応します。

※2
Oracle JDBC Driver R8.1.7.4、Oracle JDBC Driver 9.2.0.4以降でそれぞれOracleDatabase 10g Release 1 (10.1.0)およびOracle  Database 10g Release 2 (10.2.0)との接続をサポートします。

※3
Oracle Net R10.1.0は、Oracle8i R8.1.7以降に対応します。Oracle Net R10.1.0を使用する製品に関してもOracle8iR8.1.7以降に対応します。Oracle Net R10.1.0.2およびOracle Net R10.1.0.2を使用する製品の場合には、Oracle8iR8.1.7.4以降に対応します。

※4
Oracle Net R9.2.0.4以降で、Oracle Database 10g Release 2 (10.2.0)への接続に対応します。
また、Oracle Net R10.2.0では、Oracle9i Database Release 2 (9.2.0.4)以降への接続に対応します。
- スポンサーリンク -