程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

oracle之Schema

編輯:關於Oracle數據庫

       在一個數據庫中可以有多個應用的數據表,這些不同應用的表可以放在不同的schema之中,

      同時,每一個schema對應一個用戶,不同的應用可以以不同的用戶連接數據庫,

      這樣,一個大數據庫就可以根據應用把其表分開來管理。 www.2cto.com

      不同的schema之間它們沒有直接的關系,不同的shcema之間的表可以同名,

      也可以互相引用(但必須有權限),在沒有操作別的schema的操作根權下,

      每個用戶只能操作它自己的schema下的所有的表。不同的schema下的同名的表,

      可以存入不同的數據(即schema用戶自己的數據)。 Oracle裡schema幾乎和user/用戶是通用的。schema是指一組數據庫object

      (比如:表,視圖,包,序列,等等),而這些object是屬於用戶的,

      屬於一個用戶的所有object就叫schema。 如果你使用Oracle的企業管理器Enterprise Manager,你會發現裡面的用戶就叫schema。 Schema 中文意思是 方案. "方案"只是 Oracle 一個分類,不同用戶有不同的方案. 拿 DBA Studio 來說吧,在左邊分了四大類:(例程,存儲,安全,方案) 例程: 是管理庫的啟動...之類的. www.2cto.com 存儲: 管理表空間,數據文件之類. 安全: 就是管理用戶(密碼,表空間分配...) 方案: 有(表,視圖,存儲過程...),不同用戶有不同的案. 如: 在"方案"->選你的"用戶名"之後,才會出現用戶名相關的表. ----------------------------兩個不容易理解的概念──user和schema 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的方式

      進入別人的房子。 www.2cto.com 這個時候,你可以看到別人房子裡的家具(desc)。 如果你沒有特別指定的話,你所做的操作都是針對你當前所在房子中的東西。 至於你是否有權限使用(select)、搬動(update)或者拿走(delete)這些家具就看這個房子的

      主人有沒有給你這樣的權限了,或者你是整個大廈(DB)的老大(DBA)。

      alter session set schema可以用來代替synonyms。 如果你想調用其他schema的對象(有權限的前提下),但並沒有建synonym,

      同時又不想把其他schema名字放入代碼中,就可以首先使用alter session set schema=<其他schema名字>。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved