1. 程式人生 > 其它 >Oracle 表空間和許可權

Oracle 表空間和許可權

表空間

表空間是資料庫的邏輯劃分,一個表空間只能屬於一個數據庫。所有的資料庫物件都存放在指定的表空間中。但主要存放的是表,所以稱作表空間。

Oracle中很多優化都是基於表空間的設計理念而實現的,一個數據庫可以包含多個表空間,一個表空間只能屬於一個數據庫。一個表空間包含多個數據檔案,一個數據檔案只能屬於一個表空間。

Oracle 資料庫中至於存放一個表空間,即SYSTEM的表空間。

表空間的典型應用

  1. 控制使用者所佔用的表空間配額

    • 建立不同的表空間,為其設定最大的儲存容量,然後把使用者歸屬於這個表空間。如此的話,這個使用者的儲存容量,就受到這個表空間大小的限制。
  2. 控制資料庫所佔用的磁碟空間

  3. 靈活放置表空間,提高資料庫的輸入輸出效能

    • 可以將不同型別的資料放置不同的表空間中,比如與湖南省相關的資料檔案就放置在湖南省的這個表空間中。北京的就放在北京這個表空間中。
  4. 大表的排序操縱

    • 針對這種容量比較大的表物件,往往把它放在一個獨立的表空間,以提高資料庫效能。

預設表空間

系統中預設建立的幾個表空間

  1. SYSTEM

    • 所有的dictionary object都存在SYSTEM表空間裡面,存在SYS使用者的表,檢視,儲存過程物件。
  2. SYSAUX

    • 作為SYSTEM表空間的輔助表空間,減輕SYSTEM表空間負荷。
  3. USERS

    • 儲存使用者建立的資料庫物件
  4. UNDOTBS

    • 儲存撤銷資訊的undo表空間。
  5. EXAMPLE

    • 資料庫示例的表空間
  6. TEMP

    • 臨時表空間主要用途是在資料庫進行排序運算,管理索引,訪問檢視等操縱時提供的臨時的運算空間,當運算完成之後系統會自動清理。

表空間查詢命令

  1. 查詢所有的表空間

    select * from V$tablespace
    
  2. 查看錶空間的資料檔案

    select file_name,tablespace_name from dba_data_files
    
  3. 檢視使用者的預設表空間

    select default_tablespace,temporary_tablespace from dba_users where username='使用者名稱';
    
  4. 檢視指定表空間有哪些表

    select table_name,tablespace_name from dba_tables where tablespace_name='表空間名稱'
    

建立表空間

create tablespace test_data datafile 'test_data.dbf' size 32M autoextend on next 32M maxsize 2048M extent management local

建立臨時表空間

create temporary tablespcae test_temp tempfile 'test_temp.dbf' size 32M autoextend on next 32M maxsize 2048M extent management local

刪除表空間

drop tablespace 表空間名 including contents and datafiles

給使用者賦予表空間

create user 使用者名稱 identified by 密碼 default tablespace 預設表空間 temporary  tablespace 臨時表空間

使用者與表空間的關係

  • 一個使用者可以使用一個或者多個表空間,一個表空間也可以供多個使用者使用。

  • 使用者和表空間沒有隸屬關係,表空間是一個用來管理儲存資料的邏輯概念,表空間只是和資料檔案發生關係,資料檔案是物理的,一個表空間可以包含多個數據檔案,而一個數據檔案只能隸屬一個表空間。

  • 檢視使用者預設表空間

    select username,deafult_tablespace from dba_users where username='使用者名稱'
    
  • 檢視當前使用者擁有的表

    select table_name from user_tables
    

許可權分類

  1. 系統許可權

    系統規定使用者使用資料庫的許可權。(系統許可權是對使用者而言)。系統許可權只能由DBA使用者授出

    最開始就是這兩個使用者(sys,system)

  2. 物件許可權

    某種許可權使用者對其他使用者的表或者檢視存取許可權。(是針對表或檢視而言)

系統許可權

允許使用者執行特定的資料庫動作,如建立表、建立索引、連線例項等。

  1. dba角色: 擁有全部特權,是系統最高許可權。

  2. resource角色:擁有resource許可權的使用者只可以訪問資料庫物件。

  3. connect角色:擁有connect許可權的使用者只可以登入Oracle,不可以訪問資料庫物件

    注意:以上都是角色,不算單個許可權,算是一群許可權的集合。

檢視所有系統許可權

SELECT*FROMSYSTEM_PRIVILEGE_MAP

系統許可權

允許使用者操縱一些特定的物件,如讀取檢視,可更新某些列、執行儲存過程等

select, update, insert, alter, index, delete, all …… //all包括所有許可權

execute //執行儲存過程許可權

給使用者授權

  • 系統許可權

    grant 系統許可權 to 使用者名稱 [WITH ADMIN OPTION]
    grant connect, resource to 使用者名稱;
    
  • 物件許可權

    grant 物件許可權 on 物件 to 使用者 [WITH GRANT OPTION]
    grant select, update, insert on product to 使用者名稱;
    grant all on product to 使用者名稱;  // all 表示全部物件許可權
    grant all on product to 使用者名稱;// public表示是所有的使用者
    

撤銷使用者許可權

  • 撤銷系統許可權

    revoke 系統許可權 from 使用者;
    revoke resource from 使用者名稱;
    
  • 撤銷物件許可權

    revoke 物件許可權 on 物件 from 使用者
    revoke select, update on product from 使用者
    

角色

角色就是一組許可權(privilege),更加方便對許可權進行管理,每種角色都用於執行一些特定的管理任務。

  • 建立角色/刪除角色

    create role 角色名 / drop role 角色名
    
  • 給角色授權

    系統許可權: grant 系統許可權 to 角色
    物件許可權: grant 物件許可權 on 物件 to 角色
    
  • 撤消角色許可權

    revoke 系統許可權 from 角色
    revoke 物件許可權 on 物件 from 角色
    

檢視許可權

  • 檢視當前使用者所有系統許可權

    select * from user_sys_privs
    
  • 檢視當前使用者所屬角色

    select * from user_role_privs
    
  • 角色有哪些系統許可權

    select * from role_sys_privs
    
  • 角色有哪些物件許可權(sys使用者下)

    select * from role_tab_privs
    
  • 使用者有哪些物件許可權

    select * from user_tab_privs