1. 程式人生 > >ORACLE 表空間擴充套件方法和管理

ORACLE 表空間擴充套件方法和管理

環境: linux系統 工具:PL/SQL DEVELOPER 第一步:查看錶空間的名字及檔案所在位置: select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name

第二步:增大所需表空間大小: alter database datafile '表空間位置'resize 新的尺寸 例如: alter database datafile '\oracle\oradata\anita_2008.dbf' resize 4000m 對於oracle資料庫的表空間,除了用手動增加大小外,還可以增加資料檔案等方式擴充套件表空間大小。
方法一:增加資料檔案個數 alter tablespace 表空間名稱
     add datafile '新的資料檔案地址' size 資料檔案大小
例如: alter tablespace ESPS_2008
     add datafile '\oracle\oradata\anita_2010.dbf' size 1000m 方法二:設定表空間自動擴充套件。 alter database datafile '資料檔案位置'
     autoextend on next 自動擴充套件大小 maxsize 最大擴充套件大小
例如: alter database datafile '\oracle\oradata\anita_2008.dbf'       autoextend on next 100m maxsize 10000m 方法三:查詢表空間使用情況:
select a.tablespace_name,a.bytes/1024/1024 "sum MB", (a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB", round (((a.bytes-b.bytes)/a.bytes)*100,2) "used%" from (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a, (select tablespace_name,sum(bytes) bytes,max (bytes) largest from dba_free_space group by tablespace_name)b where a.tablespace_name=b.tablespace_name order by ((a.bytes-b.bytes)/a.bytes) desc;

1:表空間概念

在ORACLE資料庫中,所有資料從邏輯結構上看都是存放在表空間當中,當然表空間下還有段、區、塊等邏輯結構。從物理結構上看是放在資料檔案中。一個表空間可由多個數據檔案組成。

如下圖所示,一個數據庫由對應一個或多個表空間,表空間邏輯上有一個或多個段(Segment)組成,物理上由一個或多個os file組成。

clip_image002

clip_image002[4]

1.1基本的表空間

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

    SYSTEM

    SYSAUX

    USERS

    UNDOTBS1

    EXAMPLE

    TEMP

系統中必須的表空間有那幾個?

答案: SYSTEM、SYSAUX、TEMP、UNDO, 像USERS、EXAMPLE等表空間是可有可無的。

1.2表空間的分類

永久表空間                存放永久性資料,如表,索引等。

臨時表空間                不能存放永久性物件,用於儲存資料庫排序,分組時產生的臨時資料。

UNDO表空間             儲存資料修改前的鏡象。

1.3表空間的管理

表空間的管理方式:

字典管理:全庫所有的空間分配都放在資料字典中。容易引起字典爭用,而導致效能問題。

本地管理:空間分配不放在資料字典,而在每個資料檔案頭部的第3到第8個塊的點陣圖塊,來管理空間分配。

2:建立表空間

   1: CREATE TABLESPACE TBS_TR_DATA
   2: DATAFILE '/oradata/rTBS_TR_DATA_001.dbf'
   3: SIZE 64G 
   4: EXTENT MANAGEMENT LOCAL
   5: SEGMENT SPACE MANAGEMENT AUTO ONLINE;
   6:  
   7:  
   8:  
   9: ALTER TABLESPACE TBS_TR_DATA
  10: ADD DATAFILE '/oradata/rTBS_TR_DATA_002.dbf'
  11: SIZE 64G
  12: AUTOEXTEND OFF;

3:表空間管理

3.1 表空間資訊

如何檢視資料庫有哪些表空間?如何查看錶空間對應的資料檔案?

查看錶空間:

查看錶空間可以通過下面幾個系統檢視檢視基本資訊

--包含資料庫中所有表空間的描述資訊

SELECT * FROM DBA_TABLESPACES

--包含當前使用者的表空間的描敘資訊

SELECT * FROM USER_TABLESPACES

--包含從控制檔案中獲取的表空間名稱和編號資訊

SELECT * FROM V$TABLESPACE;

檢視資料檔案

--包含資料檔案以及所屬的表空間的描述資訊

SELECT * FROM DBA_DATA_FILES

--包含臨時資料檔案以及所屬的表空間的描述資訊

SELECT * FROM DBA_TEMP_FILES

--包含從控制檔案中獲取的資料檔案的基本資訊,包括它所屬的表空間名稱、編號等

SELECT * FROM V$DATAFILE

--包含所有臨時資料檔案的基本資訊

SELECT * FROM V$TEMPFILE

3.1.1:檢視預設的TEMP表空間

資料庫級別

   1: SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE
   2:  
   3: 2 FROM DATABASE_PROPERTIES
   4:  
   5: 3 WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE'
   6:  
   7: 4 ;
   8:  
   9: PROPERTY_NAME                        PROPERTY_VALUE
  10:  
  11: ------------------------------ ----------------------------
  12:  
  13: DEFAULT_TEMP_TABLESPACE                  TEMP

使用者級別

   1: SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS

3.1.2:檢視預設的永久表空間

如果建立使用者時,不指定其永久表空間,則會使用預設的表空間。

   1: SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE 
   2:  
   3: 2 FROM DATABASE_PROPERTIES;
   4:  
   5: PROPERTY_NAME PROPERTY_VALUE
   6:  
   7: ------------------------------ ------------------
   8:  
   9: DEFAULT_TEMP_TABLESPACE              TEMP
  10:  
  11: DEFAULT_PERMANENT_TABLESPACE         USERS

3.1.3:檢視預設的表空間型別

如果不指定表空間型別,就會預設使用DEFAULT_TBS_TYPE引數指定的表空間型別。

   1: SQL> 
   2:  
   3: SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE
   4:  
   5: 2 FROM DATABASE_PROPERTIES
   6:  
   7: 3 WHERE PROPERTY_NAME='DEFAULT_TBS_TYPE';
   8:  
   9: PROPERTY_NAME                    PROPERTY_VALUE
  10:  
  11: ------------------------------ ------------------
  12:  
  13: DEFAULT_TBS_TYPE                     SMALLFILE

3.1.4:查看錶空間情況

SELECT * FROM DBA_TABLESPACES

3.1.5:查看錶空間的資料檔案

永久表空間/UNDO表空間

SELECT * FROM DBA_DATA_FILES;

臨時表空間

SELECT * FROM V$TEMPFILE;

3.1.6:查看錶空間使用情況

--SQL 1:

   1: SELECT A.TABLESPACE_NAME                     AS TABLESPACE_NAME, 
   2:         ROUND(A.BYTES/(1024*1024*1024),2)    AS "TOTAL(G)"     , 
   3:         ROUND(B.BYTES/(1024*1024*1024),2)    AS "USED(G)"      , 
   4:         ROUND(C.BYTES/(1024*1024*1024),2)    AS "FREE(G)"      , 
   5:         ROUND((B.BYTES * 100) / A.BYTES,2)   AS "% USED"       , 
   6:         ROUND((C.BYTES * 100) / A.BYTES,2)   AS "% FREE" 
   7: FROM SYS.SM$TS_AVAIL A, SYS.SM$TS_USED B, SYS.SM$TS_FREE C 
   8: WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME 
   9: AND A.TABLESPACE_NAME = C.TABLESPACE_NAME;

計算表空間使用情況(考慮了資料檔案自動增長情況)

   1: SELECT UPPER(F.TABLESPACE_NAME) AS "表空間名稱", 
   2:         ROUND(D.AVAILB_BYTES ,2) AS "表空間大小(G)", 
   3:         ROUND(D.MAX_BYTES,2) AS "最終表空間大小(G)", 
   4:         ROUND((D.AVAILB_BYTES - F.USED_BYTES),2) AS "已使用空間(G)", 
   5:         TO_CHAR(ROUND((D.AVAILB_BYTES - F.USED_BYTES) / D.AVAILB_BYTES * 100, 
   6:             2), '999.99') AS "使用比", 
   7:         ROUND(F.USED_BYTES, 6) AS "空閒空間(G)", 
   8:         F.MAX_BYTES AS "最大塊(M)" 
   9:  FROM (
  10:         SELECT TABLESPACE_NAME, 
  11:                 ROUND(SUM(BYTES) / (1024 * 1024 * 1024), 6) USED_BYTES, 
  12:                 ROUND(MAX(BYTES) / (1024 * 1024 * 1024), 6) MAX_BYTES 
  13:         FROM SYS.DBA_FREE_SPACE 
  14:         GROUP BY TABLESPACE_NAME) F, 
  15:       (SELECT DD.TABLESPACE_NAME, 
  16:                 ROUND(SUM(DD.BYTES) / (1024 * 1024 * 1024), 6) AVAILB_BYTES, 
  17:             ROUND(SUM(DECODE(DD.MAXBYTES, 0, DD.BYTES, DD.MAXBYTES))/(1024*1024*1024),6) MAX_BYTES 
  18:        FROM SYS.DBA_DATA_FILES DD 
  19:        GROUP BY DD.TABLESPACE_NAME) D 
  20:         WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME 
  21: ORDER BY 4 DESC

3.2 預設表空間

在ORACLE 9i資料庫中,建立資料庫使用者時,如果沒有指定預設的永久性表空間,則系統使用SYSTME表空間分別作為該使用者的預設永久表空間,預設的臨時表空間為TEMP。在ORACLE 10/11g中,如果不指定預設永久性表空間,則是USERS.預設的臨時表空間為TEMP,當然前提是你沒有修改過預設永久表空間值或指定使用者的預設永久性表空間。ORACLE允許使用自定義的表空間作為預設永久性表空間,你可以用下面SQL檢視資料庫的預設永久表空間和預設臨時表空間

SQL>SELECT * FROM database_properties 
WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';

SQL>SELECT * FROM database_properties 
WHERE PROPERTY_NAME ='DEFAULT_PERMANENT_TABLESPACE'

你可以使用ALTER DATABASE DEFAULT TABLESPACE語句可以設定資料庫的預設永久性表空間,這樣建立使用者時,預設將使用指定的表空間。

資料庫級別:

永久表空間

SQL>ALTER DATABASE DEFAULT TABLESPACE USER;

臨時表空間

SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

使用者級別

SQL>ALTER USER USERNAM DEFAULT TABLESPACE NEW_TABLESPACE_NAME

檢視使用者對應的預設表空間

SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS

注意事項:

1:如果我們在建立使用者時指定了預設表空間為DEFAULT_PERMANENT_TABLESPACE的值,那麼在修改預設表空間後,之前使用者的預設表空間也會發生改變。

eg:

   1: SQL> SELECT *   FROM database_properties
   2:   2   WHERE PROPERTY_NAME IN( 'DEFAULT_PERMANENT_TABLESPACE','DEFAULT_TEMP_TABLESPACE');
   3:  
   4:  
   5: PROPERTY_NAME                  PROPERTY_VALUE                                     DESCRIPTION
   6: ---------------- -------------------------------- ------------------------------------------------------------
   7: DEFAULT_TEMP_TABLESPACE        TEMP                                       Name of default temporary tablespace
   8: DEFAULT_PERMANENT_TABLESPACE   USERS                                      Name of default permanent tablespace
   9:  
  10:  
  11: SQL>   CREATE USER U1 IDENTIFIED BY U1 DEFAULT TABLESPACE USERS; 
  12:  
  13:  
  14: SQL>  SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME ='U1';
  15:  
  16: USERNAME                       DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
  17: ------------------------------ ------------------------------ ------------------------------
  18: U1   
  19:  
  20:  
  21: SQL> ALTER DATABASE DEFAULT TABLESPACE TEST1;
  22:  
  23: Database altered
  24:  
  25: 修改了預設永久性表空間後,此時檢視使用者U1的DEFAULT_TABLESPACE值,發現其值也改為了TEST1,證實了結論1的正確性。
  26:  
  27: SQL> SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME ='U1';
  28:  
  29: USERNAME                       DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
  30: ------------------------------ ------------------------------ ------------------------------
  31: U1                             TEST1                          TEMP
  32:  

2:如果我們在建立使用者時沒有指定使用者表空間,那麼預設也會使用DB的預設表空間,這時候如果我們修改了DB的預設表空間,使用者的表空間也會發生改變。

將資料庫的預設表空間切換為USERS

   1: SQL>  ALTER DATABASE  DEFAULT TABLESPACE USERS;
   2:  
   3: Database altered
   4:  
   5: SQL> CREATE USER U2 IDENTIFIED BY U2;
   6:  
   7: User created
   8:  
   9: SQL> SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME ='U1';
  10:  
            
           

相關推薦

ORACLE 空間擴充套件方法管理

環境: linux系統 工具:PL/SQL DEVELOPER 第一步:查看錶空間的名字及檔案所在位置: select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0)

