Oracle ORA-01654 解決方案


在往數據表里插入數據時,出現了ORA-01654:索引***無法通過8192(在表空間USER中)擴展

根據此提示,使用以下語句查看表空間大小

-- 查看所有表空間的數據使用情況
SELECT Upper(F.TABLESPACE_NAME)         "表空間名",
       D.TOT_GROOTTE_MB                 "表空間大小(M)",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空間(M)",
       To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')
       || '%'                           "使用比",
       F.TOTAL_BYTES                    "空閑空間(M)",
       F.MAX_BYTES                      "最大塊(M)"
FROM   (SELECT TABLESPACE_NAME,
               Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,
               Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES
        FROM   SYS.DBA_FREE_SPACE
        GROUP  BY TABLESPACE_NAME) F,
       (SELECT DD.TABLESPACE_NAME,
               Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB
        FROM   SYS.DBA_DATA_FILES DD
        GROUP  BY DD.TABLESPACE_NAME) D
WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER  BY 1

  

發現USERS 的表空間使用率已經達到了 99.94%

 

通過此語句查詢到 表空間所在系統目錄

select file_name , tablespace_name  TOTAL_BYTES from dba_data_files 

 

通過此語句增加表空間,紅色部分為表空間所在路徑

alter tablespace USERS add datafile 'F:\APP\ADMINISTRATOR\ORADATA\BIOLAP\USERS7.DBF' size 30G autoextend on;   --此處30G 根據自身情況增加,也可以寫為 MB 格式,例如 30720MB

  

 

執行時提示出錯,磁盤空間不足

 

 

 登錄服務器查看磁盤空間:表空間所在盤空間不夠30G 無法增加

 

 

 

此時可以跨盤建表空間,將表空間建到G盤,指定數據文件的路徑就可以了

alter tablespace USERS add datafile 'G:\ORADATA_SQZG\USERS7.DBF' size 30G autoextend on;

以上SQL語句為USERS表空間在G盤ORADATA_SQZG目錄下創建了一個名稱為USERS7.DBF的數據文件,該數據文件大小為30GB。 

 

 

 此時再看表空間大小,使用率為85.05%,測試insert語句正常執行

 


免責聲明!

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



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