Oracle表空間與權(quán)限的深入講解
表空間
表空間是數(shù)據(jù)庫的邏輯劃分,一個表空間只能屬于一個數(shù)據(jù)庫。所有的數(shù)據(jù)庫對象都存放在指定的表空間中。但主要存放的是表,所以稱作表空間。
Oracle中很多優(yōu)化都是基于表空間的設(shè)計理念而實現(xiàn)的,一個數(shù)據(jù)庫可以包含多個表空間,一個表空間只能屬于一個數(shù)據(jù)庫。一個表空間包含多個數(shù)據(jù)文件,一個數(shù)據(jù)文件只能屬于一個表空間。
Oracle 數(shù)據(jù)庫中至于存放一個表空間,即SYSTEM的表空間。
表空間的典型應(yīng)用
- 控制用戶所占用的表空間配額
- 建立不同的表空間,為其設(shè)置最大的存儲容量,然后把用戶歸屬于這個表空間。如此的話,這個用戶的存儲容量,就受到這個表空間大小的限制。
- 控制數(shù)據(jù)庫所占用的磁盤空間
- 靈活放置表空間,提高數(shù)據(jù)庫的輸入輸出性能。
- 可以將不同類型的數(shù)據(jù)放置不同的表空間中,比如與湖南省相關(guān)的數(shù)據(jù)文件就放置在湖南省的這個表空間中。北京的就放在北京這個表空間中。
- 大表的排序操縱
- 針對這種容量比較大的表對象,往往把它放在一個獨立的表空間,以提高數(shù)據(jù)庫性能。
- 針對這種容量比較大的表對象,往往把它放在一個獨立的表空間,以提高數(shù)據(jù)庫性能。
默認(rèn)表空間
系統(tǒng)中默認(rèn)創(chuàng)建的幾個表空間
- SYSTEM
- 所有的dictionary object都存在SYSTEM表空間里面,存在SYS用戶的表,視圖,存儲過程對象。
- SYSAUX
- 作為SYSTEM表空間的輔助表空間,減輕SYSTEM表空間負(fù)荷。
- USERS
- 存儲用戶創(chuàng)建的數(shù)據(jù)庫對象
- UNDOTBS
- 存儲撤銷信息的undo表空間。
- EXAMPLE
- 數(shù)據(jù)庫示例的表空間
- TEMP
- 臨時表空間主要用途是在數(shù)據(jù)庫進(jìn)行排序運算,管理索引,訪問視圖等操縱時提供的臨時的運算空間,當(dāng)運算完成之后系統(tǒng)會自動清理。
- 臨時表空間主要用途是在數(shù)據(jù)庫進(jìn)行排序運算,管理索引,訪問視圖等操縱時提供的臨時的運算空間,當(dāng)運算完成之后系統(tǒng)會自動清理。
表空間查詢命令
查詢所有的表空間
select * from V$tablespace
查看表空間的數(shù)據(jù)文件
select file_name,tablespace_name from dba_data_files
查看用戶的默認(rèn)表空間
select default_tablespace,temporary_tablespace from dba_users where username='用戶名';
查看指定表空間有哪些表
select table_name,tablespace_name from dba_tables where tablespace_name='表空間名稱'
創(chuàng)建表空間
create tablespace test_data datafile 'test_data.dbf' size 32M autoextend on next 32M maxsize 2048M extent management local
創(chuàng)建臨時表空間
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 默認(rèn)表空間 temporary tablespace 臨時表空間
用戶與表空間的關(guān)系
一個用戶可以使用一個或者多個表空間,一個表空間也可以供多個用戶使用。
用戶和表空間沒有隸屬關(guān)系,表空間是一個用來管理存儲數(shù)據(jù)的邏輯概念,表空間只是和數(shù)據(jù)文件發(fā)生關(guān)系,數(shù)據(jù)文件是物理的,一個表空間可以包含多個數(shù)據(jù)文件,而一個數(shù)據(jù)文件只能隸屬一個表空間。
查看用戶默認(rèn)表空間
select username,deafult_tablespace from dba_users where username='用戶名'
查看當(dāng)前用戶擁有的表
select table_name from user_tables
權(quán)限分類
1、系統(tǒng)權(quán)限
系統(tǒng)規(guī)定用戶使用數(shù)據(jù)庫的權(quán)限。(系統(tǒng)權(quán)限是對用戶而言)。系統(tǒng)權(quán)限只能由DBA用戶授出
最開始就是這兩個用戶(sys,system)
2、對象權(quán)限
某種權(quán)限用戶對其他用戶的表或者視圖存取權(quán)限。(是針對表或視圖而言)
系統(tǒng)權(quán)限
允許用戶執(zhí)行特定的數(shù)據(jù)庫動作,如創(chuàng)建表、創(chuàng)建索引、連接實例等。
- dba角色: 擁有全部特權(quán),是系統(tǒng)最高權(quán)限。
- resource角色:擁有resource權(quán)限的用戶只可以訪問數(shù)據(jù)庫對象。
- connect角色:擁有connect權(quán)限的用戶只可以登錄Oracle,不可以訪問數(shù)據(jù)庫對象
注意:以上都是角色,不算單個權(quán)限,算是一群權(quán)限的集合。
查看所有系統(tǒng)權(quán)限
SELECT * FROM SYSTEM_PRIVILEGE_MAP
系統(tǒng)權(quán)限
允許用戶操縱一些特定的對象,如讀取視圖,可更新某些列、執(zhí)行存儲過程等
select, update, insert, alter, index, delete, all …… //all包括所有權(quán)限 execute //執(zhí)行存儲過程權(quán)限
給用戶授權(quán)
系統(tǒng)權(quán)限
grant 系統(tǒng)權(quán)限 to 用戶名 [WITH ADMIN OPTION] grant connect, resource to 用戶名;
對象權(quán)限
grant 對象權(quán)限 on 對象 to 用戶 [WITH GRANT OPTION] grant select, update, insert on product to 用戶名; grant all on product to 用戶名; // all 表示全部對象權(quán)限 grant all on product to 用戶名; // public表示是所有的用戶
撤銷用戶權(quán)限
撤銷系統(tǒng)權(quán)限
revoke 系統(tǒng)權(quán)限 from 用戶; revoke resource from 用戶名;
撤銷對象權(quán)限
revoke 對象權(quán)限 on 對象 from 用戶 revoke select, update on product from 用戶
角色
角色就是一組權(quán)限(privilege),更加方便對權(quán)限進(jìn)行管理,每種角色都用于執(zhí)行一些特定的管理任務(wù)。
- 創(chuàng)建角色/刪除角色
create role 角色名 / drop role 角色名
- 給角色授權(quán)
系統(tǒng)權(quán)限: grant 系統(tǒng)權(quán)限 to 角色
對象權(quán)限: grant 對象權(quán)限 on 對象 to 角色
- 撤消角色權(quán)限
revoke 系統(tǒng)權(quán)限 from 角色
revoke 對象權(quán)限 on 對象 from 角色
查看權(quán)限
查看當(dāng)前用戶所有系統(tǒng)權(quán)限
select * from user_sys_privs
查看當(dāng)前用戶所屬角色
select * from user_role_privs
角色有哪些系統(tǒng)權(quán)限
select * from role_sys_privs
角色有哪些對象權(quán)限(sys用戶下)
select * from role_tab_privs
用戶有哪些對象權(quán)限
select * from user_tab_privs
總結(jié)
到此這篇關(guān)于Oracle表空間與權(quán)限的文章就介紹到這了,更多相關(guān)Oracle表空間與權(quán)限內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle數(shù)據(jù)遷移MySQL的三種簡單方法
對于許多企業(yè)而言,遷移數(shù)據(jù)庫時最大的挑戰(zhàn)之一是如何從一個數(shù)據(jù)庫平臺順利遷移到另一個平臺,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)遷移MySQL的三種簡單方法,需要的朋友可以參考下2023-06-06oracle存儲過程中return和exit區(qū)別概述及測試
至于return和exit在oracle存儲過程中的應(yīng)用,有些新手朋友們還是比較容易混淆的,本文將針對這兩個關(guān)鍵字進(jìn)行詳細(xì)對比下,感興趣的你可以參考下,希望可以幫助到你2013-02-02Oracle數(shù)據(jù)庫中刪除表空間的詳細(xì)步驟與示例代碼
在 Oracle 數(shù)據(jù)庫中,表空間是存儲數(shù)據(jù)的邏輯容器,有時候,我們可能需要刪除不再使用的表空間以釋放空間或進(jìn)行數(shù)據(jù)庫重組,本文將詳細(xì)介紹在 Oracle 數(shù)據(jù)庫中刪除表空間的步驟和示例代碼,需要的朋友可以參考下2024-01-01Oracle中rank,over partition函數(shù)的使用方法
本文主要介紹Oracle中rank,over partition函數(shù)的用法,希望對大家有所幫助。2016-05-05Oracle數(shù)據(jù)庫中如何按天、周、月、季、年統(tǒng)計數(shù)據(jù)
我們經(jīng)常遇到一些需求,需要我們在sql語句中對日期進(jìn)行分類統(tǒng)計,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中如何按天、周、月、季、年統(tǒng)計數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2024-03-03