ORA-16014錯(cuò)誤和flash空間滿
昨天創(chuàng)建一個(gè)表 create table user as select name from t_userinfo
t_userinfo 這個(gè)表很大. 過了一段時(shí)間一直在讀寫硬盤.持續(xù)了有3個(gè)小時(shí).
PL/SQL DEVELOPER 也無法中斷.
通過查v$sqlarea 的sql_fulltext 找到了 sql_Id=gutz8yut71m22-
然后在v$session找到了 session_id=646 serial#=57
然后alter system kill session '646,57' 無法刪除.
查v$session_wait 的event 發(fā)現(xiàn)是log siwtch
shutdown immediate 也無法關(guān)閉.只好在windows下關(guān)閉了Oracle服務(wù).
再次啟動(dòng)時(shí)候,很怕數(shù)據(jù)庫做回滾操作,因?yàn)槲乙呀?jīng)把歸檔日志刪除了1.1G,也害怕無法恢復(fù).
1.問題以及解決過程
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> alter database open;
alter database open
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-16014: 日志 2 的序列號(hào) 27 未歸檔, 沒有可用的目的地
ORA-00312: 聯(lián)機(jī)日志 2 線程 1:
'D:\Oracle\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'
SQL> show parameter db_recovery_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:\Oracle\product\10.2.0/flash
_recovery_area
db_recovery_file_dest_size big integer 2G
SQL> alter system archive log current;
alter system archive log current
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-01109: 數(shù)據(jù)庫未打開
SQL> alter system switch logfile;
alter system switch logfile
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-01109: 數(shù)據(jù)庫未打開
SQL> show parameter db_recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string C:\Oracle\product\10.2.0/flash
_recovery_area
db_recovery_file_dest_size big integer 2G
SQL> alter system set db_recovery_file_dest_size=3G scope=both;
系統(tǒng)已更改。
SQL> alter database open;
數(shù)據(jù)庫已更改。
(1).檢查flash recovery area的使用情況:
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 0 0 0
ARCHIVELOG 7.23 0 48
BACKUPPIECE 0 0 0
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0
已選擇6行。
SQL>
(2).計(jì)算flash recovery area已經(jīng)占用的空間:
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
SUM(PERCENT_SPACE_USED)*3/100
-----------------------------
2.1369
也可以用下面的語句檢查
SELECT substr(name, 1, 30) name, space_limit AS quota,space_used AS used,space_reclaimable
AS reclaimable, number_of_files AS files
FROM v$recovery_file_dest ;
create table as 語句產(chǎn)生了很多歸檔導(dǎo)致 online redo log無法歸檔,在這里,我們通過設(shè)置
db_recovery_file_dest_size參數(shù),增大了flash recovery area來解決這個(gè)問題。
(3).也可以通過刪除flash recovery area中不必要的備份來釋放flash recovery area空間來解決這個(gè)問
題:
c:\RMAN
rman> connect target sys/pwd@test
(1). delete obsolete;
(2). crosscheck backupset; delete expired backupset;
(3). crosscheck archivelog all; delete expired archivelog all;
Oracle指出,我們可以通過執(zhí)行以下命令:
RMAN> backup recovery area;
將閃回區(qū)的內(nèi)容備份到第三方介質(zhì),也同樣可以解決這個(gè)問題。
是以為記。
本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|