ヘッダーをスキップ
Oracle® Databaseアップグレード・ガイド
11g リリース2(11.2)
B56310-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

5 Oracle Databaseのアップグレード後のアプリケーションのアップグレード

新しいリリースのOracle Databaseにアップグレードすると、多くの新機能および拡張機能を使用できます。 新機能を利用する場合は、新しいリリースで実行されているアプリケーションをアップグレードする必要があります。

この章の内容は次のとおりです。

アプリケーションのアップグレードの概要

新しいOracle Database 11gリリースで使用可能になった機能を使用しない既存のアプリケーションは、変更する必要がありません。新しいOracle Database 11gのデータベースで実行される既存のアプリケーションは以前のリリースと同様に機能し、同等以上のパフォーマンスを得ることができます。

新しいOracle Database 11gリリースにアップグレードすると、多くの新機能および拡張機能を使用できます。機能やファンクションが追加された機能がある一方、パフォーマンスが向上した機能もあります。アプリケーションをアップグレードする前に、これらの新機能を確認して、どの機能を使用するかを判断する必要があります。


関連項目:

新しいOracle Database 11gリリースで使用可能な機能については、『Oracle Database新機能ガイド』を参照してください。

アップグレード時のアプリケーションの互換性の問題

Oracle Databaseの異なるリリース間には、アプリケーションに影響を与えかねない互換性の問題がある場合があります。これらの互換性の問題は、Oracle Databaseの様々なリリースにおける相違によるものです。また、Oracle Databaseのリリースが新しくなるたびに、Oracleの新しい予約語が追加され、初期化パラメータおよびデータ・ディクショナリが変更されている場合があります。

Oracle Databaseソフトウェアを新しいリリースにアップグレードする場合は、アプリケーションでOracleの予約語が使用されていないか、アプリケーションにデータベースの初期化パラメータとの互換性があるか、アプリケーションにデータベースのデータ・ディクショナリとの互換性があるかを確認してください。新しいリリースのOracle Databaseソフトウェアでは、特定のリリースのオペレーティング・システムまたは特定のパッチ・セットの適用が必要な場合があります。


関連項目:

  • 初期化パラメータおよびデータ・ディクショナリの変更の詳細は、付録A「Oracle Databaseのアップグレード後の動作の変更点」を参照してください。

  • Oracleの予約語の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • オペレーティング・システムの要件の詳細は、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。


プリコンパイラおよびOCIアプリケーションのアップグレード

プリコンパイラとOCIアプリケーションのアップグレード・パスは非常に似ています。この項では、これらのアプリケーションのアップグレード・オプションについて説明し、さらに必要に応じてプリコンパイラとOCIアプリケーションの違いを示します。

本番環境をアップグレードする前に、テスト環境を作成します。テスト環境には、アップグレードされたアプリケーションおよび新しいOracle Databaseソフトウェアが必要です。また、テスト環境では、アプリケーションの現実的なテストを行う必要があります。

この項の内容は次のとおりです。


関連項目:

これらのプログラミング環境の使用方法の詳細は、『Pro*C/C++プログラマーズ・ガイド』『Pro*COBOLプログラマーズ・ガイド』および『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。

ソフトウェアのアップグレードおよびクライアント/サーバー構成の理解

プリコンパイラおよびOCIアプリケーションのアップグレード選択肢を理解するには、まず、実行するソフトウェアのアップグレード・タイプおよびクライアント/サーバー構成を理解する必要があります。

この項の内容は次のとおりです。

Oracle Databaseのソフトウェア・アップグレードのタイプ

Oracle Databaseをアップグレードすると、一般的にはメジャー・リリースにアップグレードするか、またはメンテナンス・リリースにパッチを適用します。Oracle Databaseのクライアントおよびサーバー・ソフトウェアに対して、次のタイプのアップグレードを行うことができます。

データベースのメジャー・リリースのアップグレード

