oralce schema 的設計意思

mcxiaoracle發表於2022-08-03

模式是一個邏輯概念,它將所有相關物件(表、檢視、索引、程式、包等)邏輯地組織到一個 集合 中。一般來說,模式的名稱與負責該模式的使用者的名稱是一致的。

建築物相當於一個資料庫。一棟樓有兩戶,使用者a和使用者B,當使用者a進入自己的房間(schema)時,可以在自己的房間裡新增桌子(table)、椅子(view)、沙發(index)等。

當然,使用者B也可以將不同的桌子、椅子和沙發新增到自己的模式中。

嗯,我們知道使用者a和使用者B有不同的房間(模式),所以通常我們會直接說使用者a或使用者B,這樣我們就可以區分他們不同的桌椅。

但嚴格來說,我們應該說使用者a的房間(schema)不同於使用者B的房間(schema)。所以我們一般說使用者a,它直接代表模式a。


這些類似使用者名稱的節點實際上是一個模式,其中包含各種物件,例如表、檢視、序列、儲存過程、同義詞、索引、叢集和資料庫連結。使用者通常對應於一個模式。使用者的架構名稱等於使用者名稱,並且是使用者的預設架構。


以你電腦的使用者為例,如果你的電腦有三個使用者,那麼每個使用者在登入系統時可以看到(使用)不同的功能



Databaseschema是指資料庫架構結構的定義,即建立哪些表以及表中的屬性。Databaseinstance是指您建立的資料庫


]模式是資料庫物件的集合。為了區分每個集合,我們需要給這個集合一個名稱,我們在enterprisemanager方案下看到了這個名稱實際上,這些類似使用者名稱的節點是一個模式,它包含各種物件,例如表、檢視、序列、儲存過程、synnyms、索引、叢集和資料庫連結。


使用者通常對應於模式。使用者的架構名稱等於使用者名稱,並且是使用者的預設架構。這就是為什麼我們看到模式名都是enterprisemanager模式中的資料庫使用者名稱。



一個使用者有一個預設的schema,其schema名就等於username,當然一個使用者還能夠使用其它的schema。假設我們訪問一個表時,沒有指明該表屬於哪一個schema中的,系統就會自己主動給我們在表上加上預設的sheman名。比方我們在訪問資料庫時,訪問scott使用者下的emp表,透過select * from emp; 事實上,這sql語句的完整寫法為select * from scott.emp。在資料庫中一個物件的完整名稱為schema.object,而不屬user.object。相似假設我們在建立物件時不指定該物件的schema,在該物件的schema為使用者的預設schema。這就像一個使用者有一個預設的表空間,可是該使用者還能夠使用其它的表空間,假設我們在建立物件時不指定表空間,則物件儲存在預設表空間中,要想讓物件儲存在其它表空間中,我們須要在建立物件時指定該物件的表空間。



SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改變使用者預設schema名


一個使用者有一個預設的schema,其schema名就等於使用者名稱,當然一個使用者還可以使用其他的schema。如果我們訪問一個表時,沒有指明該表屬於哪一個schema中的,系統就會自動給我們在表上加上預設的sheman名。比如我們在訪問資料庫時,訪問scott使用者下的emp表,透過select * from emp; 其實,這sql語句的完整寫法為select * from scott.emp。在資料庫中一個物件的完整名稱為schema.object,而不屬user.object。類似如果我們在建立物件時不指定該物件的schema,在該物件的schema為使用者的預設schema。這就像一個使用者有一個預設的表空間,但是該使用者還可以使用其他的表空間,如果我們在建立物件時不指定表空間,則物件儲存在預設表空間中,要想讓物件儲存在其他表空間中,我們需要在建立物件時指定該物件的表空間。


SYSAUX表空間被稱為系統輔助表空間,是10g版本開始推出的新功能,主要的目的是為SYSTEM表空間減負,Oracle對SYSTEM表空間的維護有一套獨立的體系,對SYSTEM表空間操作會佔用額外的CPU資源,而且效率低下,詳見我之前發表的文章為什麼不要把使用者表儲存到SYSTEM表空間。在10g版本,增加了SYSAUX輔助表空間,將EM、AWR等元件的表從SYSTEM表空間挪到了SYSAUX表空間中,這樣大大減少了SYSTEM表空間的消耗,也減少了Oracle對SYSTEM表空間維護的成本。



  但是有幾個比較坑爹的元件需要的表並沒有挪到SYSAUX表空間,比如常見的審計用到的AUD$表,很多DBA都可能遇到SYSTEM表空間使用率過高,查詢發現是AUD$表很大導致的,我們的資料庫正好開啟了審計功能,正好可以拿來做實驗。



mysql> SELECT table_name, table_type, engine FROM information_schema.tables WHERE table_schema = 'db5' ORDER BY table_name;


system使用者具有DBA許可權,但是沒有SYSDBA許可權。平常一般用該帳號管理資料庫。登入em時只能使用normal登入。



推薦閱讀:

https://blog.csdn.net/weixin_40913898/article/details/120645705











推薦閱讀:


















來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2908874/,如需轉載,請註明出處,否則將追究法律責任。

相關文章