Oracle表空間概念及操作

表空間,顧名思義,就是一張表所存在的空間。

一個表同時只能存在於一個表空間,不同表空間的表是相互隔離的,可以取相同的名字。

 

在數據庫只有一個實例的情況下,如果要實現數據的隔離,最簡單的方法就是創建多個表空間,添加多個用戶,一個用戶對應一個表空間,這樣就實現了數據的隔離(多個開發團隊共用一個oracle實例)。

 

 

 

 

表空間的分類

  • 臨時表空間
    主要用途是在數據庫進行排序運算[如創建索引、order by及group by、distinct、union/intersect/minus/、sort-merge及join、analyze命令]、管理索引[如創建索 引、IMP進行數據導入]、訪問視圖等操作時提供臨時的運算空間,當運算完成之後系統會自動清理。
  • 數據表空間
    此空間是用來進行[數據存儲]的(表、function、存儲過程等),所以是實際物理存儲區域。

表空間的便利性:

  1. 將用戶隔離,方便賦予權限,限制每個用戶的可使用內存。
  2. 限制表可以使用的內存。
  3. 方便將表進行分類操作,大數據量的表放入一個表空間,小數據量的表放入另一個表空間,方便充分利用內存。
  4. 數據與日誌隔離

表空間大小限制

表空間數據文件容量與DB_BLOCK_SIZE有關,ORACLE的物理文件最大隻允許4194304個數據塊,表空間數據文件的最大值爲 4194304×DB_BLOCK_SIZE/1024M。

4k最大表空間爲: 16384M
8K最大表空間爲: 32768M
16k最大表空間爲:65536M
32K最大表空間爲:131072M
64k最大表空間爲:262144M

sql語句如下:

select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;

select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_data_files
 
alter database tempfile  '/oradata/table/kingdee99temp01.dbf' resize 32768M;

add datafile '/oradata/table/kingdee99temp01.dbf' size 10240M; 


1.ssh shell 工具登錄到oracle服務器(Linux)

切換到oracle

輸入命令:su - oracle

進入sqlplus

輸入命令:sqlplus

輸入用戶名和密碼(有dba權限的用戶)

2.查看錶空間文件的位置

select name from v$datafile;

假如我的實例名稱爲orcl,oracle安裝在了/u01/app目錄下,查詢結果是這樣

/u01/app/oracle/oradata/orcl/system.dbf

/u01/app/oracle/oradata/orcl/users01.dbf

......

3.創建表空間

這裏就創建在/u01/app/oracle/oradata/orcl/目錄下,

db_test01 是表空間名稱,data_test01.dbf是表空間文件

create tablespace db_test01 datafile '/u01/app/oracle/oradata/orcl/data_test01.dbf' size 256M autoextend on next 100M maxsize unlimited;

這步執行完用 select name from v$datafile; 查看下是否創建成功。

也可以再給這個表空間再增加表空間文件(一個表空間文件不夠的情況下)。

alter tablespace db_test01add datafile '/u01/app/oracle/oradata/orcl/data_test02.dbf' size 256M autoextend on next 100M maxsize unlimited;

4.創建用戶並指定用戶所使用的表空間

創建用戶名爲test_user,密碼爲123456,所使用表空間爲db_test01的用戶

create user test_user identified by 123456 default tablespace db_test01;

5.用戶授權

將dba權限授給test_user

grant dba to test_user

ok,搞定了,可以用plsql或其他工具登錄測試一下。

若要實現數據的隔離(如:另一個開發小組也用這個數據庫實例),重複3,4,5步,指定不同的表空間名稱、不同的表空間文件、不同的用戶即可。

 

 

參考:Oracle表空間概念及操作

參考:oracle同一個用戶數據隔離,ORACLE一個實例多個用戶實現數據隔離

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章