oracle表空間已滿解決


       在日常的oralce使用中最長遇到的問題就是oralce的表空間滿了,數據無法寫入報錯,這種情況下通常是磁盤沒有足夠的空間或者表空間的數據文件達到32G(linux最大限制單個文件不超過32G)無法繼續自動擴展。

 

1、首先分享一個查看表空間使用情況的語句(看着有點惡心但是不用怕,不用看不用去理解,保存好用的時候拿來直接用即可),只用看如下紅色框起來的部分即可,只要表空間大小沒有到32G(一個表空間文件32G,n個表空間文件32G*n)即使后面使用率高了也不用管,不夠他會自動擴展。(創建的時候開啟了表空間自動擴展)。

SELECT   UPPER (f.tablespace_name) AS "表空間名",
         d.tot_grootte_mb AS "表空間大小(M)",
         d.tot_grootte_mb - f.total_bytes AS "已使用空間(M)",
         TO_CHAR (ROUND (  (d.tot_grootte_mb - f.total_bytes)
                         / d.tot_grootte_mb
                         * 100,
                         2
                        ),
                  '990.99'
                 ) AS "使用比",
         f.total_bytes AS "空閑空間(M)", f.max_bytes AS "最大塊(M)"
    FROM (SELECT   tablespace_name,
                   ROUND (SUM (BYTES) / (1024 * 1024), 2) AS total_bytes,
                   ROUND (MAX (BYTES) / (1024 * 1024), 2) AS max_bytes
              FROM SYS.dba_free_space
          GROUP BY tablespace_name) f,
         (SELECT   dd.tablespace_name,
                   ROUND (SUM (dd.BYTES) / (1024 * 1024),
                          2) AS tot_grootte_mb
              FROM SYS.dba_data_files dd
          GROUP BY dd.tablespace_name) d
   WHERE d.tablespace_name = f.tablespace_name
ORDER BY 4 DESC

 

 

2、查看已有的表空間物理文件在什么位置

 

select * from  dba_data_files

注:只看第一列即可,一看現有的表空間對應的數據文件存在/u01/app/oracle/oradata/orcl目錄下,知道這個就可以了

 

3、給空間快滿的表空間增加新的表空間文件並設置為可以自動擴展的(這樣相當於給快滿的表空間又增加了32G的可以空間)

alter tablespace <tablespace_name> add datafile 'filepath' size <filesize> autoextend on next <autosize> maxsize filemaxsize[unlimited];

例如:alter tablespace sales add  datafile '/u01/app/oracle/oradata/orcl/newsales.dbf' size 1G autoextend on next 10m maxsize unlimited

如上語句的含義是給名稱為為sales的表空間新增一個物理文件/u01/app/oracle/oradata/orcl/newsales.dbf,文件初始大小為1G,是自動擴展的每次自動擴展的空間為10m。到此表空間已滿無法寫入的問題基本就可以解決了。

 

補充如何新創建一個可以自動擴展空間的表空間

create tablespace <tablespace_name> datafile '<filepath>' size <filesize> autoextend on next <autosize> maxsize <maxsize [unlimited]>

eg:

create tablespace sales datafile '/u01/app/oracle/oradata/orcl/test.dbf'  size 1G  autoextend on next 10m maxsize unlimited extent management local;

 

 

推薦一個適合零基礎學習SQL的網站: 不用安裝數據庫,在線輕松學習SQL!


免責聲明!

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



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