当前位置: 365bet亚洲官方投注 > MySQL数据库 > 正文

力不从心透顶删除归档日志,RMAN删除归档日志不

时间:2019-12-22 11:02来源:MySQL数据库
前言 最近在因归档日志暴增,使用delete archivelogall貌似无法清除所有的归档日志,到底是什么原因呢? [python]  1、演示环境  SQL select * from v$version where rownum2;    BANNER  -----------------

前言

最近在因归档日志暴增,使用delete archivelog all貌似无法清除所有的归档日志,到底是什么原因呢?
[python] 
1、演示环境 
SQL> select * from v$version where rownum<2; 
 
BANNER 
---------------------------------------------------------------- 
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production 
 
SQL> select inst_id,instance_name from gv$instance; -->两节点RAC 
 
   INST_ID INSTANCE_NAME 
---------- ---------------- 
         1 GOBO4A 
         2 GOBO4B 
 
SQL> 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 
------------------ 
NO 
 
2、查看及清除现有的归档日志文件     
[email protected]:~> export ORACLE_SID=+ASM1 
[email protected]:~> asmcmd 
ASMCMD> cd +REV/GOBO4/ARCHIVELOG 
ASMCMD> ls 
2012_10_08/ 
.... 
arch_795194241_1_10.arc 
arch_795194241_1_100.arc 
.... 
 
[email protected]:~> export ORACLE_SID=GOBO4A 
[email protected]:~> rman target / 
 
Recovery Manager: Release 10.2.0.3.0 - Production on Thu Nov 29 16:23:15 2012 
 
