oracle使用exp與imp對數據遷移備份的方法

使用exp和imp命令是oracle對數據進行遷移備份的一種最簡單最常用的一種方式。在此記錄下使用的方法步驟,以備後用。

首先,在老庫上使用命令:

exp userid=username/password@database OWNER=xxx file=xxx.dmp log=xxx.log

其中@後面的database是數據庫連接字符串。可以是ip:port/servicename的形式。例如192.168.1.10:1521/orcl 如果配置了tnsname,那麼@後面可以直接寫配置的tnsname。例如ORCL。

這裏順便說一下使用PL/SQL登錄時,Database文本框中需要填寫的連接字符串的含義。如圖

PL/SQL登錄框

裏面可以直接填寫在tnsnames.ora中配置的tnsname。例如ORCL。這樣就可以直接根據tnsname來獲取ip、端口號、servicename等值,然後就可以得到連接字符串。

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
但是如果沒有在tnsnames.ora中配置的話,而是直接使用PL/SQL來進行連接。那麼這時候就需要在PL/SQL的Database中直接填寫連接字符串了。例如填寫:192.168.1.10:1521/orcl。這兩種方式都是可以的。


這樣經過第一步,dmp文件就已經導出成功了。下面需要的是建立新庫的表空間和owner。

對於表空間,一般情況下在老庫上可以看到。但是如果現在只有一個dmp文件,不知道里面的表空間是什麼,怎麼辦呢。這裏有一個簡單的方法來獲取相關的信息。

就是在新庫上隨便找一個管理員賬戶來執行imp命令導入dmp文件。但是由於OWNER不正確,會導致導入的表和數據會跳過,並不會真正的導入。但是這樣會生成log文件。從log文件中就可以查看出表空間等信息。例如:

imp userid=system/manager file=xxx.dmp full=y ignore=y show=y log=xxx.log

查看相關的log,查看相關的表空間等信息。如果新庫沒有相關的表空間,就需要進行創建表空間。創建命令如下:

CONNECT / AS SYSDBA
CREATE TABLESPACE xxx
	DATAFILE 'D:\app\oradata\ORCL\XXX01.DBF'
	SIZE 200M
		AUTOEXTEND ON NEXT 20M MAXSIZE 4G;
創建好表空間後,然後進行創建用戶:

CREATE USER <user>
	IDENTIFIED BY <password>
		DEFAULT TABLESPACE xxx;
ALTER USER <user> QUOTA UNLIMITED ON xxx;
GRANT CREATE SESSION TO <user>;
GRANT DBA TO <user>;

然後就可以真正的導入dmp文件了:

imp USERID=<user>/<password> file=xxx.dmp log=xxx.log full=y ignore=y show=y

這樣庫也就遷移成功了。


另外再附上將庫全部刪除的命令:

CONNECT / AS SYSDBA
DROP TABLESPACE xxx INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
DROP USER <user> CASCADE;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章