迁移数据库可以采用三种方式。首先可以采用操作系统的文件拷贝进行物理数据库的还原和恢复,并重新创建数据库控制文件。其次可以用Oracle Export和Import工具将原数据库逻辑还原到一个新的数据库。最后可以用Oracle恢复管理器RMAN进行数据文件和可控制文件的一个物理还原。 迁移数据库不像复制word文档那样简单。需要注意Oracle中三种类型的文件(数据文件、重做日志文件和控制文件)必须协调一致。 本次试验采用EXP/IMP的逻辑备份方式把Oracel 11g 11.2.0.3 RAC复制到Oracle 11g 11.2.0.3单实例数据库上。试验步骤如下 1,在新主机DBCA建库,实例名和原主机数据库名一致 2,在新主机创建用户 3,dbms_metadata.get_ddl导出表空间生成语句 4,在新主机创建表空间 5,exp导出原库全部数据 6,imp导入复制数据库 注意原库的字符集 SYS@devdb1 >select userenv('language') from dual; USERENV('LANGUAGE') -------------------------------------------------------------------------------- AMERICAN_AMERICA.WE8MSWIN1252 1,在新主机DBCA建库 步骤省略,注意实例名与原库数据库名一致,这里采用devdb 2,在新主机创建用户 查看原主机用户 SYS@devdb1 >select username from dba_users order by username; 在复制主机上创建原主机用户 SQL> create user TPCC identified by tpcc; SQL> create user SNOW identified by snow; 3,dbms_metadata.get_ddl导出表空间生成语句 查看原主机表空间 SYS@devdb1 >select name from v$tablespace; 生成原主机表空间创建语句 SYS@devdb1 >set linesize 200 SYS@devdb1 >set long 999999 SYS@devdb1 >SELECT DBMS_METADATA.GET_DDL('TABLESPACE', GOLDENGATE) FROM dba_tablespaces; CREATE TABLESPACE "GOLDENGATE" DATAFILE '+DATA/devdb/datafile/goldengate.dbf' SIZE 104857600 AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO 根据导出的创建表空间语句修改成我们需要的创建语句 CREATE TABLESPACE "GOLDENGATE" DATAFILE '/u01/app/oracle/oradata/devdb/goldengate.dbf' SIZE 104857600 AUTOEXTEND ON; SYS@devdb1 >SELECT DBMS_METADATA.GET_DDL('TABLESPACE','EXAMPLE') from dba_tablespaces; CREATE TABLESPACE "EXAMPLE" DATAFILE SIZE 104857600 AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M NOLOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO ALTER DATABASE DATAFILE '+DATA/devdb/datafile/example.264.853490879' RESIZE 32 8335360 根据导出的创建表空间语句修改成我们需要的创建语句 CREATE TABLESPACE "EXAMPLE" DATAFILE '/u01/app/oracle/oradata/devdb/example.dbf' SIZE 104857600 AUTOEXTEND ON; SYS@devdb1 >SELECT DBMS_METADATA.GET_DDL('TABLESPACE','TOOLS') from dual; CREATE TABLESPACE "TOOLS" DATAFILE SIZE 20971520 AUTOEXTEND ON NEXT 20971520 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO 根据导出的创建表空间语句修改成我们需要的创建语句 CREATE TABLESPACE TOOLS DATAFILE '/u01/app/oracle/oradata/devdb/tools01.dbf.dbf' SIZE 20971520 AUTOEXTEND ON; SYS@devdb1 >SELECT DBMS_METADATA.GET_DDL(‘TABLESPACE','INDX') from dual; CREATE TABLESPACE "INDX" DATAFILE SIZE 20971520 AUTOEXTEND ON NEXT 20971520 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO 根据导出的创建表空间语句修改成我们需要的创建语句 CREATE TABLESPACE INDX DATAFILE '/u01/app/oracle/oradata/devdb/indx01.dbf.dbf' SIZE 20971520 AUTOEXTEND ON; 4,在新主机创建表空间 SQL> CREATE TABLESPACE "GOLDENGATE” DATAFILE '/u01/app/oracle/oradata/devdb/goldengate.dbf' SIZE 104857600 AUTOEXTEND ON; SQL> CREATE TABLESPACE "EXAMPLE” DATAFILE '/u01/app/oracle/oradata/devdb/example.dbf' SIZE 104857600 AUTOEXTEND ON; SQL> CREATE TABLESPACE TOOLS DATAFILE '/u01/app/oracle/oradata/devdb/tools01.dbf.dbf' SIZE 20971520 AUTOEXTEND ON; SQL> CREATE TABLESPACE INDX DATAFILE '/u01/app/oracle/oradata/devdb/indx01.dbf.dbf' SIZE 20971520 AUTOEXTEND ON; imp \'sys/oracle as sysdba\' file=/home/oracle/full.dmp full=y 5,exp导出原库全部数据 [oracle@node1~]$ exp \'sys/oracle as sysdba\' file=/home/oracle/full.dmp full=y direct=y 将导出文件scp到复制主机 [oracle@node1 ~]$ scp full.dmp oracle@192.168.1.176:/home/oracle 6,imp导入原库全部数据 [oracle@node3 ~]$ imp \'sys/oracle as sysdba\' file=/home/oracle/full.dmp full=y (责任编辑:IT) |