oracle 空間擴容方法

oracle 表空間擴容方法測試環境OS:RedHat 6.7Oracle:11.2.0.4[[email protected]/* */ ~]# su - oracle[[email protected]/* */ ~]$ sqlplus / as sysdbaSQL*Plus: R

Oracle空間為"本地管理"與"資料字典"管理區別?

在Oracle8I的版本中,Oracle推出了一種全新的表空間管理方式:本地化管理的表空間。     所謂本地化管理,就是指Oracle不再利用資料字典表來記錄Oracle表空間裡面的區的使用狀況,而是在每個表空間的資料檔案的頭部加入了一個位圖區,在其中記錄每個區的使用狀況。每當一個區被使用,或者被釋放以供

Oracle-的創建管理

名稱 數據操作 rdb control sysdate pre alloc statement 數據庫語言 表的常用數據類型 VACHAR2(N)--N表示最大長度 NUMBER(N)--表示整數,最多N位 NUMBER(N,M)--可以表示小數,共N位,其中小數占用M位

Oracle空間概述及其基本管理

最近在工作中遇到有同事對Oracle表空間的理解有問題,所以寫了這篇文章。我會從概念,管理及特別需要關注的點等幾個維度對錶空間進行一些介紹。本文以介紹表空間為主,涉及到的其他概念不展開描述。有問題的地方希望大家指正。   表空間概念 表空間屬於邏輯結構,是Oracle物理結構與邏輯結構之間的橋樑。官

