Oracle備份與恢復系列 五 續 EXP/IMP遷移、複製資料庫

dbasdk發表於2014-08-27
遷移資料庫可以採用三種方式。首先可以採用作業系統的檔案複製進行物理資料庫的還原和恢復,並重新建立資料庫控制檔案。其次可以用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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-1258942/,如需轉載,請註明出處,否則將追究法律責任。

相關文章