【TTS】基于RMAN迁移AIX平台数据库到Linux(第三篇)
1.1 传输数据
文件和元数据到target端
这里需要传输转储元文件和数据文件到目标库
1.1.1 dbca创建target库
[[email protected]_lhrdbca]$ dbca -silent -createDatabase -templateNameGeneral_Purpose.dbc -gdbname oraSKY -sid oraSKY -sysPassword lhr-systemPassword lhr -responseFile NO_VALUE -datafileDestination 'DATA/'-redoLogFileSize 50 -recoveryAreaDestination 'FRA/' -storageType ASM-asmsnmpPassword lhr -diskGroupName'DATA' -characterSet AL32UTF8 -nationalCharacterSetAL16UTF16 -sampleSchema true -memoryPercentage 20 -totalMemory 200-databaseType OLTP -emConfiguration NONE -automaticMemoryManagement true
Copyingdatabase files
1%complete
3%complete
35%complete
Creatingand starting Oracle instance
37%complete
42%complete
47%complete
52%complete
53%complete
56%complete
58%complete
Registeringdatabase with Oracle Restart
64%complete
CompletingDatabase Creation
68%complete
71%complete
75%complete
85%complete
96%complete
100%complete
Lookat the log file "/u01/app/oracle/cfgtoollogs/dbca/oraSKY/oraSKY.log"for further details.
1.1.2 查看目标库数据文件位置和导入目录
[[email protected]_lhrdbs]$ echo $ORACLE_SID
oraSKY
[[email protected]_lhrdbs]$ sqlplus / as sysdba
[email protected]> selectdirectory_name,directory_path from dba_directories;
DIRECTORY_NAME DIRECTORY_PATH
------------------------------ -------------------------------------------------------------------------------
SUBDIR /u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/order_entry//2002/Sep
SS_OE_XMLDIR /u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/order_entry/
LOG_FILE_DIR /u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/log/
MEDIA_DIR /u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/product_media/
XMLDIR /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/xml
DATA_FILE_DIR /u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/sales_history/
DATA_PUMP_DIR /u01/app/oracle/admin/oraSKY/dpdump/
ORACLE_OCM_CONFIG_DIR /u01/app/oracle/product/11.2.0/dbhome_1/ccr/state
已选择8行。
1.1.3 利用ftp工具传输转储元文件到目标库
1.1.4 拷贝文件到目标库相应位置并修改文件权限
[[email protected]_lhr~]# cd /u01/app/oracle/admin/oraSKY/dpdump
[[email protected]_lhrdpdump]# ll
total461108
-rw-r--r--1 root root 204800 Feb 17 2017 dmpfile.dmp
-rw-r--r--1 root root 3943 Feb 17 2017 impscrpt.sql
-rw-r--r--1 root root 104865792 Feb 17 2017o1_mf_test_use_dbflvw0f_.dbf
-rw-r--r--1 root root 314580992 Feb 17 2017o1_mf_users_dbflvvv1_.dbf
…
-rw-r--r--1 root root 5251072 Feb 17 2017 o1_mf_xpaddata_dbflvxjw_.dbf
-rw-r--r--1 root root 5251072 Feb 17 2017 o1_mf_xpaddata_dbflvy06_.dbf
[[email protected]_lhrdpdump]# chown oracle:dba *
[[email protected]_lhrdpdump]# ll
total461108
-rw-r--r--1 oracle dba 204800 Feb 17 2017 dmpfile.dmp
-rw-r--r--1 oracle dba 3943 Feb 17 2017 impscrpt.sql
…
-rw-r--r--1 oracle dba 5251072 Feb 17 2017 o1_mf_xpaddata_dbflvy06_.dbf
[[email protected]_lhrdpdump]#
1.2 target端转换字节序
[[email protected]_lhrdbca]$ rman target /
恢复管理器:Release 11.2.0.3.0 - Production on 星期三 2月 3 00:24:06 2016
Copyright(c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库:ORASKY (DBID=4027046368)
RMAN>CONVERT DATAFILE
2>"/u01/app/oracle/admin/oraSKY/dpdump/o1_mf_test_use_dbflvw0f_.dbf",
3>"/u01/app/oracle/admin/oraSKY/dpdump/o1_mf_users_dbflvvv1_.dbf",
...
13>"/u01/app/oracle/admin/oraSKY/dpdump/o1_mf_xpaddata_dbflvy06_.dbf"
14> TOPLATFORM="Linux x86 64-bit"
15> FROMPLATFORM="AIX-Based Systems (64-bit)"
16>FORMAT '+DATA';
启动 conversionat target 于 2016-02-03 00:24:09
使用目标数据库控制文件替代恢复目录
分配的通道:ORA_DISK_1
通道ORA_DISK_1: SID=147 设备类型=DISK
通道ORA_DISK_1: 启动数据文件转换
输入文件名=/u01/app/oracle/admin/oraSKY/dpdump/o1_mf_users_dbflvvv1_.dbf
已转换的数据文件 =+DATA/orasky/datafile/users.280.902795051
通道ORA_DISK_1: 数据文件转换完毕, 经过时间:00:00:45
…
输入文件名=/u01/app/oracle/admin/oraSKY/dpdump/o1_mf_xpaddata_dbflvy06_.dbf
已转换的数据文件 =+DATA/orasky/datafile/xpaddata.298.902795133
通道ORA_DISK_1: 数据文件转换完毕, 经过时间:00:00:01
完成 conversionat target 于 2016-02-03 00:25:34
1.3 开始导入
1.3.1 创建source库的需要迁移的3个用户并赋权限(前边的脚本已经生成,直接拿过来执行)
如果不创建用户会报如下的错误:
ORA-39123: DataPump transportable tablespace job aborted
ORA-29342: userUSER_APP1 does not exist in the database
createuser TEST1 identified by TEST1 TEMPORARYTABLESPACE TEMP;
GRANTUNLIMITED TABLESPACE TO TEST1;
GRANTCONNECT TO TEST1;
GRANTRESOURCE TO TEST1;
GRANTWRITE ON SYS.TEST_DIR TO TEST1;
GRANTREAD ON SYS.TEST_DIR TO TEST1;
GRANTWRITE ON SYS.TEST_LOG TO TEST1;
GRANTREAD ON SYS.TEST_LOG TO TEST1;
createuser XPADAD identified by XPADAD TEMPORARY TABLESPACE TEMP;
GRANTCREATE VIEW TO XPADAD;
GRANTUNLIMITED TABLESPACE TO XPADAD;
GRANTCREATE DATABASE LINK TO XPADAD;
GRANTDBA TO XPADAD;
GRANTCONNECT TO XPADAD;
GRANTRESOURCE TO XPADAD;
createuser T identified by T default TEMPORARY TABLESPACE TEMP;
GRANTUNLIMITED TABLESPACE TO T;
GRANTRESOURCE TO T;
GRANTCONNECT TO T;
GRANTWRITE ON SYS.TT TO T;
GRANTREAD ON SYS.TT TO T;
1.3.2 开始导入
[[email protected]_lhrdbca]$ impdp \'/ as sysdba \' DUMPFILE=dmpfile.dmpDIRECTORY=DATA_PUMP_DIR TRANSPORT_DATAFILES='+data/ORASKY/datafile/XPADDATA.298.902795133','+data/ORASKY/datafile/XPADDATA.297.902795133','+data/ORASKY/datafile/XPADDATA.296.902795129','+data/ORASKY/datafile/XPADDATA.281.902795127','+data/ORASKY/datafile/XPADDATA.277.902795121','+data/ORASKY/datafile/XPADDATA.276.902795121','+data/ORASKY/datafile/XPADDATA.275.902795123','+data/ORASKY/datafile/XPADDATA.270.902795125','+data/ORASKY/datafile/XPADDATA.268.902795127','+data/ORASKY/datafile/XPADDATA.267.902795125','+data/ORASKY/datafile/USERS.292.902793265','+data/ORASKY/datafile/TEST_USER1.278.902795095'LOGFILE=impdp_tts_20160202.log
可能会有报错
ORA-39123:数据泵可传输的表空间作业中止
ORA-29349:表空间 'USERS' 已存在
作业"SYS"."SYS_IMPORT_TRANSPORTABLE_01" 因致命错误于 00:35:50 停止
users表空间已经存在了,这里把target端的users表空间重命名一下就可以了:
[[email protected]_lhrdbca]$ sqlplus / as sysdba
[email protected]> alter tablespace users rename tousers01;
表空间已更改。
继续导入
Import:Release 11.2.0.3.0 - Production on 星期三 2月 3 00:40:46 2016
已成功加载/卸载了主表 "SYS"."SYS_IMPORT_TRANSPORTABLE_01"
启动"SYS"."SYS_IMPORT_TRANSPORTABLE_01": "/******** AS SYSDBA"DUMPFILE=dmpfile.dmp DIRECTORY=DATA_PUMP_DIR TRANSPORT_DATAFILES=+data/ORASKY/datafile/XPADDATA.298.902795133,+data/ORASKY/datafile/XPADDATA.297.902795133,+data/ORASKY/datafile/XPADDATA.296.902795129,+data/ORASKY/datafile/XPADDATA.281.902795127,+data/ORASKY/datafile/XPADDATA.277.902795121,+data/ORASKY/datafile/XPADDATA.276.902795121,+data/ORASKY/datafile/XPADDATA.275.902795123,+data/ORASKY/datafile/XPADDATA.270.902795125,+data/ORASKY/datafile/XPADDATA.268.902795127,+data/ORASKY/datafile/XPADDATA.267.902795125,+data/ORASKY/datafile/USERS.280.902795051,+data/ORASKY/datafile/TEST_USER1.278.902795095LOGFILE=impdp_tts_20160202.log
处理对象类型TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型TRANSPORTABLE_EXPORT/TABLE
ORA-39151:表 "SCOTT"."EMP" 已存在。由于跳过了 table_exists_action, 将跳过所有相关元数据和数据。
处理对象类型TRANSPORTABLE_EXPORT/INDEX/INDEX
处理对象类型TRANSPORTABLE_EXPORT/INDEX_STATISTICS
处理对象类型TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
作业"SYS"."SYS_IMPORT_TRANSPORTABLE_01" 已经完成, 但是有 1 个错误 (于 00:40:51 完成)
1.3.2.1 报错:source和target的compatible参数不同引起ora-00721错误
[[email protected]_lhrdbs]$ impdp \'/ as sysdba \' DUMPFILE=dmpfile.dmp DIRECTORY=DATA_PUMP_DIRTRANSPORT_DATAFILES='+DATA/orclasm/datafile/app1tbs.271.90278175','+DATA/orclasm/datafile/APP2TBS.276.902781757','+DATA/orclasm/datafile/IDXTBS.279.902781761'LOGFILE=impdp_tts_20160202.log version=latest
已成功加载/卸载了主表 "SYS"."SYS_IMPORT_TRANSPORTABLE_01"
启动"SYS"."SYS_IMPORT_TRANSPORTABLE_01": "/******** AS SYSDBA"DUMPFILE=dmpfile.dmp DIRECTORY=DATA_PUMP_DIRTRANSPORT_DATAFILES=+DATA/orclasm/datafile/app1tbs.271.90278175,+DATA/orclasm/datafile/APP2TBS.276.902781757,+DATA/orclasm/datafile/IDXTBS.279.902781761LOGFILE=impdp_tts_20160202.log version=latest
处理对象类型TRANSPORTABLE_EXPORT/PLUGTS_BLK
ORA-39123:数据泵可传输的表空间作业中止
ORA-00721:发行版 11.2.0.4.0 中的更改无法用于发行版 11.2.0.3.0
作业"SYS"."SYS_IMPORT_TRANSPORTABLE_01" 因致命错误于 21:04:37 停止
[[email protected]_lhrdbs]$ sqlplus / as sysdba
21:04:[email protected] > show parameter com
NAME TYPE VALUE
----------------------------------------------- ------------------------------
cell_offload_compaction string ADAPTIVE
commit_logging string
commit_point_strength integer 1
commit_wait string
commit_write string
compatible string 11.2.0.3.0
nls_comp string BINARY
plsql_v2_compatibility boolean FALSE
21:05:[email protected] >
解决办法:保持source和target的版本一致,或source端小于等于target端,若版本一致,则修改target端的compatible参数和source端一致。
1.3.3 查看目标平台信息
[[email protected]_lhrdbca]$ sqlplus / as sysdba
[email protected]> alter tablespace TEST_USER1 readwrite;
表空间已更改。
[email protected]> alter tablespace USERS read write;
表空间已更改。
[email protected]> alter tablespace XPADDATA readwrite;
表空间已更改。
[email protected]> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------------------------------------------------------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS01 ONLINE
EXAMPLE ONLINE
TEST_USER1 ONLINE
USERS ONLINE
XPADDATA ONLINE
已选择9行。
1.4 导入完成后的结果校验
1.4.1 校验用户情况(密码、默认表空间、角色和权限,需迁移的schema对象大小、个数、列表)
1.4.1.1 校验用户
1.4.1.2 用户对象个数
1.4.1.3 对象详细信息
1.4.2 无效对象情况
1.4.3 索引情况
1.5 迁移后续收尾工作
确保数据已经完全迁移到新的主机上后,接下来就是一些琐碎的收尾工作,包括sys密码,监听,job,crontab等等工作。
1.6 总结
到此所有的处理算是基本完毕,过程很简单,但是不同的场景处理方式有很多种,我们应该学会灵活变通。
本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
ITPUB BLOG:http://blog.itpub.net/26736162
本文地址:http://blog.itpub.net/26736162/viewspace-1987971/
本文pdf版:http://yunpan.cn/cdEQedhCs2kFz (提取码:ed9b)
QQ:642808185 若加QQ请注明您所正在读的文章标题
于 2016-01-26 10:00~2016-02-06 19:00 在中行完成