oracle資料庫遠端不落地匯入本地資料庫

us_yunleiwang發表於2013-11-29

1. 在要匯入資料庫的本地主機建立exp(dp)、imp(dp)目錄,此處我用的是impdp/expdp:

SQL> create directory dpdump as '/oradata/dpdump';


Directory created.


SQL> select * from dba_directories;檢視目錄


SQL> grant read,write on directory dpdump to vhfs;


Grant succeeded.


2. 在要匯入資料庫的本地主機建立dblink

1.建立dblink的第一種方式,是在本地資料庫tnsnames.ora檔案中配置了要遠端訪問的資料庫(即資料庫匯入的源端資料庫的tns)。

增加tnsnames.ora檔案遠端資料庫的tnsnames.ora的資訊如下:

ORATEST1 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = oratest1)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oratest1)

)

) 上面這個是本地主機原來的tnsnames.ora檔案


Oratest2 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = oratest2)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oratest2)

)

) 後來增加的遠端資料庫tnsnames.Ora的檔案



在本地主機上開始建立dblink,在開始建立前要保證本地tnsping oratest2(遠端資料庫tns) 能通。 (本例中我的資料庫例項名和主機名是一樣的,這個根據自己環境的實際情況來填寫)


以sys使用者登入

SQL>create public database link

oratest2_rt connect to oracle identified by oracle using ‘oratest2'


 其中oratest2_rt是你建立的dblink名字,oratest2是遠端資料庫的例項名(instance),oracle/oracle是登入到遠端資料庫的使用者/密碼。然後在本地資料庫中透過dblink訪問遠端資料庫'oratest2'中oracle.tech表sql語句如下所示

SQL> select * from ;

NAME ID PROJECT

---------- -------------------- ----------

白雪 55 鋼琴

黎明 22 化學

大貓 29 生物

小貓 18 語文



2.建立dblink的第二種方式,是在本地資料庫tnsnames.ora檔案中沒有配置要訪問的遠端資料庫,

 create database link oratest2_rt

 connect to oracle identified by oracle

 using ‘(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.106)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oratest2)

) 

  )';


  第二種是把第一種配置在tnsnames.ora檔案中的資訊,直接放在建立dblink語句後面。第一種情況tnsnames.ora檔案中資訊如下:

  Oratest2=

  (DESCRIPTION =

  (ADDRESS_LIST =

  (ADDRESS = (PROTOCOL = TCP)(HOST = oratest2)(PORT = 1521))

  )

  (CONNECT_DATA =

  (SERVER = DEDICATED)

  (SERVICE_NAME = oratest2)

  )

)


刪除及建立DBlink

SQL> drop public database link oratest2_rt;

Database link dropped.

SQL> create public database link

oratest2_rt connect to oracle identified by oracle using 'oratest2';




3. 根據以上步驟建立資料庫連線完成後,可以做下面的操作

本地資料庫操作遠端資料庫不落地匯入資料:


impdp oracle/oracle DIRECTORY=dpdump NETWORK_LINK=oratest2_rt schemas=oracle


oracle/oracle是遠端資料庫的使用者名稱和密碼,DIRECTORY=dpdump是expdp、impdp目錄(此處的目錄在不落地匯入的時候,只是作為一箇中轉站,不會有資料存在),NETWORK_LINK=oratest2_rt是DBlink,schemas=oracle是要匯入的使用者。

注意:

一、在本地資料庫下要建立好與遠端資料庫同樣數量和大小的資料檔案,然後建立同樣的使用者oracle並授權,

命令如下:

Sys登入

SQL>create user oracle identified by oracle

default tablespace MGRVHFSTBSDEF 此處是設定預設表空間。

temporary tablespace TEMP 此處是設定預設臨時表空間。

profile DEFAULT

quota unlimited on mgrvhfstbs2005 此處是設定可操作的其他表空間

quota unlimited on mgrvhfstbsdef; 此處是設定可操作的其他表空間


使用者授權

SQL>grant connect to oracle;

SQL>grant dba to oracle;

SQL>grant unlimited tablespace to oracle;



二、如果使用者已存在,則刪除使用者下所有資料,並重建使用者。

1.刪除使用者

SQL> drop user oracle cascade;

2.建立使用者

SQL>create user oracle identified by oracle

default tablespace MGRVHFSTBSDEF 此處是設定預設表空間。

temporary tablespace TEMP 此處是設定預設臨時表空間。

profile DEFAULT

quota unlimited on mgrvhfstbs2005 此處是設定可操作的其他表空間

quota unlimited on mgrvhfstbsdef; 此處是設定可操作的其他表空間


使用者授權

SQL>grant connect to oracle;

SQL>grant dba to oracle;

SQL>grant unlimited tablespace to oracle;

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

相關文章