Oracle收縮或釋放剩余 空閑表空間 數據文件


oracle database用一段時間以后,硬盤空間會不夠,更甚者硬盤會used 100%。(oracle表空間設置為自動擴展)。此時oracle會出現各種莫名其妙的錯誤,為保持oracle數據庫的穩定,我們需要實時查看硬盤空間。 那么怎樣縮小一些不用的表空間,以釋放硬盤空間?

  oracle常用的此類命令Alter database datafile(tempfile),當然也可從toad等UI工具去操作。

ALTER DATABASE TEMPFILE '/opt/oracle/oradata/gctwp101/temp02.dbf' RESIZE 1229M;

    如果盲目去操作,oracle會報ora-03297錯誤。表示在所定義的空間之后有數據存在,不能收縮。我們不得不查出最后的數據所處的位置, 然后表空間設置到稍比這位置大一點的大小。

  1. 查該數據文件中數據處在最大位置

select max(block_id) from dba_extents where file_id=15;< /FONT>

      max(block_id)

        383497 

    查詢file_id,也可在toad工具tablespace直接看到。

select file#,name from v$datafile;

  2. 查出最大塊位置

select 383497*8/1024 from dual;

      2996.0703125

    這說明該文件中最大使用塊位於2996M與3000M之間,

  3. 修改表空間(也可用toad工具界面修改)

ALTER DATABASE TEMPFILE '/opt/oracle/oradata/gctwp101/temp02.dbf' RESIZE 3000M;

  4、Oracle創建表空間語法結構如下:

create tablespace tab_name
datafile 'filename'
size n
[autoextend on next n1 maxsize m /of]
[permanent] 
[extent management local/dictionary];

create tablespace:創建表空間的關鍵字。語法解析:

tab_name:創建后表空間的名字。

datafile:指定數據文件的路徑為filename。

size n:指定數據文件的大小。

[autoextend on next n1 maxsize m /of ]:表示表空間是否是自動擴展的,on 為自動擴展,of為不擴展,當自動擴展時,next n1表示自動擴展的大小,max size m 表示數據文件最大擴展到m大小。

[permanent] :表示創建的表空間的類型,permanent表示永久表空間,不填都是默認永久表空間。

[extent management local/dictionary]:表示表空間管理的方式,local表示本地的管理模式,dictionary表示數據字典管理模式,默認都是本地管理方式。

 


案例1、根據表空間創建語法,創建一個100M大小數據文件(student.dbf)的表空間student,代碼如下:

create tablespace student
datafile 'E:\APP\ADMIN\ORADATA\ORCL\student.DBF'
size 100m
autoextend on next 10m maxsize 500m
permanent
extent management local;

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM