1. 程式人生 > >Oracle-DB Link簡單使用

Oracle-DB Link簡單使用

當用戶要跨本地資料庫,訪問另外一個數據庫表中的資料時,本地資料庫中必須建立了遠端資料庫的dblink。通過dblink,本地資料庫可以像訪問本地資料庫一樣訪問遠端資料庫表中的資料。

首先,檢視Global_name引數是true還是False。該引數為true時,你在本地建立的DBLINK的名稱必須和遠端資料庫的全域性資料庫名的Global_name一致才行。

SQL> show parameter global_name;

NAME      TYPE     VALUE

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

global_names      boolean     FALSE

global_name可以在遠端資料庫上得到:

SQL> select * from global_name;

GLOBAL_NAME

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

ORADB

修改GLOBAL_NAME的方法:

方法一、在資料庫的init.ora檔案中將global_names設為true/false

方法二、語句:ALTER SYSTEM SET GLOBAL_NAMES=TRUE/FALSE scope=both;

其次,建立dblink之前使用者必須有建立dblink的許可權(注意此處賦予的public database link的許可權如果不加上public那麼就是建立私有的dblink):

指定PUBLIC建立對所有使用者可見的公共資料庫連結。如果省略此子句,則資料庫連結是私有的,僅對您可用。

SQL> grant create public database link to test;

Grant succeeded.

SQL> grant create database link to test;

Grant succeeded.

直接建立資料庫連結時寫入配置資料庫,客戶機上的using中的連線一定要記得重寫,只有服務端的連結配置才能在

dblink中引用,配置在oracle客戶端的tnsnane.ora中的連結配置是不能在dblink中使用的

create  database link my_link

      connect to hh identified by hh

      using '(DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.57.129)(PORT = 1521))

   )

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = oradb)

   )

 )';

注意:這裡要加上服務是共享模式還是專有模式,否則會出現下面錯誤提示

ERROR at line 1:ORA-12154: TNS:could not resolve the connect identifier specified

這個service_name是您要連結到的資料庫服務端的服務名。

其中mylink 是你建立的dblink名字,是資料庫連線串的名字。以後就通過這個名字來進行呼叫遠端資料庫的內容。

hh/hh是登入到遠端資料庫的使用者/密碼。

另外一種情況,所要訪問的表不在資料庫連結中指定的遠端帳戶下,但該帳戶有訪問該表的許可權,那麼我們在表名前要加上該表的使用者名稱(即本機上面的test可以訪問遠端資料庫裡面hh使用者下面所有的表,但是hh可以訪問hhh下面的hhh_test的表,則可以使用下面語句查詢)

SQL> select * from [email protected]_link;

ID

----------

 1

對於經常使用的資料庫連結,可以建立一個本地的同義詞,方便使用:

SQL> create synonym a for [email protected]_link;

Synonym created.

SQL> select * from a;

ID

----------

 2 

檢視所有的資料庫連結,進入系統管理員賬號下,執行命令

SQL> select owner,object_name from dba_objects where object_type='DATABASE LINK';

OWNER      OBJECT_NAME

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

TEST      MYLINK

TEST      MY_LINK

TEST      M_LINK

刪除資料庫連線

SQL> drop database link mylink;

Database link dropped.

關閉dblink連線,關閉前一定要注意session的回收,在應用程式中使用

SQL> commit;

Commit complete.

SQL> alter session close database link my_link;

Session altered.

任何ddl語句都無法在dblink中直接執行。但通過建立儲存過程,使得能在dblink中執行ddl語句。 注意需在目標資料庫的相應使用者下建立儲存過程

總結:DBLINK配置細節很重要,請重點關注下面幾點

1.確定被連線資料庫可以連通,監聽是好的

2.使用者角色與許可權 配置下面4(很重要)

create session,create database link,create public database link

3.客戶機上的using中的連線一定要記得重寫,只有服務端的連結配置才能在dblink中引用,配置在oracle客戶端的tnsnane.ora中的連結配置是不能在dblink中使用的

相關推薦

Oracle-DB Link簡單使用

當用戶要跨本地資料庫,訪問另外一個數據庫表中的資料時,本地資料庫中必須建立了遠端資料庫的dblink。通過dblink,本地資料庫可以像訪問本地資料庫一樣訪問遠端資料庫表中的資料。首先,檢視Global_name引數是true還是False。該引數為true時,你在本地建立的

oracle db link的檢視建立與刪除

 create database link cqdb_dblink   connect to "dlmis" identified by "dlmis"   using 'cqdb'; select * from dba_db_links; 1.檢視dbli

利用DB Link搞定Oracle兩個資料庫間的表同步

資料庫之間的連結建立在DATABASE LINK上。要建立一個DB LINK,必須先在每個資料庫伺服器上設定連結字串。 1、 連結字串即服務名,首先在本地配置一個服務名,地址指向遠端的資料庫地址,服務名取為將來你要使用的資料庫鏈名: 2、建立資料庫連結,進入系統管理員SQL>操作符下,執行命令:

