ORA-01691 資料庫表空間佔滿
做藏文網路文字採集過程中發現網頁資料無法提交到資料庫中,查日誌發現ORA-01691 錯誤,資料庫表空間佔滿了。有下面的解決方法。
=======
ORA-01691: unable to extend lob segment BPM49_TEST2.SYS_LOB0000059105C00008$$ by 128 in tablespace JACK_DATA
今天發現這麼一個錯誤,檢視錯誤資訊發現原因是表空間無法分配新的空間給表。所以報錯。
下面是oracle官方錯誤程式碼
ORA-01691 unable to extend lob segment string.string by string in tablespace string
Cause: Failed to allocate an extent for LOB segment in tablespace.
Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the tablespace indicated.
方法1:修改資料檔案的擴充套件性
alter database datafile '檔案路徑' autoextend on next 100m maxsize 4000M;
方法2:給表空間增加新的資料檔案
alter tablespace jack_data add datafile '資料檔案路徑‘ size 1000m autoextend on next 100m maxsize 4000M;
1
要知道表空間大小,就要明白兩種增加表空間大小的方式
第一種:格式化資料檔案初始大小並設定自增長到最大值
create tablespace d_test1 datafile '/test1_data/datafile01.dbf' size 10m autoextend on next 5m maxsize 100m;
2
第二種:格式化資料檔案初始大小不設定自增長,當然也就沒有最大值
alter tablespace d_test1 add datafile '/test1_data/datafile02.dbf' size 10m;
3
4
分別統計增加表空見兩種方式的資料檔案大小總值
SELECT t.tablespace_name,sum(t.MAXBYTES/1024/1024/1024) TOTAL FROM DBA_DATA_FILES T
WHERE T.TABLESPACE_NAME NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
AND T.AUTOEXTENSIBLE='YES' group by tablespace_name
UNION ALL
SELECT tablespace_name,sum(bytes/1024/1024/1024) TOTAL FROM DBA_DATA_FILES T
WHERE T.TABLESPACE_NAME NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
AND T.AUTOEXTENSIBLE='NO' group by tablespace_name
5
統計增加表空見兩種方式的資料檔案大小總值,也就是統計表空間總大小
WITH TABLESPACE_TOTAL AS
(
SELECT tablespace_name,sum(MAXBYTES/1024/1024/1024) TOTAL FROM DBA_DATA_FILES T
WHERE T.TABLESPACE_NAME NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
AND T.AUTOEXTENSIBLE='YES' group by tablespace_name
UNION ALL
SELECT tablespace_name,sum(bytes/1024/1024/1024) TOTAL FROM DBA_DATA_FILES T
WHERE T.TABLESPACE_NAME NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
AND T.AUTOEXTENSIBLE='NO' group by tablespace_name
)
SELECT TABLESPACE_NAME,SUM(TOTAL) TOTAL FROM TABLESPACE_TOTAL GROUP BY TABLESPACE_NAME
6
那麼表空間剩餘大小如何統計呢?
首先看看錶空間已使用的大小
select TABLESPACE_NAME,sum(bytes/1024/1024/1024) TOTAL from dba_segments
where tablespace_name NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
GROUP BY TABLESPACE_NAME
7
根據dba_data_files和dba_segments統計表空間總大小和剩餘大小
SELECT A.TABLESPACE_NAME,B.TOTAL/1024/1024/1024 ||'G',(B.TOTAL-A.USE)/1024/1024/1024 ||'G' FREE FROM
(
select TABLESPACE_NAME,sum(bytes) as USE from dba_segments
where tablespace_name NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
GROUP BY TABLESPACE_NAME
) A ,
(
WITH TABLESPACE_TOTAL AS
(
SELECT tablespace_name,sum(MAXBYTES) TOTAL FROM DBA_DATA_FILES T
WHERE T.TABLESPACE_NAME NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
AND T.AUTOEXTENSIBLE='YES' group by tablespace_name
UNION ALL
SELECT tablespace_name,sum(bytes) TOTAL FROM DBA_DATA_FILES T
WHERE T.TABLESPACE_NAME NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
AND T.AUTOEXTENSIBLE='NO' group by tablespace_name
)
SELECT TABLESPACE_NAME,SUM(TOTAL) TOTAL FROM TABLESPACE_TOTAL GROUP BY TABLESPACE_NAME
) B
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME
8
注意:dba_free_space統計資訊
select tablespace_name,FILE_ID,bytes/1024/1024 from dba_free_space
where tablespace_name NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
或者
select tablespace_name, sum(bytes / 1024 / 1024 / 1024) total_free
from dba_free_space
where tablespace_name NOT IN
('USERS', 'SYSAUX', 'UNDOTBS1', 'SYSTEM', 'UNDOTBS2')
group by tablespace_name
select tablespace_name,sum(bytes)/1024/1024/1024 G,sum(maxbytes)/1024/1024/1024 mg,(sum(maxbytes)-sum(bytes))/1024/1024/1024 free from dba_data_files
where tablespace_name NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
group by tablespace_name
可以看出dba_free_space表是dba_data_files表的各個資料檔案bytes列已經真正使用後剩餘大小
9
根據dba_data_files和dba_free_space統計表空間大小和表空間剩餘大小
SELECT A.TABLESPACE_NAME,B.TOTAL/1024/1024/1024 ||'G',(B.TOTAL-A.USE)/1024/1024/1024 ||'G' FREE FROM
(
select c.tablespace_name,(c.p_use-d.p_free) as use from
(
select tablespace_name,sum(bytes) as p_use from dba_data_files
where tablespace_name NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
group by tablespace_name
) C,
(
select tablespace_name,sum(bytes) as p_free from dba_free_space
where tablespace_name NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
group by tablespace_name
) D
where C.tablespace_name=D.tablespace_name
) A ,
(
WITH TABLESPACE_TOTAL AS
(
SELECT tablespace_name,sum(MAXBYTES) TOTAL FROM DBA_DATA_FILES T
WHERE T.TABLESPACE_NAME NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
AND T.AUTOEXTENSIBLE='YES' group by tablespace_name
UNION ALL
SELECT tablespace_name,sum(bytes) TOTAL FROM DBA_DATA_FILES T
WHERE T.TABLESPACE_NAME NOT IN ('USERS','SYSAUX','UNDOTBS1','SYSTEM','UNDOTBS2')
AND T.AUTOEXTENSIBLE='NO' group by tablespace_name
)
SELECT TABLESPACE_NAME,SUM(TOTAL) TOTAL FROM TABLESPACE_TOTAL GROUP BY TABLESPACE_NAME
) B
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME
不管是根據dba_data_files和dba_free_space統計表空間大小和表空間剩餘大小還是根據dba_data_files和dba_segments統計表空間大小和表空間剩餘大小,
兩種方法的偏差值都不大,當然我還是建議採用根據dba_data_files和dba_free_space統計表空間大小和表空間剩餘大
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29893219/viewspace-1851603/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle的temp表空間被佔滿Oracle
- undo表空間佔用磁碟空間滿案例處理
- PostgreSQL:表空間-->資料庫-->表SQL資料庫
- 使用expdp匯出資料,報ORA-01691表空間不足錯誤
- 臨時表空間被佔滿的原因查詢
- 檢視資料庫表空間資料庫
- oracle清除資料庫表空間Oracle資料庫
- 刪除資料庫表空間資料庫
- SYSAUX表空間滿對資料庫的影響以及解決措施UX資料庫
- MYSQL造資料佔用臨時表空間MySql
- 如果INDEX表空間滿了,資料是否可以插入Index
- 解決Oracle臨時表空間佔滿的問題Oracle
- 資料庫和表空間資料移動資料庫
- ASM空間爆滿導致資料庫掛起ASM資料庫
- 改變資料庫undo表空間資料庫
- 資料庫物件遷移表空間資料庫物件
- 在資料庫之間移動表空間資料庫
- HANA資料庫查詢大表佔用記憶體空間 for hana 2.0資料庫記憶體
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- 檢視資料庫佔用磁碟空間的方法資料庫
- onethink上傳到空間之後,runtime資料夾將空間佔滿如何解決
- 如何檢視Oracle資料庫表空間大小(空閒、已使用),是否要增加表空間的資料檔案...Oracle資料庫
- DB2建立資料庫,建立表空間DB2資料庫
- mysql 資料庫或者表空間使用查詢MySql資料庫
- 資料庫表空間不夠,需要擴容資料庫
- 誤刪oracle資料庫表空間檔案Oracle資料庫
- 表空間級資料庫備份恢復資料庫
- Oracle資料庫設定預設表空間Oracle資料庫
- MySQL 磁碟空間滿導致表空間相關資料檔案損壞故障處理MySql
- 表空間滿的解決方法
- Oracle資料庫表空間的資料檔案大小上限。Oracle資料庫
- oracle查詢表空間的空間佔用情況Oracle
- 達夢資料庫表空間等空間大小查詢方法總結資料庫
- Oracle查詢表佔磁碟空間大小及移動表空間Oracle
- imp方式還原資料庫空間佔用特別大資料庫
- 表空間中有資料也可以壓縮表空間(資料檔案)大小
- Linux磁碟空間佔滿問題快速排雷Linux
- 【Oracle】rman 恢復只讀表空間資料庫Oracle資料庫