IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁數(shù)據(jù)庫Oracle → user和schema的區(qū)別和聯(lián)系

user和schema的區(qū)別和聯(lián)系

時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

  今天重讀ORACLE官方文檔《concepts》,讀到schema的基本概念,對(duì)它的理解更進(jìn)一層,官方文檔中關(guān)于schema是這樣解釋的:

  "A schema is a collection of database objects. A schema is owned by a database user and has the same name as that user. Schema objects are the logical structures that directly refer to the database's data. Schema objects include structures like tables, views, and indexes.(There is no relationship between a tablespace and a schema. Objects in the same schema can be in different tablespaces, and a tablespace can hold objects from different schemas.)"

  官方文檔里面說得比較明白,schema是數(shù)據(jù)對(duì)象的集合,包括像表、視圖、索引、同義詞等等都可以說是schema的對(duì)象。但不夠生動(dòng),網(wǎng)上有篇文章里面把schema和user的關(guān)系用一個(gè)形象的比喻闡述得非常透徹,引用如下:

  "user即Oracle中的用戶,和所有系統(tǒng)的中用戶概念類似,用戶所持有的是系統(tǒng)的權(quán)限及資源;而schema所涵蓋的是各種對(duì)象,它包含了表、函數(shù)、包等等對(duì)象的"所在地",并不包括對(duì)他們的權(quán)限控制。好比一個(gè)房子,里面放滿了家具,對(duì)這些家具有支配權(quán)的是房子的主人(user),而不是房子(schema)。你可以也是一個(gè)房子的主人(user),擁有自己的房子(schema).可以通過alter session的方式進(jìn)入別人的房子。如果你沒有特別指定的話,你所做的操作都是針對(duì)你當(dāng)前所在房子中的東西。至于你是否有權(quán)限使用(select)、搬動(dòng)(update)或者拿走(delete)這些家具就看這個(gè)房子的主人有沒有給你這樣的權(quán)限了,或者你是整個(gè)大廈(DB)的老大(DBA)。alter session set schema可以用來代替synonyms。如果你想調(diào)用其他schema的對(duì)象(有權(quán)限的前提下),但并沒有建synonym,同時(shí)又不想把其他schema名字放入代碼中,就可以首先使用alter session set schema=<其他schema名字>。"

  這段文字說得非常生動(dòng),把user和schema的區(qū)別闡述得很透徹,下面通過具體的例子來加深對(duì)user和schema兩者區(qū)別的認(rèn)識(shí):

  第一步,以sys用戶登陸SQL并建立普通用戶storm和penguin:

  $ sqlplus / as sysdba

  SQL> create user storm identified by storm;

  User created.

  SQL> create user penguin identified by penguin;

  User created.

  第二步,賦予一些基本的權(quán)限給新建的用戶storm和penguin:

  SQL> grant connect,create table,resource to storm,penguin;

  Grant succeeded.

  第三步,以storm用戶登陸,創(chuàng)建一張表并插入數(shù)據(jù):

  SQL> conn storm/storm

  Connected.

  SQL> create table t (id int);

  Table created.

  SQL> insert into t values(1);

  1 row created.

  SQL> commit;

  Commit complete.

  第四步,以penguin用戶登陸,看能否查詢storm用戶所建表里面的數(shù)據(jù):

  SQL> conn penguin/penguin

  Connected.

  SQL> select table_name from user_tables;

  no rows selected

  SQL> show user;

  USER is "PENGUIN"

  SQL> select * from storm.t;

  select * from storm.t

  *

  ERROR at line 1:

  ORA-00942: table or view does not exist

  從以上結(jié)果可以看出,用戶penguin無法查看用戶storm所建表里面的內(nèi)容,甚至被告知沒有這張表。

  第五步,修改當(dāng)前schema為storm,并繼續(xù)查詢:

  SQL> alter session set current_schema=storm;

  Session altered.

  SQL> show user;

  USER is "PENGUIN"

  SQL> select * from storm.t;

  select * from storm.t

  *

  ERROR at line 1:

  ORA-00942: table or view does not exist

  仍然不能查看。

  第六步,以storm用戶登陸,賦予penguin用戶查看t表的權(quán)限:

  SQL> conn storm/storm

  Connected.

  SQL> grant select on t to penguin;

  Grant succeeded.

  第七步,以penguin用戶登陸,查看storm用戶的t表:

  SQL> conn penguin/penguin

  Connected.

  SQL> select * from storm.t;

  ID

  ----------

  1

  更簡(jiǎn)單的,將當(dāng)前schema更改為storm,可以簡(jiǎn)化查詢過程:

  SQL> alter session set current_schema=storm;

  Session altered.

  SQL> select * from t;

  ID

  ----------

  1

  這個(gè)實(shí)驗(yàn)下來,對(duì)user和schema的區(qū)別和聯(lián)系應(yīng)該有了進(jìn)一步的理解了。

關(guān)鍵詞標(biāo)簽:user,schema,ORACLE

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實(shí)例的控制文件 誤刪Oracle數(shù)據(jù)庫實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索 為UNIX服務(wù)器設(shè)置Oracle全文檢索

相關(guān)下載

    人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法