oracle dblink用法總結和expdp和impdp利用dblink倒入匯出到本地
oracle中的database link是定義一個資料庫到另一個資料庫的路徑的物件,database link允許你查詢遠端表和執行遠端程式。在任何分散式環境裡,dblink都是必要的,另外注意database link是單向的連線。在建立database link的時候,oracle在資料字典中儲存了相關的database link的資訊,在使用database link的時候,oracle再透過oracle net使用者預先定義好的連線資訊訪問相應的遠端資料庫來完成相應的工作。
1、在建立database link之前需要注意:
(1)確認從local database到remote database的網路連線是否正常,tnsping要能成功。
(2)確認在remote database上面有相應的訪問許可權。
2、oracle database link可分為下面三類:
(1)private:建立的是使用者級別的dblink,只有建立該dblink的使用者才可以使用這個dblink來訪問遠端的資料庫,同時也只有該使用者可以刪除這個dblink。
(2)public:建立的是資料庫級別的dblink,本地資料庫中所有的使用者資料庫訪問許可權的使用者或者pl/sql程式都能使用這個dblink。
(3)global:建立的是網路級別的dblink,這是對於oracle network而言的。
3、建立dblink需要的許可權:
如果你新建了一個使用者,那麼你必須為它授予以下許可權才可以建立dblink:create database link、create public database link、create session。
4、建立dblink:
點選(此處)摺疊或開啟
-
-- 如果不指定public,預設的是private,host後面可以是ip地址,也可以是解析過的域名
-
CREATE PUBLIC DATABASE LINK dl_OCPLYZ1 CONNECT TO lyz IDENTIFIED BY lyz
-
USING '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.95.155)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = OCPLYZ1)
)
)';
或者我們可以這樣寫:
create public database link dl_OCPLYZ1 connect to lyz identified by lyz using 'OCPLYZ1';
但是要再 tnsnames.ora 檔案上加上這個:OCPLYZ1 ,這個格式最好要和上面的對應規整點。。。。否則有可能認不到。。
然後上面的 using 'OCPLYZ1' 這邊就要和tnsnames.ora 名字一樣了
5、檢視dblink:
檢視dblink,可以從dba_objects、dba_db_links這兩張表去查:
點選(此處)摺疊或開啟
-
SELECT * FROM dba_objects do WHERE do.OBJECT_TYPE = 'DATABASE LINK';
- SELECT * FROM dba_db_links ddl;
除了上面兩張表,還有all_db_links、user_db_links。
6、使用dblink:
點選(此處)摺疊或開啟
-
-- 最簡單的用法
-
SELECT * FROM table_name@database_link;
-
-- 不想讓別人知道database link名字的時候,可以使用同義詞包裝一下
-
CREATE SYNONYM table_name for table_name@database_link;
-
SELECT * FROM table_name;
-
-- 也可以建立一個檢視來封裝
- CREATE VIEW table_name_v AS SELECT * FROM table_name@database_link;
點選(此處)摺疊或開啟
-
-- 刪除public型別的dblink
-
DROP PUBLIC DATABASE LINK dblink_name;
-
-- 刪除private型別的dblink,只有建立者自己能刪
- DROP DATABASE LINK dblink_name;
如果我們要使用expdp ,然後要像實現exp一樣,把這個dmp檔案,給它倒到本地,那麼我們應該怎麼實現呢。。。。。。?
我們可以用連線 dblink的方法來匯出:也就是說我們要用到兩個庫:
例子:我們可以從遠端資料庫倒入到本地資料庫。。。。
1 我們首先要在本地資料庫建立一個dblink
連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
再本地資料庫建立一個dblink :
SQL> create public database link dl_OCPLYZ1 connect to lyz identified by lyz us
ing 'OCPLYZ1';
資料庫連結已建立。
SQL>
'OCPLYZ1' 這邊的 OCPLYZ1我已經再 tnsnames.ora 那邊配好了:
我們可以簡單的遠端檢查下資料庫能不能通:查得到說明建立成功
點選(此處)摺疊或開啟
-
SQL> select count(1) from lyz.EMPLOYEES2@dl_OCPLYZ1;
-
-
COUNT(1)
-
----------
-
4
- SQL>
我們可以在 client 端或目標資料庫執行。。。。
我們這邊是直接在本地執行:
我們可以先查下本地ip 是多少:ipconfig:查得ip 172.17.146.3 ,但由於本地資料庫是直接安裝再win 7電腦上的,所以我本地就是目標資料庫啦。。。。
倒出命令如下:這邊說明下:這邊的倒出是基於 表的倒出。。。。。
點選(此處)摺疊或開啟
- expdp scott/tiger@172.17.146.3/orcl directory=DATA_PUMP_DIR dumpfile=exptable.dmp TABLES=lyz.TESTA network_link=dl_OCPLYZ1 LOGFILE=expdp_table.log;
這邊的 expdp 倒出一定是要本地的資料庫,也就是目標資料庫的使用者 和服務名
- expdp scott/tiger@172.17.146.3/orcl
- network_link=dl_OCPLYZ1
- TABLES=lyz.TESTA
也就是說,如果不加 使用者來源:lyz.testa 表,資料庫應該是預設成你這個
- TABLES=TESTA
當然如果你目標庫(本地資料庫)有這個lyz 這個使用者,我們也可以這樣寫:
點選(此處)摺疊或開啟
- expdp lyz/lyz@172.17.146.3/orcl directory=DATA_PUMP_DIR dumpfile=exptable.dmp TABLES=TESTA network_link=dl_OCPLYZ1 LOGFILE=expdp_table.log;
然後我們可以到本地看下結果: 這個 exptable.dmp 檔案就是從 遠端資料庫倒下來的資料來。。。。。
然後我們再倒入到庫就可以 了:這邊要倒入的資料庫為:oracl
由於上面的是基於表的匯出,我們可以用下面這個命令:
impdp scott/tiger@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=exptable.dmp TABLES=lyz.TESTA REMAP_SCHEMA=lyz:scott table_exists_action=REPLACE
這邊的意思是:impdp 倒入到 oracl庫下的使用者,倒入的路徑為DATA_PUMP_DIR,倒入的dmp 檔案為:exptable.dmp ,倒入的表為:TABLES=lyz.TESTA ,REMAP_SCHEMA=lyz:scott : 這邊的意思是 從 lyz使用者到scott使用者,table_exists_action=REPLACE : 這邊的意思是:如果表存在,就直接替換掉。
或者是基於使用者的倒入:去掉這個TABLES=lyz.TESTA,但是也是 lyz 使用者到 scott使用者
impdp scott/tiger@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=exptable.dmp REMAP_SCHEMA=lyz:scott table_exists_action=REPLACE
好了,這個就是 利用 db_link 的expdp 、impdp的匯出匯入。。。。。。。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26224914/viewspace-2157138/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle private dblink和pubic dblinkOracle
- impdp和expdp的總結
- 在異機上利用dblink做impdp資料匯入
- 【EXPDP/IMPDP】使用 EXPDP/IMPDP工具“模糊”匯出和匯入
- oracle expdp/impdp用法Oracle
- Oracle 12c expdp和impdp匯出匯入表Oracle
- DBLink配置總結
- oracle expdp和impdp使用例子Oracle
- oracle匯入匯出之expdp/impdpOracle
- expdp/impdp 使用總結
- ORACLE DBLINKOracle
- oracle DBLink oracleOracle
- Oracle資料庫遷移之三:dblink+impdpOracle資料庫
- ORACLE EXPDP IMPDP 中停止和啟動Oracle
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- oracle DBLink sqlserverOracleSQLServer
- oracle之DBLINKOracle
- expdp/impdp 用法詳解
- expdp/impdp用法詳解
- 通過EXPDP/IMPDP匯出匯入遠端資料倒本地
- 有關dblink有域名的總結:
- expdp/impdp中匯出/匯入任務的管理和監控
- oracle expdp and impdpOracle
- oracle 10.2.0.4 expdp全庫匯出 和分使用者impdp匯入的記錄Oracle
- Oracle dblink詳解Oracle
- Oracle建立dblink MySQLOracleMySql
- Oracle dblink介紹Oracle
- oracle dblink問題Oracle
- [zt] expdp / impdp 用法詳解
- expdp impdp只匯出匯入viewView
- Oracle資料庫資料遷移或匯出匯入(exp/imp,dblink)應該注意的點(總結)Oracle資料庫
- ORACLE EXPDP IMPDP 的停止和啟動及監控Oracle
- Oracle的expdp/impdp工具和exp/imp工具比較Oracle
- Oracle dblink詳解(轉)Oracle
- 【PL/SQL】oracle建立dblinkSQLOracle
- 23.EXPDP 和 IMPDP(筆記)筆記
- expdp與impdp全庫匯出匯入
- RAC建立DBlink並使用impdp抽取源庫資料