1. 程式人生 > >db_recovery_file_dest_size 修改大一點及刪除歸檔日誌

db_recovery_file_dest_size 修改大一點及刪除歸檔日誌

今天給客戶測 試問題,讓客戶把資料發過來了。解壓縮後一看,他們還是用的oracle 815版本的(他們exp匯出時,帶了匯出日誌,從匯出日誌中看出來是oracle 815版本的),不過沒有關係,低版本的exp是可以用高版本的imp匯入到高版本資料庫中的。一看是匯入還很正常,匯入到其中某個表的時候,突然就不動 了。一開始我還沒有弄明白怎末回事。後來,無意中看到了 計算機管理--事件檢視器中 ,有很多報錯資訊:

Archive process error: ORA-16038: log 1 sequence# 317 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\REDO01.LOG'

我這才發現,問題出在了歸檔上了。

又看了alert_oracle.log檔案,也有很多這個報錯資訊。到這裡,這個問題給了我一個教訓:與oracle有關的操作,只要有問題,肯定會向alert_oracle.log檔案寫入日誌的,就看你有沒有意識去看這個日誌檔案了。


.去 google.com搜了點資料,這才恍然大悟:
 oracle10g在預設情況下,歸檔日誌是儲存在閃回恢復區的(對於我的來說是:E:\oracle\product\10.2.0\flash_recovery_area\ORACLE\ARCHIVELOG),如果你建庫的時候用的預設設定,
閃回恢復區應該是2G,空間被佔滿了以後就無法再歸檔了。

此時。我從sqlplus  open database ,有提示:


Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrator>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 11月 26 17:58:22 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select open_mode from v$database;

OPEN_MODE
----------
MOUNTED

SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-16014: 日誌 1 的序列號 317 未歸檔, 沒有可用的目的地
ORA-00312: 聯機日誌 1 執行緒 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\REDO01.LOG'


SQL>

/*-------------------------完畢------------------------*/

解決方法:

1.將歸檔設定到其他目錄,修改alter system set log_archive_dest = 其他路徑

2.轉移或者刪除閃回恢復區裡的歸檔日誌。

3.增大閃回恢復區。
ALTER SYSTEM SET db_recovery_file_dest_size=4g scope=both;


我的處理方法是採用第3種方法,下邊是我的操作過程:

SQL> show parameter db_recovery_file_dest_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size           big integer 2G
SQL> alter system set db_recovery_file_dest_size=3G;

系統已更改。

SQL> alter database open;

資料庫已更改。

SQL> show parameter db_recovery_file_dest_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size           big integer 3G
SQL>

/*-------------------------完畢------------------------*/

值得注意的 是,我執行完畢alter system set db_recovery_file_dest_size=3G;後,馬上又去show parameter db_recovery_file_dest_size;此時顯示的是3g了,不是原來的2g了。從另外一個方面來說:E:\oracle \product\10.2.0\db_1\dbs\SPFILEORACLE.ORA這個檔案的修改時間,就是我執行alter system set db_recovery_file_dest_size=3G; 這就更證明,此更改馬上就生效了。

值得注意的 是,將歸檔路徑下的可用空間擴充到了3G,也就是在原來2G的基礎上又加了1G.  oracle database下新形成的歸檔日誌,實際上是用的這個新增的1G的空間。也許會有人提出疑問,“那我把原來已經形成的2G歸檔日誌刪除掉,oracle database不就能用3G了麼?”其實不是這樣,雖然在物理空間上,已經刪除了2G,但是動態效能檢視(v$recovery_file_dest) 並沒有釋放此這2g空間,可以使用select * from v$recovery_file_dest 查詢出來。若你不從動態效能視圖裡刪除這2G的空間,oracle database會認為這2G依然被佔用。若是有個大的事物提交,並有頻繁的日誌切換,1G的空間馬上就被用完,到時候你的 alert_oracle.log就有錯誤出現,比如,
ORA-19815: WARNING: db_recovery_file_dest_size of 3221225472 bytes is 100.00% used, and has 0 remaining bytes available.
*** 2008-11-28 10:05:13.375
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
   then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
   BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
   reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
   system command was used to delete files, then use RMAN CROSSCHECK and
   DELETE EXPIRED commands.