Oracle空間、用戶、授權管理

manage tables 空間 gin 創建 tempfile max ide 指定 1、查詢表空間位置 select * from dba_data_files; -->d:\app\administrator\oradata\orcl\***.dbf 2、查看臨

oracle下正確刪除空間方法

oracle tablespace Oracle因為本身的多重驗證機制所有在刪除表空間時不像MySQL中刪除database一樣,可以通過外部的刪除直接刪除掉database文件夾就可以刪除掉database,當然這兩者是2種不同的東西,在此僅用於舉例說明。在Oracle中表空間相當於系統中的硬

創建Oracle空間用戶

ide others maxsize 創建用戶 max add emp alter ant create oracle tablespace and user /*第1步:創建臨時表空間 */ create temporary tablespace test_temp t

【轉】ORACLE 空間擴展方法

desc taf ora 查看 ges bytes 查詢 auto _id 轉載地址:http://blog.itpub.net/28950170/viewspace-763139/ 第一步:查看表空間的名字及文件所在位置: select tablespace_name,

oracle空間管理

連接 total 創建表空間 med oca end normal urg user 1、創建表空間 CREATE TABLESPACE TBS_TR_DATA DATAFILE ‘/oradata/rTBS_TR_DATA_001.dbf‘ SIZE 64G EXTE

