当前位置:文档之家› ORACLE归档日志学习与设置

ORACLE归档日志学习与设置

ORACLE归档日志学习与设置
ORACLE归档日志学习与设置

如何正确删除Oracle归档日志

归档日志的存储空间在启动数据库后检查告警日志时提示该容量已使用81%,分析了一下,找到了原因,记录如下:

在controlfile中记录着每个archivelog的相关信息,当我们在OS下把这些归档文件delete掉以后,这些信息并未从controlfile中清除,所以oracle并不知道这些文件已经不存在,所以相应的在容量上也并未调整,此时,需要我们做手工调整,使得controlfile中的记录与实际存在的归档日志文件保持一致。

可以尝试以下方法:

1. 进入rman

2. connect target / 或者connect target/@db_name

(连接远程数据库

如果要连接的目标数据库是一个远程数据库,那么必须在建立连接时指定一个有效的网络服务名,同时你本地的tnsname.ora文件中也必须已经建立了该网络服务名的正确配置。示例如下:

C:\Documents and Settings\Administrator>rman target sys/change_on_install@testdb)

3. crosscheck archivelog all;

4. delete expired archivelog all;

以上语句的解释说明:

(1)crosscheck archivelog all:检查控制文件和实际物理文件的差别

(2)delete expired archivelog all:同步控制文件的信息和实际物理文件的信息

如果单独执行crosscheck 而不执行delete 那么操作还是失败的,因为并未达到同步控制文件和实际物理文件的目的。

这时候我们再去OEM中看就一定看不到,如果你的从来没有做过这个动作的话,我们可以比较从这个动作前的controlfile后动作后的controlfile的大小!

ORACLE正确删除归档并回收空间的方法

一个ORACLE归档日志经常满,表现为/oraarchive 这个文件空间占用100%大家一定抱怨ORACLE为何没有归档维护工具,很多人直接删除了事,错了,ORACLE有,而且很智能,可以正确的删除归档和FLASHBACK,不过切记,ORACLE归档日志对于ORACLE

的数据恢复和备份非常重要,不到万不得已不要删除归档日志。

删除归档日志的过程:

以ORACLE用户身份登录到数据库服务器主机或通过网络连接

进入ORACLE数据备份工具

rman target/或rman target/@orcl

在命令窗口里面执行

DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

说明:

SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。

同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库

DELETE ARCHIVELOG FROM TIME 'SYSDATE-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子项上做很多操作,实现更复杂的功能

简要介绍一下report obsolete命令

使用report obsolete命令报告过期备份

RMAN> report obsolete;

RMAN retention policy will be applied to the command

RMAN retention policy is set to redundancy 1

Report of obsolete backups and copies

Type Key Completion Time Filename/Handle

-------------------- ------ ------------------ --------------------

Backup Set 125 01-NOV-04

Backup Piece 125 01-NOV-04 /data1/oracle/orabak/full_1_541045804

Backup Set 131 04-NOV-04

Backup Piece 131 04-NOV-04 /data1/oracle/orabak/full_A V ATAR2_20041104_131

....

Backup Set 173 06-DEC-04

Backup Piece 173 06-DEC-04 /data1/oracle/orabak/full_A V ATAR2_20041206_173

Backup Set 179 11-DEC-04

Backup Piece 179 11-DEC-04 /data1/oracle/orabak/arch544588206.arc

.....

Backup Piece 189 17-DEC-04 /data1/oracle/orabak/arch545106606.arc

Backup Set 190 17-DEC-04

Backup Piece 190 17-DEC-04 /data1/oracle/orabak/arch545106665.arc

Backup Set 191 20-DEC-04

Backup Piece 191 20-DEC-04 /data1/oracle/orabak/arch_A V ATAR2_20041220_194

Archive Log 2973 20-DEC-04

/opt/oracle/oradata/avatar2/archive/1_2985.dbf

Archive Log 2971 20-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2984.dbf

.....

Archive Log 2705 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2717.dbf

Archive Log 2704 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2716.dbf

Archive Log 2703 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2715.dbf

Archive Log 2702 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2714.dbf

使用delete obsolete命令删除过期备份:

RMAN> delete obsolete;

RMAN retention policy will be applied to the command

RMAN retention policy is set to redundancy 1

using channel ORA_DISK_1

Deleting the following obsolete backups and copies:

Type Key Completion Time Filename/Handle

-------------------- ------ ------------------ --------------------

Backup Set 125 01-NOV-04

Backup Piece 125 01-NOV-04 /data1/oracle/orabak/full_1_541045804 ....

Archive Log 2704 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2716.dbf

Archive Log 2703 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2715.dbf

Archive Log 2702 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2714.dbf

Do you really want to delete the above objects (enter YES or NO)? yes

deleted backup piece

backup piece handle=/data1/oracle/orabak/full_A V ATAR2_20041206_173 recid=173 stamp=544156241

.....

deleted archive log

archive log filename=/opt/oracle/oradata/avatar2/archive/1_2715.dbf recid=2703 stamp=545108268

deleted archive log

archive log filename=/opt/oracle/oradata/avatar2/archive/1_2714.dbf recid=2702 stamp=545107659

