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;