文档库 最新最全的文档下载
当前位置:文档库 › oracle 日志归档知识

oracle 日志归档知识

oracle 日志归档知识
oracle 日志归档知识

数据库rman备份恢复文档

一.Rman简介

RMAN是ORACLE提供的恢复和备份工具,是随Oracle服务器软件一同安装的工具软件,它可以用来备份和恢复数据库文件、归档日志和控制文件,用来执行完全或不完全的数据库恢复。与传统工具相比,RMAN具有独特的优势:跳过未使用的数据块。当备份一个RMAN 备份集时,RMAN不会备份从未被写入的数据块,而传统的方式无法获知那些是未被使用的数据块。RMAN 使用Oracle特有的二进制压缩模式,与传统备份的压缩方式相比,能够最大程度地压缩数据块中的一些典型数据。

二.系统规划

数据库备份文件不建议与系统盘(C盘)、oracle数据文件存放盘(D 盘)存放在一起,本文单独存放于E盘。

在进行以下操作前要根据自己的环境建立如下目录“E:\orabackup\”,“’E:\archivelog_backup”,“E:/orabackup_script/”。本文用到的命令中的标点均为英文字符下的标点。

三.设置oracle数据库为归档模式(ARCHIVELOG)

按以下步骤操作,检查oracle数据库是否为归档模式。

1.选择“开始”→“系统”→“运行”,输入cmd,按回车。

2.输入“sqlplus”,按回车。

3.输入“system / as sysdba ”,按回车。

4.输入数据库system账号的密码,按回车。

5.查看数据库归档模式,输入“archive log list;”,按回车。如下图所示。

如果“数据库日志模式”为“非存档模式”,则需按照如下步骤开启归档模式:

1.设置数据库日志归档路径。

输入“alter system set log_archive_dest=’E:\archivelog_backup’ scope=spfile; ”,按回车。

2.关闭数据库。输入“shutdown immediate;”,按回车。

3. 启动数据库到mount状态。输入“startup mount;”,按回车。

4. 更改数据库的归档模式。输入“alter database archivelog;”,按回车。

5.打开数据库。输入“alter database open;”,按回车。

6.验证数据库是否已归档。输入“alter database archivelog;”,按回车。

如上图所示,若“自动存档”为“启用”模式,则数据库已经启用自动归档模式。

四.Oracle 数据备份策略

通过OracleRMAN实现数据的增量备份,每周进行两次Level0的数据确全备份,其余时间进行Level1的增量备份,;同时每天对Oraclearchivelog进行两次备份(备份次数及备份时间点应根据实际运行情况加以调整),。这样的备份策略的目的时一旦发生故障需要进行数据库恢复时,只需要恢复一个全备份和至多两个增量备份,大大加快了数据库的备份速度。在进行数据库recover时,实际上只需要最后一天的archivelog。

LEVEL

DAY Sun Mon Tue Wed Thu Fri Stat Sun

Rman备份策略示意图

五. 备份脚本的编写

1.编写脚本前要更改rman的默认配置选项

(1)选择“开始”→“系统”→“运行”,输入cmd,按回车。

(2)输入“rman target / ”,按回车。

(3)开启控制文件自动备份。输入“configure controlfile autobackup on; ”,按

(4)更改控制文件备份路径。输入“CONFIGURE CONTROLFILE AUTOBACKUP

FORMAT FOR DEVICE TYPE DISK TO E:\orabackup\%F ;”,按回车。

(5)备份保留策略。

输入“CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;”。基于时间的备份保留策略,保留最近7天的备份文件,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。

2.按照制定的备份策略编写备份脚本(1)设置显示已知文件的扩展名

选择“开始” “设置” “控制面板” “文件夹选项”,

打开文件夹选项设置页面后,点击上方标签栏的中间,即查看标签栏。

在查看标签中,向下拖动右边进度条,找到隐藏已知文件扩展名这个选项,将前面小方框中取消选定。设置完成,点击确定退出。

(2)做一个文件后缀为.bat的0级备份批处理文件E:/orabackup_script/auto_level_0_rman.bat。内容如下:

rem runrman

rmancmdfile=level_0_rman.txtmsglog= e:/orabackup/level_0_rmanlog%date:~0,10%.log

然后新建一个“E:/orabackup_script/level_0_rman.txt”文本文内容如下:

connect target / list backup; report obsolete; delete obsolete; run {

allocate channel ch1 device type disk; allocate channel ch2 device type disk;

backupas compressed backupset incremental level 0database

format 'e:/orabackup/full_%d_%T_%s'

plusarchivelog

format 'e:/orabackup/arch_%d_%T_%s' delete all input; release channel ch1; release channel ch2; }

(2)做一个文件后缀为.bat的1级备份批处理文件E:/orabackup_script/auto_level_1_rman.bat。内容如下:

rem runrman

rman cmdfile=level_1_rman.txt msglog= e:/orabackup/level_1_rmanlog%date:~0,10%.log

然后新建一个“E:/orabackup_script/level_1_rman.txt”文本文件。内容如下:

connect target / list backup; report obsolete; delete obsolete; run {

allocate channel ch1 device type disk; allocate channel ch2 device type disk;

backup as compressed backupset incremental level 1 database format 'e:/orabackup/level_%d_%T_%s' plusarchivelog

format 'e:/orabackup/arch_%d_%T_%s' delete all input; release channel ch1; release channel ch2; }

3.归档备份脚本

(1)新建一个文件类型扩展名为.bat的批处理文件,文件名称为

“E:/orabackup_script/auto_arch_rman.bat” rem run rman

rman cmdfile=arch_rman.txt msglog=e:/orabackup/arch_rmanlog%date:~0,10%.log

windows下的oracle rman自动备份,rsync远程自动备份

(2)新建一个E:/orabackup_script/arch_rman.txt文本文件

connect target / run{

backuparchivelog all delete inputformat 'e:/orabackup/arch_%d_%T_%s'; }

※注意:备份脚本存放在E:/orabackup_script目录

六.设置windows定时任务(以windows server 2003为例)

数据库备份策略:全库每周三、日备份1次,其余时间做一级备份,归档1天1次1.设置定时任务每周做一次全库备份

(1)开始—>设置--控制面板-任务计划-添加任务计划。操作步骤如图所示:

(2)找到你所写的0级备份脚本,然后点击打开

(3)设置1级备份的定时任务,重复步骤一。然后找到1级备份任务脚本然后打开。

2.设置定时任务每天做一次联机日志归档备份

开始—>设置--控制面板-任务计划-添加任务计划。操作步骤如图所示:

六.利用rsync实现rman备份数据的异地备份

1.系统环境windows 2003

rsync服务端:172.16.1.246(远端备份机器)rsync客户端:172.16.1.151(oracle数据库安装端) 服务端:cwRsyncServer_4.1.0_Installer 客户端:cwRsync_4.1.0_Installer 2.rsync服务端安装配置

(1)双击cwRsyncServer_4.1.0_Installer.exe然后就一路下一步,安装cwRsync服务端默认有一个管理员账户SvcCWRSYNC,这里修改为administrator,密码为其对应的密码

安装完成后,在“开始” “管理工具” “服务”里面就可以看到cwRsync对应的服务了,安装完成后将手动启动改为自动启动服务。

(2)修改rsyncd.conf配置文件(一般在C:\Program Files\ICW\rsyncd.conf)

use chroot = false #不使用chroot strict modes = false #静态模式hosts allow = * #所有IP均可

log file = rsyncd.log #log文件名,可以指定路径uid = 0 #不指定uid,不加这一行将无法使用任何账户gid = 0 #不指定gid # Module definitions

# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work # [test]

path = /cygdrive/d/oracle_backup read only = false #关闭只读

transfer logging = yes #记录传输日志auth users = root #用户名

hosts allow = * #所有IP均可

secrets file = /cygdrive/c/rsyncd.secrets #密码文件位置

(3)创建密码文件C:\rsyncd.secrets内容为root:123qwe

(4)配置文件修改完成后,就手动启动RsyncServer服务,netstat -an,看873端口监听没。3.rsync客户端安装配置

(1)双击cwRsync_4.1.0_Installer.exe,然后一路下一步。(2)编写批处理文件定时同步更新

分别在编写的rman备份脚本auto_level_0_rman.bat、auto_level_1_rman.bat和

auto_arch_rman.bat后面加入

"C:\Program Files\cwRsync\bin\ rsync" -avzP–progress

/cygdrive/E/orabackup/ root@172.16.1.246::test> d:\rsync_%date:~0,10%.log