Oracle 使用DB link update table & TNS:linstener was not given the servicename in connect_data處理方式

業務需求:需要在Oracle1 的A表增加一個欄位,這個欄位來自於Oracle2 的B表的一個欄位。 解決方案: 1、用kettle跨庫跨表update;() 2、使用DB Link update  首先在oracle1 中建立DB Link 2018/11

利用DB Link兩步搞定Oracle兩個資料庫間的表同步

一、實現目標:          要實現從源表:AAA到目標表:BBB的資料同步。 二、在目標機上建立Oracle DB Link:      1、 在network/admin/tnsname.ora檔案中加入源庫的連線資訊,如: AAA=  (DESCRIPTION 

Oracle DB , 計算各個用戶/schema 的磁盤占用空間

def term ner href pen database col table scott http://www.dba-oracle.com/t_find_size_schema.htm Question: How do I find the size of a s

Oracle GoldenGate從oracle db 到非oracle db的初始化數據同步的方法

class article content info 靜態 oracl etl 進程 rep 非oracle db以 sqlserver為樣例說明: 我的思路 A :oracle db 生產 B: oracle db 中間機 C: sqlserver db 目的端

關於oracle db 11gR2版本號上的_external_scn_rejection_threshold_hours參數和scn headroom補丁問題

install eal 2.0 bsp 11gr2 con his star html 關於oracle db 11gR2版本號上的_external_scn_rejection_threshold_hours參數和scn headroom補丁問題 來自於: Inst

Oracle DB 使用子查詢來解決查詢

目的 滿足 多少 group 錯誤 water 列表 功能 產生 ? 定義子查詢 ? 描述子查詢可以解決的問題類型 ? 列出子查詢的類型 ? 編寫單行和多行子查詢 ? 子查詢:類型、語法和準則 ? 單行子查詢: – 子查詢中的組函數 – 帶有子查詢的HAVING子句

實際建立DB-LINK,兩個數據庫之間的數據公用

nbsp creat from color pub pan base desc protoc 創建DB-LINKcreate public database link dblink_名字 connect to 賬戶名字 identified by 賬戶密碼 using ‘(

如何讓oracle DB、監聽和oem開機啟動(dbstart)

監聽和oem開機啟動如何讓oracle DB、監聽和oem開機啟動(dbstart)讓oracle DB、監聽和oem開機啟動(dbstart)Oracle提供了伴隨操作系統自動重啟的功能,在Windows中,可以修改“我的電腦-->管理-->服務-->OracleService$ORACL

Oracle DB 移動數據

pdu 註釋 一個 tro 進行 obj feedback exe 賬號 描述移動數據的方式 ? 創建和使用目錄對象 ? 使用SQL*Loader 加載非Oracle DB(或用戶文件)中的數據 ? 使用外部表並通過與平臺無關的文件移動數據 ? 說明Oracle 數據泵的

Oracle Database Link 連接數據庫復制數據

數據庫 訪問 p地址 數據 ID rom 創建 nec spa --1. 創建dblink連接 create database link mdm66 connect to lc019999 identified by aaaaaa using ‘10.24.12.66/or

SQL Server DB Link相關

select serve sele bsp insert dblink info lin tab 若想通過DBlink 清空表或執行在存儲過程,可以通過這種方式 Insert into table select * from table時,Pull 方式比

[20180823]IMU與db link.txt

原來 cti views sys sid str and ack eat [20180823]IMU與db link.txt--//當使用db link查看遠程表時,實際上會產生小小的日誌.--//當時如果與IMU結合在一起,可以導致IMU的失效.1.環境:SCOTT@bo

Oracle DB

utf-8 建議 網絡 接受 方案 中文 .exe 路徑 使用 索引 一、安裝 卸載 一、安裝 1、Oracle首先詢問用戶是否接受更新信息,一般選擇不接受;Oracle安裝選項,需為其配置數據庫,所以此處會詢問是否創建安裝數據庫,選擇是系統類型,一般選擇服

Oracle作業3 —— 簡單查詢

ins varchar2 table student insert core rac .com des 一、創建學生表 CREATE TABLE STUDENTS(   STU_ID NUMBER(10) CONSTRAINTS PK_STUS_ID PRIMARY KE

Oracle DB 使用DDL語句建立和管理表

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

oracle - plsql的簡單使用

查詢 1. 開啟SQL Window視窗 2. 在SQL Windows頁面上寫入SQL語句,點選執行(F8),結果就展現在頁面 編輯更新: 1. 除了用delete, update 語句外,一個比較方便的方式是,在查詢語句後加上for update 2. 然後選擇要編輯的資料

Oracle DB 使用單行函式定製輸出

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!