15.Oracle的用戶、Schema、數據庫、表空間、數據文件的相互關系


1.前言

  今天徹底搞懂Oracle的用戶、Schema、數據庫、表空間、數據文件的相互關系

2.開始

  在進入抽象的概念之前,可以先看一下網上的這段比喻:

  “我們可以把Database(這里應該是指某一個sid對應的數據庫)看做一個大倉庫,倉庫分了很多很多房間,Schema就是其中的房間,一個schema代表一個房間,table可以看做是每個schema中的床,table(床)被放入每個房間中,不能放置在房間外,user就是每個schema的主人,所以schema包含的是object,而不是user,user和schema是一一對應的,每個user在沒有特別指定下只能使用自己schema(房間)的東西,如果一個user想要使用其他schema(房間)的東西,那就要看那個schema(房間)的user(主人)有沒有給你這個權限了,或者看這個倉庫的老大(DBA)有沒有給你這個權限了。換句話說,如果你是某個倉庫的主人,那么這個倉庫的使用權和倉庫中的東西都是你的(包括房間),你有完全的操作權,可以扔掉不用的東西從每個房間,也可以放置一些有用的東西都某一個房間,你還可以給每個user分配具體的權限,也就是他到某一個房間能做寫什么,是只能看(read-only),還是可以像主人一樣有所有的控制權(R/W).這個就要看這個user所對應的角色role了。

3.具體介紹

  (1)數據庫:

  Oracle數據庫時數據的物理存儲。這就包括(數據文件ORA或者DBF、控制文件、聯機日志、參數文件)。其實Oracle數據庫的概念和其它數據庫不一樣,這里的數據庫是一個操作系統只有一個庫。可以看做是oracle就只要一個大數據庫。

  (2)實例

  一個oracle實例(Oracle instance)有一系列的后台進程(Backgroud processes)和內存結構(Memory Structures)組成,一個數據庫可以有n個實例。

  (3)用戶(user)

  用戶是在實例下建立的。不同實例可以建立相同名字的用戶。  

-- 創建新用戶時,同時要指明表空間和臨時表空間(建立創建時就指定表空間名)
 create user testuser
         #profile "default"
         identified by "password123"
         default tablespace ts_test     ##這里要指定默認表空間
         temporary tablespace tmp_ts_test  ##這里指定了臨時表空間
         quota 500m on ts_test             ##用戶在表空間的限額
         account unlock;                   ##解鎖用戶

   *關於profile的說明(使用profile文件實現用戶口令限制與資源限制)

  profile是口令限制,資源限制的命令集合,建立oracle數據庫時,oracle會自動建立命為default的profile,初始化的default沒有進行任何口令和資源限制,使用profile有以下一些注意事項:

  1.建立profile時,如果只設置了部分口令或者資源限制選項,其他選項會自動使用默認值(default的相應選項)

  2.建立用戶時,如果不指定profile選項,oracle會自動將default分配給相應的數據庫用戶

  3.一個用戶只能分配一個profile。如果要同時管理用戶的口令和資源,那么在建立profile時應該同時指定口令和資源選項。

  4.使用profile管理口令時,口令管理選項總是處於被激活狀態,但如果使用profile管理資源,必須要激活資源限制。

  *關於profile使用實踐

  1)查看當前存在的profile文件 

select distinct profile from dba_profiles;
--查看指定profile文件中各資源的限制情況:
select resouce_name,limit from dba_profiles where profile='DEFAULT';

  2)修改現在profile文件中資源選項: 

1 alter profile default limit FAILED_LOGIN_ATTEMPTS 1 password_lock_time 3;

  3)創建一個新的profile文件

1 create profile lock_accout limit failed_login_attempts 3 password_lock_time 10;

  4)讓用戶使用新的profile文件:

1 alter user testuser profile lock_accout;

  5)查看用戶當前使用的profile文件 

select username,profile from dba_users;

  6)使用profile文件限制用戶對資源的使用;

1 --必須先激活資源限制:
2 alter system set resource_limit=TRUE scope=memory;
3 --對資源限制做修改:
4 alter profile lock_accout limit cpu_per_session 5000;

  7)刪除profile

1 drop profile lock_accout;

  8)刪除profile並將使用當前profile的用戶profile改為default

1 drop profile lock_accout cascade;

  9)以下列出所有profile相關參數內容以便參考: 

FAILED_LOGIN_ATTEMPTS:用於指定聯系登陸的最大失敗次數.
 
PASSWORD_LOCK_TIME:用於指定帳戶被鎖定的天數.
PASSWORD_LIFE_TIME:用於指定口令有效期
PASSWORD_GRACE_TIME:用於指定口令寬限期.
PASSWORD_REUSE_TIME:用於指定口令可重用時間.
PASSWORD_REUSE_MAX;用於指定在重用口令之前口令需要改變的次數.
PASSWORD_VERIFY_FUNCTION;是否校驗口令(校驗將值改為VERIFY_FUNCTION)
CPU_PER_SESSION:用於指定每個會話可以占用的最大CPU時間.
LOGICAL_READS_PER_SESSON:用於指定會話的最大邏輯讀取次數.
PRIVATE_SGA:用於指定會話在共享池中可以分配的最大總計私有空間.需要注意,該選項只使用與共享服務器模式.
COMPOSITE_LIMIT:用於指定會話的總計資源消耗(單位:服務單元).
CPU_PER_CALL:限制每次調用(解析,執行或提取數據)可占用的最大CPU時間(單位:百分之一秒)
LOGICAL_READS_PER_CALL:用於限制每次調用的最大邏輯I/O次數.
SESSIONS_PER_USER:用於指定每個用戶的最大並發會話個數.
CONNECT_TIME:用於指定會話的最大連接時間.
IDLE_TIME:用於指定會話的最大空閑時間.

  (4)schema

  在Oracle中,一般一個用戶就對應一個schema,該用戶的schema名等於用戶名,並作為該用戶缺省schema,用戶是不能創建schema的,schema在創建用戶的時候創建,並可以指定用戶的各種表空間(這點與pg是不同,pg是可以創建schema並指派給某個用戶)。當前連接到數據庫上的用戶創建的所有數據庫對象都默認數據這個schema(在不指明schema的情況下),比如若用戶scott連接到數據庫,然后create table test(id int null)創建表,那么這個表被創建在了scott這個schema中;但若這樣create table testuser.test(id int not null)的話,這個表被創建在了testuser這個schema中,當前前提是權限允許(即testuser用戶給scott用戶在其schema下創建數據表的權限)。由此看來,schema是一個邏輯概念。

  但一定要注意一點:schema並不是在創建user時就創建的,而是在該用戶創建了第一個對象之后才將schema真正創建的,只有user下存在對象,他對應的schema才會存在,如果user下不存在任何對象了,schema也就不存在了。

  (5)表空間

  表空間是一個用來管理數據存儲邏輯概念,表空間只是和數據文件(ORA或者DBF文件)發生關系,數據文件是物理的,一個表空間可以包含多個數據文件,而一個數據文件只能隸屬一個表空間。

  (6)數據文件(dbf、ora)

  數據文件是數據庫的物理存儲單位,數據庫的數據在邏輯上是存儲在表空間中的,但真正落地是在某一個或者多個數據文件中。而一個表空間可以由一個或者多個數據文件組成,一個數據文件只能屬於一個表空間。一旦數據文件被加入到某個表空間后,就不能刪除這個文件,如果要刪除某個數據文件,只能刪除其所屬於的表空間才行。

  

 

 

  

  

 

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM