Data Pump を使用した Windchill Oracle ダンプのインポート
この手順では、Oracle Data Pump ユーティリティを使用してソースシステムの Windchill スキーマをターゲットシステムにインポートする方法を説明します。この手順では、ユーザーが Oracle Data Pump ツールに習熟していて、このツールのドキュメンテーションを参照できることを前提としています。PTC は、ソーススキーマのユーザー名をターゲットスキーマのユーザー名として使用することをお勧めします。
<データベースディレクトリ> を作成し、このディレクトリに対する読み取りと書き込みの権限をユーザー System に付与する必要があります。詳細については、Oracle ドキュメンテーションを参照してください。
1. source_db_dump_file がソースデータベースから、ターゲットシステムの <データベースディレクトリ> の場所にコピーされていることを確認します。
2. PTC Solution Installer の Oracle 設定ユーティリティを使用して、ターゲットスキーマユーザーを作成します。詳細については、インストール後のアクティビティの「Windchill サーバーと連動させるための Oracle データベースの設定」セクションを参照してください。
3. SQL*Plus を使用して、このターゲットスキーマユーザー名でターゲットデータベースにログインし、次のスクリプトを実行します。
WTReversePK.sql
WTPrefixPK.sql
WipPk.sql
これらのファイルは Windchill\db\sql\wnc\Foundation\nonmodeled\procedures にあります。
4. Data Pump ユーティリティを使用した Oracle ダンプのインポートたとえば、次のコマンドを実行します。
impdp system/<Password>@<targetdbsid> SCHEMAS=<sourcedb_username> DIRECTORY=<database_directory> DUMPFILE=<source_db_dump_file> logfile=<db_imp.log>
impdp ユーティリティの詳細については、Oracle ドキュメンテーションを参照してください。
次に示す警告は無視して構いません。
ORA-31684: Object type USER:"SOURCEUSER" already existsORA-39112: Dependent object type INDEX_STATISTICS skipped,base object type INDEX
5. index_dump_file.dmp ファイルを使用して Oracle 19C データベースを使用している場合は、次のコマンドを実行して統計をインポートします。
impdp system/<Password>@<sid> SCHEMAS=<source_dbusername> DIRECTORY=<database_directory>
dumpfile=<index_dump_file.dmp> logfile=<db_imp.log> include=statistics
Data Pump を使用した別のターゲットスキーマユーザー名へのインポート
別のターゲットスキーマユーザー名にインポートする場合は、次の追加ステップを行う必要があります。
1. 前述のステップ 4 に示した import コマンドの代わりに、たとえば次のようなコマンドを使用します。
impdp system/<Password>@<targetdbsid> directory=<database_directory>
dumpfile=<db_dump_file> logfile= <db_imp.log>
remap_schema=<sourcedb_username>:<targetdb_username> transform=OID:n
2. インデックスの作成に関して impdp ユーティリティから出される、次のようなエラーに対処します。
ORA-39083: Object type INDEX failed to create with error:
ORA-00904: "TEST"."WIPPK"."GETNORMALIZEDWIPSTATE": invalid identifier
Failing sql is:
CREATE UNIQUE INDEX "RVANG1"."VARIANTSPEC$UNIQUE50" ON "RVANG1"."VARIANTSPEC" ("IDA3MASTERREFERENCE", "VERSIONIDA2VERSIONINFO", "ITERATIONIDA2ITERATIONINFO", "RVANG"."WIPPK"."GETNORMALIZEDWIPSTATE"("STATECHECKOUTINFO"), "ONEOFFVERSIONIDA2ONEOFFVERSI") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 24576 NEXT 24576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREA
こうした機能ベースのインデックスでは、元のデータベースユーザーアカウントのパッケージが参照されます。これらのインデックスは手動で作成する必要があります。インデックスの手動作成を実行するには、<Windchill>/db/sql 内で、たとえば "EPMDOCUMENT$UNIQUE" を含むファイルをサーチし、そのファイルを開きます。このファイルはインデックス定義を含んでいます。対応する SQL を実行してインデックスを作成します (ストレージパラメータの調整が必要になる場合があります)。作成に失敗したすべてのインデックスに対してこの手順を繰り返します。
3. インポートログに示されている次のエラーに対処します。
ORA-39082: Object type PACKAGE_BODY:"SourceUser"."BASELINEPK" created with compilation warnings
ORA-39082: Object type PACKAGE_BODY:" SourceUser "."EPMWORKSPACEPK" created with compilation warnings
これらのエラーが発生した場合は、ターゲットデータベースユーザーとして次のステートメントを実行して、無効なパッケージと package_bodies を再コンパイルする必要があります。
SQL> alter package BASELINEPK compile body;
SQL> alter package EPMWORKSPACEPK compile body;
上記の手順が完了すると、新しいデータベースアカウントには、セグメントのストレージパラメータを含む、元のデータベースアカウントとまったく同じデータが含まれます。
インポートプロセスで、ほかの ORA-XXXXX エラーが発生する場合には、現場のデータベース管理者に連絡してください。
前記の手順が完了すると、新しいデータベースユーザーアカウントには、セグメントのストレージパラメータを含む、元のデータベースユーザーアカウントとまったく同じデータが含まれます。このことを確認するには、ソースとターゲットの両方のデータベースに対して次の SQL ステートメントを実行して、結果を比較します。
SQL> select count(*), object_type from user_objects group by object_type;
COUNT(*) OBJECT_TYPE
---------- -------------------
45 SEQUENCE
17 PACKAGE BODY
17 PACKAGE
423 LOB
2 TRIGGER
857 TABLE
2438 INDEX
53 TYPE
これは役に立ちましたか?