このアップグレードは、リリース番号の最初の数字を変更します。たとえば、Oracle9iからOracle Database 11gへのアップグレードは、データベースのメジャー・リリースのアップグレードです。

データベースのメンテナンス・リリースのアップグレード

このアップグレードは、リリース番号の2番目の数字を変更します。たとえば、Oracle Database 11gリリース1(11.1)からOracle Database 11gリリース2(11.2)へのアップグレードは、データベースのメンテナンス・リリースのアップグレードです。

使用可能なクライアント/サーバー構成

プリコンパイラおよびOCIアプリケーションはクライアント/サーバー環境のクライアントで実行されます(ここでのサーバーは、Oracle Databaseサーバーです)。ご使用の環境で、次の1つ以上のクライアント/サーバー構成を使用できます。

異なるコンピュータ

クライアント・ソフトウェアおよびサーバー・ソフトウェアが異なるコンピュータにあり、それぞれがネットワークで接続されています。クライアント環境とサーバー環境は独立しています。

同じコンピュータ上の異なるOracleホーム・ディレクトリ

クライアント・ソフトウェアおよびサーバー・ソフトウェアは同じコンピュータ上にありますが、異なるOracleホーム・ディレクトリにインストールされています。クライアント環境とサーバー環境は独立しています。

同じOracleホーム

クライアント・ソフトウェアおよびサーバー・ソフトウェアが同じコンピュータ上の同じOracleホームにインストールされています。この場合、サーバー・ソフトウェアをアップグレードすると、クライアント・ソフトウェアもアップグレードされます。


関連項目:

クライアント/サーバー環境の詳細は、『Oracle Database概要』および『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』を参照してください。

クライアント/サーバー・ソフトウェアをアップグレードする場合のアプリケーションの互換性規則

この項では、Oracle Databaseクライアント・ソフトウェアまたはOracle Databaseサーバー・ソフトウェアをアップグレードする場合に適用される、互換性規則について説明します。この規則は、実行するソフトウェア・アップグレードのタイプおよびご使用のクライアント/サーバー構成に基づきます。

この項では、次のようなアップグレードの互換性規則について説明します。


注意:

この項では、「ソフトウェアのアップグレードおよびクライアント/サーバー構成の理解」で説明する用語を使用しています。

Oracle Databaseサーバー・ソフトウェアのアップグレード

次の規則は、Oracle Databaseサーバー・ソフトウェアをアップグレードする場合に適用されます。

クライアント環境を変更しない場合、再リンクは不要

クライアントとサーバーが異なるコンピュータにあるか、または同じコンピュータの異なるOracleホーム・ディレクトリにあるときに、クライアント・ソフトウェアを変更しないでOracle Databaseサーバー・ソフトウェアをアップグレードする場合は、アプリケーションをプリコンパイル、コンパイルまたは再リンクする必要はありません。このような場合、クライアント・ソフトウェアはサーバー・ソフトウェアから独立しており、サーバーに対し継続して機能します。

ただし、アプリケーションがOracle Databaseサーバーと同じOracleホームを使用している場合は、サーバー・ソフトウェアをアップグレードするとクライアント・ソフトウェアもアップグレードされます。この場合、「Oracle Databaseクライアント・ソフトウェアのアップグレード」の規則に従う必要があります。


注意:

Oracle Databaseサーバー・ソフトウェアと、プリコンパイラまたはOCIクライアント・ソフトウェア用に同じOracleホームを使用している場合、新しいプリコンパイラまたはOCIクライアント・ソフトウェアはインストールしないで、サーバー・ソフトウェアをアップグレードすることができます。この場合、クライアント・ソフトウェアはアップグレードされません。ただし、このような構成はお薦めしません。

Oracle Databaseサーバーの新/旧リリースでアプリケーションの実行が可能

