oracle數據庫遠程不落地導入本地數據庫

oracle數據庫遠程不落地導入本地數據庫 ---2013.09.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 oracle.tech@orc6_rt;

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;


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