sys和system使用者區別 1)最重要的區別,儲存的資料的重要性不同 sys所有oracle的資料字典的基表和視圖都存放在sys使用者中,這些基表和視圖對於oracle的運行是至關重要的,由資料庫自己維護,任何使用者都不能手動更改。sys使用者擁有dba,sysdba,sysoper等角色或許可權,是oracle許可權最高的使用者。 system使用者用於存放次一級的內部資料,如oracle的一些特性或工具的管理資訊。system使用者擁有普通dba角色許可權。 2)其次的區別,許可權的不同 system使用者只能用normal身份登陸em,除非你對它授予了sysdba的系統許可權或者syspoer系統許可權。 sys使用者具有“SYSDBA”或者“SYSOPER”系統許可權,登陸em也只能用這兩個身份,不能用normal。 以sys使用者登陸Oracle,執行select * from V_$PWFILE_USERS;可查詢到具有sysdba許可權的使用者,如: SQL> select * from V_$PWFILE_USERS; USERNAME SYSDB SYSOP ------------------------------ ----- ----- SYS TRUE TRUE Sysdba和sysoper兩個系統許可權區別 normal 、sysdba、 sysoper有什麼區別 normal 是普通使用者 另外兩個,你考察他們所具有的許可權就知道了 sysdba擁有最高的系統許可權,登陸後是 sys sysoper主要用來啟動、關閉資料庫,sysoper 登陸後使用者是 public sysdba和sysoper屬於system privilege,也稱為administrative privilege,擁有例如資料庫開啟關閉之類一些系統管理層級的許可權sysdba和sysoper具體的許可權可以看下錶:
系統許可權 |
sysdba |
sysoper |
區別 |
Startup(啟動資料庫) |
startup |
Shutdown(關閉資料庫) |
shutdown |
alter database open/mount/backup |
alter database open/mount/backup |
改變字元集 |
none |
create database(建立資料庫) |
None不能建立資料庫 |
drop database(刪除資料庫) |
none |
create spfile |
create spfile |
alter database archivelog(歸檔日誌) |
alter database archivelog |
alter database recover(恢複資料庫) |
只能完全恢複,不能執行不完全恢複 |
擁有restricted session(會話限制)許可權 |
擁有restricted session許可權 |
可以讓使用者作為sys使用者串連 |
可以進行一些基本的操作,但不能查看使用者資料 |
登入之後使用者是sys |
登入之後使用者是public |
system如果正常登入,它其實就是一個普通的dba使用者,但是如果以as sysdba登入,其結果實際上它是作為sys使用者登入的,這一點類似Linux裡面的sudo的感覺,從登入資訊裡面我們可以看出來。因此在as sysdba串連資料庫後,建立的對象實際上都是產生在sys中的。其他使用者也是一樣,如果 as sysdba登入,也是作為sys使用者登入的,看以下實驗: SQL> create user strong identified by strong; 使用者已建立。 SQL> conn strong/strong@magick as sysdba; 已串連。 SQL> show user; USER 為 "SYS" SQL> create table test(a int); 表已建立。 SQL> select owner from dba_tables where table_name='test'; 未選定行 //因為建立表時oracle自動轉為大寫,所以用小寫查的時候是不存在的; SQL> select owner from dba_tables where table_name='TEST'; OWNER ------------------------------ SYS dba和sysdba的區別 dba、sysdba這兩個系統角色有什麼區別呢 在說明這一點之前我需要說一下oracle服務的建立過程 建立執行個體→·啟動執行個體→·建立資料庫(system資料表空間是必須的) 啟動過程 執行個體啟動→·裝載資料庫→·開啟資料庫 sysdba,是管理oracle執行個體的,它的存在不依賴於整個資料庫完全啟動,只要執行個體啟動了,他就已經存在,以sysdba身份登陸,裝載資料庫、開啟資料庫。只有資料庫開啟了,或者說整個資料庫完全啟動後,dba角色才有了存在的基礎! as SYSDBA or SYSOPER串連方式和不帶as的區別 When you connect with SYSDBA or SYSOPER privileges, you connect with a default schema, not with the schema that is generally associated with your username. For SYSDBA this schema is SYS; for SYSOPER the schema is PUBLIC. 看下面的測試,你就明白了以as sysdba串連和不以as sysdba串連的區別了。 SQL> conn zhhstream/zhhstream Connected. SQL> show user USER is "ZHHSTREAM" SQL> create table test 2 (id number(4), 3 name varchar2(10) 4 ) 5 ; Table created. SQL> desc test Name Null? Type ----------------------------------------------------- -------- ------------------------------------ ID NUMBER(4) NAME VARCHAR2(10) SQL> conn zhhstream/zhhstream as sysdba Connected. SQL> show user USER is "SYS" SQL> desc test ERROR: ORA-04043: object test does not exist SQL> conn zhhstream/zhhstream as sysoper Connected. SQL> show user USER is "PUBLIC" |