レプリケーションで使用する Adaptive Server Anywhere (SQL Anywhere) テーブルを 別の DBSpace に移動

概要:この文書では、データベース・ファイル全体を再構築せずに、パブリケーションに含まれるテーブルを別の dbspace に移動する手順を説明します。この文書は、バージョン 5.5 以降を対象としています。

ファイル・システムによっては、ファイル・サイズが 2 GB までに制限されています。ユーザのデータベースが大きくなると、データベースを拡張するため、場合によっては一部のテーブルの内容を別の dbspace に移動する必要があります。

テスト環境で次の手順を実行してから、運用システムで移動を行ってください

手順

1. 構造とデータの両方を指定して、移動するテーブルをアンロードします。

2. 必要に応じて、データベース領域を作成します。

3. reload.sql で文を適用し、移動先のデータベースに新しいテーブルを作成します。テーブル名は新しい名前に置き換えます。

4. INPUT INTO 文または LOAD TABLE 文を ISQL で使用して、生成された .dat ファイルに格納されているデータを新しいテーブルに移植します。

5. 元のテーブルでの外部キー、インデックス、トリガの定義を、新しく作成したテーブルに追加します。

6. 古いテーブルのアーティクルの記述を削除して、パブリケーションを変更します。

7. 新しいテーブルのアーティクルの記述を追加して、パブリケーションを変更します。

8. 元のテーブルを削除します。削除する前に、他のテーブルでのレコードの削除や修正につながる外部キーの関係やトリガがないことを確認します。

9. 新しいテーブルの名前を、元のテーブルの名前に変更します。

トランザクション・ログ・オフセットの調整は不要です。

ここでは、DBA.Test というテーブルの 1 つのカラムをレプリケートする簡単な ASA 対 ASA のレプリケーション環境を例にして手順を説明します。

この例は、リモート・データベースのテーブルを新しい dbspace に移動する方法を説明しています。ただし、統合データベースも ASA データベースである場合は、手順は完全に同一になります。

統合データベースを構築するスクリプトは、ファイル(1011479_Cons.zip)に含まれています。

レプリケーション環境を構築するには、最初に空白のデータベース・ファイルを作成します。次に、ISQL を開き、READ cons.sql 文を ISQL で実行します (注意:メッセージは D:\TechDocs\Rep\A と D:\TechDocs\Rep\B というフォルダに保存されるものとします)。

dbxtract または Sybase Central を使用して、リモート・ユーザを抽出します。この例では、統合データベースは a.db (A というデータベース名で実行)、リモート・データベースは b.db (B というデータベース名で実行) になっています。

統合データベースとリモート・データベースで sqlremote セッションを何度も実行し、レプリケーション環境をテストします。

次の例は、B にある DBA.Test を新しい dbspace に移動します。

1. 構造とデータの両方を指定して、移動するテーブルをアンロードします。

DBUnload -c “uid=dba;pwd=sql;dbf=D:\Techdocs\Rep\b.db” -r
D:\TechDocs\Rep\BDB\b.sql D:\TechDocs\Rep\BDB

2. DBSpace を作成します。

DBISQL -c “uid=dba;pwd=sq;dbf=D:\TechDocs\Rep\b.db”
Create DBSpace DBS as ‘D:\\TechDocs\\Rep\\B.DBS’

3. reload.sql で文を適用し、移動先のデータベースに新しいテーブルを作成します。テーブル名は新しい名前に置き換えます。

手順 1 で取得した reload.sql の出力に従い、文は次のようになります。

CREATE TABLE “DBA”.”NewTest”
(
“a” integer NOT NULL
) in DBS;

名前が変更されていることに注意してください。

4. INPUT INTO 文または LOAD TABLE 文を ISQL で使用して、生成された .dat ファイルに格納されているデータを新しいテーブルに移植します。

手順 1 で取得した reload.sql の出力に従い、文は次のようになります。

INPUT INTO “DBA”.”Test”
FROM ‘D:\\TECHDOCS\\REP\\BDB\\198.dat’
FORMAT ASCII
BY ORDER

5. 元のテーブルでの外部キー、インデックス、トリガの定義を、新しく作成したテーブルに追加します。

6. 古いテーブルのアーティクルの記述を削除して、パブリケーションを変更します。

ALTER PUBLICATION DBA.APublication DROP TABLE DBA.Test

7. 新しいテーブルのアーティクルの記述を追加して、パブリケーションを変更します。

ALTER PUBLICATION DBA.APublication ADD TABLE DBA.NewTest

8. 元のテーブルを削除します。削除する前に、他のテーブルでのレコードの削除や修正につながる外部キーの関係やトリガがないことを確認します。

DROP TABLE DBA.Test

9. 新しいテーブルの名前を、元のテーブルの名前に変更します。

ALTER TABLE DBA.NewTest RENAME DBA.TEST