************************************************************************
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 47715840 bytes disk space from 3221225472 limit
*** 2008-11-28 10:05:13.406 60680 kcrr.c
ARC0: Error 19809 Creating archive log file to 'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORACLE\ARCHIVELOG\2008_11_28\O1_MF_1_344_%U_.ARC'

1.是RMAN>  crosscheck archivelog all;--此命令的含義是檢查所有歸檔日誌的狀態,並把遺失的標記為expired,也就是說,expired 表示已經被作業系統中被刪除的歸檔日誌。
2.是delete expired archivelog all; --此命令的含義是刪除expired的歸檔日誌

親測:

在二級增量備份之後刪除之前的archivelog

backup incremental level 2 database plus archivelog;

效果還是很給力的,只有1G(三天前的第一次備份是7G,1級level備份之後是6.5G,並且沒有加plus archivelog )

刪除一個歸檔日誌

RMAN> crosscheck archivelog all;

奇怪,為什麼檢測沒有1.13號的,是不是我前面備份了

刪除15號的看看

終於有錯誤的了

執行delete expired archivelog all;

奇怪,我deletebackup之後,怎麼二級增量的還在

附加1:

當ORACLE 歸檔日誌滿了後,將無法正常登入ORACLE,需要刪除一部分歸檔日誌才能正常登入ORACLE。

一、首先刪除歸檔日誌物理檔案,歸檔日誌一般都是位於archive目錄下,AIX系統下檔案格式為“1_17884_667758186.dbf”,建議操作前先對資料庫進行備份,刪除時至少保留最近幾天的日誌用於資料庫恢復。

二、把歸檔日誌的物理檔案刪除後,我們就可以正常登入ORACLE了,但是還沒完全把歸檔日誌刪除乾淨,ORACLE的controlfile中仍 然記錄著這些archivelog的資訊,在oracle的OEM管理器中有視覺化的日誌展現出,當我們手工清除archive目錄下的檔案後,這些記錄 並沒有被我們從controlfile中清除掉,接下去我們要做的就是這個工作。

我們利用RMAN進行刪除操作,操作步驟如下:(window客戶端系統為例)

1.指定資料庫例項

C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl

2.連線資料庫

C:/Documents and Settings/Administrator>RMAN TARGET SYS/[email protected]

3.檢視歸檔日誌的狀態

RMAN> list archivelog all;

4.手工刪除歸檔日誌檔案

RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

 說明:
 SYSDATA-7,表明當前的系統時間7天前,before關鍵字表示在7天前的歸檔日誌,如果使用了閃回功能,也會刪除閃回的資料。 
同樣道理,也可以刪除從7天前到現在的全部日誌,不過這個命令要考慮清楚,做完這個刪除,最好馬上進行全備份資料庫 
DELETE ARCHIVELOG from TIME 'SYSDATE-7'; 刪除從7天前到現在的全部日誌,慎用
UNIX/LINUX下也可以通過FIND找到7天前的歸檔資料,使用EXEC子操作刪除 
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ; 
這樣做仍然會在RMAN裡留下未管理的歸檔檔案 
仍需要在RMAN裡執行下面2條命令 
crosscheck archivelog all; 
delete expired archivelog all; 
所以還不如上面的方法好用,不過用FIND的好處就是,可以在條件上,和EXEC子項上做很多操作,實現更復雜的功能

5.退出rman

RMAN> exit

附加2:

Oracle關於日誌檔案基本操作

1.查詢系統使用的是哪一組日誌檔案:
select * from v$log;

2.查詢正在使用的組所對應的日誌檔案:
select * from v$logfile;

3.強制日誌切換:
alter system switch logfile;

4.查詢歷史日誌:
select * from v$log_history;

5.查詢日誌的歸檔模式:
select dbid,name,created,log_mode from v$database;

6.查詢歸檔日誌的資訊:
select recid,stamp,thread#,sequence#,name from v$archived_log;

7.增加與刪除日誌檔案組
alter database add logfile group 1 ('/home1/Oracle/oradata/ora8i/log1a.log'),'/home2/oracle/oradata/ora8i/log1b.log') size 100M;

alter database drop logfile group 1;

