Oralce遠程數據拷貝

  摘要:前幾天師兄交了一個任務,要把一臺主機上的數據拷貝到另一臺主機。在社區裏提問,在衆多網友的幫助下,任務得以順利完成。現將整個思路整理、備案,也爲以後遇到同類問題的朋友提供參考。
  感謝
54gj(1751) nojave(我一定要成爲程序員)cenlmmx(學海無涯苦作舟) microd(以前是活到老學到老,現在學到老才能活到老) nowait(獨行天涯路)qiaozhiwei(喬)guangli_zhang(廣麗) 等CSDN好友的幫助!

一、建立連接遠程數據庫的本地服務
 1、啓動Oracle的Net Configuration Assistant
 2、選擇“本地網絡服務名配置”,next
 3、選擇“添加”,next
 4、選擇合適的數據庫版本,next
 5、填寫服務名(如test),next
 6、選擇網絡通信協議(TCP),next
 7、填寫遠程主機名(IP地址)及端口號,next
 8、選擇是否測試連接
 9、一路狂next到完成。

 10、修改 /oracle/oraHome/network/ADMIN/tnsnames.ora 文件
  TEST =
   (DESCRIPTION =
    (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.110)(PORT = 1521))
    )
     (CONNECT_DATA =
      (SERVICE_NAME =TEST)
     )
   )
  
   將其中的SERVICE_NAME 項改爲要連接遠程數據庫的服務名,
   如此處數據庫服務名爲oradb.samlin,則改爲SERVICE_NAME =oradb.samlin

二、建立database link
 1、登錄本機的Sql×Plus user/password
 2、使用語句
   create database link dblinkName connect to username identified by password using 'service';

  注:dblinkName爲要建立的database link名
       username/password爲遠程數據庫的用戶名/密碼(密碼爲數字時須用"")
       service爲連接遠程數據庫的本地服務名

三、拷貝數據
 1、拷貝表結構
   使用語句
    create table database.tableName as select * from database.tableB@dblink where 0=1
 
 2、拷貝數據
   使用語句
    insert into database.tableName select * from database.tableB@dblink where xxx=yyy
   如果是全部拷貝使用
    insert into database.tableName select * from database.tableB@dblink

至此數據拷貝完成


注:
   1、用這種CTAS方式須重建約束和索引,若要保留約束和索引可使用exp/imp
   2、若出現監聽器無法處理,須將把/oracle/admin/oradb/pfile/init.ora中的參數
     global_names = TRUE 改爲 global_names = false

發佈了23 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章