分散式資料庫系列(三)
Names for Database Links
資料庫連結的命名
通常情況下,資料庫連結名稱與要連線的遠端資料庫的全域性資料庫名稱一樣.比如:
遠端資料庫的全域性資料庫名稱叫sales.us.example.com,資料庫連結也叫sales.us.example.com;
如配置初始化引數global_names=true,則必須配置資料庫連結和遠端的全域性資料庫名一致.
資料庫每次連線遠端資料庫時,會檢查資料字典中的全域性資料庫名稱.而非初始化引數的db_domain.
但若配置global_names=false,沒必要使用全域性命名規則了.資料庫連結可以任意命名.
資料庫連結的型別
Types of Database Links
每天工作明細/文件/oracle文件/oracle11g官方文件/server.112/e25494/ds_concepts002.htm#i1007709
型別 所用者 描述
private 建立db_link的使用者,可用dba_db_links檢視資訊 唯建立db_link的使用者及使用者所在的plsql包可使用db link
public 此使用者名稱為public,同上用dba_db_links檢視資訊 與上區別,資料庫上所有使用者及plsql包可以此db_link
global 同上 建立一個全網範圍或全網級別的資料庫連結.當oracle網路使用目錄伺服器時,目錄
伺服器會自動建立和管理此全網範圍內的每個資料庫的資料庫連結.每個資料庫中的
使用者及PLSQL透過資料庫連結可以訪問遠端資料庫的物件.
(注:早期資料庫版本,資料庫連結是註冊到ORACLE NAMES SERVER,而現版本是用目錄伺服器)
進行管理
選取上述資料庫連結的原則:
1,如考慮到安全性,可選用private,僅建立DB LINK的使用者可儲存遠端資料庫的物件
2,如想一些人用一個路徑訪問儲存遠端資料庫,可用PUBLIC
3,如在ORACLE網路環境已構建了目錄伺服器,當然最好使用global,可集中一站式管理
資料庫連結的使用者
Users of Database Links
使用者型別 描述 建立語法
connected user 任何可以訪問資料庫連結的資料庫使用者,不用指定固定的使用者及密碼;
即如以system資料庫訪問資料庫連結,則以system訪問遠端資料庫 create public database link hq using 'hq';
curren user 處於current_user資料庫的連結的全域性使用者. 此全域性使用者必須透過
x.509認證(一種基於ssl認證的企業使用者).這個處於current_user資料庫 create public database link hq connect to current_user
的連結是oracle高階安全元件一個部分.這個全域性使用者位於包含此資料庫 using 'hq';
連結的資料庫中.
fixed user 必須在定義資料庫連結中指定使用者及密碼.連線資料庫連結時,必須用 create public database link hq connect to jane identified by
資料庫連結中的使用者密碼訪問遠端資料庫. password using 'hq';
Connected User Database Links
--測試connect user database links,未指定使用者及密碼
SQL> create public database link second1 using 'second';
Database link created
SQL> show user
User is "scott"
--在遠端資料庫tbl_bck使用者已建立表t_sex
---但在源端查提示使用者密碼不存在
SQL> select * from ;
select * from
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
ORA-02063: preceding line from SECOND1
---在源端建立與遠端同樣的使用者
SQL> conn as sysdba
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as AS SYSDBA
SQL> create user tbl_bck identified by system account unlock;
SQL>
User created
SQL> grant dba to tbl_bck;
Grant succeeded
--而且還要以對應使用者連線
SQL> conn
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as
--再次執行即可查詢
SQL> select * from ;
A
---------------------------------------
1
---確認下本地不存在此表
SQL> desc t_sex;
Object t_sex does not exist.
其不利因素:
1,需要進行更多的許可權管理工作,因為資料庫連結的使用者需要遠端資料庫的許可權.為了安全.
僅提供完成工作的許可權即可
2,本地使用者連線或使用密碼認證或採用作業系統認證或網路認證服務.如使用者採用作業系統外
部認證,遠端資料庫remote_os_authent必須配置為true,否則不能連線到遠端資料庫用資料庫連結.
3,此引數已棄用,僅用於相容
Fixed User Database Links
源庫當前使用者建立指定使用者密碼的資料庫連結
定義資訊儲存在資料字典中
Current User Database Links
1,必須使用全域性使用者
2,全域性使用者必須使用x.509認證
3,全域性使用者必須位於資料庫連結所有的資料庫中
4,使用current_user database link的使用者不必是全域性使用者,即
jane使用者(不是全域性使用者)採用密碼認證到資料庫accounts payable.
jane使用者透過儲存過程儲存hq資料庫的資料.
此儲存過程使用current user database link
在儲存過程中使用全域性使用者scott訪問hq資料庫.
(說白:使用集中一個資訊庫訪問遠端資料庫,這個資訊庫由一個儲存過程管理,僅去訪問此儲存過程即可訪問遠端資料庫)
current user database link一些要點:(current user database link略為連結)
1,如不能訪問儲存過程(資訊庫)中的連結,當前即使用當前連結的使用者
2,如執行一個訪問連結的儲存過程,此儲存過程可能是儲存過程,檢視,或觸發器,當前使用者
即這些物件的用有者,而非呼叫這些物件的使用者.
3,如資訊庫(儲存過程)是一個invoker's rights function,儲存過程,包,基於invoker's 認證id進行連線遠端資料庫.
如:使用者jane呼叫scott.p儲存過程(由scott建立invoker's rights procedure),但jane是當前使用者;
(說白:就是哪個呼叫,哪個就是當前使用者,非建立者)
4,不能以一個企業使用者連線到資料庫,不用使用已存在的一個共享,全域性使用者的儲存過程中的current use link
如:使用者jane訪問遠端資料庫hq共享使用者的一個儲存過程,jane不能使用其儲存過程所含的current database link
訪問遠端資料庫.
資料庫連結一些操作限制:
1,不能對遠端資料庫的物件進行授權操作
2,不能對遠端資料庫物件執行desc,但如下物件支援desc,
tables
views
procedures
functions
3,不能分析遠端物件
4,不能定義遠端物件的引用完整性
5,不能為遠端物件授於角色
6,?Obtain nondefault roles on a remote database. For example, if jane connects to the local database
and executes a stored procedure that uses a fixed user link connecting as scott,
jane receives scott's default roles on the remote database. Jane cannot issue
SET ROLE to obtain a nondefault role.
不能獲取遠端資料庫的非預設角色.比如:jane連線到本地庫,並呼叫一個使用fixed user link(其以scott連線)
的儲存過程, 如此,jane會接收遠端資料庫scott的預設角色.但jane不能使用set role獲取非預設角色.
7,未基於ssl,pasword,nt本地認證的current user link不能操作.
--測試示例:
--不允許對遠端資料庫進行ddl操作
SQL> create table int);
create table int)
ORA-02021: DDL operations are not allowed on a remote database
--不允許遠端授權
SQL> grant select on to new;
grant select on to new
ORA-02021: DDL operations are not allowed on a remote database
不允許遠端分析
SQL> exec );
begin ); end;
ORA-06550: line 2, column 7:
PLS-00512: Implementation Restriction: 'DEFAULT_ESTIMATE_PERCENT': Cannot directly access remote package variable or cursor
--與上述限制不符,不能desc遠端表及檢視
SQL> desc ;
Object does not exist.
SQL> desc v_t_sex;
Object v_t_sex does not exist.
--alter不允許遠端操作
SQL> alter table add primary key(a);
alter table add primary key(a)
ORA-02021: DDL operations are not allowed on a remote database
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-754822/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分散式資料庫系列(二)分散式資料庫
- 分散式資料庫系列(一)分散式資料庫
- 分散式資料庫管理系列(一)分散式資料庫
- 聊聊分散式 SQL 資料庫Doris(三)分散式SQL資料庫
- 分散式資料庫分散式資料庫
- 分散式資料庫概述分散式資料庫
- Greenplum資料庫,分散式資料庫,大資料資料庫分散式大資料
- 分散式ID系列(3)——資料庫自增ID機制適合做分散式ID嗎分散式資料庫
- 第三代分散式資料庫來了,真香!分散式資料庫
- 分析型資料庫:分散式分析型資料庫資料庫分散式
- 分散式資料庫 ZNBase 的分散式計劃生成分散式資料庫
- 《分散式資料庫HBase案例教程》分散式資料庫
- openGauss 分散式資料庫能力分散式資料庫
- 分散式資料庫如何控制資料重複 ?分散式資料庫
- 國產分散式資料庫怎麼選?我做了三張表格(一)分散式資料庫
- 分散式資料庫火了 開源填補資料庫空白分散式資料庫
- 分散式資料庫技術論壇分散式資料庫
- “熱搜”中的分散式資料庫分散式資料庫
- 分散式資料庫排序及優化分散式資料庫排序優化
- 聊聊分散式 SQL 資料庫Doris(四)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(六)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(七)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(八)分散式SQL資料庫
- 分散式資料庫的健康評估分散式資料庫
- 分散式資料庫系統(DDBS) 概述分散式資料庫
- Hadoop元件--分散式資料庫HbaseHadoop元件分散式資料庫
- 分散式時序資料庫InfluxDB分散式資料庫UX
- 分散式資料庫 RethinkDB 2.0 釋出分散式資料庫
- 分散式資料庫元件——Database Link分散式資料庫元件Database
- ArcGIS Engine+分散式資料庫操作分散式資料庫
- 【大資料】BigTable分散式資料儲存系統分散式資料庫 | 複習筆記大資料分散式資料庫筆記
- OceanBase 首席架構師:關聯式資料庫到三代分散式資料庫,我親歷的資料庫演進史架構資料庫分散式
- (二) MdbCluster分散式記憶體資料庫——分散式架構1分散式記憶體資料庫架構
- 分散式資料庫入門:以國產資料庫 TDSQL 為例分散式資料庫SQL
- 企業考慮雲原生分散式資料庫的三個原因分散式資料庫
- 真正硬核分散式資料庫:開發分散式SQL資料庫的6種技術挑戰 - YugaByte分散式資料庫SQL
- 分散式資料庫拆表拆庫的常用策略分散式資料庫
- 崑崙分散式資料庫技術特點分散式資料庫