表空間
表空間是數據庫的邏輯划分,一個表空間只能屬於一個數據庫。所有的數據庫對象都存放在指定的表空間中。但主要存放的是表,所以稱作表空間。
Oracle中很多優化都是基於表空間的設計理念而實現的,一個數據庫可以包含多個表空間,一個表空間只能屬於一個數據庫。一個表空間包含多個數據文件,一個數據文件只能屬於一個表空間。
Oracle 數據庫中至於存放一個表空間,即SYSTEM的表空間。
表空間的典型應用
-
控制用戶所占用的表空間配額
- 建立不同的表空間,為其設置最大的存儲容量,然后把用戶歸屬於這個表空間。如此的話,這個用戶的存儲容量,就受到這個表空間大小的限制。
-
控制數據庫所占用的磁盤空間
-
靈活放置表空間,提高數據庫的輸入輸出性能。
- 可以將不同類型的數據放置不同的表空間中,比如與湖南省相關的數據文件就放置在湖南省的這個表空間中。北京的就放在北京這個表空間中。
-
大表的排序操縱
- 針對這種容量比較大的表對象,往往把它放在一個獨立的表空間,以提高數據庫性能。
默認表空間
系統中默認創建的幾個表空間
-
SYSTEM
- 所有的dictionary object都存在SYSTEM表空間里面,存在SYS用戶的表,視圖,存儲過程對象。
-
SYSAUX
- 作為SYSTEM表空間的輔助表空間,減輕SYSTEM表空間負荷。
-
USERS
- 存儲用戶創建的數據庫對象
-
UNDOTBS
- 存儲撤銷信息的undo表空間。
-
EXAMPLE
- 數據庫示例的表空間
-
TEMP
- 臨時表空間主要用途是在數據庫進行排序運算,管理索引,訪問視圖等操縱時提供的臨時的運算空間,當運算完成之后系統會自動清理。
表空間查詢命令
-
查詢所有的表空間
select * from V$tablespace
-
查看表空間的數據文件
select file_name,tablespace_name from dba_data_files
-
查看用戶的默認表空間
select default_tablespace,temporary_tablespace from dba_users where username='用戶名';
-
查看指定表空間有哪些表
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
權限分類
-
系統權限
系統規定用戶使用數據庫的權限。(系統權限是對用戶而言)。系統權限只能由DBA用戶授出
最開始就是這兩個用戶(sys,system)
-
對象權限
某種權限用戶對其他用戶的表或者視圖存取權限。(是針對表或視圖而言)
系統權限
允許用戶執行特定的數據庫動作,如創建表、創建索引、連接實例等。
-
dba角色: 擁有全部特權,是系統最高權限。
-
resource角色:擁有resource權限的用戶只可以訪問數據庫對象。
-
connect角色:擁有connect權限的用戶只可以登錄Oracle,不可以訪問數據庫對象
注意:以上都是角色,不算單個權限,算是一群權限的集合。
查看所有系統權限
SELECT * FROM SYSTEM_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