Deleted 286 objects

RMAN> crosscheck archivelog all;

released channel: ORA_DISK_1

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=19 devtype=DISK

specification does not match any archive log in the recovery catalog

在rman中用crosscheck检查归档日志,2个归档日志都是失败的:

RMAN> crosscheck archivelog all;

释放的通道: ORA_DISK_1

分配的通道: ORA_DISK_1

通道ORA_DISK_1: sid=14 devtype=DISK

对归档日志的验证失败

存档日志文件名=D:ORACLEORADATATESTARCHIVE1_47.DBF 记录ID=1 时间戳=572866

683

对归档日志的验证失败

存档日志文件名=D:ORACLEORADA TA TESTARCHIVE11_48.DBF 记录ID=2 时间戳=57286

6931

已交叉检验的2 对象

试着同步一下,看行不行,结果不行,crosscheck还是失败:

RMAN> resync catalog;

正在启动全部恢复目录的resync

完成全部resync

RMAN> crosscheck archivelog all;

释放的通道: ORA_DISK_1

分配的通道: ORA_DISK_1

通道ORA_DISK_1: sid=14 devtype=DISK

对归档日志的验证失败

存档日志文件名=D:ORACLEORADATATESTARCHIVE1_47.DBF 记录ID=1 时间戳

=572866

683

对归档日志的验证失败

存档日志文件名=D:ORACLEORADA TA TESTARCHIVE11_48.DBF 记录ID=2 时间戳=57286

6931

已交叉检验的2 对象

用list expired看看是否有失效的archive log,证明没有失效的archive log:

RMAN> list expired archivelog all;

说明与恢复目录中的任何存档日志均不匹配

更改语言环境试试,结果再次crosscheck,2个archive log 都成功了:

RMAN> exit

恢复管理器完成。

C:>set nls_lang=american_america.zhs16gbk

C:>rman catalogrman/rman@safetarget /

Recovery Manager: Release 9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

connected to target database: TEST (DBID=1870953724)

connected to recovery catalog database

RMAN> crosscheck archivelog all;

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=9 devtype=DISK

validation succeeded for archived log

archive log filename=D:ORACLEORADA TA TESTARCHIVE1_47.DBF recid=1 stamp=57286 6683

validation succeeded for archived log

archive log filename=D:ORACLEORADA TA TESTARCHIVE11_48.DBF recid=2 stamp=5728 66931

Crosschecked 2 objects

补充:crosscheck backset 的使用

crosscheck backupset 是检查备份集和实际的文件

1 备份集有两种状态A(Available,RMAN认为该项存在于备份介质上)X(Expired,备份存在于控制文件或恢复目录中,但

是并没有物理存在于备份介质上)

2 crosscheck 的目的是检查RMAN 的目录以及物理文件,如果物理文件不存在于介质上,将标记为Expired。如果物理文件

存在,将维持Available。如果原先标记为Expired的备份集再次存在于备份介质上(如恢复了损坏的磁盘驱动器后),

crosscheck将把状态重新从Expired标记回Available。

3 crosscheck 输出分两部分。第一部分列出确定存在于备份介质上的所有备份集片,第二部分列出不存在于备份介质上的

备份集片,并将其标记为Expired。当设置备份保存策略后,一个备份过期,crosscheck之后标记为丢弃的备份状态依旧为

availabel,要删除丢弃备份delete obsolete

itpub一实例:

我的一个Unix下oracle数据库在迁移当中一个归档文件丢失了,rman备份归档日志时提示某个归档日志找不到,请问如何在不停止oracle数据库情况下截断归档日志,重新开始新的归档!

解决ORA-00257: archiver error. Connect internal only, until freed

此问题属于归档日志满了。

解决办法:

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 99.9 0 255 BACKUPPIECE 0 0 0 IMAGECOPY 0 0 0 FLASHBACKLOG 0 0 0 注:可以看出,ARCHIVELOG日志已经达到99.9%了。要把它清除掉!

SQL> quit

C:\Documents and Settings\Administrator>rman

RMAN> connect target system/myoracle@orcl

注:system为oracle用户,myoracle为oracle用户密码,orcl为连接的数据库名称SID。RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;

注:删除过期的归档

这样就把归档文件删除了。再进入sqlplus 查看ARCHIVELOG日志使用率!

第二种方法就是增大闪回日志文件的最大大小。如下:

alter system set DB_RECOVERY_FILE_DEST_SIZE=10g

以上处理方法是当遇到出现日志写满报错时的处理,建议最好做个任务,定时删除日志,如下:

DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; //删除七天前的归档DELETE ARCHIVELOG FROM TIME 'SYSDATE-7'; //删除七天到现在的归档

crosscheck archivelog all

delete archivelog all;

oracle日志记录