8.增加與刪除日誌成員
alter database add logfile member '/home1/oracle/oradata/ora8i/log1a.log' to group 1,'/home1/oracle/oradata/ora8i/log2a.log' to group 2;

alter database drop logfile member '/home1/oracle/oradata/ora8i/log1a.log' ;

9.日誌檔案移動
alter database rename file '/home1/oracle/oradata/ora8i/log1a.log' to '/home2/oracle/oradata/ora8i/log1a.log';
執行該命令之前必須保證該日誌檔案物理上已經移動到新目錄

10.清除日誌檔案
alter database clear logfile '/home1/oracle/oradata/ora8i/log1a.log';
該命令用於不能用刪除組及組成員命令刪除日誌時使用

8.檢視歸檔日誌佔用空間:
SELECT space_limit/1024/1024/1024 AS "Quota_G",space_used/1024/1024 AS "Used_M",space_used/space_limit*100 "Used_%",space_reclaimable AS reclaimable,number_of_files AS files FROM v$recovery_file_dest ;

9.修改歸檔日誌空間大小
alter system set DB_RECOVERY_FILE_DEST_SIZE=40g;

10.檢視歸檔日誌列表
RMAN> list archivelog all;
刪除歸檔日誌
RMAN> delete archivelog until time 'sysdate-1' ;
雙機下也可以用
delete obsolete;
crosscheck archivelog all;
delete expired archivelog all;

11. 用list expired看看是否有失效的archive log,證明沒有失效的archive log:
RMAN> list expired archivelog all;

相關推薦

db_recovery_file_dest_size 修改一點刪除歸檔日誌

今天給客戶測 試問題,讓客戶把資料發過來了。解壓縮後一看,他們還是用的oracle 815版本的(他們exp匯出時,帶了匯出日誌,從匯出日誌中看出來是oracle 815版本的),不過沒有關係,低版本的exp是可以用高版本的imp匯入到高版本資料庫中的。一看是匯入還很正常

Oracle資料庫關閉歸檔功能刪除歸檔日誌方法

注意:資料庫歸檔功能的開啟和關閉需重啟例項。 一、查詢資料庫歸檔是否開啟 --返回值是ARCHIVELOG則開啟了歸檔模式;NOARCHIVELOG是未開啟。 CONN sys/[email protected] AS SYSDBA; SELECT log_mode FROM v$

自己也遇到了-db_recovery_file_dest_size 修改一點

今天給客戶測試問題,讓客戶把資料發過來了。解壓縮後一看,他們還是用的oracle 815版本的(他們exp匯出時,帶了匯出日誌,從匯出日誌中看出來是oracle 815版本的),不過沒有關係,低版本的exp是可以用高版本的imp匯入到高版本資料庫中的。一看是匯入還很正常,匯

通過RMAN刪除歸檔日誌不釋放問題

軟件 oracle 空間 google 操作系統 我的生產環境中歸檔日誌滿了,通過如下腳本刪除後,空間並沒有釋放,看有網友有相關的解決思路,可以跟大家一起分享一下:RMAN> crosscheck archivelog all;RMAN> delete expried arch

RMAN刪除歸檔日誌不釋放問題

oracle今天同事問到一個問題,他那邊的一套Oracle 11g數據庫使用RMAN沒辦法刪除舊的歸檔,導致磁盤使用率很高。[email protected]/* */:[/opt/oracle/archive/db] ls -ltr |moretotal 3059881082 -rw-r----

12c DataGuard 無法刪除歸檔日誌

dataguard rman-08137 一、環境描述Oracle 12c 單實例DataGuardRhel 7.3二、測試過程主庫操作1.關閉DG,切換日誌SQL> alter system set log_archive_dest_state_2=defer;System altered.S

oracle 刪除歸檔日誌

time arch 模式 顯示 清理 plus cover sele lec su - oracle sqlplus / as sysdba 首先查詢Oracle歸檔空間使用情況,語句如下: select * from V$FLASH_RECOVERY_AREA_USAGE

Linux系統Oracle定時刪除歸檔日誌

使用rman命令刪除做Oracle資料庫定期刪除歸檔日誌處理 1、準備工作: 以root使用者角色登入Linux作業系統,建立儲存刪除歸檔時記錄日誌及刪除shell指令碼檔案的目錄並授權給Oracle使用者,命令如下: mkdir -p /home/del_log    m