(3)创建密码文件C:\passwd.txt 内容为123qwe

(4)参数说明

-a 参数,相当于-rlptgoD, -r 是递归

-l 是链接文件,意思是拷贝链接文件; -p 表示保持文件原有权限; -t 保持文件原有时间; -g 保持文件原有用户组; -o 保持文件原有属主; -D 相当于块设备文件; -z 传输时压缩; -P 传输进度;

-v verbose,详细模式输出;

-u是只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器时钟的同步;

--progress 显示备份过程;

--delete 删除那些DST中SRC没有的文件,用作同步文件用;

七、使用rman备份文件恢复oracle数据库1.参数文件spfile损坏恢复

(1)选择“开始” “系统” “运行”,输入cmd,按回车。(2)输入“set oracle_sid=orcl”,按回车。(oracle_sid根据自己库的设置填写)

(3)输入“rman target /”,按回车

(4)输入“set dbid=1335848290”,按回车。Dbid具体值,请从rman日志文件

e:/orabackup/full_rmanl og%date:~0,10%.log中查找

(5)关闭数据库。

输入“shutdown immediate;”,按回车。(6)将数据库启动到nomount状态。输入“startup nomount;”按回车(7)恢复spfile参数文件。

输入“restore spfile to “D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA” from

“D:\ORABACKUP\C-1335848290-20140218-04”;”,按回车。

“D:\ORABACKUP\C-1335848290-20140218-04”从距离磁盘崩溃时间最近生成的备

份日志文件中获得。

(8)关闭数据库。输入“shutdown immediate;”,按回车。(9)启动数据库。输入“startup”,按回车。

2.控制文件丢失恢复数据库启动报错ORA-00205

检查oracle的报警日志包含如下报错:

说明oracle数据库控制文件有损坏,需要对其进行恢复。步骤如下所示。

(1)选择“开始” “系统” “运行”,输入cmd,按回车。(2)输入“rman target /”,按回车(3)输入“set dbid=1335848290”,按回车。

dbid具体值,请从rman日志文件e:/orabackup/full_rmanl og%date:~0,10%.log中查找

(4)关闭数据库。输入“shutdown immediate;”,按回车。

(5)将数据库启动到mount状态。输入“startup nomount;”按回车(6)恢复控制文件。输入“restore controlfile

from“D:\ORABACKUP\C-1335848290-20140218-04”;”,按回车

(8)启动数据库到mount。输入“alter database mount;”,按回车。

(9)恢复数据库。输入“recover database;”,按回车。

(10)启动数据库。输入“alter database open reset logs;”,按回车。

3.数据库指定数据文件恢复启动数据库的时候报错

或者查看oracle数据库的报警日志出现错误

如果出现以上报错说明数据库中file_id 为7的文件出现错误。需要

恢复。步骤如下所示。

(1)选择“开始” “系统” “运行”,输入cmd,按回车。(2)输入“ set oracle_sid=orcl”,按回车。(oracle_sid根据自己库的设置填写)

(3)输入“rman target /”,按回车

(4)查看数据库的启动级别。输入“select status from v$instance;”,按回车。如果返回status

对应的值为非mount和非open。

关闭数据库。输入“shutdown immediate;”,按回车。将数据库启动到mount状态。输入“startup mount;”按回车

(5)数据库启动状态为mount,按如下所示输入,输入完成后,按回车。

run{

restore datafile 7;

recover datafile 7;}

之后启动数据库,输入“alter database open;”,输入回车。

(6)如果数据库启动状态为open,按如下输入,输入完成之后,输入

回车。

run{

sql 'alter database datafile 7 offline immediate'; restore datafile 7;

recover datafile 7;

sql 'alter databaes datafile 7 online';}

4.数据文件丢失全库恢复

(1)选择“开始” “系统” “运行”,输入cmd,按回车。

(2)输入“ set oracle_sid=orcl”,按回车。(oracle_sid根据自己库的设置

填写)

(3)输入“rman target /”,按回车

(5)关闭数据库。输入“shutdown immediate;”,按回车。(6)将数据库启动到mount状态。输入“startup mount;”按回车(7)还原数据库数据文件。输入“restore database;”,按回车。

(8)恢复数据库增量备份及归档日志文件。输入“recover database;”,按回车。

(9)打开数据库。输入“alter database open resetlogs;”,按回车。

