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 * fromV_$PWFILE_USERS;
USERNAME SYSDBA SYSOPER
SYS TRUE TRUE
Sysdba和sysoper兩個系統許可權區別
normal 、sysdba、 sysoper有什麼區別
normal 是普通使用者
另外兩個,你考察他們所具有的許可權就知道了
sysdba擁有最高的系統許可權,登陸後是 sys
sysoper主要用來啟動、關閉資料庫,sysoper 登陸後使用者是 public
sysdba和sysoper屬於systemprivilege,也稱為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 wheretable_name='test';
未選定行 //因為建立表時oracle自動轉為大寫,所以用小寫查的時候是不存在的;
SQL> select owner from dba_tables wheretable_name='TEST';
OWNER
------------------------------
SYS
dba和sysdba的區別
dba、sysdba這兩個系統角色有什麼區別呢
在說明這一點之前我需要說一下oracle服務的建立過程
建立執行個體→·啟動執行個體→·建立資料庫(system資料表空間是必須的)
啟動過程
執行個體啟動→·裝載資料庫→·開啟資料庫
sysdba,是管理oracle執行個體的,它的存在不依賴於整個資料庫完全啟動,只要執行個體啟動了,他就已經存在,以sysdba身份登陸,裝載資料庫、開啟資料庫。只有資料庫開啟了,或者說整個資料庫完全啟動後,dba角色才有了存在的基礎!
預設密碼:
sys change_on_install (意思是安裝時改變,我改成zxsz4084)
system manager
scott tiger
在10g裡面,sys使用者必須以sysdba/sysoper身份登陸資料庫。解決辦法 sqlplus sys/zxsz4084 as sysdba
再說後者。一看你的system使用者密碼就是錯誤得,你說你在安裝時候改過密碼,應該就是和你的sys使用者密碼一樣得,應該是zxsz4084,而不是預設得密碼manager,你要是是對system使用者進行解鎖的話,系統自然要提醒你修改密碼,所以密碼應該不是manager。
SYS使用者是Oracle中許可權最高的使用者,而SYSTEM是一個用於資料庫管理的使用者。在資料庫安裝完之後,應立即修改SYS,SYSTEM這兩個使用者的口令,以保證資料庫的安全。
修改口令:
sqlplus / as sysdba;
1.sql> alter user sys identified by 123456
2.sql>grantconnect to sys identified by 123456
3.sql>passwordsystem (註:此命令只適用於SYSTEM)
SYS和SYSTEM使用者之間可以相互修改口令
後,按以下幾種方法登入:
sqlplus / as sysdba;
sqlplus sys/abcde as sysdba;
sqlplus sys/ as sysdba;
sqlplus sys as sysdba;
都可以登入成功,然後查看目前使用者:
sql>show user
顯示 user is 'SYS'。
這是為什麼呢,為什麼修改了口令沒有效果,不用口令或者隨便用什麼口令都可以進入呢。
答案是:認證方法。
認證方法。
作業系統,組中的使用者登入的作業系統,就可以以SYSDBA的身份登入資料庫,不會驗證SYS的口令。
對於windows作業系統,在oracle資料庫安裝後,會自動在作業系統中安裝一個名為ORA_DBA的使用者組,只要是該組中的使用者,即可以SYSDBA的身份登入資料庫而不會驗證SYS的口令。也可以建立名為ORA_SID_DBA(SID為執行個體名)的使用者組,屬於該使用者組的使用者也可以具備以上特權。
認證。(windows,unix平台有大同小異)
為NONE
2.修改SQLNET.ORA檔案,此檔案所在目錄為:...\oracle\product\10.1.0\db_1\network\admin\sqlnet.ora。在其中添加這一行:SQLNET.AUTENTICATION_SERVICES=(NTS)
3.重新啟動資料庫。
認證(口令檔案認證):為EXCLUSIVE或SHARED。其中,exclusive表示僅有一個執行個體可以使用口令檔案。shared表口令檔案可以供多個執行個體使用。
2.修改SQLNET.ORA檔案,在SQLNET.AUTENTICATION_SERVICES=(NTS)前加#號,即#SQLNET.AUTENTICATION_SERVICES=(NTS)
3.重新啟動資料庫。
口令丟失的情況,怎麼辦?
1.使用system使用者進行口令更改
2.如果存在密碼檔案,則刪除它(一般路徑在..\oracle\product\xx.x.x\db_1\database下) 然後下輸入表示密碼檔案路徑,密碼檔案的格式為pwd<sid>,sid是資料庫執行個體名。
下為orapwd<sid>。