步骤:(面试)
1,在新主机DBCA建库,实例名和原主机数据库名一致
2,在新主机创建用户
3,dbms_metadata.get_ddl导出表空间生成语句
4,在新主机创建表空间
5,exp导出原库全部数据
6,imp导入复制数据库
Oracle备份与恢复系列 五 续 EXP/IMP迁移、复制数据库
详细步骤如下:
迁移数据库可以采用三种方式。首先可以采用操作系统的文件拷贝进行物理数据库的还原和恢复,并重新创建数据库控制文件。其次可以用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导入复制数据库
注意原库的字符集
[email protected] >select userenv(‘language‘) from dual;
USERENV(‘LANGUAGE‘)
--------------------------------------------------------------------------------
AMERICAN_AMERICA.WE8MSWIN1252
1,在新主机DBCA建库
步骤省略,注意实例名与原库数据库名一致,这里采用devdb
2,在新主机创建用户
查看原主机用户
[email protected] >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导出表空间生成语句
查看原主机表空间
[email protected] >select name from v$tablespace;
生成原主机表空间创建语句
[email protected] >set linesize 200
[email protected] >set long 999999
[email protected] >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;
[email protected] >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;
[email protected] >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;
[email protected] >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导出原库全部数据
[[email protected]~]$ exp \‘sys/oracle as sysdba\‘ file=/home/oracle/full.dmp full=y direct=y
将导出文件scp到复制主机
[[email protected] ~]$ scp full.dmp [email protected]:/home/oracle
6,imp导入原库全部数据
[[email protected] ~]$ imp \‘sys/oracle as sysdba\‘ file=/home/oracle/full.dmp full=y