Copyright (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=DISK 
 
List 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  www.2cto.com
 
# 上面输出的结果只有一个归档日志被删除,何以故? 
# 这个我们的分析一下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=DISK 
 
List 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(*) 

1、得到数据库名和创建日期SELECT name, created, log_mode, open_mode FROM v$database;

当Oracle 归档日志满了后,将无法正常登入oracle,需要删除一部分归档日志才能正常登入ORACLE。


2、ORACLE数据库的计算机的主机名,ORACLE数据库的实例名及ORACLE数据库管理系统的版本信息SELECT host_name, instance_name, version FROM v$instance;

最近同事在工作中遇到一个问题,他那边的一套Oracle 11g数据库使用RMAN没办法删除旧的归档,导致磁盘使用率很高。

---------- 
         2                                                           223 
         1 +REV/gobo4/archivelog/arch_795194241_1_296.arc              1 
         2 +REV/gobo4/archivelog/arch_795194241_1_296.arc              1 
         1                                                           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 

3、为了知道oracle数据库版本的一些特殊信息select * from v$version;

oracle@ps251n2s:[/opt/oracle/archive/db] ls -ltr |moretotal 3059881082-rw-r----- 1 oracle oinstall 725320704 May 20 2016 1_1_91233774.dbf-rw-rw---- 1 oracle oinstall 1756937216 Jun 7 2016 1_2_91233774.dbf-rw-rw---- 1 oracle oinstall 1756731392 Jun 21 2016 1_3_91233774.dbf-rw-rw---- 1 oracle oinstall 1758001152 Jul 3 2016 1_4_91233774.dbf-rw-rw---- 1 oracle oinstall 1756729344 Jul 15 2016 1_5_91233774.dbf-rw-rw---- 1 oracle oinstall 1765750784 Jul 26 22:00 1_6_91233774.dbf-rw-rw---- 1 oracle oinstall 1760346112 Aug 6 14:04 1_7_91233774.dbf......

4、获取控制文件名字select * from v$controlfile;

使用RMAN list archivelog all;查看日志也没有显示旧归档日志的记录

------------ ----------- ---------- ---------- 
         1 ARCHIVED LOG                         584           224          224         149        148        456 
         2 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 

5、得到Oracle数据库的重做日志配置信息SELECT group#, members, bytes, status, archived FROM v$log;select GROUP#,MEMBER from v$logfile;

RMAN> list archivelog all;using target database control file instead of recovery catalogList of Archived Log Copies for database with db_unique_name DBS=====================================================================Key Thrd Seq S Low Time ------- ---- ------- - ---------1206 1 1206 A 14-JAN-17Name: /opt/oracle/archive/db/1_1206_91233774.dbf1207 1 1207 A 14-JAN-17Name: /opt/oracle/archive/db/1_1207_91233774.dbf1208 1 1208 A 14-JAN-17Name: /opt/oracle/archive/db/1_1208_91233774.dbf......

6、获取oracle的每个重做日志文件所存放的具体位置select * from v$logfile;

使用crosscheck检查也没有查到旧归档日志记录

------------------------------ 
control_file_record_keep_time        integer     7 
 
SQL> select count (*) from v$archived_log; 
 
  COUNT(*) 
---------- 
       224 
 
# Author : Robinson 
# Blog :  
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列为deleted 
 
SQL> select min (FIRST_TIME), min (COMPLETION_TIME), max (FIRST_TIME), max (COMPLETION_TIME) from 
  2  v$archived_log; 
 
MIN(FIRST_TIME)   MIN(COMPLETION_TI MAX(FIRST_TIME)   MAX(COMPLETION_TI 

7、知道ORACLE数据库的备份和恢复策略和归档文件的具体位置archive log list

RMAN> crosscheck archivelog all;using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=16 device type=DISKvalidation succeeded for archived logarchived log file name=/opt/oracle/archive/db/1_1206_91233774.dbf RECID=1206 STAMP=933244655validation succeeded for archived logarchived log file name=/opt/oracle/archive/db/1_1207_91233774.dbf RECID=1207 STAMP=933249510validation succeeded for archived logarchived log file name=/opt/oracle/archive/db/1_1208_91233774.dbf RECID=1208 STAMP=933254500validation succeeded for archived logarchived log file name=/opt/oracle/archive/db/1_1209_91233774.dbf RECID=1209 STAMP=933259445validation succeeded for archived log

8、知道ORACLE数据库中到底有多少表空间以及每个表空间的状态select tablespace_name, block_size, status, contents, logging from dba_tablespaces;select tablespace_name, status from dba_tablespaces;

查看v$archived_log视图也没有旧归档日志记录

----------------- 
20121023 18:03:12 20121023 18:04:53 20121130 12:00:26 20121130 12:14:51 
 
SQL> select min (FIRST_TIME), min (COMPLETION_TIME), max (FIRST_TIME), max (COMPLETION_TIME) from 
  2  gv$archived_log; 
 
MIN(FIRST_TIME)   MIN(COMPLETION_TI MAX(FIRST_TIME)   MAX(COMPLETION_TI 

9、知道每个表空间存在哪个磁盘上以及文件的名字等信息SELECT file_id, file_name, tablespace_name, status, bytes from dba_data_files;select file_name, tablespace_name from dba_data_files;

解决过程


10、知道Oracle数据库系统上到底有多少用户和都是什么时候创建的select username,created from dba_users;select username, DEFAULT_TABLESPACE from dba_users;

于是在网上找到一篇文章,大体意思是MAN删除归档日志的依据是controlfile中记录的归档日志,而不是你磁盘上实际存在的归档日志,如果你的归档日志已经不在controlfile中就无法被RMAN识别到,也就无法被删除。而致于归档信息何时在控制文件中被覆盖,这由一个参数control_file_record_keep_time来控制。

----------------- 
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 在等候阿。        

11、从控制文件中取出信息涉及到以下一些相关的命令复制代码 代码如下:select * from v$archivedselect * from v$archived_logselect * from v$backupselect * from v$databaseselect * from v$datafileselect * from v$logselect * from v$logfileselect * from v$loghistselect * from v$tablespaceselect * from v$tempfile12、控制文件由两大部份组成:可重用的部份和不可重用的部分。可重用的部分的大小可用CONTROL_FILE_RECORD_KEEP_TIME参数来控制,该参数的默认值为7天,即可重用的部份的内容保留7天,一周之后这部份的内容可能被覆盖。可重用的部份是供恢复管理器来使用的,这部份的内容可以自动扩展。Oracle数据库管理员可以使用CREAT DATABASE或 CREAT CONTROLFILE语句中的下列关键字来间接影响不可重用的部份的大小:复制代码 代码如下:MAXDATAFILESMAXINSTANCESMAXLOGFILESMAXLOGHISTORYMAXLOGMEMBERS13、查看控制文件的配置SELECT type, record_size, records_total, records_used FROM v$controlfile_record_section;

查看数据库中的参数是默认的7天

小结
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文件夹为空,否则,整个文件夹连同上级空目录会被删除
本文涉及到的一些参考文章:
    Oracle 控制文件(CONTROLFILE)
    Oracle 归档日志
    参数CONTROL_FILE_RECORD_KEEP_TIME和MAXLOGHISOTRY
    使用 ASMCMD 工具管理ASM目录及文件
    ORA-00254/ORA-15173 Archive_log Directory On Asm Being Deleted  

14、如果您的显示被分成了两部分,您需要使用类似于set pagesize 100的SQL*Plus命令先格式化输出。有关的格式化输出命令有以下这些:record_size: 为每个记录的字节数。records_total:为该段所分配的记录个数。records_used:为该段所使用的记录个数。

SYS@db> show parameter CONTROL_FILE_RECORD_KEEP_TIMENAME TYPE VALUE------------------------------------ -------------------------------- ------------------------------control_file_record_keep_time integer 7

archivelog all貌似无法清除所有的归档日志,到底是什么原因呢? [python] 1、演示环境 SQL select * from v$vers...

15、知道控制文件中的所有数据文件,表空间,和重做日志所使用的记录情况SELECT type, record_size, records_total, records_usedFROM v$controlfile_record_sectionWHERE type IN ( ‘DATAFILE', ‘TABLESPACE', ‘REDO LOG');

难道是在控制文件中归档日志的记录条数只能保留7天的么?于是到MOS去找相关文档找到一篇Why Are Controlfile Entries For Archived Logs Not Overwritten After CONTROL_FILE_RECORD_KEEP_TIME? ,文档介绍CONTROL_FILE_RECORD_KEEP_TIME参数并不是强制在控制文件中保留多少天的归档日志条目,而是由V$CONTROLFILE_RECORD_SECTION视图中的ARCHIVED LOG条目去控制的,当RECORDS_TOTAL=RECORDS_USED时旧的归档日志就会被覆盖掉。

16、获取控制文件名字select value from v$parameter where name ='control_files';或者:select * from v$controlfile

于是查数据库中的V$CONTROLFILE_RECORD_SECTION视图,看到ARCHIVED LOG行的records_total=224意味着控制文件中只能保留224条归档日志文件信息。

17、如何在一个已经安装的Oracle数据库中添加或移动控制文件呢?以下是在一个已经安装的Oracle数据库中添加或移动控制文件的具体步骤:

SYS@dbs> select * from v$controlfile_record_section where type='ARCHIVED LOG';TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID---------------------------- ----------- ------------- ------------ ----------- ---------- ----------ARCHIVED LOG 584 224 224 88 87 1235

a、利用数据字典v$controlfile来获取现有控制文件名字。

查询v$archived_log视图,总数为224条

b、正常关闭Oracle数据库。

SYS@dbs> select count from v$archived_log;COUNT----------224

c、将新的控制文件名添加到参数文件的CONTROL_FILES参数中。

这时应该可以推断出由于控制文件中只能保留224条归档日志数据,所以以前的归档信息已经被控制文件刷出,RMAN无法识别到这些归档文件,所以就无法删除这些归档日志。

d、使用操作系统的复制命令将现有控制文件复制到指定位置。

那么现在如果使用RMAN删除这些旧的归档日志呢?我想到使用catalog start with命令重新注册这些文件到控制文件中

e、重新启动Oracle数据库。

RMAN> catalog start with '/opt/oracle/archive/db';......File Name: /opt/oracle/archive/db/1_1005_91233774.dbfFile Name: /opt/oracle/archive/db/1_1006_91233774.dbfFile Name: /opt/oracle/archive/db/1_1007_91233774.dbfDo you really want to catalog the above files ? yescataloging files...cataloging done......RMAN> list archivelog all;.....1236 1 301 A 22-OCT-16Name: /opt/oracle/archive/db/1_301_91233774.dbf1237 1 302 A 22-OCT-16Name: /opt/oracle/archive/db/1_302_91233774.dbf......

f、利用数据字典v$controlfile来验证新的控制文件名字是否正确。

旧的归档日志文件已经注册到控制文件中了,再使用RMAN进行删除就可以了

g、如果有误重做上述操作,如果无误删除无用的旧控制文件。

delete archivelog until logseq 1007;

注: 如果您使用了服务器初始化参数文件,您不能关闭Oracle数据库而且应该在第3步使用alter system set control_files的Oracle命令来改变控制文件的位置。复制代码 代码如下:SQL> alter system set control_files =‘D:Disk3CONTROL01.CTL',‘D:Disk6CONTROL02.CTL',‘D:Disk9CONTROL03.CTL' SCOPE=SPFILE;18、由于控制文件是一个极其种要的文件,除了以上所说的将控制文件的多个副本存在不同的硬盘上的保护措施外,在数据库的结构变化之后,您应立即对控制文件进行备份。可以用Oracle命令来对控制文件进行备份:alter database backup controlfile to ‘D:backupcontrol.bak';

再次查询v$controlfile_record_section视图,records_total也被“撑”大了

19、您也可将备份到一个追踪文件中。该追踪文件包含有重建控制文件所需的SQL语句。可使用以下SQL语句来产生这一追踪文件:alter database backup controlfile to trace;

SYS@db> select * from v$controlfile_record_section where type='ARCHIVED LOG';TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID---------------------------- ----------- ------------- ------------ ----------- ---------- ----------ARCHIVED LOG 584 896 742 807 652 1800

20、正常关闭oracle命令shutdown immeditae

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

编辑:MySQL数据库 本文来源:力不从心透顶删除归档日志,RMAN删除归档日志不

关键词: