簡體   English   中英

Oracle公共共享數據庫鏈接不適用於非DBA用戶

[英]Oracle public shared database link not working for non-DBA users

我需要將Oracle中的數據庫鏈接從普通的公共數據庫鏈接轉換為公共共享數據庫鏈接。

我以具有DBA特權的用戶身份運行以下命令,以使鏈接共享:

DROP PUBLIC DATABASE LINK "MYDBLINK";

CREATE SHARED PUBLIC DATABASE LINK "MYDBLINK"
AUTHENTICATED BY SOME_USER
IDENTIFIED BY thepassword
USING 'OTHERDB';

我使用的用戶名和密碼與數據庫鏈接已使用的用戶名和密碼相同。

當我用具有DBA特權的用戶查詢數據庫鏈接時,它可以正常工作。 但是,當我使用非DBA特權用戶並檢查數據庫鏈接時,它表明數據庫鏈接的用戶名為null ,並且如果我嘗試查詢鏈接,則會得到:

ORA-01017:無效的用戶名/密碼; 登錄被拒絕

對於非DBA用戶,為什么鏈接會有不同的行為?

通過使用在AUTHENTICATED BY子句中定義的憑據,可以完成對遠程數據庫的身份AUTHENTICATED BY 建立連接后,將使用在CONNECT TO子句或CURRENT USER上定義的用戶特權(而不是AUTHENTICATED BY模式)對遠程數據庫進行操作。

在您的情況下,您尚未定義CONNECT TO模式,因此它使用本地數據庫中的當前用戶對遠程數據庫進行操作。 如果遠程服務器上不存在您當前在本地數據庫上登錄的用戶,則會出現此錯誤。

這是一個演示

在本地數據庫上( AS SYSDBA

SQL> CREATE SHARED PUBLIC DATABASE LINK link2remotedb
AUTHENTICATED BY userA_uat IDENTIFIED BY userA_uat
USING 'ORCLUAT';  

Database link created.

然后,我由一個存在於本地數據庫但不存在於遠程數據庫上的用戶連接。

SQL> conn jay/jay
Connected.
SQL> select * from address@link2remotedb;
select * from address@link2remotedb
                      *
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from LINK2REMOTEDB

發生錯誤是因為SELECT操作使用當前用戶JAY從遠程數據庫的ADDRESS表中進行選擇。 JAY用戶在遠程數據庫上不存在。

那么,接下來呢?

CONNECT TO子句中定義用戶。

SQL> CREATE SHARED PUBLIC DATABASE LINK link2remotedb
CONNECT TO userA_uat IDENTIFIED BY userA_uat
AUTHENTICATED BY userA_uat IDENTIFIED BY userA_uat
USING 'ORCLUAT'; 

Database link created.

SQL> conn jay/jay
Connected.
SQL> select * from address@link2remotedb;

文檔

  • 使用共享數據庫鏈接

  • 暫無
    暫無

    聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

     
    粵ICP備18138465號  © 2020-2024 STACKOOM.COM