oracle database link

来源:https://www.cnblogs.com/newxiaobai/archive/2018/01/03/8183925.html
-Advertisement-
Play Games

database link ,我們習慣稱為db link。作用:用於從a資料庫到b資料庫之間訪問的一種手段。類似於 ogg 中的表同步(用戶同步)。如上所述,db link 的主要作用是跨庫查詢。有很多業務都需要進行跨庫查詢。在我們公司有時就不得不去去創建一些db link。 優點:創建方式簡單、易 ...


database link ,我們習慣稱為db link。
作用:用於從a資料庫到b資料庫之間訪問的一種手段。類似於 ogg 中的表同步(用戶同步)。如上所述,db link 的主要作用是跨庫查詢。有很多業務都需要進行跨庫查詢。在我們公司有時就不得不去去創建一些db link。
優點:創建方式簡單、易懂、可以擁有創建用戶的所有許可權。
缺點:自然,方便的手段就會有更多的不利。
1 大量消耗資料庫資源;本地系統每通過DBLINK鏈接遠端系統一次,都會生成一個本地session,如本地session不退出或者手動釋放,只有通過session超時才能自動釋放,會浪費大量的系統資源
2 容易出現資料庫BUG:大量使用DBLINK,本地系統極易出現ORA-02068、ORA-03113、ORA-02080、ORA-02054、ORA-02050等Oracle錯誤,這種錯誤大部分會影響當前session正在處理的業務
3 性能較差:由於使用DBLINK,本地系統在獲取數據時,每次鏈接都會對遠端資料庫進行一次全表掃描,且所有數據都會傳輸回本地資料庫內,導致性能降低並且嚴重浪費當前系統資源。尤其出現一條sql語句從兩個DBLINK中取數,更被稱之為“性能殺手”,尤其是OLTP型資料庫
4 數據傳輸不穩定,占用帶寬嚴重,容易產生丟包風險:DBLINK本身沒有數據存儲、監控等功能,是通過網路中的資料庫進行傳輸時,如果在傳輸過程中出現數據丟包現象,DBLINK本身不會發現,只用當業務進行完畢才能發現丟包現象,這樣會影響當前正在處理的業務;另外,通過DBLINK查詢的數據會像數據全部傳至本地資料庫進行操作,數據傳輸量很大,占用帶寬嚴重,可能會導致網路堵塞
5 Oracle數據功能受限:DBLINK本身不支持對oracle LOB大對象的操作,在使用PROCDURE時,使用COMMIT等操作時可能會出現錯誤
6 可擴展性較差:如果多系統之間 使用DBLINK進行傳輸,每增加一個系統,都會增加一個或多個DBLINK鏈接或者修改對應的介面程式,如果修改其中一個介面,需要修改所有關聯繫統內的介面程式
7 維護性差、安全性較低:通過DBLINK進行鏈接需要將遠端資料庫用戶名、密碼、IP地址存在本地資料庫,如遠端進行密碼修改、IP地址變更,本地資料庫也需要修改,如果系統較多,每個系統都需要同時修改。切本地資料庫管理員能夠看到遠端數據的密碼、IP地址,對系統安全產生影響
可是,即使是在缺點這麼這麼多的情況下,還是會有人用,歸根到底,個人感覺還是oracle對兩個庫之間的交互做的並不是特別好,ogg 好用是好用,但是在表多的情況下,我們可是深受其害。

用法:創建dblink的先決條件便是兩個庫要能交互(local database to remote database)網路要能連接正常,其次。要在源端資料庫tnsname 文件中配置上訪問目標的參數。並且能 tnsping 通。
database link 分為兩種:一種為 public(公有) 一種為 private(個人)。顧名思義,公有dblink即源庫所有的用戶都可以使用,個人dblink則只有創建者用戶可以使用。
創建dblink是要有相應的許可權的。
select * from user_sys_privs where privilege like upper('%LINK%');
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SYS CREATE DATABASE LINK NO
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
CREATE DATABASE LINK 為創建個人dblink許可權。
CREATE PUBLIC DATABASE LINK 為創建公有dblink 許可權。

