一 数据库逻辑迁移 描述
数据库逻辑迁移主体包含三大步骤。 1) 源端数据库全库导出,并生成 *.dmp 文件; 2) 将源端 *.dmp 文件拷贝至目标端; 3) 将 *.dmp 数据全库导入目标数据库。在数据迁移至目标数据库后,目标库的某些对象可能处于失效状态, 需要执行 @?/rdbms/admin/ultrp.sql 脚本对无效对象进行重编译处理,编译之后可进行业务测试,验证数据的可用性和完整性。
二 源库导出
查看源库字符集
确认源库数据库字符集
|
SQL> col value for a60 SQL> set line 200 SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET'; PARAMETER VALUE ------------------------------ ------------------------------------------------------------ NLS_CHARACTERSET ZHS16GBK |
统计源库表空间数据量
查看源库当前表空间实际数据量
|
SQL> set line 200 SQL> set pagesize 0 SQL> select tablespace_name,sum(bytes)/1024/1024/1024 G from dba_segments group by tablespace_name order by sum(bytes)/1024/1024/1024 desc; KYERP 106.169922 NNC_DATA03 62.800354 INDX 61.12677 NNC_INDEX03 57.1514282 NNC_DATA01 36.8331299 IUFO 11.3796997 SYSTEM 2.91809082 NNC_INDEX01 2.49285889 NNC_DATA02 2.44415283 NNC_INDEX02 1.9274292 USERS 1.77923584 SYSAUX 1.33441162 UNDOTBS1 .477783203 PERFSTAT .154052734 KYBB .005371094 TEST .000061035 |
查看源库目录对象
使用 DataPump 全库导出需要指定目录对象参数,以下返回结果为默认的目录对象。建议不要采用默认的目录对象,可手动创建目录对象(即自定义)
|
SQL> col directory_path for a60 SQL> set line 200 SQL> select * from dba_directories; OWNER DIRECTORY_NAME DIRECTORY_PATH ---------- -------------------- ------------------------------------------ SYS XMLDIR /oracle/app/product/11.2.0/db_1/rdbms/xml SYS DATA_PUMP_DIR /oracle/app/admin/orcl/dpdump/ |
手动创建目录对象 dumpdir ,确保操作系统层面存在 /backup 目录结构及预留足够的磁盘空间
|
create directory dumpdir as '/backup'; grant all on directory dumpdir to public; |
源库全库导出
源库导出并开启 4 个并行
|
$cd /backup $curr_date=`date +%Y%m%d%H%M%S` $export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK $ nohup expdp "'"/ as sysdba"'" directory=dumpdir dumpfile=fulldb_${curr_date}_%U.dmp logfile=fulldb_${curr_date}.log full=y PARALLEL=4 EXCLUDE=STATISTICS & |
三 拷贝*.dmp 文件至目标端/backup
源库*.dmp 文件确认
|
$ ls -rtl-rw-r----- 1 oracle dba 10496659456 Jul 23 00:06 fulldb_20170722185135_04.dmp-rw-r----- 1 oracle dba 50410315776 Jul 23 00:06 fulldb_20170722185135_03.dmp-rw-r----- 1 oracle dba 51765604352 Jul 23 00:06 fulldb_20170722185135_02.dmp-rw-r----- 1 oracle dba 66040819712 Jul 23 00:06 fulldb_20170722185135_01.dmp-rw-r--r-- 1 oracle dba 2870936 Jul 23 00:06 fulldb_20170722185135.log |
确认成功导出
|
Master table "SYS"."SYS_EXPORT_FULL_01" successfully loaded/unloaded******************************************************************************Dump file set for SYS.SYS_EXPORT_FULL_01 is: /backup/fulldb_20170722185135_01.dmp /backup/fulldb_20170722185135_02.dmp /backup/fulldb_20170722185135_03.dmp /backup/fulldb_20170722185135_04.dmpJob "SYS"."SYS_EXPORT_FULL_01" successfully completed at 00:06:26 |
将源端*.dmp 文件传至目标端
ftp 传输 dmp 文件
|
$cd /backup $ ftp 10.10.1.5 ftp> bin ftp> prompt ftp> lcd /backup ftp> cd /backup ftp> mput *.dmp |
目标端确认*.dmp
确认目标端 dmp 文件与源端 dmp 大小一致
|
[oracle@ncdb02 backup]# ls -rlt-rw-r--r-- 1 oracle oinstall 2870936 Jul 23 00:25 fulldb_20170722185135.log-rw-r--r-- 1 oracle oinstall 66040819712 Jul 23 00:44 fulldb_20170722185135_01.dmp-rw-r--r-- 1 oracle oinstall 51765604352 Jul 23 01:01 fulldb_20170722185135_02.dmp-rw-r--r-- 1 oracle oinstall 50410315776 Jul 23 01:41 fulldb_20170722185135_03.dmp-rw-r--r-- 1 oracle oinstall 10496659456 Jul 23 01:50 fulldb_20170722185135_04.dmp |
四 目标库导入
查看目标库字符集
确认目标库数据库字符集
|
SQL> col value for a60 SQL> set line 200 SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET'; PARAMETER VALUE ------------------------------ ------------------------------------------------------------ NLS_CHARACTERSET ZHS16GBK |
目标库创建源库对应表空间
目标库表空间与源库表空间要保持一致
|
create tablespace KYERP datafile '+DATA/ncerp/kyerp01.dbf' size 30g autoextend off; alter tablespace KYERP add datafile '+DATA/ncerp/kyerp02.dbf' size 30g autoextend off; alter tablespace KYERP add datafile '+DATA/ncerp/kyerp03.dbf' size 30g autoextend off; alter tablespace KYERP add datafile '+DATA/ncerp/kyerp04.dbf' size 30g autoextend off; create tablespace NNC_DATA03 datafile '+DATA/ncerp/nnc_data03_01.dbf' size 30g autoextend off; alter tablespace NNC_DATA03 add datafile '+DATA/ncerp/nnc_data03_02.dbf' size 30g autoextend off; alter tablespace NNC_DATA03 add datafile '+DATA/ncerp/nnc_data03_03.dbf' size 30g autoextend off; create tablespace INDX datafile '+DATA/ncerp/indx01.dbf' size 30g autoextend off; alter tablespace INDX add datafile '+DATA/ncerp/indx02.dbf' size 30g autoextend off; alter tablespace INDX add datafile '+DATA/ncerp/indx03.dbf' size 30g autoextend off; create tablespace NNC_INDEX03 datafile '+DATA/ncerp/nnc_index03_01.dbf' size 30g autoextend off; alter tablespace NNC_INDEX03 add datafile '+DATA/ncerp/nnc_index03_02.dbf' size 30g autoextend off; alter tablespace NNC_INDEX03 add datafile '+DATA/ncerp/nnc_index03_03.dbf' size 30g autoextend off; create tablespace NNC_DATA01 datafile '+DATA/ncerp/nnc_data01_01.dbf' size 30g autoextend off; alter tablespace NNC_DATA01 add datafile '+DATA/ncerp/nnc_data01_02.dbf' size 30g autoextend off; create tablespace IUFO datafile '+DATA/ncerp/iufo01.dbf' size 30g autoextend off; create tablespace NNC_INDEX01 datafile '+DATA/ncerp/nnc_index01_01.dbf' size 10g autoextend on next 1g maxsize 30g; create tablespace NNC_DATA02 datafile '+DATA/ncerp/nnc_data02_01.dbf' size 10g autoextend on next 1g maxsize 30g; create tablespace NNC_INDEX02 datafile '+DATA/ncerp/nnc_index02_01.dbf' size 10g autoextend on next 1g maxsize 30g; create tablespace PERFSTAT datafile '+DATA/ncerp/perfstat.dbf' size 1g autoextend on next 1g maxsize 30g; create tablespace KYBB datafile '+DATA/ncerp/kybb01.dbf' size 1g autoextend on next 1g maxsize 30g; create tablespace TEST datafile '+DATA/ncerp/test01.dbf' size 1g autoextend on next 1g maxsize 30g; |
查看目标库表空间预分配空间
目标库表空间的预分配空间确保大于源库对应表空间的实际使用空间
|
SQL> select tablespace_name,sum(bytes)/1024/1024/1024 G from dba_data_files where tablespace_name in ('KYERP','NNC_DATA03','NNC_INDEX03','INDX','NNC_DATA01','IUFO','NNC_DATA02','NNC_INDEX01','NNC_INDEX02','TEST','PERFSTAT','KYBB') group by tablespace_name order by sum(bytes)/1024/1024/1024 desc; KYERP 150 NNC_DATA03 120 NNC_INDEX03 90 INDX 90 NNC_DATA01 60 IUFO 30 NNC_INDEX01 10 NNC_DATA02 10 NNC_INDEX02 10 TEST 1 KYBB 1 PERFSTAT 1 |
查看目标库目录对象
使用 DataPump 全库导入需要指定目录对象参数,以下返回结果为默认的目录对象。建议不要采用默认的目录对象,可手动创建目录对象(即自定义)
|
SQL> col directory_path for a60 SQL> set line 200 SQL> select * from dba_directories; OWNER DIRECTORY_NAME DIRECTORY_PATH ---------- -------------------- ------------------------------------------ SYS XMLDIR /oracle/app/product/11.2.0/db_1/rdbms/xml SYS DATA_PUMP_DIR /oracle/app/admin/orcl/dpdump/ |
手动创建目录对象 dumpdir ,确保在操作系统层面存在 /backup 目录结构及足够的磁盘空间
|
create directory dumpdir as '/backup'; grant all on directory dumpdir to public; |
目标库全库导入
|
$export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK $nohup impdp "'"/ as sysdba"'" directory=dumpdir dumpfile=fulldb_20170722185135_%U.dmp logfile=fulldb_20170723_impdp.log full=y PARALLEL=4 CLUSTER=n & |
目标库编译无效对象
无效对象重新编译
|
SQL> @?/rdbms/admin/utlrp.sql |
目标库统计对象收集
数据库相关对象统计信息收集
|
SQL> exec dbms_stats.gather_fixed_objects_stats; SQL> exec dbms_stats.gather_dictionary_stats(estimate_percent=>10,Degree=>8,Cascade=>TRUE,Granularity=>'ALL'); SQL> exec dbms_stats.gather_database_stats(estimate_percent=>10,Degree=>8,Cascade=>TRUE,Granularity=>'ALL'); |
目标库连接测试
在新服务器本地测试目标库连接
|
sqlplus system/oracle@10.10.1.8:1521/ncerp sqlplus system/oracle@10.10.1.7:1521/ncerp sqlplus system/oracle@10.10.1.6:1521/ncerp sqlplus system/oracle@10.10.1.5:1521/ncerp sqlplus system/oracle@10.10.1.4:1521/ncerp |