データベース・サーバーに対してプリコンパイラまたはOCIアプリケーションを実行する場合、Oracleでは、クライアント・ソフトウェア・リリース以降のリリースのデータベース・サーバー・ソフトウェアを使用することをお勧めしますが、この構成が厳密に必要なわけではありません。たとえば、クライアント・ソフトウェアがOracle9iリリース2(9.2.0.8)である場合、サーバーに対してクライアント上でプリコンパイラ・アプリケーションを実行するには、Oracle9iリリース(9.2.0.8)以降のサーバー・ソフトウェアを使用することをお勧めします。

Oracle Databaseクライアント・ソフトウェアのアップグレード

ご使用のクライアント・ソフトウェアをアップグレードして、現行のサーバー・ソフトウェアと一致させることをお薦めします。たとえば、サーバーをOracle Database 11gリリース2(11.2)にアップグレードする場合は、クライアント・ソフトウェアもOracle Database 11gリリース2(11.2)にアップグレードすることをお薦めします。サーバー・ソフトウェアとクライアント・ソフトウェアのリリース番号を同じにしておくと、アプリケーションの最大の安定性を得ることができます。また、最新のOracle Databaseクライアント・ソフトウェアには、それまでのリリースにはなかった機能が追加されていたり、パフォーマンスが向上している可能性があります。

次の規則は、Oracle Databaseクライアント・ソフトウェアをアップグレードする場合に適用されます。

アプリケーションは、より新しいライブラリにリンクできる

プリコンパイラ・アプリケーションによって生成されたコードは、サーバーのリリース以上のクライアント・ライブラリのリリースにリンクできます。

OCIアプリケーションは、そのアプリケーションが開発されたOCIライブラリのバージョン以上のOCIランタイム・ライブラリのバージョンとリンクできます。

静的にリンクされたアプリケーションを常に再リンクさせる必要がある

静的にリンクされたOCIアプリケーションは、メジャー・リリースおよびマイナー・リリースの両方に再リンクさせる必要がありますが、これは静的にリンクされたOracleのクライアントサイド・ライブラリのコードと、アップグレード後のORACLE_HOMEでのエラー・メッセージとの互換性が失われている可能性があるためです。たとえば、エラー・メッセージにパラメータが追加される更新があった場合、このエラー・メッセージは、静的にリンクされたコードとは非互換になります。

動的にリンクされたアプリケーションの再リンク

Oracle Database 10gリリース1(10.1)以上のリリースの動的にリンクされたOCIアプリケーションでは、現行のリリースとの上位互換性が保たれます。つまり、Oracleのクライアントサイド動的ライブラリには、前のバージョンのライブラリとの上位互換性があります。Oracle Universal Installerによって前のバージョンのライブラリへのシンボリック・リンクが作成され、このシンボリック・リンクが現行バージョンのライブラリに解決されます。したがって、前のバージョンのOracleクライアントサイド動的ライブラリと動的にリンクされたアプリケーションは、現行バージョンのOracleクライアントサイド・ライブラリと再リンクしなくても動作します。


注意:

アプリケーションがランタイム・ライブラリの検索パス(Linuxでの-rpathなど)にリンクされていると、リンクされているバージョンのOracleクライアントサイド・ライブラリを使用して引き続き実行される場合があります。現行バージョンのOracleクライアントサイド・ライブラリを使用して実行するには、アプリケーションを再リンクする必要があります。

アプリケーションが遅延オプション(静的にリンクされているアプリケーションなど)にリンクされている場合は、再リンクする必要があります。

Oracle Database 10gリリース1(10.1)より前のリリースのアプリケーションを使用している場合は、再リンクする必要があります。


プリコンパイラおよびOCIアプリケーションのアップグレード選択肢

プリコンパイラおよびOCIアプリケーションをアップグレードする場合は、次の選択肢があります。

これらの選択肢は、難易度が高く、考えられるメリットが大きくなる順序に記述されています。つまり、選択肢1は最も簡単ですが、考えられるメリットは最も小さくなり、選択肢3は最も難しい方法ですが、考えられるメリットは最も大きくなります。これらの選択肢については次の項で説明します。