創建dblink
當tnsnames中有了參數。且有了相應的許可權之後,就可以創建dblink。創建方式有以下幾種。

創建個人dblink語句為 CREATE database link 開頭:
使用當前用戶的用戶名和密碼去連接遠程資料庫。如果密碼不對會報錯
create database link test1 using 'test';

創建公有dblink語句CREATE PUBLIC database link
使用指定的用戶和密碼創建公有 dblink
create public database link test3 connect to scott identified by tiger using 'test';

建一個shared 的資料庫連接
create shared public database link test4 connect to scott identified by "tiger" authenticated by username identified by "passwd" using 'test';
使用shared方式的 database link是資料庫會限制到遠程資料庫的連接的數量,這樣以避免過多的連接對遠程資料庫造成太大的壓力。

還有一種創建方式是不使用tnsname的情況
CREATE database link link_name
CONNECT TO user IDENTIFIED BY screct
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sales)
)
)';

刪除dblink
首先需要查詢出來有哪些dblink
select owner,object_name from dba_objects where object_type='DATABASE LINK';
然後如果為pubilc 則刪除方式為 drop public database link
如果為個人則刪除方式為:drop database link

其實本質上來說,dblink 並不是一個很複雜的東西。但是鑒於對資料庫的影響。本著能少用就少用的原則。如果能用一些導入導出去替換dblink(我們也正在這麼做)。是最好的。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 說明 由於大部分VPN被封,翻牆過程中無意間接觸到了VPS(Virtual Private Server 虛擬專用伺服器,可用於翻牆),所以簡單記錄下VPS服務搭建流程。 此教程基於centos7,本人選擇使用阿裡雲伺服器(香港區域,可訪問外網)進行搭建。 安裝組件 安裝python組件:yum i ...
  • 1 停止nexus服務 [root@node001 bin]# /usr/local/nexus/nexus-2.14.5-02/bin/nexus stop****************************************WARNING - NOT RECOMMENDED TO RU ...
  • linux 內核版本 2.6.27.29 /* * linux/arch/arm/kernel/head.S * Kernel startup code for all 32-bit CPUs */ #include <linux/linkage.h> #include <linux/init.h> ...
  • 今天又是SQL Server... 其實這兩天寫SQL已經寫的很煩了,但是沒辦法,要交實驗報告。。。 其實覺得老師也是在偷懶,這題和後面的連續幾題都差不多了,基本上就是先存一張臨時表的套路,不然總是報那個某某欄位不存在或沒有包含在聚合函數中balabala…… 基本上都是這樣了,按上面說的套路來,沒 ...
  • 網上關於SQL優化的教程很多,但是比較雜亂。近日有空整理了一下,寫出來跟大家分享一下,其中有錯誤和不足的地方,還請大家糾正補充。 這篇文章我花費了大量的時間查找資料、修改、排版,希望大家閱讀之後,感覺好的話推薦給更多的人,讓更多的人看到、糾正及補充。 1.對查詢進行優化,要儘量避免全表掃描,首先應考 ...
  • Mysql建立索引時遇到一個問題就是索引欄位長度太長,解決辦法: 1.修改欄位長度 ; 2.修改mysql預設的存儲引擎 ,修改為INNODB; https://www.2cto.com/database/201211/167561.html ...
  • 上次我們講過了《HBase簡介》,點擊閱讀有助於更好地理解本文。本文講述的是HBase數據模型。 1、ROW KEY 決定一行數據按照字典順序排序的。Row key只能存儲64k的位元組數據2、Column Family列族 & qualifier列 HBase表中的每個列都歸屬於某個列族,列族必須作 ...
  • 使用騰訊雲主機安裝 MySQL 之後,需要通過以下步驟進行配置以實現遠程訪問,主要分為兩大部分 一、伺服器埠配置 1.如果你的雲主機配置了安全組,如果沒有配置安全組就可以直接跳過“步驟1”的操作,否則需要修改相應的安全組,在入站規則中增加 MySQL 服務埠號,通常是 3306 埠 1.1 查 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...