5.数据主机磁盘损坏恢复

(1)重建oracle数据库,是使数据库的目录结构与源数据库目录结构相同。

(2)将远程备份的备份文件拷贝至“E:\orabackup\”目录下。(3)选择“开始” “系统” “运行”,输入cmd,按回车。(4)输入“rman target / ”,按回车。

(5)关闭数据库。输入shutdown immediate;”,按回车。

(6)D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA(oracle 的spfile参数文件)文件删除。

(7)将D:\oracle\product\10.2.0\oradata\orcl下(oracle数据文件存储目录)除TEMP01.DBF外的文件删除

(8)将数据库启动到nomount状态。输入“startup nomount;”按回车

(9)输入“set dbid=1335848290”,按回车。

dbid具体值,请从rman日志文件e:/orabackup/full_rmanl og%date:~0,10%.log中查找

(10)恢复spfile参数文件。

输入“restore spfile to “D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA” from

“D:\ORABACKUP\C-1335848290-20140218-04”;”,按回车。

“D:\ORABACKUP\C-1335848290-20140218-04”从距离磁盘崩溃时间最近生成的备份日志文件中获得。

(11)关闭数据库。输入“shutdown immediate;”,按回车。(12)将数据库启动到mount状态。输入“startup nomount;”按回车.

(10)恢复控制文件。

输入“restore controlfilefrom “D:\ORABACKUP\C-1335848290-20140218-04”;”,按回车。(“D:\ORABACKUP\C-1335848290-20140218-04”获得方法同(10) )

(11)启动数据库到mount状态。输入“startup mount;”按回车。

(12)恢复数据文件。输入“restore database;”,按回车。

(13)恢复归档日志文件。输入“recover database;”,按回车。(14)启动数据库。输入”alter database open resetlogs;”。6.误操作恢复—误删除表或者数据

用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个或多个备用数据库,从而最大限度地提供灾 难保护手段。

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 归档日志文件路径设置

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 使用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通过归档日志还原数据

