概要:この文書では、データベース・ファイル全体を再構築せずに、パブリケーションに含まれるテーブルを別の 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
|