兩個不容易理解的概念 user和schema

2021-05-22 05:07:18 字數 1975 閱讀 6742

前言: user是控制許可權的,而schema則是乙個容器,非所有者如果需要訪問這個容器下的物件就需要在物件前面寫上schema(owner)的名字,如果不想寫而又沒有建立synonym,此時可以通過alter session set current_schema=schema_name來改變當前session的schema從而在訪問物件時省去schema(owner);最終能否訪問物件還是要看是否有訪問這個物件的許可權而和schema無關。 深入理解user和schema的區別: user即oracle中的使用者,和所有系統的中使用者概念類似,使用者所持有的是系統的許可權及資源;而schema所涵蓋的是各種物件,它包含了表、函式、包等等物件的「所在地」,並不包括對他們的許可權控制。好比乙個房子,裡面放滿了家具,對這些家具有支配權的是房子的主人(user),而不是房子(schema)。你可以也是乙個房子的主人(user),擁有自己的房子(schema)。可以通過alter session的方式進入別人的房子。這個時候,你可以看到別人房子裡的家具(desc)。如果你沒有特別指定的話,你所做的操作都是針對你當前所在房子中的東西。 至於你是否有許可權使用(select)、搬動(update)或者拿走(delete)這些家具就看這個房子的主人有沒有給你這樣的許可權了,或者你是整個大廈(db)的老大(dba)。alter session set schema可以用來代替synonyms。如果你想呼叫其他schema的物件(有許可權的前提下),但並沒有建synonym,同時又不想把其他schema名字放入**中,就可以首先使用alter session set schema=

《其他schema名字》

。 sql> connect /as sysdba 已連線。 sql> revoke dba from xys,test; revoke dba from xys,test * 第 1 行出現錯誤: ora-01951: role 'dba' 未授予 'xys' sql> revoke dba from test; 撤銷成功。 sql> connect xys/manager 已連線。 sql> select table_name from user_tables; 未選定行 sql> create table t(id int) ; 表已建立。 sql> insert into t values(1); 已建立 1 行。 sql> commit; 提交完成。 sql> connect test/test 已連線。 sql> select table_name from user_tables; table_name ------------------------------ t tt sys_temp_fbt sql> desc t 名稱 是否為空? 型別 --------------- -------- ------------- id number(38) sql> select * from t; 未選定行 sql> show user user 為 "test" sql> select * from xys.t; select * from xys.t * 第 1 行出現錯誤: ora-00942: 表或檢視不存在 sql> alter session set current_schema=xys; 會話已更改。 sql> show user user 為 "test" sql> select * from xys.t; select * from xys.t * 第 1 行出現錯誤: ora-00942: 表或檢視不存在 sql> select * from t; select * from t * 第 1 行出現錯誤: ora-00942: 表或檢視不存在 sql> alter session set current_schema=test; 會話已更改。 sql> select * from t; 未選定行 sql> connect xys/manager 已連線。 sql> grant select on t to test; 授權成功。 sql> connect test/test 已連線。 sql> select * from xys.t; id ---------- 1 sql> alter session set current_schema=xys; 會話已更改。 sql> select * from t; id ---------- 1

找乙個好的grid元件不容易

web開發離不開grid,乙個功能豐富的grid需要支援排序,分頁,自定義列,列寬度可調等功能,需要ajax支援。如果把所有這些功能都集中在一起,那麼我要用這個grid外掛程式就要引入乙個比較大的js檔案和其自帶的css檔案。大的js檔案會導致頁面載入變慢。google了半天,始終沒有找到乙個比較合...

2020過的不容易,2021定個小目標

目錄 1 關於大環境 2 關於蘇州圈子 3 自身 4 關於家庭 5 2021計畫 2020過去好久了,一直想著對2020做乙個年終總結,也一直拖著,太懶了,也是太累了,難得休息下來。停下來,大部分的休息時間寧願發呆,睡覺,也不想開啟電腦,2020 實在太累了,加了太多的班。開始吧!2020年的疫情來...

兩個容易忽視的小問題

兩個容易忽視的小問題 1,在linux系統下,連root使用者無法用su切換到別的使用者,總是報錯密碼不對。後來發現本地配置了winbind服務來跟windows ad域整合,winbind啟動失敗,導致該錯誤發生。很難聯絡到這個原因。2,在oracle的函式裡,to char,to number是...