Oracle通过归档日志还原数据 我要投稿 [ Oracle 的日志模式分为 archivelog (启用归档日志) 和 noarchivelog () 两种模式。 查看数据库日志模式: select log_mode from v$database; log_mode ----------------------------------- archivelog 如何启用Oracle的归档方式: 1.参照以下内容编辑init.ora文件: log_archive_start = true log_archive_dest_1 = " LOCATION=D:\Oracle\oradata\ORCL\archive " og_archive_format = %%ORACLE_SID%%T%TS%S.ARC Oracle 归档日志还原数据(还原前请做好冷备份): sqlplus /nolog conn / as sysdba; archive log list; (查看日志文件列表,查看单个日志文件可用 strings xxx.dbf to xx.txt) recover database until time '2011-09-15:15:00:00'; (提示:使用基于时间的恢复,时间的格式是YYYY/MM/DD HH24:MI:SS,并且用单引号括起。) 基于时间的恢复(time-based recovery) 为使用基于时间的恢复,必须知道记录在V$log_history归档重演日志序号387

(丢失重演日志)的时间,通过执行查询语句“select * from v$log_history where sequence#=387;” 或者 recover database until change 9999; alter database open resetlogs; (应用该命令前请确认已数据库已备份,如打开 失败,日志将不可用) 作者“学习笔记” 如何解决ORA-01033问题 (2010-05-08 20:49:35) 转载 标签: oracle my 日志文件 数据文件 sql it Oracle错误:ORA-01033 错误编码:ORA-01033: ORACLE initialization or shutdown in progress 故障描述:因为移动了数据库文件([NAME].DMP)/日志文件等文件,导致数据库连接出现ORA-01033错误。 故障分析:网上有一种常见的说法是该类故障通常是由于移动文件而影响了数据库日志文件出现损坏而导致的无法正常进行IO操作而引起的错误。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归档日志相关设置 1、查看目录的归档情况: ARCHIVE LOG LIST 2、从非归档模式转换为归档模式的步骤 (1) 关闭数据库 shutdown nomal/immediate/transactional 不能使用abort来关闭数据库,因为需要一个干净的数据库(即数据库的控制文件和数据库文件要同步) (2) startup mount 使数据库处于mount 状态 (3) alter database archivelog 该命令是从控制文件中写一些东西,让数据库处于归档模式 (4) alter database open 使数据库处于open状态 (5) 给数据库做一次全备份这个数据库是以后数据库备份的基点。(这里的全备份其实就是把数据库关闭掉,采用系统拷贝的命令来完成) 3、自动归档模式及ARC多个子进程说明 log_archive_start 参数:自动归档模式,10g及后这个参数自动为true。 如果为 TRUE,将在例程启动时自动启动n个 ARCn 进程,其中 n是由 LOG_ARCHIVE_MAX_PROCESSES 确定的值。 如果为 FALSE,将禁止在例程启动时启动ARCn。 ALTER SYSTEM ARCHIVE LOG START --开启自动归档 ALTER SYSTEM ARCHIVE LOG STOP --关闭自动归档(这个和log_archive_start有点矛盾,可能是在log_archive_start为true时,再通过这个来进一步控制,反正这个在10g及以后就废除了的) ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3 --最多为10,在开启实例时就自动创建3个ARCn进程。 4、手动归档命令及参数选项说明 可在启用自动归档的情况下使用手动归档: ALTER SYSTEM ARCHIVE LOG CURRENT; THREAD 指定包含要归档的重做日志文件组的线程(用于OracleParallel Server)SEQUENCE 归档由日志序列号标识的联机重做日志文件组 CHANGE 基于SCN进行归档 GROUP 归档联机重做日志文件组 CURRENT 归档指定线程的当前重做日志文件组 LOGFILE 归档包含有由文件名标识的成员的重做日志文件组 NEXT 将尚未归档的最旧的联机重做日志文件组进行归档 ALL 对指定线程的已满但尚未归档的所有联机重做日志文件组进行归档 START 启用重做日志文件组的自动归档 TO 指定重做日志文件组归档的目标位置 STOP 禁用重做日志文件组的自动归档 5、LOG_ARCHIVE_FORMAT格式化参数说明 LOG_ARCHIVE_FORMAT 参数是设置归档命名规则的静态参数,设置后重启数据库才生效。

Oracle归档日志满问题处理

Oracle11g ORA-00257归档日志满问题处理 数据库报错:archive log 日志已满,数据库不能连接 ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法 $ sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on Wed Feb 24 08:11:21 2010 Copyright (c) 1982, 2009, Oracle. All rights reserved. SQL> conn /as sysdba Connected. 查看flash recovery area已经占用的空间 SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; SQL> select * from V$FLASH_RECOVERY_AREA_USAGE; FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE -------------------- ------------------ ------------------------- NUMBER_OF_FILES --------------- CONTROL FILE 0 0 REDO LOG 0 0 ARCHIVED LOG 96.15 0 50 FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE -------------------- ------------------ ------------------------- NUMBER_OF_FILES --------------- BACKUP PIECE 0 0 IMAGE COPY 0 0 FLASHBACK LOG 0 0

Oracle丢失归档日志文件的数据库恢复方法

Oracle丢失归档日志文件的数据库恢复方法 丢失归档日志文件的数据库恢复方法,从一个不能正常打开的数据库(由于一个/多个数据库文件与其他文件不一致)中提取数据。场景:一个磁盘损坏了并且丢失了一个数据库文件。从一周前的热备转储数据文件,不幸的是丢失了几个归档日志文件。但是有问题的数据文件包含了最重要的表,如何能够挽救数据呢? 每个DBA都知道这是有问题的,一定会丢失数据,因为某些事务丢失了,问题是会丢失多少数据?Oracle 使用硬线路位置并且由于存在完整性约束问题,因此不允许正常打开数据。但是如果使用非常规的方法让Oracle删除其硬线路属性,那么应该能够提取尽可能多的数据。而通常这会比损失全部数据要好很多。 详细过程通常如果仅仅丢失了堆表的索引,或者某些能够很容易重建的数据,那么最好的方法应该是删除表空间并重建这些对象然后重新输入。但是如果丢失的数据文件包含了重要数据并且很难恢复,而且只有前一次的备份却又丢失了某些归档日志,那么用户可能希望能够尽可能多的从有问题的表空间恢复数据并且删除和重建表空间。 主要的步骤如下: 1. 对当前拥有的数据进行一个冷备; 2. 转储丢失的数据库文件备份并应用可以应用的日志; 3. 设置未文档化的初始化参数,其允许你在当前状态打开数据库; 4. 执行exp并提取全部可以从有问题的表空间提取的数据; 5. 从先前的冷备转储数据库; 6. 使毁坏的数据文件offline; 7. 执行exp并提取第4步没有提取的额外数据; 8. 在一次从冷备转储; 9. 删除有问题的表空间; 10. 重建有问题的表空间; 11. 使用第四步和第七步提取的数据重建数据; 使用案例描述:ORDTAB表空间的一个数据文件ordtab03.dbf毁坏,其包含很多ORDERS表的分区,数据文件热备于July 4,2004,July 4—至今的某些归档日志丢失。 第一步:备份数据库第一步的任务是冷备当前拥有的任何数据文件,在线重做日志,和控制文件。如果丢失了一个/多个数据文件但是数据库仍然是open的,那么对每个剩余的数据文件进行热备并确保备份期间/之后的归档被安全保存。

ORACLE归档日志异常增长处理方法

案例描述:客户反应数据库归档日志生成过快,导致磁盘空间占满,引起数据库宕机。问题看起来很简单,只要清理下归档日志然后重启就能解决,但这只是治标不治本的方法,显然是要找到归档日志增长异常频繁的原因。最后通过LogMiner分析归档日志发现是运维部署了频繁update的语句,停了后归档日志变为正常。下面是详细步骤 1.通过v$archived_log视图查看最近归档日志状态 select to_char(COMPLETION_TIME, 'yyyymmdd'), count(*) from v$archived_log t where https://www.wendangku.net/doc/5416685094.html,PLETION_TIME > sysdate - 20 group by to_char(COMPLETION_TIME, 'yyyymmdd') order by to_char(COMPLETION_TIME, 'yyyymmdd'); 2.查看今天的归档日志情况,看到8点左右归档日志增长最大 select to_char(FIRST_TIME, 'yyyymmddhh24'), count(*) fromsys.v_$archived_log t where t.FIRST_TIME > trunc(sysdate) groupby to_char(FIRST_TIME, 'yyyymmddhh24')

orderby to_char(FIRST_TIME, 'yyyymmddhh24') 3.查看今天八点的归档日志的路径 selectname, COMPLETION_TIME, t.FIRST_TIME, t.RESETLOGS_TIME fromsys.v_$archived_log t where to_char(FIRST_TIME, 'yyyymmddhh24') = 2015081108 orderby t.FIRST_TIME desc;

归档日志增长过快处理解决

处理归档日志增加过快一例 (2010-08-25 20:03:47) 转载▼ 标签: 分类:原创文章 oracle 归档日志 增加过快 处理归档日志增加过快一例 摘要 本文介绍了不久前作者是如何彻底解决一家医院数据库由于归档日志增长过快,导致磁盘剩余空间占满,引起宕机全过程。通过本案例的描述,我们可以了解到当遇到数据库宕机问题时,应该如何分析现象、找到问题关键、最终彻底解决该问题的一个总体思路,最后还应该深入思考该问题产生的原因,总结出避免以后再出现该问题的建议。 关键字: ORACLE、归档日志、宕机、DML语句 初步了解 早上一来到公司,XZH就告诉我接到CQ公司的有一个技术申请,大致情况为一家三甲医院,采用Rac+Linux环境,启用了归档模式,但是由于日志增长过快,我们的技术人员设虽然置自动删除归档的任务,但是还是没有避免磁盘空间被占满,已经引起医院2次全院无法使用,虽然CQ公司也安排多名技术人员去现场处理,但是医院认为一直没有解决彻底,因此信息主管对此意见较大,希望公司安排技术支持部现场彻底解决该问题。 通过申请描述,我大致了解到以下几个关键点: 1.医院启用了归档,也做了定期自动删除归档日志的任务。

2.由于归档日志增加过快,已经导致医院2号节点宕机。 3.我们的技术人员去了几次,都未彻底解决,用户已经意见很大了。 这只是个初步情况,往往只能了解问题的大概,具体的问题产生的原因还是得到用户那里去才能真正了解,于是立即出发,前往用户处处理问题。 现场分析问题 到达医院,同系统管理员互相寒暄了几句,了解大体情况是医院昨天凌晨部分科室反映不能登录导航台,于是系统管理员深夜被叫到医院,查看服务器发现数据库已经宕机,检查磁盘空间,发现其中一个节点的剩余空间为0,于是立即删除部分过去的归档日志,重新启动服务器,下面科室才能够正常登录,谈话间不断听见系统管理员抱怨深夜到医院是如何如何不情愿,看来意见是比较大。而且同样的问题不久前才出现过一次,当时是中午,询问同去的同事,了解到确实不久前也出现过一次同样的情况,当时认为是归档日志的定期删除保留的日志时间太长,当时保留的是30天的日志,后来改为保留5天的日志,心想不会再出现该问题,没想到还是无法避免。 接下来,该我们自己着手分析问题了,因为毕竟用户描述的只是他的主观判断,而且真正要想了解到时发生的真实情况,看是应该看下Oracle的日志才能确认,这也是我们处理问题必须遵守的原则,首先看下该节点的alter.ora在出现问题时的错误记录,部分记录情况如下: Fri Jul 18 22:10:18 2010 Errors in file /u01/app/oracle/admin/orcl/bdump/orcl2_arc1_13762.trc: ORA-19502: Message 19502 not found; No message file for product=RDBMS, facility=ORA; arguments: [/u01/app/oracle/archive/2_24046_698868487.dbf] [22529] [512] ORA-27072: Message 27072 not found; No message file for product=RDBMS, facility=ORA Linux-x86_64 Error: 9: Bad file descriptor

Oracle归档日志已满

archive log归档日志文件已满情况的处理 ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法 1.用sys用户登录 SQL> conn sys/oracle as sysdba 已连接。 2.看看archiv log所在位置 SQL> col name for a30 SQL> show parameter archive log NAME TYPE V ALUE ------------------------------------ ----------- ------------------------------ archive_lag_target integer 0 log_archive_config string log_archive_dest string log_archive_dest_1 string LOCA TION=F:\disk5\offlinelog\mandatory log_archive_dest_10 string log_archive_dest_2 string LOCATION=F:\disk7\offlinelog\ log_archive_dest_3 string LOCATION=F:\disk3\offlinelog\optional log_archive_dest_4 string log_archive_dest_5 string 3.一般V ALUE为空时,可以用archive log list;检查一下归档目录和log sequence SQL> archive log list 数据库日志模式存档模式 自动存档启用 存档终点F:\disk3\offlinelog\optional 最早的联机日志序列935

oracle归档日志的管理

oracle归档日志的管理 系统提示归档日志满,报错时,可按以下进行处理。 1. 用sys用户登录 sqlplus sys/sys@yxsg 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已经很大了,达到96.62

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE; FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABL E NUMBER_OF_FILES ------------ ------------------ ------------------------- - CONTROLFILE .13 0 1 ONLINELOG 2.93 0 3 ARCHIVELOG 96.62 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_reco very_area_usage; SUM(PERCENT_SPACE_USED)*3/100 ----------------------------------------------------------- 2.9904 6. 找到recovery目录, show parameter recover SQL> show parameter recover; NAME TYPE VALUE ------------------------------------ ----------- ----------

Centos7.6下Oracle开启归档日志

centos7 给普通用户添加sudo权限; 1、sudo的使用 首先需要管理员root赋予某个用户sudo权限 [root@centos7 ~]# vi /etc/sudoers #实际修改的是/etc/sudoers文件 由上图可知: 第一个字段代表用户名(组名), 第二个字段ALL=(ALL)中第一个ALL主要指的就是本机, 小括号中的ALL表示可以使用的身份(ALL主要表示root身份), 最后一个ALL代表授权命令为所有命令。 那么,oracle ALL=(ALL) ALL就表示给oracle用户在本主机下能使用root用户的所有命令的权限。 %wheel ALL=(ALL) ALL就表示给wheel组内所有用户在本主机下能使用root用户的所有命令的权限。 增加:Oracle ALL=(ALL)ALL Oracle ALL=/usrs/sbin/shutdown -r now

oracle开启归档模式 1、首先用sys登录数据库,查看oracle是否开启归档模式 [root@centos7 ~]# su - oracle [oracle@centos7 ~]$ sqlplus /nolog SQL> conn sys/manager as sysdba (1)输入archive log list来查看是否开启,如下说明不是归档模式 SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 40 Current log sequence42 (2)需要将数据库归档更改为enable,使用shutdown immediate来关闭数据库SQL> shutdown immediate;

相关文档
相关文档 最新文档