sys和system用戶的區別
【system】用戶只能用normal身份登陸em。
【sys】用戶具有“SYSDBA”或者“SYSOPER”權限,登陸em也只能用這兩個身份,不能用normal。
“SYSOPER”權限,即數據庫操作員權限,權限包括:
打開數據庫服務器 關閉數據庫服務器
備份數據庫 恢復數據庫
日志歸檔 會話限制
“SYSDBA”權限,即數據庫管理員權限,權限包括:
打開數據庫服務器 關閉數據庫服務器
備份數據庫 恢復數據庫
日志歸檔 會話限制
管理功能創建數據庫
normal 、sysdba、 sysoper有什么區別
normal 是普通用戶
另外兩個,你考察他們所具有的權限就知道了
sysdba擁有最高的系統權限
sysoper主要用來啟動、關閉數據庫,sysoper 登陸后用戶是 public
sysdba登陸后是 sys
SQL> conn / as sysdba
已連接。
SQL> grant sysoper to test;
授權成功。
SQL> conn test/test as sysoper;
已連接。
SQL> show user
USER 為"PUBLIC"
SQL> conn test/test as sysdba
已連接。
SQL> show user
USER 為"SYS"
SQL>
dba和sysdba的區別
dba、sysdba這兩個系統角色有什么區別呢
在說明這一點之前我需要說一下oracle服務的創建過程
·創建實例
·啟動實例
·創建數據庫(system表空間是必須的)
啟動過程
·實例啟動
·裝載數據庫
·打開數據庫
sysdba,是管理oracle實例的,它的存在不依賴於整個數據庫完全啟動,
只要實例啟動了,他就已經存在,以sysdba身份登陸,裝載數據庫、打開數據庫
只有數據庫打開了,或者說整個數據庫完全啟動后,dba角色才有了存在的基礎!
///////////////////////////////////////////////////////////
看見Csdn的Oracle技術版塊有人提出關於dba和sysdba的一些困惑,這里詳細的介紹一下兩者的區別。
dba是Oracle里的一種對象,Role 和User一樣,是實實在在存在在Oracle里的物理對象,而sysdba是指的一種概念上的操作對象,在Oracle數據里並不存在。
所以說這兩個概念是完全不同的。dba是一種role對應的是對Oracle實例里對象的操作權限的集合,而sysdba是概念上的role是一種登錄認證時的身份標識而已。
下面我們通過詳細的實例來看看他們的區別
1.
物理上的role dba 是可以在數據字典里查到的
SQL> select * from dba_roles where upper(role) = ‘DBA’;
ROLE PASSWORD
—————————— ——–
DBANO
而sysdba是概念上的role在數據字典里是查不到的
SQL> select * from dba_roles where upper(role) = ‘SYSDBA’;
no rows selected
2.
grant dba 和grant sysdba的差別
dba是正真的role,所以grant后在dba_role_privs里有記錄,而revoke后就沒有了
SQL> grant dba to testuser;
SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
GRANTEE GRANTED_ROLE ADM DEF
—————————— —————————— — —
TESTUSER RESOURCE NO YES
TESTUSER CONNECT NO YES
TESTUSER DBA NO YES
SQL> revoke dba from testuser;
SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
GRANTEE GRANTED_ROLE ADM DEF
—————————— —————————— — —
TESTUSER RESOURCE NO YES
TESTUSERCONNECTNOYES
對於sysdba是不會出現這個情況的,因為他不是正真的role
SQL> grant sysdba to testuser;
SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
GRANTEE GRANTED_ROLE ADM DEF
—————————— —————————— — —
TESTUSER RESOURCE NO YES
TESTUSERCONNECTNOYES
那么這個是sysdba是這么記錄的叻,
我在一個文章和帖子里對對sysdba的登錄有過詳細的敘述
對了,sysdba是登錄時候需要的他是和remote_login_passwordfile關聯的
我們可以查詢v$pwfile_users;
如下:
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
—————————— —– —–
SYS TRUE TRUE
SYSTEM TRUE FALSE
TESTUSER TRUE FALSE
當你grant sysdba后,在這里就多了一條
下面我們revoke一下,再來看
SQL> revoke sysdba from testuser;
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
—————————— —– —–
SYS TRUE TRUE
SYSTEMTRUEFALSE
沒有叻。
所以在這里dba和sysdba是根本不同概念了
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/inthirties/archive/2009/05/09/4159489.aspx