簡體   English   中英

以用戶身份連接時,在Oracle數據庫中收集dba_users信息

[英]gather dba_users information in Oracle database when connected as a user

我是Oracle數據庫的新手。 我看到如果我以sys用戶身份連接,我可以做

select * from dba_users;

但是一旦完成conn nonsys@dbid ,我就不能再這樣做了。 我會得到一個錯誤的說法

ORA-00942: table or view does not exist

select * from sys.dba_users; 也不工作。

您能否解釋一下這是為什么,以及如何select * from dba_users; 后以非系統用戶身份連接?

另外, disconnect使我完全斷開連接; 是否只能“退出”當前用戶並在sqlplus中返回sys ,如果可以,該怎么做?

Oracle中的DBA_ *視圖包含有關數據庫中所有對象的信息,無論其所有權如何。 默認情況下,只有管理帳戶有權訪問這些視圖。 出於安全原因這樣做。 為了使“普通”用戶能夠訪問這些視圖,必須直接基於每個視圖或通過諸如SELECT ANY TABLE(不建議)之類的系統特權全局授予它們訪問權限。 最好授予對用戶真正需要的實際DBA_視圖的訪問權限。 通常,ALL_視圖將為典型用戶提供他們所需的所有信息。

要退出當前用戶會話並以其他用戶身份連接,請使用CONNECT命令:

CONNECT sys/pw as sysdba

編輯:

對象的所有者可以通過GRANT命令將對任何對象的訪問權限授予其他用戶或角色

GRANT SELECT ON dba_users TO nonsys;

作為用戶SYS執行,這將向用戶nonsys授予對dba_users視圖的選擇訪問權限。

執行授予后,用戶nonsys將能夠通過SELECT語句從此視圖中進行選擇:

SELECT * FROM dba_users;

暫無
暫無

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

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