Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere 11 - 変更点とアップグレード » SQL Anywhere 11 へのアップグレード » SQL Anywhere のアップグレード

 

バージョン 9 以前のデータベースをバージョン 11 用に再構築

この項では、データベースをアンロードして、新しいバージョン 11 データベースに再ロードする方法について説明します。

Windows Mobile データベースのアップグレードについては、Windows Mobile のデータベースの再構築を参照してください。

Mac OS X のデータベースの再構築

Mac OS X 用の SQL Anywhere 9.0.2 は PPC で サポートされ、SQL Anywhere 10.0.0 以降は Intel でサポートされていました。Mac OS X に 9.0.2 以前のバージョンのデータベースがある場合は、次の 2 つの方法でデータベースをアンロードできます。

  • バージョン 9.0.2 のソフトウェアを使用してデータベースをアンロードします。

  • SQL Anywhere 11 がインストールされている別のプラットフォームにデータベースをコピーしてから、バージョン 11 のソフトウェアを使用してデータベースをアンロードします。

データベースをアンロードした後は、Mac OS X でバージョン 11 のソフトウェアを使用してデータベースを再ロードできます。

警告

大規模なデータベースのアンロードや再ロードには時間がかかり、大容量のディスク領域が必要になることがあります。この処理では、アンロードされたデータと新しいデータベース・ファイルを保持するため、データベースの約 2 倍のディスク領域にアクセスする必要があります。

アップグレードの制限

バージョン 11 のツールを使用してバージョン 9 以前のデータベースを再構築するときには、次の制限事項があります。

  • 旧バージョンの全データベース・サーバのデータベースを切断して、コンピュータで実行している旧バージョンのデータベース・サーバを停止する必要があります。また、コンピュータで実行しているバージョン 11 のデータベース・サーバも停止する必要があります。dbunload によってこれらの状態が検出され、処理を続行できない場合は、エラーが発生し、再構築に失敗します。

  • 再構築前のデータベースの dbunload 接続文字列に、ENG、START、または LINKS の各接続パラメータを含めないでください (-c オプションで指定)。これらの接続パラメータを指定すると、無視され、警告が表示されます。Sybase Central の [接続] ウィンドウの [サーバ名] フィールドと [開始行] フィールドには、値を入力しないでください。

  • 既存のデータベースへの直接ファイル・システム・アクセスを使用して、コンピュータで dbunload を実行します (dbunload が、共有メモリを使用してデータベースに接続できる状態である必要があります)。

  • 再構築を実行するコンピュータで、dbunload_support_engine という名前のデータベース・サーバを実行することはできません。

特別な注意事項
  • パスワードの大文字と小文字の区別   新しく作成された SQL Anywhere 11 データベースでは、データベースでの設定にかかわらず、すべてのパスワードは大文字と小文字が区別されます。新しいデータベースのデフォルトの DBA パスワードは、sql です。

    既存のデータベースを再構築する場合、SQL Anywhere でのパスワードの大文字と小文字の区別は、次のように決まります。

    • パスワードを最初に入力したのが大文字と小文字を区別しないデータベースだった場合、そのパスワードの大文字と小文字は区別されません。

    • パスワードを最初に入力したのが大文字と小文字を区別するデータベースだった場合、大文字のパスワードと、大文字と小文字が混在したパスワードでは、大文字と小文字が区別されます。ただし、パスワードをすべて小文字で入力した場合、パスワードの大文字と小文字は区別されません。

    • 既存のパスワードと新しいパスワードの両方に加えられた変更は、大文字と小文字が区別されます。

  • ページ・サイズ   SQL Anywhere 11 データベースのデフォルトのデータベース・ページ・サイズは 4096 バイトです。バージョン 11 でサポートされるページ・サイズは、2048、4096、8192、16384、32768 バイトです。既存のデータベースで、サポートされていないページ・サイズが使用されている場合は、新しいデータベースのページ・サイズはデフォルトで 4096 バイトに設定されます。dbinit の -p オプションまたは dbunload の -ap オプションを使用して、別のページ・サイズを指定できます。初期化ユーティリティ (dbinit)アンロード・ユーティリティ (dbunload)を参照してください。

  • 照合   バージョン 9 以前の SQL Anywhere では、CHAR データ型で使用される 1 つの照合しかサポートしていませんでした。この照合は、SQL Anywhere 照合アルゴリズム (SACA) を使用していました。バージョン 10 以降の SQL Anywhere では、照合アルゴリズムとして、SACA と UCA (Unicode 照合アルゴリズム) の 2 つをサポートしています。再構築されたデータベース用に新しい照合や別の照合を指定していない場合は、既存のデータベースの SACA 照合がアンロードされ、再構築されたデータベースで再利用されます。

    カスタム照合を使用してデータベースを再構築する場合に 1 ステップで再構築すると、その照合は保持されます (内部アンロード)。データベースをアンロードしてから、作成したデータベースにスキーマとデータをロードする場合は、提供されるいずれかの照合を使用する必要があります。サポートされている照合と代替照合を参照してください。

  • データベースのファイル・サイズ   SQL Anywhere のインデックスが変更された結果、データベースをアンロードしてから再ロードして再構築すると、再構築されたデータベースが元のデータベースよりも小さくなる場合があります。このデータベースのサイズの縮小は、問題や、データが失われたことを示すものではありません。

