顯示具有 Oracle 標籤的文章。 顯示所有文章
顯示具有 Oracle 標籤的文章。 顯示所有文章

2009/07/09

DB Link

資料庫連結語法 : 
  create [public] database link REMOVE_CONNECT 
  connect to [current_user || username identified by password]
  using 'connect string'; 
 
* 建立資料庫連結時,特殊語法的使用取決於兩個準則
1. 資料庫連結的<公有> 或 <私有> 狀態
  <公有> : 提供給資料庫中的所有使用者連線用的  
  <私有> : 只供建立連結的使用者使用
 
2. 對遠端資料庫使用預設登入或指定登入
 
*需要有Create Database Link 的系統權限
*連線遠端資料庫必須有Create Session 權限
*上述兩個權限都包含在Oracle 的Connect 角色中
 
 

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

for example : 

 
create database link user_DB
  connect to user_Name identified by user_Password
  using '(DESCRIPTION =
    (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = user_HOST)(PORT = 1521)))
    (CONNECT_DATA = (SID = db_SID))
    )'; 
 

查詢語法範例 : 
select * from dual@user_DB

結論 : 對於不同DB ,可Join 查詢 ...諸多用處

Copy 指令

copy from
[remote username / reomte password @ connect string]
[to username / pwasword @ connect string]
{append || create || insert || replace }
table name
using subquery; 

 
for example : (Command)

  set copycommit 1  => 一次要確認多少批資料數量
  set arraysize 1000 => 每一批擷取的資料記錄數量
  copy from TABBOT / LEDGER@HQ 
  create WORKER
  using
  select * from WORKER 

 *append : 把資料列新增到目的表格中 ,如果表格不存在則自動建立
 *create : 建立表格接著新增資料列
 *insert : 如果表格存在就把資料列新增到目的表格中,否則傳回錯誤.(所有欄未必須都在using子查詢中指定)
  *replace : 丟棄存在的的表格並用包含複製資料的表格來取代

結論 : 
    若使用在不同Oralce DB的複製,既方便又快速 (也可配合Windows排程)