数据库升级之-数据泵

来源:这里教程网 时间:2026-03-03 16:04:36 作者:

数据库逻辑迁移 描述

数据库逻辑迁移主体包含三大步骤。 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

相关推荐