安装和升级 > 升级指南 > Windchill 升级过程 > 暂存源数据以进行升级 > 导入数据库 > 使用 Data Pump 导入 Windchill Oracle 转储
  
使用 Data Pump 导入 Windchill Oracle 转储
此过程介绍如何使用 Oracle Data Pump 实用程序将源系统的 Windchill 模式导入到目标系统中。该过程假定您熟悉 Oracle Data Pump 工具并具有访问此工具的文档的权限。PTC 建议将源模式用户名用作目标模式用户名。
应创建 <database_directory>,并向用户系统授予读写权限。有关详细信息,请参阅 Oracle 文档。
1. 确保已将 source_db_dump_file 从源系统复制到目标系统的 <database_directory> 位置。
2. 通过 SQL*Plus,以管理员用户的身份登录到目标数据库,并使用 <Windchill>/db/sql/create_user.sql 脚本创建目标模式用户名。
3. 通过 SQL*Plus 以目标模式用户名登录到目标数据库,并执行以下脚本:
WTReversePK.sql
WTPrefixPK.sql
WipPk.sql
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
使用 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