将Oracle单实例迁移到RAC实例上有两种方法:
1.使用RMAN复制
2.使用逻辑导出导入(exp/imp)或者数据泵(expdp/impdp)
这篇演示用数据泵(expdp/impdp)将单实例迁移到RAC环境。导出导入schema方式来进行。逻辑导出导入相对数据泵而言,更简单一点。
这里假设RAC环境已经搭建好了。如果没有搭建好,可以参考我的Blog:
Redhat 5.4 + ASM + RAW+ Oracle 10g RAC安装文档
http://blog.csdn.net/xujinyang/article/details/6837265
导出导入参考:
Oracle 10g EXPDP和IMPDP使用说明
http://blog.csdn.net/xujinyang/article/details/6830446
ORACLE数据库逻辑备份简单EXP/IMP
http://blog.csdn.net/xujinyang/article/details/6830199
测试过程如下:
1.现在本地库上创建用户Dave,与值对应的表空间。
2.用Dave登陆,创建相关的表。
3.将Dave用户的表空间导出
4.将dump文件导入到RAC实例
一.在本地库上创建表空间,用户
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF
D:/APP/ADMINISTRATOR/ORADATA/ORCL/UNDOTBS01.DBF
D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSAUX01.DBF
D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSTEM01.DBF
D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF
D:/APP/ADMINISTRATOR/ORADATA/ORCL/DBA1.DBF
D:/APP/ADMINISTRATOR/ORADATA/ORCL/CATALOG1.DBF
D:/APP/ADMINISTRATOR/ORADATA/ORCL/CATALOG_TS1.DBF
已选择8行。
SQL> create tablespace tianlesoftware datafile
'D:/APP/ADMINISTRATOR/ORADATA/ORCL/tianlesoftware.dbf' size 50m;
表空间已创建。
SQL> create user dave identified by dave default tablespace tianlesoftware temporary tablespace temp;
用户已创建。
SQL> grant dba to dave;
授权成功。
SQL> grant connect to dave;
授权成功。
SQL> grant resource to dave;
授权成功。
SQL>
二.用dave登陆,创建相关表
SQL> create table userinfo(name varchar2(10),hometown varchar2(20));
表已创建。
SQL> insert into userinfo values('dave','安徽省安庆市怀宁县');
已创建1行。
SQL> commit;
提交完成。
SQL> insert into userinfo values('Tianle','安徽省安庆市怀宁县');
已创建1行。
SQL> commit;
提交完成。
SQL> select * from userinfo;
NAMEHOMETOWN
---------- --------------------
dave安徽省安庆市怀宁县
Tianle安徽省安庆市怀宁县
SQL>
三.用数据泵导出Dave用户的表空间
3.1创建directory并赋权
SQL> conn / as sysdba;
已连接。
SQL> create directory backup as 'e:/tmp';
目录已创建。
SQL> grant read,write on directory backup to dave;
授权成功。
SQL> select * from dba_directories;
OWNERDIRECTORY_NAMEDIRECTORY_PATH
------------------------------ ------------------------------ ------------------
SYSBACKUPe:/tmp
3.2导出Dave schema - - - SCHEMA与用户对应
[oracle@localhost ~]$ expdp dave/dave DIRECTORY=backup DUMPFILE=tianlesoftware.dmp SCHEMAS=Dave logfile=exp.log;
Export: Release 10.2.0.1.0 - Production on Tuesday, 28 September, 2010 15:12:36
Copyright (c) 2003, 2005, Oracle.All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Starting "DAVE"."SYS_EXPORT_SCHEMA_01":dave/******** DIRECTORY=backup DUMPFILE=tianlesoftware.dmp SCHEMAS=Dave logfile=exp.log
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
. . exported "DAVE"."USERINFO"5.25 KB2 rows
Master table "DAVE"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for DAVE.SYS_EXPORT_SCHEMA_01 is:
/u01/tianlesoftware.dmp
Job "DAVE"."SYS_EXPORT_SCHEMA_01" successfully completed at 15:13:32
四.将dump文件导入RAC
RAC状态:
[oracle@rac2 bin]$ crs_stat -t
NameTypeTargetStateHost
------------------------------------------------------------
ora.orcl.dbapplicationONLINEONLINErac1
ora....oltp.cs applicationONLINEONLINErac2
ora....cl1.srv applicationONLINEONLINErac1
ora....cl2.srv applicationONLINEONLINErac2
ora....l1.inst applicationONLINEONLINErac1
ora....l2.inst applicationONLINEONLINErac2
ora....SM1.asm applicationONLINEONLINErac1
ora....C1.lsnr applicationONLINEONLINErac1
ora.rac1.gsdapplicationONLINEONLINErac1
ora.rac1.onsapplicationONLINEONLINErac1
ora.rac1.vipapplicationONLINEONLINErac1
ora....SM2.asm applicationONLINEONLINErac2
ora....C2.lsnr applicationONLINEONLINErac2
ora.rac2.gsdapplicationONLINEONLINErac2
ora.rac2.onsapplicationONLINEONLINErac2
ora.rac2.vipapplicationONLINEONLINErac2
4.1创建相关用户和表空间
SQL>select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
+DATA/orcl/datafile/users.279.730181053
+DATA/orcl/datafile/sysaux.277.730181053
+DATA/orcl/datafile/undotbs1.278.730181053
+DATA/orcl/datafile/system.276.730181051
+DATA/orcl/datafile/undotbs2.284.730181347
+DATA/orcl/datafile/anhuianqing.dbf
6 rows selected.
SQL>create tablespace tianlesoftware datafile '+DATA/orcl/datafile/tianlesoftware.dbf' size 50m;
Tablespace created.
SQL>create user dave identified by dave default tablespace tianlesoftware temporary tablespace temp;
User created.
SQL> grant dba to dave;
Grant succeeded.
SQL> grant connect to dave;
Grant succeeded.
SQL> grant resource to dave;
Grant succeeded.
SQL>
4.2创建导入directory
SQL> create directory backup as '/u01';
Directory created.
SQL> grant read,write on directory backup to dave;
Grant succeeded.
SQL> set wrap off
SQL> select * from dba_directories;
OWNERDIRECTORY_NAMEDIRECTORY_PATH
------------------------------ ------------------------------ ------------------
SYSADMIN_DIR/ade/aime_10.2_lnx
SYSDATA_PUMP_DIR/u01/app/oracle/pr
SYSWORK_DIR/ade/aime_10.2_lnx
SYSBACKUP/u01
4.3开始导入
导入之前需要将导出的dump文件copy到backup directory目录下,即/u01。Windows到linux的话,mount过去,linux到linux用SCP命令就可以了。
导入数据:
[oracle@rac1 u01]$export ORACLE_SID=orcl1
[oracle@rac1 u01]$impdp dave/dave DIRECTORY=BACKUP DUMPFILE=tianlesoftware.dmp SCHEMAS=DAVE logfile=impdp.log;
Import: Release 10.2.0.1.0 - Production on Tuesday, 28 September, 2010 6:32:42
Copyright (c) 2003, 2005, Oracle.All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
Master table "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_SCHEMA_01":system/******** DIRECTORY=BACKUP DUMPFILE=tianlesoftware.dmp SCHEMAS=DAVE logfile=impdp.log
Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"DAVE" already exists
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "DAVE"."USERINFO"5.25 KB2 rows
Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" completed with 1 error(s) at 06:33:51
这里要注意,要指定ORACLE_SID,不然会报如下错误:
UDI-00008: operation generated ORACLE error 1034
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory
UDI-00003: all allowable logon attempts failed
验证:
SQL> conn dave/dave;
Connected.
SQL> select * from userinfo;
NAMEHOMETOWN
---------- --------------------
dave安徽省安庆市怀宁县
Tianle安徽省安庆市怀宁县
[oracle@rac2 bin]$export ORACLE_SID=orcl2
[oracle@rac2 bin]$sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 28 06:54:45 2010
Copyright (c) 1982, 2005, Oracle.All rights reserved.
SQL> conn dave/dave;
Connected.
SQL> select * from userinfo;
NAMEHOMETOWN
---------- --------------------
dave安徽省安庆市怀宁县
Tianle安徽省安庆市怀宁县
如果在导入之前,禁用了相关的触发器,那么在导入之后要启用它们。并且还要检查是否有无效的procedure, function, packages, job等。如果有,重新编译一下。
方法参考:
Oracle Compile编译无效对象
http://blog.csdn.net/xujinyang/article/details/6830032
一些注意事项:
(1)导出导入之前检查每个table之间是否有严格的关联,比如PK, FK ,使用如下SQL查找,如果有,DISABLE先。
select * from all_constraints where constraint_type='R' and OWNER='DAVE' ;
(2)自动归档模式下,导入数据的时候注意手工清理归档。
(3)如果在导出时,如果只导结构,如exp使用了rows=n,或者expdp使用了content=metadata_only都会导致导入后再次分析表的时候报ora-20005这个错误。我们需要在exprows=n的时候加入statistics=none。或者在expdpcontent=metadata_only的时候使用exclude=(table_statistics,index_statistics)来避免这个错误的发生。
也就是说导出没有数据的结构的时候不需要导出统计信息。如果导出后,在导入时,统计信息会出于锁定状态,必须使用execute DBMS_STATS.UNLOCK_TABLE_STATS('<user name>','<table name>');来帮所有table解掉统计信息上的锁,否则不能再次统计。
如果是先导入结构,注意先Disable Trigger及相关可能触发的Job,导入完成后再开启。
在只导结构的情况下,Table, Index统计信息的一个说明:
因为导入的时候没有包含统计信息,所以需要重新收集统计。
exec dbms_stats.gather_schema_stats(ownname => 'dave',estimate_percent => dbms_stats.auto_sample_size,
method_opt => 'for all columns sizeauto',
cascade=>TRUE,
degree => 8 ) ;
如果在expdp的时候没有加入exclude=(table_statistics,index_statistics),这时就会碰到类似下面的错误:
ERROR at line 1:
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at "SYS.DBMS_STATS", line 13437
ORA-06512: at "SYS.DBMS_STATS", line 13457
ORA-06512: at line 1
解决方法:解锁:
找到这些table,index
select owner, table_name, stattype_locked from dba_tab_statistics where stattype_locked is not null and owner='DAVE' ;
批量修改为unlock .
select'execdbms_stats.unlock_table_stats(''DFMS'','''||table_name||'''); 'fromsys.dba_tab_statistics where stattype_locked is not null andwner='DFMS' ;
上面只是简单的测试,对于生产环境的搬迁,还是那句话:具体情况具体对待。在搬迁之前最好在测试环境上测试一下。
------------------------------------------------------------------------------
分享到:
相关推荐
Oracle 11.2.0.3 单实例 迁移到 11gR2 RAC 案例-- 使用RMAN 异机恢复 注:文档打开密码见压缩包注释
Oracle单机通过rman迁移到RAC集群
单实例迁移到Oracle RAC最佳实践,非常的详细,很不错
Oracle 11.2.0.3 单实例 迁移到 11gR2 RAC 案例-- 使用RMAN 异机恢复
Oracle单机通过rman迁移到RAC集群
本文详细介绍如何讲oracle rac的数据库数据进行迁移备份,配有图文,适合做做实验在再去实践
【Oracle-RAC】Linux--Oracle-11g-R2-RAC-安装配置详细过程V3.0(图文并茂)
单实例转RAC-数据库迁移
oracle 12c RAC白皮书 rac-wp-12c
OGG 12c Oracle RAC到单实例同步 归档在本地搭建案例
Oracle Data Guard RAC TO RAC迁移方案(基于rman备份)V1.1.pdf
oracle 高可用 dataguard 单机到RAC复制,详细按步骤描述清楚了 由 oracle 单机,建立dataguard 到 RAC 双机的过程,严格按步骤做,一定会成功。同时讲述了,如何完成通过单机到RAC的dataguard 的迁移和切换。是通过...
ORACLE LINUX 11G RAC 单实例DATAGUARD
rhel 6中搭建oracle 11gr2 rac环境。
Oracle11g单实例迁移到RAC架构方案v1.1 如何利用 RMAN 可传输表空间迁移数据库到不同字节序的平台 (Doc ID 1983639.1) 如何利用 RMAN 可传输表空间迁移数据库到不同字节序的平台 (Doc ID 1983639.1) 跨 OS 平台迁移 ...
备份oracle单实例参数文件、控制文件、数据文件、归档文件等恢复至oracle rac
异机迁移oracle 11.2.0.4单机至12cR2 RAC, DBUA直接升级
oracle-rac12c-guide and install guide oracle12c 安装
已有文件系统单实例数据库的rman全备份,移植到RAC环境的ASM磁盘组中,删除RAC原有的数据库,完成新数据库在RAC中的注册。本文档中有详细的操作步骤,特别对容易出错的地方,将出错情况也列出来了。操作环境数据库...
单实例数据库迁移到RAC环境.pdf