選択肢1: アプリケーションを変更しない

この選択肢では、アプリケーションのOracleホーム環境をアップグレードしないでください。アプリケーションは変更しなくても、新しいOracle Database 11gサーバーで引き続き使用できます。この選択肢の主なメリットは、単純で簡単であることです。さらに、この選択肢では、クライアント・コンピュータをアップグレードする必要がないため、管理の必要性が最も少なくなります。多くのクライアント・コンピュータがある場合は、すべてのコンピュータのアップグレードに費やす管理コストを削減することが大変重要になります。

この選択肢の主なデメリットは、新しいOracle Database 11gリリースで使用可能な機能をアプリケーションで使用できないことです。また、期待できる新しいOracle Database 11gリリースのパフォーマンス上のメリットをアプリケーションで活用することができません。

選択肢2: 新しいソフトウェアを使用してアプリケーションをプリコンパイルまたはコンパイルする

メンテナンス・リリースから新しいOracle Database 11gソフトウェアにアップグレードする場合は、APIが非推奨になったか変更されたために必要になったコード変更を行った後、新しいソフトウェアを使用してアプリケーションをプリコンパイルまたはコンパイルする必要があります。Oracle Database 11gソフトウェア内のマイナー・リリースにアップグレードする場合は、再コンパイルを行う必要はありません。

この選択肢では、各クライアント・コンピュータに新しいOracle Databaseクライアント・ソフトウェアをインストールする必要があります。クライアントの数にかかわらず、必要なアプリケーションのプリコンパイルまたはコンパイルおよび再リンクは1回のみです。

再コンパイルすることによって、アプリケーション・コードの構文チェックを実行します。新しいOracleソフトウェアを使用してプリコンパイルまたはコンパイルすると、Oracleソフトウェアの以前のリリースでは検出されなかったアプリケーション・コードのいくつかの問題が、検出される場合があります。したがって、新しいソフトウェアを使用したプリコンパイルまたはコンパイルは、以前に検出されなかった可能性があるアプリケーション・コードの問題の検出および解決に役立ちます。

また、アプリケーションは新しいOracleソフトウェアで動作するため、再コンパイルすることによって、アプリケーションの最大の安定性を得ることができます。さらに、使用可能な最新のツール製品および機能を使用して、ご使用の環境で新しい開発を行うことができます。さらに、再コンパイルおよび再リンクの実行後のみ、新しいOracleソフトウェアで得られるパフォーマンスの向上を得ることができます。

選択肢3: アプリケーション・コードを変更して、新しいOracle Database 11gの機能を使用する

アプリケーションのコードを変更することで、新しいOracle Database 11gの機能を利用できます。この選択肢は最も難しい方法ですが、考えられるメリットも最大です。この選択肢では、「選択肢2: 新しいソフトウェアを使用してアプリケーションをプリコンパイルまたはコンパイルする」で説明したすべてのメリットを実現できます。さらに、アプリケーションを変更することにより、新しいOracle Database 11gリリースで得られるパフォーマンスおよびスケーラビリティのメリットを活用できます。さらに、新しいOracle Database 11gリリースでのみ使用できる新機能を、アプリケーションに追加できます。

『Oracle Database新機能ガイド』を読んで、新しいOracle Database 11gリリースの機能を理解してください。使用する機能の実装方法については、ご使用の開発環境のOracleマニュアルを参照してください。プリコンパイラの詳細は、『Pro*C/C++プログラマーズ・ガイド』および『Pro*COBOLプログラマーズ・ガイド』を参照してください。OCIの詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。

使用する新機能を決定したら、アプリケーションのコードを変更して、これらの機能を使用できるようにします。ご使用の開発環境に基づいて、次の項の該当する指示に従ってください。

プリコンパイラ・アプリケーションの変更

プリコンパイラ・アプリケーションを変更して新しいOracle Database 11gリリースの機能を使用できるようにするには、次の手順を実行します。

  1. 新しいOracle Database 11gリリースの機能を利用する場合は、これらの新機能のコードを既存のアプリケーションに取り込みます。

  2. Oracleプリコンパイラを使用して、アプリケーションをプリコンパイルします。

  3. アプリケーションをコンパイルします。

  4. プリコンパイラに付属する新しいOracle Database 11gリリースのランタイム・ライブラリ(SQLLIB)を、アプリケーションと再リンクさせます。

OCIアプリケーションの変更

OCIアプリケーションを変更して新しいOracle Database 11gリリースの機能を使用できるようにするには、次の手順を実行します。

  1. 新しいOracle Database 11gリリースのOCIコールを既存のアプリケーションに取り込みます。

  2. アプリケーションをコンパイルします。

  3. アプリケーションを新しいOracle Database 11gリリースのランタイム・ライブラリと再リンクさせます。

SQL*PlusスクリプトおよびPL/SQLのアップグレード

新しいOracle Database 11gリリースの機能およびファンクションを使用するには、新しいOracle Database 11gリリースの構文を使用するように既存のSQLスクリプトを変更します。新しいOracle Database 11gリリースの機能およびファンクションを使用しない場合は、既存のSQLスクリプトをそのまま新しいOracle Database 11gリリースで実行できるため、変更は不要です。

ただし、新しいOracle Database 11gリリースではエラー確認機能が強化されているため、実行時ではなくコンパイル時にエラーを識別できる場合があります。

関連項目:

数値リテラルの評価への変更

数値リテラルの評価方法が変更され、リテラルを使用する数値計算の場合は、定数の1つ以上で小数第1位に小数点を指定することが必要になりました。これは、Oracle Database 10gリリース1(10.1)以上のリリースのOracle Databaseでは一部の式でINTEGER演算(有効桁は約9桁)が使用されますが、Oracle9iリリース2(9.2)ではNUMBER演算(有効桁数は約38桁)が使用されるためです。

したがって、有効桁数が9桁を超える計算結果を扱う場合、数値オーバーフローのエラーを回避するには、リテラルのうち1つが小数形式であることが必要です。たとえば、Oracle Database 10gでは、次に示す例のv1の計算で数値オーバーフローのエラーが発生します。

DECLARE
  v1 NUMBER(38);
BEGIN
  v1 := 256*256*256*256;
  DBMS_OUTPUT.PUT_LINE(v1);
END;
/

エラーが発生しないようにするには、数値リテラルの1つを次のように小数(256.0)として指定します。

DECLARE
  v1 NUMBER(38);
BEGIN
  v1 := 256*256*256*256.0;
  DBMS_OUTPUT.PUT_LINE(v1);
END;
/

関連項目:

  • SQL*Plusの新機能の詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』のSQL*Plusの新機能に関する項を参照してください。

  • SQLスクリプトのアップグレードの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。


Oracle FormsまたはOracle Developerアプリケーションのアップグレード

Formsアプリケーションは、Oracle9i、Oracle Database 10gおよびOracle Database 11gで同様に動作します。ただし、『Oracle Database新機能ガイド』で説明されている新機能を確認して、新しいOracle Database 11gリリースの機能がアプリケーションに有効か、アプリケーションに影響を与えるかを判断してください。新しいOracle Database 11gリリースの機能がFormsおよびDeveloperアプリケーションとどのように相互作用するかについては、Oracle Developerのドキュメント・セットを参照してください。また、オペレーティング・システムのOracle Developerドキュメントには、ご使用のFormsまたはDeveloperアプリケーションのアップグレード方法が記述されています。


注意:

Oracle Developerの新しいリリースでは、Oracle Developer固有の新しい予約語が導入されている場合があります。アプリケーションがこれらの予約語を使用している場合は、コードを変更する必要があります。