Sybase Central からのバージョン 9 以前のデータベースの再構築

データベース・アンロード・ウィザードを使用して、既存のデータベースを再構築できます。このウィザードを使用すると、データベースを再ロード・ファイルとデータ・ファイルにアンロードするか、新しいデータベースにアンロードおよび再ロードするか、既存のデータベースにアンロードおよび再ロードするかのいずれかの操作を実行できます。再構築の前に、データベースをバックアップすることを強くおすすめします。

Sybase Central でのアップグレードに関する注意事項
  • データベース・ファイルは、SQL Anywhere 11 がインストールされているコンピュータと同じコンピュータに保存されている必要があります。

  • データベースからはテーブルのサブセットはアンロードできません。dbunload ユーティリティを使用してアンロードしてください。

  • データベース・アンロード・ウィザードで、データベース・ファイルがすでに実行されていると認識された場合は、アンロードを続行する前にデータベースが停止します。

♦  データベースを再構築するには、次の手順に従います (Sybase Central の場合)。
  1. ソフトウェアをアップグレードする場合の一般的な対応策を行います。アップグレードを行う前の重要な注意事項を参照してください。

  2. 断片化されているドライブでは、データベースのパフォーマンスが低下するので、可能な場合は、新しいデータベースを保存するドライブの断片化を解除してください。

  3. アンロードと再ロードを行うデータベースに対して、排他アクセスを持っていることを確認してください。他のユーザは接続できません。

  4. [スタート] - [プログラム] - [SQL Anywhere 11] - [Sybase Central] を選択します。

  5. [ツール] - [SQL Anywhere 11] - [データベースのアンロード] を選択します。

  6. データベース・アンロード・ウィザードの概要ページを読んで、[次へ] をクリックします。

  7. [旧バージョンのサーバで実行中のデータベース、または実行中ではないデータベースをアンロードする] を選択します。データベースの接続情報を入力します。[次へ] をクリックします。

  8. [新しいデータベースへのアンロードと再ロード] を選択します。[次へ] をクリックします。

  9. データベースの新しいファイル名を指定します。[次へ] をクリックします。

    新しいデータベースのページ・サイズを指定できます。バージョン 11 では、デフォルトのページ・サイズ (推奨値) は 4096 バイトです。

    必要に応じてデータベース・ファイルを暗号化できます。強力な暗号化を選択した場合は、データベースを起動するたびに暗号化キーが必要です。データベースの暗号化と復号化を参照してください。

  10. [構造とデータをアンロード] を選択します。[次へ] をクリックします。

  11. 再構築が完了したときに新しいデータベースに接続するかどうかを指定します。

  12. [完了] をクリックします。新しいデータベースを調べて、再構築が正常に完了したことを確認します。

アップロード・ユーティリティを使用したバージョン 9 以前のデータベースの再構築

アンロード・ユーティリティ (dbunload) の -an または -ar オプションを使用して、既存のデータベースを再構築できます。

  • -an オプションを使用すると、元のデータベースをそのまま残して新規データベースが作成されるので、このオプションを使用することをおすすめします。

  • -ar オプションを使用すると、既存のデータベースが新しいバージョン 11 のデータベースに置き換わります。

再構築の前に、データベースをバックアップすることをおすすめします。

注意

データベースのページ・サイズには、2048、4096、8192、16384、32768 バイトのいずれかを指定できます。デフォルトは元のデータベースのページ・サイズです。