ORACLE 正確刪除歸檔日誌的方法

我們都知道在controlfile中記錄著每一個archivelog檔案的相關資訊,當然們在OS下把這些物理檔案delete掉後,在我們的controlfile中仍然記錄著這些archivelog檔案的相關資訊,在oracle的OEM管理器中有視覺化的日誌展現出,當我們手

Oracle Rac叢集環境下刪除歸檔日誌

歸檔日誌存放形式主要存放方式有以下方式: 一、ASM方式     oracle 10G、oracle11g、oracle 12C版本如果作業系統是AIX、HPUX、Linux下,一般都會採取ASM建庫方式,特別是oracle 11g和oracle12C,因為oracle已經

當ORACLE歸檔日誌滿後如何正確刪除歸檔日誌

當ORACLE 歸檔日誌滿了後,將無法正常登入ORACLE,需要刪除一部分歸檔日誌才能正常登入ORACLE。 一、首先刪除歸檔日誌物理檔案,歸檔日誌一般都是位於archive目錄下,AIX系統下檔案格式為“1_17884_667758186.dbf”,建議操作前先對資料庫

使用RMAN刪除歸檔日誌和閃回日誌

ORACLE正確刪除歸檔並回收空間的方法 一 個ORACLE歸檔日誌經常滿,表現為/oraarchive 這個檔案空間佔用100%大家一定抱怨ORACLE為何沒有歸檔維護工具,很多人直接刪除了事,錯了,ORACLE有,而且很智慧,可以正確的刪除歸檔和 FLASHBACK,不過切記,ORACLE歸檔日誌對於O

RMAN刪除歸檔日誌不釋放問題解決

一套Oracle 11g資料庫使用RMAN沒辦法刪除舊的歸檔,導致磁碟使用率很高。 [email protected]:[/opt/oracle/archive/db] ls -ltr |more total 3059881082  -rw-r-----  1

刪除歸檔日誌錯誤ORA-15028: ASM file '..' not dropped; currently being accessed

本文標記的是[翻譯],但並不是完全翻譯原文,因為我覺得其他兩個標記[原創]和[轉載]更加不合適 問題描述 本人執行delete noprompt archivelog all;時 會出現如下錯誤 ORA-15028: ASM file ‘+ASM/…/…/ar

oracle 正確刪除歸檔日誌,並清除 V$ARCHIVED_LOG 資料

1. 連線 RMAN 管理 rman target /   2. 檢視歸檔日誌列表 RMAN> crosscheck archivelog all;   3. 刪除所有歸檔日誌 RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE '

ORACLE Rman刪除歸檔日誌

刪除過期的歸檔日誌: RMAN> list archivelog all; 手工刪除歸檔日誌檔案 RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; 設定歸檔日誌過期時間: RMAN>show

如何正確刪除Oracle 歸檔日誌文件

如何正確刪除oracle 歸檔日誌文件當Oracle中的歸檔日誌空間滿時,則需要把它清空,否則將會影響數據庫正常運行,將無法正常登入ORACLE,需要刪除一部分歸檔日誌才能正常登入ORACLE。一、首先刪除歸檔日誌物理文件,歸檔日誌一般都是位於archive目錄下,在Oracle 10g中AIX系統下文件格式

Linux - 修改內核啟動順序刪除無用內核

sum name ade gin nis db4 pre transacti 內核啟動 現象: CentOS7開機啟動界面顯示多個內核選項 原因: 正常情況下,有兩個啟動項,一個是“正常啟動”,另一個是“救援模式啟動”(rescue)。 如果啟動項多於2個,說明當前系統有舊

oracle rac 11g修改開啟歸檔修改歸檔日誌路徑

oracle rac 歸檔1、修改歸檔路徑參數sqlplus / as sysdbaSQL> alter system set log_archive_dest_1='location=+ASMARCH' scope=spfile sid='*';2.關閉數據庫,全部節點

修改默認歸檔日誌

數據 cat glob 產生 testin rod s/4 有一個 enter Oracle11g版本,ORACLE默認的日誌歸檔路徑為閃回恢復區($ORACLE_BASE/fast_recovery_area)。對於這個路徑,Oracle有一個限制,就是默認只有