【例1】 SQL>set time on SQL>create table hr.mydep1 as select * from hr.department; SQL>delete from hr.mydep1 where department_id=10; SQL>flashback table hr.mydep1 to timestamp 2 to timestamp(to_tate(‘2009-05-29 10:00:00’, ’yyyy-mm-dd hh24:mi:ss’)); 【例2】 SQL>create table student (name Varchar2(10), score Number); SQL>insert into student values(‘zs’, 68); SQL>update student set score=98 where name=’zs’; SQL>commit; SQL>select versions_starttime,versions_operation,name,score 2 from student versions between timestamp minvalue and maxvalue; 【例3】 SQL>CONNECT sys /zzuli AS sysdba SQL>select table_name, undo_sql from flashback_transaction_query where rownum<5;

【例1】控制文件备份为二进制文件 下面的语句可以将控制文件备份为一个二进制文件,即复制当前的控制文件: alter database backup controlfile to 'd:\backup_controlfile\control_09-05-25.bkp'; 【例2】控制文件备份为脚本文件 alter database backup controlfile to trace; 【例3】对视图V$CONTROLFlLE_RECORD_SECTION的查询。 select type,record_size,records_total,records_used from v$controlfile_record_section; 【例4】向数据库添加了一个新的重做日志组: alter database add logfile (‘e:\app\administrator\oradata\orcl\redo04.log’, ‘f:\oradata\log\redo04b.log’) Size 10m; 【例5】创建新的日志组,并将新的日志组指定为第4组: alter database add logfile group 4 (‘e:\app\administrator\oradata\orcl\redo004.log’,‘f:\oradata\log\redo004b.log') size 10m; 【例6】为第1组添加了一个新的成员日志文件: alter database add logfile member 'f:\oradata\log\redo01b.log' to group 1; 【例7】为第2组添加一个新成员: alter database add logfile member 'f:\oradata\log\redo02b.log' to

用Oracle归档日志进行恢复的方法

联机重演日志没有丢失应使用完成恢复,如联机重演日志损坏,而又没有备份,就只能进行不完全恢复。 一、完全恢复: 1〃使用命令“svrmgrl”调用行方式服务器管理; 2〃输入命令“connect i nternal”,然后输入命令“startup m ount’; 3〃输入命令“recover d atabase;” 4〃按下ENTER,接受默认值。 5〃然后输入命令“alter d atabase o pen;”完成数据库恢复。 二、不完全恢复 警告: 应用不完成恢复前,必须将数据库做一次完全冷备份,因为应用不完全恢复后,联机重演日志将重置,以前的所有日志不可用。 如果恢复不成功,数据库就不能使用了。再次强调,做完全冷备份后再应用不完全恢复。 1).基于变化的恢复(change-based r ecovery) 要执行基于变化的恢复,需要知道丢失日志之前的系统写入归档重演日志的最大的变化号(SCN),然后可以启动恢复语句恢复数据库直到改变scn_number,其中比scn_number是写到已归档重演日志文件顺序号386的SCN(即,小于丢失日志顺序号387的SCN)。可以从V$log_history视图中得到SCN信息。 select f irst_change# f rom v$log_history w here s equence#=387; 其中387为最后一个有效的日志文件号加1,该例是查找386. 知道了SCN后,使用下述步骤完成恢复 1〃使用命令“svrmgrl”调用行方式服务器管理; 2〃输入命令“connect i nternal”,然后输入命令“startup m ount’; 3〃输入命令“recover d atabase u ntil c hange 9999;” 4〃在回答Oracle第一个归档重演日志建议信息时,输入“auto”,Oracle在找到第387号重演日志之前停止恢复。 5〃用命令“alter d atabase o pen r esetlogs;”打开数据库。(应用该命令前请确认数据库已备份,如打开失败,日志将不可用) 2).基于停止??恢复(cancel-based r ecovery) 1〃使用命令“svrmgrl”调用行方式服务器管理; 2〃输入命令“connect i nternal”,然后输入命令“startup m ount’; 3〃输入命令“recove r d atabase u ntil c ancel;”,Oracle提示需要的第一个归档重演日志文件名〃按下ENTER键

Oracle数据库归档日志日常管理与建议

Oracle数据库归档日志日常管理与建议 1.简介 近日,项目组偶有发生归档日志占满归档目录空间导致数据库hang住(无响应),导致系统不能正常应用的情况。针对此类问题,笔者从Oracle数据库归档模式、归档模式的优缺点、归档日志日常管理方法等各方面浅析并整理出归档日志日常管理与建议。请各项目组依据实际情况,规范管理归档日志,排查相关隐患,以保证系统的正常高效运营。 另外,对于已开启数据库归档模式的项目组,若数据库管理权限不在我方,可将相关归档管理建议与当地运维部门充分沟通,避免归档的不当管理引起事故。 2.数据库归档模式与归档日志 2.1数据库运行模式简介 Oracle数据库包括归档模式与非归档模式两种运行模式。 一般情况下Oracle数据库的联机重做日志会记录对数据库所做的所有的修改,如创建对象;插入、删除、更新对象;删除对象等,这些操作都会记录在联机重做日志里。Oracle 数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满(假设为1)的时候,就会发生日志切换,这时联机重做日志组2(假设为2)成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,这样反复进行。 如果数据库处于非归档模式,联机日志在切换时就会被丢弃。而在归档模式下,当发生日志切换的时候,被切换的联机日志会被归档。 如当前在使用联机重做日志1,当1被写满时,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到一个指定的目录下。这个目录为归档目录,这个过程称之为归档,拷贝的文件叫归档日志。 2.2归档模式优点与归档日志作用 数据库运行在归档模式时,后台进程ARCH会将联机日志的内容拷贝到归档目录生成归档日志。 当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库。因此,开启归档模式及归档日志的益处与作用是非常明显的: 1.可以进行完全、不完全恢复。由于对数据库所做的全部改动都记录在日志文件中, 如果发生硬盘故障等导致数据文件丢失的故障,则可以利用物理备份和归档日志 完全恢复数据库,不会丢失任何数据。 2.可以进行联机热备。所谓联机热备,就是在数据库运行状态下,对数据库进行备 份,备份时用户对数据库的使用基本不受影响(不可避免的会对性能有负面影响)。 3.可以实施Data Guard。可以部署1个或多个备用数据库,从而最大限度地提供灾 难保护手段。

