从本节开始,将介绍下如何将单实例数据库迁移到rac环境。在生产环境中,随着业务和数据量的加大,这种需求和场景不可避免,一般来讲主要由以下四种方法实现迁移过程!
1:使用expdp/impdp数据泵导出导入,或者使用传统的exp/imp导入导出,后者效率低下;
2: 使用在线表空间迁移技术快速导出导入,前提是数据库的字符集要一致;
3:使用rman的备份进行异机恢复
4: 对单实例数据库构建基于rac的物理备库,进而切换备库为主库,这是生产环境中最为推荐的做法
本节中介绍使用expdp/impdp数据泵导出导入的方式实现迁移!
环境介绍:
数据库的版本均为10.2.0.5
操作系统的版本单实例数据库(源库)为rhel5.4 64 bit
rac(目标数据库)为ceontos4.8 64bit
一:查看源库的版本和表空间情况,同时在源库上建新的表空间和用户,插入数据,建立索引,,创建目录对象,使用expdp到出用户的schema等
sql> select * from v$version;
banner
----------------------------------------------------------------
oracle database 10g enterprise edition release 10.2.0.5.0 - 64bi
pl/sql release 10.2.0.5.0 - production
core 10.2.0.5.0 production
tns for linux: version 10.2.0.5.0 - production
nlsrtl version 10.2.0.5.0 - production
sql> show parameter compat;
name type value
------------------------------------ ----------- ------------------------------
compatible string 10.2.0.5.0
plsql_v2_compatibility boolean false
sql> select tablespace_name,file_name from dba_data_files;
tablespace_name file_name
-------------------- --------------------------------------------------
users /u01/app/oracle/oradata/orcl/users01.dbf
sysaux /u01/app/oracle/oradata/orcl/sysaux01.dbf
undotbs1 /u01/app/oracle/oradata/orcl/undotbs01.dbf
system /u01/app/oracle/oradata/orcl/system01.dbf
example /u01/app/oracle/oradata/orcl/example01.dbf
sql> create tablespace exp_rac datafile
2 '/u01/app/oracle/oradata/orcl/exp_rac01.dbf' size 300m
3 autoextend on next 10m maxsize unlimited
4* extent management local
tablespace created.
sql> create tablespace exp_rac_index datafile
2 '/u01/app/oracle/oradata/orcl/exp_rac_index01.dbf' size 300m
3 autoextend on next 10m maxsize unlimited
4* extent management local
tablespace created.
sql> select tablespace_name,file_name from dba_data_files;
tablespace_name file_name
-------------------- --------------------------------------------------
users /u01/app/oracle/oradata/orcl/users01.dbf
sysaux /u01/app/oracle/oradata/orcl/sysaux01.dbf
undotbs1 /u01/app/oracle/oradata/orcl/undotbs01.dbf
system /u01/app/oracle/oradata/orcl/system01.dbf
example /u01/app/oracle/oradata/orcl/example01.dbf
exp_rac /u01/app/oracle/oradata/orcl/exp_rac01.dbf
exp_rac_index /u01/app/oracle/oradata/orcl/exp_rac_index01.dbf
sql> create user test1 identified by oracle
2 default tablespace exp_rac
3 temporary tablespace temp
4 quota unlimited on exp_rac
5* account unlock;
user created.
sql> grant connect,resource to test1;
grant succeeded.
sql> create table test1.source as select * from dba_source;
table created.
sql> insert into test1.source select * from test1.source;
295491 rows created.
sql> /
590982 rows created.
sql> /
1181964 rows created.
sql> commit;
commit complete.
sql> analyze table test1.source compute statistics;
table analyzed.
sql> select count(*) from test1.source;
count(*)
----------
2363928
sql> select sum(bytes/(1024*1024)) mb from dba_extents
2 where segment_name='source'
3 and owner='test1';
mb
----------
408
[oracle@server49 orcl]$ ll -h exp_rac01.dbf
-rw-r----- 1 oracle oinstall 411m jan 1 19:06 exp_rac01.dbf
sql> create index test1.i_source
2 on test1.source(type)
3 tablespace exp_rac_index;
index created.
sql> select table_name,tablespace_name from dba_indexes
2 where owner='test1' and index_name='i_source';
table_name tablespace_name
------------------------------ --------------------
source exp_rac_index
sql> create directory expdp_dir as '/home/oracle/expdp_dir';
directory created.
sql> grant read,write on directory expdp_dir to test1;
grant succeeded.
sql> !mkdir -p /home/oracle/expdp_dir
[oracle@server49 ~]$ expdp test1/oracle directory=expdp_dir dumpfile=source.dmp logfile=source.log schemas=test1
export: release 10.2.0.5.0 - 64bit production on sunday, 01 january, 2012 19:38:30
copyright (c) 2003, 2007, oracle. all rights reserved.
connected to: oracle database 10g enterprise edition release 10.2.0.5.0 - 64bit production
with the partitioning, olap, data mining and real application testing options
starting test1.sys_export_schema_01: test1/******** directory=expdp_dir dumpfile=source.dmp logfile=source.log schemas=test1
estimate in progress using blocks method...
processing object type schema_export/table/table_data
total estimation using blocks method: 408 mb
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
processing object type schema_export/table/statistics/table_statistics
. . exported test1.source 280.8 mb 2363928 rows
master table test1.sys_export_schema_01 successfully loaded/unloaded
******************************************************************************
dump file set for test1.sys_export_schema_01 is:
/home/oracle/expdp_dir/source.dmp
job test1.sys_export_schema_01 successfully completed at 19:39:03
二:复制impdp导出的相关文件到目标库上,同时在目标库上创建相应的用户和表空间以及目录对象等