Oracle空間管理相關

自己 問題 出現 測試 方式 文件的 個數 數據字典 多個 以下以我自己的測試環境舉例:1.表空間的 block_size 為 8192字節,即8KBytes。從數據字典中查到 max_size 為 2147483645,即約為15.9TBytes。2.在創建表空間時,可以

Oracle 空間的日常維護與管理

enc rename 文件操作 pdb form 允許 恢復 constrain gin 目錄 Oracle 表空間的日常維護與管理 1、創建數據表空間 2、創建臨時表空間 3、創建 UNDO 表空間 4、表空間的擴展與修改大小 5、表空間重命名 6、表空間的刪除 7、更

Oracle中用sql語句建立管理

建立語法 create table [schema.]tablename (column datatype [default expr] [constaint], ....) 查看錶結構 desc tablename 克隆表 克隆整個表: create table e

理解oracle空間使用者的區別 轉

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/qq_31279347/article/details/83753532每個專案對應一個表空間,Oracle資料庫是通過表空間來儲存物理表的,一個數據庫例項可以有N個表空間,一個表空間下可以有N張表。然後建立一個

理解oracle空間使用者的區別

每個專案對應一個表空間,Oracle資料庫是通過表空間來儲存物理表的,一個數據庫例項可以有N個表空間,一個表空間下可以有N張表。 然後建立一個使用者對應此表空間即可。 所以,在做大型專案的時候,是先建立一個數據庫例項,然後建立表空間,再建立使用者,然後使用者指定這個表

Oracle建立空間建立使用者使用者授權

今天要建立一個Oracle使用者,然後發現sql不太記得了,然後只能再去找找資料,發現這樣效率並不是很高,所以記錄成部落格,有需要就直接從部落格複製。 下面是我簡單整理的,有需要可以參考。 --建立表空間 CREATE TABLESPACE WORKFLOW01 LOGGING DATAFILE 'D:\or

Oracle 空間資料檔案之間的關係

首先,你需要明白的一點是:資料庫的物理結構是由資料庫的作業系統檔案所決定,每一個Oracle資料庫是由三種類型的檔案組成:資料檔案、日誌檔案和控制檔案。資料庫的檔案為資料庫資訊提供真正的物理儲存。  每一個Oracle資料庫有一個或多個物理的資料檔案(data file)。一個數據庫的資料

oracle安裝第二彈--oracle建立空間及使用者密碼

----20180929 By skyfans 第一彈我們進行的oracle基礎服務的安裝及監聽配置,已經可以實現oralce的開機自啟動,那麼系統如何連線oracle資料庫呢?這裡我們講述使用者的建立、表空間建立及指令碼的匯入,完成此步驟後,我們已經可以進行o

oracle空間不足擴容的方法

1、查詢當前使用者的所屬表空間 select * from user_users; 2、增加表空間有兩種方法:   以sysdba登陸進資料庫    語法:   alter tablespace 表空間名稱   add datafile 表空間存放路徑  size

oracle空間不足,相關查詢處理

今天用PL SQL Developer往oracle資料庫中匯入資料時,突然報錯,只能終止,錯誤的具體內容如下:ORA-01653: unable to extend table BOSDATA.KSYS_RWYXRZ by 128 in tablespace 本報錯意思