Oracle日志查看

Oracle日志查看 Oracle数据库的就业前景已经无须多言了,DBA毫无疑问是我们时代最幸福的岗位之一。尚观致力于Oracle技术的普及,以OCP、OCM认证帮助求职者实现就业竞争力的成倍增长。今天跟大家分享一篇由尚观整理,oracle日志查看的技术文档: 一.Oracle日志的路径: 登录:sqlplus "/as sysdba" 查看路径:SQL> select * from v$logfile; SQL> select * from v$logfile;(#日志文件路径) 二.Oracle日志文件包含哪些内容:(日志的数量可能略有不同) control01.ctl example01.dbf redo02.log sysaux01.dbf undotbs01.dbf

control02.ctl redo03.log system01.dbf users01.dbf control03.ctl redo01.log SHTTEST.dbf temp01.dbf 三.Oracle日志的查看方法: SQL>select * from v$sql (#查看最近所作的操作) SQL>select * fromv $sqlarea(#查看最近所作的操作) Oracle 数据库的所有更改都记录在日志中,从目前来看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行,因为原始的日志信息我们根本无法看懂,Oracle8i后续版本中自带了LogMiner,而LogMiner就是让我们看懂日志信息的工具,通过这个工具可以:查明数据库的逻辑更改,侦察并更正用户的误操作,执行事后审计,执行变化分析。

oracle 数据文件、表空间、日志文件、控制文件数据库管理

实验四 oracle 数据库管理 一、试验目的 掌握对数据文件、表空间、日志文件、控制文件的常用命令,作为DBA的必要准备。 二、实验内容 2.1 数据文件的管理 (1)在安装完毕之后,在INITsid.ORA参数文件有一个DB_FILES 参数,用于设置当前实例的数据外文件的个数。如: db_files = 80 如果在INITsid.ORA文件没有该参数,则可以用下面查询语句从视图中查到。如: SQL> col name for a20 SQL> col value for a50 SQL> set lin 100 SQL> select name,value from v$parameter where name = 'db_files'; NAME V ALUE -------------------- -------------------------------------------------- db_files 1024 (2)行命令建立表空间: 例1 CREATE TABLESPACE user_stu DA TAFILE 'h:/oracle/oradata/orcl/user_stu.dat' SIZE 20M DEFAULT STORAGE ( INITIAL 10K NEXT 50K MINEXTENTS 1 MAXEXTENTS 99 PCTINCREASE 10 ) ONLINE ; 例2:建立一个新的表空间,具有两个数据文件: CREATE TABLESPACE CRM_TAB DA TAFILE 'h:/oracle/oradata/orcl/crm01.dbf' size 10 MB,'h:/oracle/oradata/orcl/crm02.dbf' size 10 MB; (3)对一个已存在的表空间追加新数据文件: 例1 ALTER TABLESPACE user_stu Add datafile 'H:/oracle/oradata/orcl/user_stu01.dbf' size 30M; 例2 为表空间增加数据文件 ALTER TABLESPACE users ADD DATAFILE 'userora1.dbf ' SIZE 10M ; (4)数据文件更名 ALTER TABLESPACE users

oracle 日志模式切换

oracle 日志模式切换 在Oracle数据库中,主要有两种日志操作模式,分别为非归档模式与归档模式。默认情况下,数据库采用的是非归档模式。作为一个合格的数据库管理员,应当深入了解这两种日志操作模式的特点,并且在数据库建立时,选择合适的操作模式。我们在sqlplus 下通过以下命令查看日志模式:archive log list; (非归档模式) (归档模式) 说明一下: database log mode 指定是数据库的日志模式,可为Archive Mode(归档)和No Archive Mode(非归档) Automatic archival 指定数据是否自动归档enable(自动),disabel(手动),要注意一下如果数据库的日志模式在归档下,但归档方为手动时要注意,如果归模日志满了,但没有进行清除数据,数据库停止写数据操作。 下面介绍一些常用操作: 1.查看数据库的日志模式 a.archive log list; 这个不在详细说明,因为上边图片己经很清楚了 b.通过动态性能视图进行查看v$database

那个log_mode字段就可以说明这个数据为归档模式 2.进行日志切换操作 这里我是从非归档模式向归归档模式操作. a.关闭运行数据库实例 shutdown immediate; b.备份数据库 该备份跟以后产生的日志一起用于将来的灾难恢复(很重要,如要改为归档日志模式,没有这个数据库备份,仅有日志文件是无法从该时间点恢复的) c.启动数据库实例到mount状态,但不要打开。 startup mount; d.切换数据库日志模式。 alter database archivelog;(设置数据库为归档日志模式) alter database noarchivelog;(设置数据库为归档日志模式) d.进行自动归档的切换 alter system archive log start alter system archive log stop (在standy模式不能切换为手动归档) e.打开数据库 alter database open; 3.手动归档相关操作

oracle11g更改归档模式、目录、日志大小

oracle11g更改归档模式、目录、日志大小 一、更改Oracle为归档模式 1.关闭oracle SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. 2.启动为mount状态 SQL> startup mount ORACLE instance started. Total System Global Area 2572144640 bytes Fixed Size 2283984 bytes Variable Size 738199088 bytes Database Buffers 1828716544 bytes Redo Buffers 2945024 bytes Database mounted. 3.更改为归档模式 SQL> alter database archivelog Database altered. 备注:‘archivelog’为归档模式;‘noarchivelog’为非归档模式。 4.更改数据库为‘打开’状态 SQL> alter database open 5.查看归档模式信息 SQL> archvie log list 它会提示归档的模式、是否启用、参数 Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 88 Next log sequence to archive 90 Current log sequence 90 二、更改归档目录 1.查看参数db_recovery_file_dest (1)“db_recovery_file_dest”是用于定义存储归档日志的目录。通过show parameter命令,显示参数的值为(默认为)fast_recovery_area。示例如下:SQL> show parameter db_recovery NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string D:\oracle\fast_recovery_area db_recovery_file_dest_size big integer 4182M (2)查看v$recovery_file_dest视图,可得知fast_recovery_area的空间限制、已使用的空间、文件数等。 SQL> select * from v$recovery_file_dest; NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES ----------- ---------- ----------------- --------------- D:\oracle\fast_recovery_area 4385144832 4346230272 2741248 102 2.更改归档日志目录 语法:alter system set 参数=值scope=spfile; 示例:SQL> alter system set db_recovery_file_dest='D:\oracle\archivelog' scope=spfile; System altered.

ORACLE清理归档日志

清理归档日志: archive log 日志已满 ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法 1. 用sys用户登录 sqlplus sys/pass@tt as sysdba 2. 看看archiv log所在位置 SQL> show parameter log_archive_dest; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest string log_archive_dest_1 string log_archive_dest_10 string 3. 一般VALUE为空时,可以用archive log list;检查一下归档目录和log sequence SQL> archive log list; Database log mode Archive Mode

Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 360 Next log sequence to archive 360 Current log sequence 362 4. 检查flash recovery area的使用情况,可以看见archivelog已经很大了,达到 SQL> select * from V$FLASH_RECOVERY_AREA_USAGE; FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES ------------ ------------------ ------------------------- --------------- CONTROLFILE .13 0 1 ONLINELOG 0 3 ARCHIVELOG 0 141 BACKUPPIECE 0 0 0 IMAGECOPY 0 0 0 FLASHBACKLOG 0 0 0 5. 计算flash recovery area已经占用的空间 SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;

Oracle 使用RMAN备份数据库文件和归档日志

Oracle 使用RMAN 备份数据库文件和归档日志 当数据库打开时,可以使用RMAN BACKUP 命令备份如下对象: ● 数据库 ● 表空间 ● 数据文件 ● 归档重做日志 ● 控制文件 ● 备份集 在使用BACKUP 命令备份数据文件时,可以为其设置参数,定义备份段的文件名,文件数和每个输入文件的通道。 1.备份数据库 如果备份操作是在数据库被安全关闭之后进行的,那么对整个数据库的备份是一致的;与之相对应,如果数据库是在打开状态下对整个数据库进行的备份,则该备份是非一致的。非一致性备份整个数据库的操作步骤如下: (1)启动RMAN 并连接到目标数据库,输入BACKUP DATABASE 命令备份数据库。在BACKUP 命令中可以指定FORMA T 参数,为RMAN 生成的每个备份片段指定一个惟一的名称,以及存储的位置。 C:\>rman target system/admin nocatalog RMAN> backup database format 'f:\oracle_backup\ora11g_%Y_%M_%D_%U.bak' maxsetsize=2G; 还可以为BACKUP 命令指定TAG 参数,为备份片段定义备份标签。例如: RMAN>backup database tag='weekly_backup'; (2)如果建立的是非一致性备份,那么必须在完成备份后对当前的联机重做日志进行归档,因为在使用备份恢复数据库需要使用当前重做日志中的重做记录。 RMAN>sql'alter system archive log current'; (3)在RMAN 中执行LIST BACKUP OF DA TABASE 命令,查看建立的备份集与备份片段的信息。 RMAN> list backup of database; 如果需要对整个数据库进行一致性备份,则首先需要关闭数据库,并启动数据库到MOUNT 状态。例如: RMAN>shutdown immediate RMAN>startup mount RMAN>backup database format='f:\oracle_backup\%d_%s.bak'; RMAN>alter database open; 如果想要对某个表空间以外的整个数据库进行备份,则可以使用用如下一组命令: //设定在备份数据库的时候排除USER01; RMAN>configure exclude for tablespace user01; 注 意 BACKUP 命令只能对数据文件、归档重做日志文件和控制文件进行备份,如果要对其他重要的数据文件进行备份,则可以在操作系统中对其进行物理备份。

oracle警告日志 (20页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == oracle警告日志 篇一:oracle 11g的警告日志和监听日志 删除oracle 11g的警告日志和监听日志 oracle 11g的监听日志和警告日志都是在 /u01/oracle/diag/tnsls/oracle/listener目录和 /u01/oracle/diag/rdbms/db1/db1目录下都有以下分别简称listener目录和db1目录。这两目录下都有如下目录: alert cdump hm incident incpkg ir lck metadata stage sweep trace 其中警告日志在alert目录下,监听日志在trace目录下。listener目录下产生的日志文件比较大,是主要清理的对象,而db1目录下产生的文件比较小,基本不需要清除。在listener目录下监听日志是一个名为listener.log的文件,而警告日志log.xml,这个日志每到11M左右就会分割成一个 log_XXXX.xml的日志,逐渐累加。而在db1目录下两个日志的方式刚好相反,监听日志分割成很多个以.trc .trm的文件,而警告日志只有一个log.xml的文件。不知道oracle在搞什么鬼,也不知道原理是什么。希望有了解的朋友给予指点。 删除监听日志的方法如下: 切换到oracle用户 su oracle $lsctl set log_status off $mv listener.log /backup/ $lsctl set log_status on 监听日志启动后就会自动创建一个全新的listener.log文件,备份好的文件可以删除。如果不执行上述的命令直接删除listener.log,系统是不

Oracle日志(redo)机制探讨

Oracle日志(redo)机制探讨 【摘要】oracle数据库的redo机制是保障数据安全和故障恢复的至关重要的手段,也是对数据库性能影响非常巨大的关键因素。通过对oracle日志机制的探讨可以帮助数据库管理员更好的理解、维护oracle数据库。 【关键词】redo checkpoint 事务恢复 一、redo原理 计算机系统中最容易出现瓶颈的就是磁盘的I/O操作。Oracle通过批量方式将buffer cache(数据缓冲区)中发生变更的“脏”数据块写入数据文件。这样减少了低效率的离散写磁盘操作,大大减轻了磁盘I/O的压力。 通过将buffer cache中的变更后的数据延迟写入数据文件,提升了数据库的性能,但也带来了数据丢失的风险。为了保证buffer cache中的“脏”数据块在系统发生故障时不丢失,oracle要将这些数据块的变更记录下来,并及时写入日志。即使系统发生故障,oracle通过日志中记录的redo信息可以将数据块发生的变化过程重演,这样就可以将数据库恢复到故障前的最后时刻。 二、日志文件 为了保证redo信息及时写入日志文件,oracle的lgwr(写

日志进程)非常活跃。为了避免磁盘缓冲带来的滞后风险Lgwr采用了直接写磁盘(direct IO)的方式将redo信息直接写入文件。触发lgwr的条件很多:每3秒钟;事务提交(commit);redo log buffer(日志缓存区)1/3满或有1MB 数据;dbwr(写数据文件进程)启动时发现“脏”数据库对应的redo信息未写入日志。 Oracle的日志文件是循环使用的,所以至少要两个日志组。为保障日志文件安全,每组日志可以有多个镜像(多镜像会增加lgwr的负担)。当一个日志文件写满后,会切换到另一个日志文件(log switch)。切换日志会触发检查点(checkpoint)事件,通知dbwr进程将写满的日志文件中保护的数据块写入数据文件。在checkpoint完成之前,该日志文件是不能被覆盖重用的。因此,日志文件通常会有current (当前)、active(checkpoint未完成)、inactive(checkpoint 已完成)三种状态。如果是新添加的日志文件或者数据库resetlogs(重置),日志文件的状态为unused(未使用)。 当日志文件切换频繁时,就会发生因日志文件处于active状态而无法切换的问题,此时数据库处于“挂起”状态,等待checkpoint完成,Alert文件中会记录:checkpoint not complete。发生这种问题对系统性能影响非常大,严重的甚至会导致业务中断。通常数据库管理员会采取增加日志文件大小、增加日志组数这两种方法来应对。

oracle 归档日志文件路径设置

oracle 归档日志文件路径设置 2012-05-23 15:37:42| 分类:oracle | 标签:oracle log_archive_dest |举报|字号订阅 1:首先查看是否是归档模式运行archive log list 命令(必须以sys身份运行) 运行结果如下; 2:通过上面的信息可以看出已经是归档模式了(如果是非归档模式参考博主的 另一篇文章有关“归档日志与非归档日志切换”), 查看归档日志文件 存放在哪个位置运行show parameter log_archive_dest 命令运行结果如下; 3: 在上面的信息中可以看到,log_archive_dest 的路径为空,我们可以设置这个路径来存放归档日志文件,运行alter system set log_archive_dest='d:/xxx/xxx' scope=spfile;(xxx代表存放路径,最好指定scope=spfile 否则的话重启db,则配置不会生效); 运行结果会出现在如下错误: 第1 行出现错误: ORA-02097: 无法修改参数, 因为指定的值无效 ORA-16018: 无法将LOG_ARCHIVE_DEST 与LOG_ARCHIVE_DEST_n 或DB_RECOVERY_FILE_DEST 一起使用 出现错误的原因是db_recovery_file_dest的参数已经被设置了,去查询一下看看,果真如此。 4: 查看db_recovery_file_dest 参数设置,运行show parameter db_recovery_file_dest 命令运行结果如下; 可以看到已经默认设置了归档的路径。 5:db_recovery_file_dest是缺省的归档位置,下面把它设置为"空",然后设置log_archive_dest参数,指定另外一个非缺省的参数 重启db 如下图 运行shutdown immediate;

ORACLE数据库归档日志满后造成系统宕机的处理方法

第一次宕机时,初始以为是系统内存溢出,于是重启应用服务器,发现应用服务器在启动时报错,错误为无法连接到数据库。于是连接数据库服务器,打开EM后发现系统报错如图: 提示归档日志写入失败,检查服务器发现磁盘空间满了,于是清理磁盘空间后,重启数据库问题解决。随后把服务器磁盘空间扩容,直接给了oracle数据所在盘1TB的磁盘空间。第二次又出现此问题,经过仔细检查,并与同事确认后,发现是由于ORACLE数据库的归档日志被启用了,而我们系统默认是没有启用ORACLE数据库归档日志这个功能的。 使用sql命令查看: Sql>sqlplus / as nolog;---------------------启动sql*Plus Sql> connect sys/password@orcl as sysdba; Sql> archive log list; 数据库日志模式存档模式 自动存档启用 存档终点USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列4888 下一个存档日志序列4890 当前日志序列4890 Sql> show parameter db_recovery_file_dest; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string D:\oracle\product\10.2.0/flash_recovery_area db_recovery_file_dest_size big integer 20G 发现默认的归档路径为D:\oracle\product\10.2.0/flash_recovery_area。而且限制使用空间为20G。由于每天产生的oracle归档日志差不多就占用2个G的磁盘空间,而且oracle自身并不会自动清理也没有相关设置自动清理归档日志的功能,一段时间不进行清理,20G空间很快就满了。 与客户商议,准备关闭归档日志功能,客户了解情况后,觉得归档日志功能还是需要开启,(归档日志是oracle灾难恢复的必要数据),于是准备把归档日志使用空间扩大,设成200g。 处理方法: 一、首先要处理日志空间满的情况: 1、删除归档日志物理文件,归档日志一般都是位于D:\oracle\product\10.2.0\flash_recovery_area\ORCL\ARCHIVELOG目录下,以日期文件夹存放,删除时至少保留最近几天的日志用于数据库恢复。 2、归档日志的物理文件删除后,ORACLE可以正常登录了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM 管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,利用RMAN进行删除操作; 进入cmd, 1.指定数据库实例 C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl 2.连接数据库

Oracle 改变重做日志位置或名称

Oracle 改变重做日志位置或名称 在所有后台进程中,LGWR进程活动最为频繁,它需要不断地将事务变化由重做日志缓冲区写入重做日志中。在数据库文件、控制文件和重做日志这3种文件中,重做日志的I/O操作最频繁。为了提高I/O性能,应将重做日志分布到I/O操作相对较少、速度最快的磁盘设备上。规划重做日志时,应将同一个日志组的不同日志成员尽可能地分布到不同磁盘上,以防止磁盘损坏而导致所有日志成员丢失。例如,假设在初始阶段,日志组二中的日志成员被放在同一块磁盘上,但是后来出于完全和性能方法的考虑,DBA为服务器新增加了一块磁盘,并且将日志组二中的一个日志成员移动到新磁盘上,此时就需要改变该日志成员的存放位置。 下面修改重做日志文件的名称和位置的具体操作步骤如下: (1)关闭数据库。 SQL> connect /as sysdba SQL> shutdown (2)复制或移动日志成员到目标位置。当闭数据库后,DBA就可以使用操作系统命令复制或移动日志成员到新位置。例如,修改原日志文件的名称。 (3)重新启动数据库实例,加载数据库,但是不打开数据库。 SQL> startup mount; (4)使用带RENAME FILE子句的ALTER DATABASE语句重新设置重做日志文件的路径和名称。 SQL> alter database rename file 2 'd:\app\Administrator\oradata\orcl\redo03.log', 3 'd:\app\Administrator\oradata\orcl\redo02.log', 4 'd:\app\Administrator\oradata\orcl\redo01.log' 5 to 6 'd:\app\Administrator\oradata\orcl\redo03a.log', 7 'd:\app\Administrator\oradata\orcl\redo02a.log', 8 'd:\app\Administrator\oradata\orcl\redo01a.log'; 数据库已更改。 (5)打开数据库 SQL> alter database open; (6)备份控制文件 重新启动数据库后,对联机重做日志文件的修改将生效。通过查询数据字典V$LOGFILE 可以获知数据库现在所使用的重做日志文件。

Oracle Archive log

Oracle归档日志(Archive Log 一) 归档日志即重做日志的备份,使用归档日志的目的是为了实现介质恢复。 一.日志操作模式 1.Noarchivelog(非归档模式) 不保存重做日志。 不能在open状态下进行物理备份;要定期执行完全数据库备份;只能将数据库恢复到上次的完全备份点。 2.Archivelog 当进行日志切换时,ARCH进程会将重做日志的内容复制到归档日志中。 在归档重做日志前,新事务变化不能覆盖旧事务变化。 可以在open 状态下进行物理备份。 可以将数据库恢复到失败前的状态。 可以是用备份数据库与主数据库保持同步。 二.开启归档 1.改变日志操作模式 shutdown immediate; startup mount; alter database archivelog; alter database open; 修改日志操作模式后,必须重新备份数据库 2.归档重做日志

1).手工归档 alter system archive log all; 2).自动归档 设置初始化参数:log_archive_start=true shutdown immediate; startup pfile=. 3).检查日志操作模式 archive log list; 三.指定归档位置 1.使用log_archive_dest 1).设置归档目录 log_archive_dest log_archive_duplex_dest 2).设置归档日志格式 2.使用log_archive_dest_n 1).指定归档位置 log_archive_dest_1=’location=f:\arc1’log_archive_dest_3=’service=standby’2).设置其他初始化参数 log_archive_dest_state_1=enable log_archive_dest_state_3=defer

