delete archivelog all 無法徹底刪除歸檔日志?

1、演示環境
SQL> select * from v$version where rownum<2;BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.3.0 - 64bit ProductionSQL> select inst_id,instance_name from gv$instance; -->兩節點RACINST_ID INSTANCE_NAME
---------- ----------------1 GOBO4A2 GOBO4BSQL> show parameter db_recovery   -->+REV,使用了ASM 存儲方式NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------
db_recovery_file_dest                string      +REV
db_recovery_file_dest_size           big integer 1G     SQL> select flashback_on from v$database;  -->數據庫未開啟閃回特性,也就是說盡管指定了閃回區,未啟用閃回特性-->相應的,歸檔日志充滿整個閃回區時,閃回區空間并不會被重用
FLASHBACK_ON
------------------
NO2、查看及清除現有的歸檔日志文件    
oracle@bo2dbp:~> export ORACLE_SID=+ASM1
oracle@bo2dbp:~> asmcmd
ASMCMD> cd +REV/GOBO4/ARCHIVELOG
ASMCMD> ls
2012_10_08/
....
arch_795194241_1_10.arc
arch_795194241_1_100.arc
....oracle@bo2dbp:~> export ORACLE_SID=GOBO4A
oracle@bo2dbp:~> rman target /Recovery Manager: Release 10.2.0.3.0 - Production on Thu Nov 29 16:23:15 2012Copyright (c) 1982, 2005, Oracle.  All rights reserved.connected to target database: GOBO4 (DBID=921286879)#下面通過使用rman backup archivelog方式來刪除所有的歸檔日志文件
RMAN> backup format '/install_source/rman_bak/arch_%d_%U'
2> archivelog all delete input;Starting backup at 29-NOV-12
current log archived
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1058 instance=GOBO4A devtype=DISK
channel ORA_DISK_1: starting archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=139 recid=214 stamp=797450261
input archive log thread=1 sequence=140 recid=215 stamp=797450292
input archive log thread=1 sequence=141 recid=216 stamp=797450308
input archive log thread=1 sequence=142 recid=218 stamp=797450347
input archive log thread=1 sequence=143 recid=219 stamp=797450372
input archive log thread=1 sequence=144 recid=220 stamp=797450409
channel ORA_DISK_1: starting piece 1 at 29-NOV-12
channel ORA_DISK_1: finished piece 1 at 29-NOV-12
piece handle=/install_source/rman_bak/arch_GOBO4_1dnrhkn4_1_1 tag=TAG20121129T162806 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:02:15
channel ORA_DISK_1: deleting archive log(s)
archive log filename=+REV/gobo4/archivelog/arch_795194241_1_139.arc recid=214 stamp=797450261
archive log filename=+REV/gobo4/archivelog/arch_795194241_1_140.arc recid=215 stamp=797450292
archive log filename=+REV/gobo4/archivelog/arch_795194241_1_141.arc recid=216 stamp=797450308
........
piece handle=/install_source/rman_bak/arch_GOBO4_1hnrhli2_1_1 tag=TAG20121129T162806 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:09
channel ORA_DISK_1: deleting archive log(s)
archive log filename=+REV/gobo4/archivelog/arch_795194241_2_141.arc recid=427 stamp=800547491
archive log filename=+REV/gobo4/archivelog/arch_795194241_2_142.arc recid=429 stamp=800549193
archive log filename=+REV/gobo4/archivelog/arch_795194241_2_143.arc recid=433 stamp=800578944
archive log filename=+REV/gobo4/archivelog/arch_795194241_2_144.arc recid=437 stamp=800641679
Finished backup at 29-NOV-12#再次查看依然有很多歸檔日志文件存在,而且都是10月23日之前的
ASMCMD> pwd
+REV/GOBO4/ARCHIVELOG
ASMCMD> ls
2012_09_30/
2012_10_09/
2012_10_10/
2012_10_11/
2012_10_12/
2012_10_13/
2012_10_14/
2012_10_15/
2012_10_16/
2012_10_17/
2012_10_18/
2012_10_22/
2012_10_23/
arch_795194241_1_100.arc
arch_795194241_1_101.arc
arch_795194241_1_102.arc
............#再次刪除日志文件,來個更狠的命令,直接delete所有的archivelog,最近新增的一個archivelog被刪除
RMAN> delete noprompt archivelog all;released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1081 instance=GOBO4A devtype=DISKList of Archived Log Copies
Key     Thrd Seq     S Low Time  Name
------- ---- ------- - --------- ----
453     1    294     A 29-NOV-12 +REV/gobo4/archivelog/arch_795194241_1_294.arc
deleted archive log
archive log filename=+REV/gobo4/archivelog/arch_795194241_1_294.arc recid=453 stamp=800662185
Deleted 1 objects# 上面輸出的結果只有一個歸檔日志被刪除,何以故?
# 這個我們的分析一下delete noprompt archivelog all以及備份歸檔日志時使用的 delete input
# 回顧一下Oracle控制文件以及Oracle RMAN的的備份恢復的原理。
# 我們知道,Oracle 控制文件里邊記錄了數據庫的名字,id,創建的時間戳....一大堆的信息,當然也有不可少的歸檔信息以及備份信息。
# 如果不知道控制文件有什么? 那就參考:Oracle 控制文件,文章尾部有給出鏈接。# 其次,Oracle RMAN的備份恢復的所有信息都依賴于兩個東東,要么是控制文件,要么是恢復目錄(catalog)。
# 因為所有的備份與恢復信息都會依據備份是的方式存儲到這兩個位置。
# 理所當然的是,對這兩個東東里的備份集,鏡像副本,歸檔日志,等等所有能備份的對象的任意操作,首先會參考這些對象的記錄的信息。
# 其次是當被記錄的對象發生變化時做相應的更新。3、深度分析無法清除的原因
#先來看看gv$archived_log,如果是單實例使用v$archived_log
#從下面的查詢可知,又有兩個新的歸檔日志產生,一個從第一個instance產生,一個從第二個instance產生。
SQL> select name,status,count(*) from gv$archived_log group by name,status;NAME                                               S   COUNT(*)
-------------------------------------------------- - ----------D        444
+REV/gobo4/archivelog/arch_795194241_1_295.arc     A          2
+REV/gobo4/archivelog/arch_795194241_2_150.arc     A          2# 從上面的查詢可知,當前的兩個節點其歸檔日志只有2個,其余的444個其名字都是NULL值。
# 看看關于視圖v$archived_log中NAME列的解釋
# Archived log file name. If set to NULL, either the log file was cleared before it was archived or an RMAN backup command
#  with the "delete input" option was executed to back up archivelog all (RMAN> backup archivelog all delete input;). # 上面的這段話表明當前的這些日志文件要么被手動清除,要么被rman的delete input選項清除。
# 其次status列的D字段也表明了這些個名字為空的歸檔日志已經被Deleted.也就是說有444個歸檔日志已經被刪除了。# 再次嘗試刪除歸檔日志,尾數為295和150的歸檔日志也被刪除
RMAN> delete noprompt archivelog all;released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1081 instance=GOBO4A devtype=DISKList of Archived Log Copies
Key     Thrd Seq     S Low Time  Name
------- ---- ------- - --------- ----
454     1    295     A 29-NOV-12 +REV/gobo4/archivelog/arch_795194241_1_295.arc
455     2    150     A 29-NOV-12 +REV/gobo4/archivelog/arch_795194241_2_150.arc
deleted archive log
archive log filename=+REV/gobo4/archivelog/arch_795194241_1_295.arc recid=454 stamp=800712037
deleted archive log
archive log filename=+REV/gobo4/archivelog/arch_795194241_2_150.arc recid=455 stamp=800712038
Deleted 2 objects# 查詢gv$archived_log視圖,表明所有現有的archivelog都已經被刪除
SQL> select name,status,count(*) from gv$archived_log group by name,status;NAME                                               S   COUNT(*)
-------------------------------------------------- - ----------D        448
# 在asmcmd命令下也無法找到我們剛剛刪除的歸檔日志文件
ASMCMD> pwd
+REV/GOBO4/ARCHIVELOG
ASMCMD> ls -l arch_795194241_1_295.arc
asmcmd: entry 'arch_795194241_1_295.arc' does not exist in directory '+REV/GOBO4/ARCHIVELOG/'
ASMCMD> ls -l arch_795194241_2_150.arc
asmcmd: entry 'arch_795194241_2_150.arc' does not exist in directory '+REV/GOBO4/ARCHIVELOG/'# 在A節點上再次切換一次
SQL> alter system switch logfile;System altered.SQL> select inst_id,name,count(*) from gv$archived_log group by inst_id,name;INST_ID NAME                                                 COUNT(*)
---------- -------------------------------------------------- ----------2                                                           2231 +REV/gobo4/archivelog/arch_795194241_1_296.arc              12 +REV/gobo4/archivelog/arch_795194241_1_296.arc              11                                                           223--上面的查詢可以看到當前的一個歸檔日志arch_795194241_1_296.arc基于Inst_id為1的有1個,而基于Inst_id為2的也有一個--而直接查詢v$archived_log時只有1個當前的歸檔日志,實際上arch_795194241_1_296.arc文件是由第一個instance產生的。
--數字296之前的1即可以表明為第一個instance產生的。SQL> select name from v$archived_log where name='+REV/gobo4/archivelog/arch_795194241_1_296.arc';NAME
--------------------------------------------------
+REV/gobo4/archivelog/arch_795194241_1_296.arc# 關于這個地方個人認為這個應該是用于做恢復時用的。
# RAC數據庫在恢復時,無論多個少節點,只有所有的歸檔日志的集合才能完成地表述數據庫的變遷。
# 此時,無論從哪個節點上看,或者說做無論從哪個節點恢復,都可以看到該歸檔日志。
# 而具體是哪個instance產生則由'%t'重做線程編號來判斷。#下面再來看看控制文件SQL> select * from gv$controlfile_record_section where type='ARCHIVED LOG';INST_ID TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID
---------- ---------------------------- ----------- ------------- ------------ ----------- ---------- ----------1 ARCHIVED LOG                         584           224          224         149        148        4562 ARCHIVED LOG                         584           224          224         149        148        456# RECORDS_TOTAL:Number of records allocated for the section
# 列RECORDS_TOTAL表明為當前TYPE分配的可存儲的總數,在兩個instance上都為224條
# 從最近一次切換日志的查詢結果可知,被刪除的有223條,新增的一條為arch_795194241_1_296.arc,總條數為224條。
# 如果下次日志切換再增加一條往哪里放呢?那些已經超出缺省保留期的歸檔日志被覆蓋,即被重用。
# 用戶在控制文件中保存ARCHIVED LOG部分的保留時間由誰來決定呢,參數control_file_record_keep_time,缺省為7天
# 這意味著7天前的歸檔日志和備份信息可能在控制文件中已經不存在了SQL> show parameter control_file_record_keep_time NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7SQL> select count (*) from v$archived_log;COUNT(*)
----------224# Author : Robinson
# Blog : http://blog.csdn.net/robinson_0612
SQL> alter session set nls_date_format='yyyymmdd hh24:mi:ss';Session altered.# 下面的查詢正好表明為什么2012_10_23和之前的日志為什么沒有被刪除
# 因為20121023 18:04:53之后的歸檔日志已經被覆蓋了,所以使用delete archivelog all時是根本無法清除之前的日志的,無能為力阿。
# 對于rman下的delete archivelog all方式不會刪除控制文件中對應的歸檔日志信息,但在控制文件中設置delete狀態,
# 即v$archived_log視圖的status列為deletedSQL> select min (FIRST_TIME), min (COMPLETION_TIME), max (FIRST_TIME), max (COMPLETION_TIME) from2  v$archived_log;MIN(FIRST_TIME)   MIN(COMPLETION_TI MAX(FIRST_TIME)   MAX(COMPLETION_TI
----------------- ----------------- ----------------- -----------------
20121023 18:03:12 20121023 18:04:53 20121130 12:00:26 20121130 12:14:51SQL> select min (FIRST_TIME), min (COMPLETION_TIME), max (FIRST_TIME), max (COMPLETION_TIME) from2  gv$archived_log;MIN(FIRST_TIME)   MIN(COMPLETION_TI MAX(FIRST_TIME)   MAX(COMPLETION_TI
----------------- ----------------- ----------------- -----------------
20121023 18:03:12 20121023 18:04:53 20121130 12:00:26 20121130 12:14:51   # 既然這般,如何是好啊?
# 那就直接在asmcmd命令行下刪除吧。一頓狂刪 rm -rf 2012_09_30/ 
# 莫急,莫急,一不小心刪完了,我暈,ORA-00254/ORA-15173 Archive_log Directory On Asm Being Deleted 在等候阿。       
復制
小結
a、delete archivelog all將會毫無保留的刪除所有的歸檔日志(在控制文件中有相應記錄的)
b、歸檔日志的信息被記錄在控制文件之中,其生存期和可保留的總數也受到控制文件創建初以及參數control_file_record_keep_time限制
c、對于那些已經在控制文件中被覆蓋的歸檔日志,該方式不起作用,使用backup archivelog all delete input同樣不起作用
d、注意backup archivelog all時delete input與delete all input有些差異,前者刪除僅僅被備份過的歸檔日志,而后者則對于多個歸檔位置下的所有歸檔日志全部刪除。
e、視圖v$archived_log或gv$archived_log提供了歸檔日志的相關詳細信息
f、建議備份歸檔日志后再刪除。注,RAC+ASM下切不可使得archivedlog文件夾為空,否則,整個文件夾連同上級空目錄會被刪除

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163431.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163431.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163431.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【matlab程序】南海土臺風畫法

【matlab程序】南海土臺風畫法 圖片 往期推薦 圖片 【python海洋專題一】查看數據nc文件的屬性并輸出屬性到txt文件 【python海洋專題二】讀取水深nc文件并水深地形圖 【python海洋專題三】圖像修飾之畫布和坐標軸 【Python海洋專題四】之水深地圖圖像修飾 【Python海洋專…

2020年09月 Scratch(三級)真題解析#中國電子學會#全國青少年軟件編程等級考試

Scratch等級考試(1~4級)全部真題?點這里 一、單選題(共25題,每題2分,共50分) 第1題 執行下面程序,屏幕上最多會看到多少個蘋果? A:10個 B:11個 C:1個 D:無法確定 答案:B 第2題 關于下面程序,說法正確的是 ? A:執行 后,馬上執行

機器學習時候必須要分為訓練集、驗證集和測試集嘛

在機器學習中&#xff0c;為了準確評估模型的性能和找到最佳的超參數配置&#xff0c;通常將數據集劃分為訓練集、驗證集和測試集。在這種情況下&#xff0c;驗證集用于調參和模型選擇&#xff0c;而測試集則用于最終的模型評估。 具體流程如下&#xff1a; 劃分數據集&#x…

python分段函數

在Python中&#xff0c;你可以使用if-else語句來實現分段函數。以下是一個簡單的例子&#xff1a; def piecewise_function(x):if x < 0:return 0elif 0 < x < 2:return x ** 2else:return 4這個函數定義了一個分段函數&#xff0c;當x小于0時&#xff0c;函數值為0&…

數據集筆記:Pems 自行下載數據+python處理

以下載District 4的各station每5分鐘的車速為例 1 PEMS網站下載數據 點擊紅色的 選擇需要的station和區域&#xff0c;點擊search&#xff0c;就是對應的數據&#xff0c;點擊數據即可下載 &#xff08;這個是station每5分鐘的速度數據&#xff09; 2 pems 速度數據 2.1 每一…

DLL劫持漏洞

以下是自己學習時做的一些筆記&#xff0c;希望對各位有所幫助 DLL劫持漏洞 為什么程序中會有dll的存在 對于 Windows 操作系統&#xff0c;操作系統的大部分功能都由 DLL 提供。 另外&#xff0c;當您在這些 Windows 操作系統之一上運行某一程序時&#xff0c;該程序的很多…

paddle ocr開啟mkldnn加速后圖片識別精度下降

背景 使用ocr_system調用微調模型時發現部分圖片在設置enable_mkldnnTrue后出現識別精度下降問題 環境&#xff1a; paddle2.5.1 paddlehub2.3.1 python3.8.6 解決方案 tools\infer\utility.py文件中 line 269行左右&#xff0c; 在代碼config.delete_pass("matmul_t…

【華為OD題庫-035】數據最節約的備份方法-java

題目 有若干個文件&#xff0c;使用刻錄光盤的方式進行備份&#xff0c;假設每張光盤的容量是500MB.求使用光盤最少的文件分布方式。所有文件的大小都是整數MB&#xff0c;且不超過500MB:文件不能分割、分卷打包 輸入描述: 一組文件大小的數據 輸出描述: 使用光盤的數量 補充說…

如何通過類似于Android adb install apk 命令安裝三方Harmony Hap包

安裝命令 hdc install xxx.hapOpenHarmony設備安裝Hap應用的五種方式 https://www.51cto.com/article/762223.htmlhttps://www.51cto.com/article/762223.html DevEco Studio 3.1為例新建個項目&#xff0c;點擊File->Project Structure 進入簽名頁面然后點擊Sign in登錄華…

Adobe 家族系列download

adobe 前言 Adobe公司的產品線中擁有多個家族桶&#xff0c;下面是Adobe全家桶產品的功能介紹&#xff1a; Creative Cloud&#xff08;創意云&#xff09;&#xff1a;包含Photoshop、Illustrator、InDesign、Premiere Pro、After Effects、Lightroom等創意設計、視頻制作和…

計算機體系結構習題及解答

Exercise For the 5-stage pipeline (RR and RW take half a cycle) For the following pairs of instructions, how many stalls will the 2nd instruction experience (with and without bypassing)? 1. ADD R3 ?R1R2 ADD R5 ? R3R4 Answer&#xff1a;0 stall wi…

java springboot測試類鑒定虛擬MVC請求 返回內容與預期值是否相同

上文 java springboot測試類鑒定虛擬MVC運行值與預期值是否相同 中 我們驗證了它HTTP的返回狀態 簡單說 校驗了他 是否成功的狀態 這次 我們來不對得到的內容 我們 直接改寫測試類代碼如下 package com.example.webdom;import org.junit.jupiter.api.Test; import org.springf…

【實驗筆記】C語言實驗——超長正整數的減法運算

[問題描述] 編寫程序實現兩個超長正整數(每個最長80位數字)的減法運算。 [輸入形式] 從鍵盤讀入兩個整數&#xff0c;要考慮輸入高位可能為0的情況(如00083) 1.第一行是超長正整數A; 2.第二行是超長正整數B; [輸出形式] 輸出只有一行&#xff0c;是長整數A減去長整數B的運…

FreeRTOS學習之路,以STM32F103C8T6為實驗MCU(2-3:任務切換)

學習之路主要為FreeRTOS操作系統在STM32F103&#xff08;STM32F103C8T6&#xff09;上的運用&#xff0c;采用的是標準庫編程的方式&#xff0c;使用的IDE為KEIL5。 注意&#xff01;&#xff01;&#xff01;本學習之路可以通過購買STM32最小系統板以及部分配件的方式進行學習…

使用 css 實現文字單行居右, 換行居左展示

給外層盒子設置居右展示, 子盒子設置居左。 原理是&#xff0c;如果子盒子沒有換行&#xff0c;那么子盒子的長度就是內容的長度&#xff0c;它根本沒有空間將字體移動居左&#xff0c;父盒子的居左樣式就會生效&#xff0c;子盒子就會居左展示。 當子盒子里面的文字換行了&…

3.1 Linux時間子系統

目錄 一時間子系統作用二 時間子系統初始化三 時間子系統框架 一時間子系統作用 1 提供時間 2 提供時鐘 3 提供進程輪詢 從應用層&#xff0c;分析其使用方法 從驅動層&#xff0c;給出timer和hrtimer的使用示例 二 時間子系統初始化 分別從介紹各個模塊初始化做了些什么工作…

在SOLIDWORKS中如何提升保存PDF版本文件的清晰度

隨著Solidworks年復一年的不斷更新&#xff0c;不僅僅是整個軟件的性能上的提升&#xff0c;其在輸出文件的功能上也同樣在精益求精。 但對于老版本的使用者和希望能讓輸出文件清晰度更進一步的使用者而言&#xff0c;可能目前我們所能達到的普通文件輸出清晰度遠遠無法達到他們…

如何將ONLYOFFICE與Python應用程序集成

ONLYOFFICE是一項功能強大的開源文檔編輯器&#xff0c;可以將文本文檔、電子表格和演示文稿、電子表單編輯功能集成至任何編程語言編寫的 Web 應用程序中。最新的7.5版本編輯器可以支持編輯PDF文件&#xff08;批注、繪圖等&#xff09;。在本文中&#xff0c;我們會帶你了解如…

【分享】Java Builder 建造者模式之案例分享

介紹 建造者模式&#xff08;Builder&#xff09;核心目的是通過使用多個簡單對象一步步構建出一個復雜對象。通過將復雜對象的構造過程拆分為多個簡單的步驟&#xff0c;使得創建對象更加靈活&#xff0c;可讀性和可維護性更強。 使用場景 創建一個由多個部分組成的復雜對象…