使用 Data Pump 导入 Windchill Oracle 转储
此过程介绍如何使用 Oracle Data Pump 实用程序将源系统的 Windchill 模式导入到目标系统中。该过程假定您熟悉 Oracle Data Pump 工具并具有访问此工具的文档的权限。PTC 建议将源模式用户名用作目标模式用户名。
应创建 <database_directory>,并向用户系统授予读写权限。有关详细信息,请参阅 Oracle 文档。
1. 确保已将 source_db_dump_file 从源系统复制到目标系统的 <database_directory> 位置。
2. 使用 PTC 解决方案安装程序中的 Oracle 配置实用程序创建目标架构用户。有关详细信息,请参阅
后安装的活动中的“配置远程 Oracle 数据库,与 Windchill 服务器一起工作”部分。
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. 如果您正在使用 Oracle 19C 数据库和 index_dump_file.dmp 文件,请执行以下命令以导入统计信息。
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 中的导入命令:
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