使用Oracle的外部表查询警告日志文件

使用Oracle的外部表查询警告日志文件 从Oracle9i开始,Oracle的外部表技术(Oracle External Tables)被极大的增强,通过外部表访问外部数据增强了Oracle数据库和外部数据源进行数据交互的能力,对于数据仓库和ETL来说,这些增强极大的方便了数据访问。 对于DBA来说,最常见一个例子是可以使用外部表来访问警告日志文件或其他跟踪文件. 以下一个例子用来说明外部表的用途。 首先需要创建一个Directory: [oracle@jumper oracle]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Sun Oct 15 21:42:28 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning option JServer Release 9.2.0.4.0 - Production SQL> create or replace directory bdump 2 as '/opt/oracle/admin/eygle/bdump'; Directory created. SQL> col DIRECTORY_PATH for a30 SQL> col owner for a10 SQL> select * from dba_directories;

Oracle 删除重做日志

Oracle 删除重做日志 当日志成员出现损坏或丢失时,后台进程LGWR不能将事务变化写入到该日志成员中,在这种情况下应该删除该日志成员;当日志组尺寸不合适时,需要重新建立新日志组,并删除原有的日志组。删除重做日志是使用ALTER DATABASE语句来完成的,执行该语句要求数据库用户必须具有ALTER DATABASE系统权限。 1.删除日志成员 要删除一个成员日志文件,只需要使用带DROP LOGFILE MEMBER子句的ALTER DA TABASE语句。例如,下面的语句将删除4号日志组的第2个成员: SQL> alter database drop logfile member 2 'e:\oradata\orcl\redo04b.log'; 数据库已更改。 上面语句只是在数据字典和控制文件中将重做日志成员的信息删除,并不会在操作系统中物理地删除相应的文件,这需要确认删除成功后手工在操作系统中删除文件。 2.删除日志组 由于已经存在日志组的尺寸不能改变,所以当日志组尺寸不合适时,就需要重新建立日志组并指定合适尺寸,然后删除不符合尺寸要求的日志组。在删除一个日志组时,其中的成员文件也将全部被删除。在删除日志组时,首先需要考虑如下几点: ●无论日志组中有多少个成员,一个数据库至少需要两个日志组。 ●只能删除处于INACTIVE状态的日志组。如果要删除CURRENT状态的重做日志 组,则必须执行一个手工切换日志,将它切换到INACTIVE状态。 ●如果数据库处于归档模式下,在删除重做日志组之前必须确定它已经被归档。 因此,在删除重做日志组之前,可以查询V$LOG动态性能视图来获知各个重做日志组的状态以及它是否已经归档。例如: SQL> select group#,archived,status from v$log; GROUP# ARC STATUS ---------- --- ---------------- 1 NO CURRENT 2 NO INACTIVE 3 NO INACTIVE 4 YES UNUSED 要删除一个重做日志组,需要使用带有DROP LOGFILE子句的ALTER DATABASE语句。例如,下面的语句可以删除4号重做日志组: SQL> alter database drop logfile group 4; 同样,该语句只是在数据字典和控制文件中将重做日志组的记录信息删除,并不会物理地删除操作系统中相应的文件,这需要手工在操作系统中将相应的文件删除。 3.清空重做日志组 清空重做日志文件就是将重做日志文件中的内空全部初始化,这相当于删除该重做日志文件,然后再重新建立它。即使数据库只拥有两个重做日志组,或者要清空的重做日志组正处理CURRENT状态,在这些状态下都可以成功执行清空操作。

相关主题
文本预览
相关文档 最新文档