oracle中的Schema 分享

2021-06-01 09:46:09 字數 1573 閱讀 4584

在乙個資料庫中可以有多個應用的資料表,這些不同應用的表可以放在不同的schema之中,同時,每乙個schema對應乙個使用者,不同的應用可以以不同的使用者連線資料庫,這樣,乙個大資料庫就可以根據應用把其表分開來管理。

不同的schema之間它們沒有直接的關係,不同的shcema之間的表可以同名,也可以互相引用(但必須有許可權),在沒有操作別的schema的操作根權下,每個使用者只能操作它自己的schema下的所有的表。不同的schema下的同名的表,可以存入不同的資料(即schema使用者自己的資料)。

oracle裡schema幾乎和user/使用者是通用的。schema是指一組資料庫object(比如:表,檢視,包,序列,等等),而這些object是屬於使用者的,屬於乙個使用者的所有object就叫schema。

如果你使用oracle的企業管理器enterprise manager,你會發現裡面的使用者就叫schema。

schema 中文意思是 方案.   

"方案"只是 oracle 乙個分類,不同使用者有不同的方案.

拿 dba studio 來說吧,在左邊分了四大類:(例程,儲存,安全,方案)

例程: 是管理庫的啟動...之類的.

儲存: 管理表空間,資料檔案之類.

安全: 就是管理使用者(密碼,表空間分配...)

方案: 有(表,檢視,儲存過程...),不同使用者有不同的案.

如: 在"方案"->選你的"使用者名稱"之後,才會出現使用者名稱相關的表.  

兩個不容易理解的概念──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的方式進入別人的房子。

這個時候,你可以看到別人房子裡的家具(desc)。

如果你沒有特別指定的話,你所做的操作都是針對你當前所在房子中的東西。

至於你是否有許可權使用(select)、搬動(update)或者拿走(delete)這些家具就看這個房子的主人有沒有給你這樣的許可權了,或者你是整個大廈(db)的老大(dba)。alter session set schema可以用來代替synonyms。

如果你想呼叫其他schema的物件(有許可權的前提下),但並沒有建synonym,同時又不想把其他schema名字放入**中,就可以首先使用alter session set schema=《其他schema名字》。

oracle中的schema和表空間

我一直搞不清oracle裡面的schema和表空間。尤其是不知道這個schema是個啥。一般,我們建立表空間,將資料表建在其中,然後匯出匯入,好像指定的也是這個同名的schema 建立乙個表空間work create tablespace work datafile d ybjzcheck db w...

Oracle的schema 方案 模式 使用者

size small size small size x small 從定義中我們可以看出schema為資料庫物件的集合,為了區分各個集合,我們需要給這個集合起個名字,這些名字就是我們在企業管理器的方案下看到的許多類似使用者名稱的節點,這些類似使用者名稱的節點其實就是乙個schema,schema裡...

oracle 表空間和schema

什麼是schema?schema就是資料庫物件的集合 為了區分各個集合,我們需要給這個集合起個名字,這個名字就是schema 舉例說明 訪問scott使用者下的emp表,通過select from emp,其實這條sql語句的完整寫法為 select from scott.emp 對於資料庫來說,不...