♦  データベースを再構築するには、次の手順に従います (コマンド・ラインの場合)。
  1. ソフトウェアをアップグレードする場合の一般的な対応策を行います。アップグレードを行う前の重要な注意事項を参照してください。

  2. システム・パスで、他のユーティリティより前にバージョン 11 のユーティリティが置かれていることを確認してください。ユーティリティの使用を参照してください。

  3. バージョン 11 の dbunload ユーティリティは、旧バージョンのデータベース・サーバで実行されているデータベースに対して使用できないので、すべての SQL Anywhere と Adaptive Server Anywhere のデータベース・サーバを停止します。次に例を示します。

    dbstop -c "DBF=mydb.db;UID=DBA;PWD=sql"
  4. 断片化されているドライブでは、データベースのパフォーマンスが低下するので、可能な場合は、新しいデータベースを保存するドライブの断片化を解除してください。

  5. データベースをバックアップします。次に例を示します。

    dbbackup -c "DBF=mydb.db;UID=DBA;PWD=sql" old-db-backup-dir

    バックアップのクイック・スタートを参照してください。

    注意

    データベースのバックアップには、正しいバージョンの dbbackup を使用してください。ユーティリティの使用を参照してください。

  6. -an または -ar オプションを指定してアンロード・ユーティリティ (dbunload) を実行して、新しいデータベースを作成します。

    dbunload -c "connection-string" -an database-filename

    次に例を示します。

    dbunload -c "DBF=mydb.db;UID=DBA;PWD=sql" -an mydb11.db

    connection-string で指定するデータベース・ユーザは、アンロードするデータベースに DBA 権限で接続する必要があります。このコマンドを使用すると、新規データベースが作成されます (-an を指定した場合)。-ar オプションを指定すると、既存のデータベースは再構築後のデータベースに置き換わります。-ar オプションを使用するには、パーソナル・データベース・サーバに接続するか、アンロード・ユーティリティ (dbunload) と同じコンピュータ上にあるネットワーク・データベース・サーバに接続します。

    アンロード・ユーティリティ (dbunload) のその他のオプションについては、アンロード・ユーティリティ (dbunload)を参照してください。

既知の問題

dbunload またはデータベース・アンロード・ウィザードを実行したときに再構築処理に失敗した場合は、次の手順に従って失敗の原因を診断できます。

♦  再構築の失敗を診断するには、次の手順に従います。
  1. 既存のデータベースで dbunload -n を実行します。

    dbunload -c "connection-string" -n directory-name
  2. 新しい、バージョン 11 の空のデータベースを作成します。

    dbinit test.db
  3. reload.sql ファイルを空のデータベースに適用します。

    dbisql -c "DBF=test.db;UID=DBA;pwd=sql" reload.sql
  4. reload.sql ファイルを新しいデータベースに適用したときに受信したメッセージに基づいて、元のデータベースまたは reload.sql ファイルに変更を加えます。

次の表に、再構築の失敗につながる既知の問題とその解決策を示します。

既知の問題 解決策
テーブル名のプレフィクスに所有者名が付いている場合は、プロシージャまたはトリガ内の DECLARE LOCAL TEMPORARY TABLE 文により、構文エラーが発生します。 所有者名を削除します。
CREATE TRIGGER 文で、トリガが定義されたテーブルの所有者名が指定されておらず、ユーザが reload.sql ファイルを実行して参照するときに、テーブルが所有者名で修飾されている必要がある場合、CREATE TRIGGER 文は失敗し、テーブルが見つからなかったことを示すエラーが返されます。 テーブル名のプレフィクスに所有者名を付けます。

オブジェクト名 (テーブル、カラム、変数、パラメータ名など) が SQL Anywhere の以後のバージョンで導入された予約語 (NCHAR など) に対応している場合は、再ロードに失敗します。次に例を示します。

CREATE PROCEDURE p( )
BEGIN
 DECLARE NCHAR INT;
 SET NCHAR = 1;
END;

予約語へのすべての参照を、別の名前を使用するように変更します。変数名の場合は、名前の競合を回避する @ を名前のプレフィクスとして使用するのが、一般的な規則です。

予約語の完全なリストについては、予約語を参照してください。

データベースをバージョン 9 以前の dbunload でアンロードする場合、reload.sql ファイルに ml_add_property システム・プロシージャの呼び出しが含まれることがありますが、新しいバージョン 11 データベースにはこのプロシージャは存在しません。

バージョン 11 のdbunload ユーティリティを使用してデータベースをアンロードしてください。

適切なバージョンのデータベース・ユーティリティを使用していることを確認する方法については、ユーティリティの使用を参照してください。

バージョン 9 以前の dbunload を使用してデータベースをアンロードする場合、Transact-SQL 外部ジョイン (*= または =* で指定) を使用するビューを再ロードすると、それらのビューが適切に作成されないことがあります。

次のセクション行を再ロード・スクリプトに追加します。

SET TEMPORARY OPTION tsql_outer_joins='on';

Transact-SQL 外部ジョインを使用しているすべてのビューを、後で書き直してください。