当前位置:文档之家› Oracle 显示重做日志信息

Oracle 显示重做日志信息

Oracle  显示重做日志信息

Oracle 显示重做日志信息

对于DBA而言,可能经常要查询重做日志文件,以了解其使用情况。要了解Oracle数据库的日志文件信息,可以查询如表11-2所示的数据字典视图和动态性能视图。

表11-2 包含重做日志文件信息的视图

视图说明

V$LOG 包含从控制文件中获取的所有重做日志文件的基本信息

V$LOGFILE 包含各个成员日志文件的信息,例如成员的状态和所属的重做日志组V$LOG_HISTROY 包含重做日志文件的历史信息

下面列出了V$LOG的结构信息:

SQL> desc v$log

名称是否为空? 类型

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

GROUP# NUMBER

THREAD# NUMBER

SEQUENCE# NUMBER

BYTES NUMBER

MEMBERS NUMBER

ARCHIVED V ARCHAR2(3)

STATUS V ARCHAR2(16)

FIRST_CHANGE# NUMBER

FIRST_TIME DA TE

其中,GROUP#字段显示的是重做日志文件组的编号,THREAD#显示的是重做日志组所属的日志写入线程,SEQUENCE#字段显示的是重做日志组的日志序列号,BYTES字段显示重做日志组中各个成员的大小,MEMBERS字段显示的是重做日志组中的成员数,ARCHIVED字段显示的是重做日志的归档情况,STA TUS字段显示重做日志组的状态(CURRENT表示当前正在使用的,NACTIVE表示非活动组,ACTIVE表示归档未完成),FIRST_CHANGE#字段显示的是重做日志组上一次写入时的系统改变号SCN,FIRST_TIME 字段显示的是重做日志组上一次写入的时间。

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数据库归档日志日常管理与建议

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就是让我们看懂日志信息的工具,通过这个工具可以:查明数据库的逻辑更改,侦察并更正用户的误操作,执行事后审计,执行变化分析。

重做日志文件

重做日志文件(redo log file)对于Oracle数据库至关重要。它们是数据库的事务日志。通常只用于恢复,不过也可以用于以下工作: q 系统崩溃后的实例恢复 q 通过备份恢复数据文件之后恢复介质 q 备用(standby)数据库处理 q 输入到流中,这是一个重做日志挖掘过程,用于实现信息共享(这也是一种奇特的复制) 重做日志文件的主要目的是,万一实例或介质失败,重做日志文件就能派上用场,或者可以作为一种维护备用数据库(standby database)的方法来完成故障恢复。如果数据库所在主机掉电,导致实例失败,Oracle会使用在线重做日志将系统恢复到掉电前的那个时刻。如果包含数据文件的磁盘驱动器出现了永久性故障,Oracle会使用归档重做日志以及在线重做日志,将磁盘驱动器的备份恢复到适当的时间点。另外,如果你“无意地”删除了一个表,或者删掉了一些重要的信息,而且提交了操作,则可以恢复一个备份,并让Oracle使用这些在线和归档重做日志文件将其恢复到意外发生前的那个时刻。 你在Oracle中完成的每个操作几乎都会生成一定的redo信息,并写入在线重做日志文件。向表中插入一行时,插入的最终结果会写入重做日志。删除一行时,则会在重做日志中写入你删除了这一行这一事实。删除一个表时,删除的效果会写入重做日志。从表中删除的数据不会写入;不过,Oracle删除表时执行的递归SQL确实会生成redo。例如,Oracle从SYS.OBJ$表(和其他内部字典对象)中删除一行时,这就会生成redo,另外如果支持不同模式的补充日志(supplemental logging ),还会把具体的DROP TABLE语句写入重做日志流。 有些操作可能会以尽量少生成redo的模式完成。例如,可以使用NOLOGGING属性创建一个索引。这说明,最初创建索引数据的操作不会记入日志,但是Oracle完成的所有递归SQL会写入日志。例如,创建索引后,将向SYS.OBJ$表中插入一行表示索引存在,这个插入会记入日志,以后使用SQL插入、更新和删除等操作完成的修改也会记入日志。但是,最初向磁盘写索引结构的操作不会记入日志。 前面我提到了两种类型的重做日志文件:在线(online)和归档(archived)。下面几节将详细介绍这两类重做日志文件。在第9章中,我们还会结合回滚段来讨论redo,看看它们对开发人员有什么影响。现在,我们只关注这些重做日志文件是什么,它们有什么用途。 3.7.1 在线重做日志 每个Oracle数据库都至少有两个在线重做日志文件组。每个重做日志组都包含一个或多个重做日志成员(redo按成员组来管理)。这些组的单个重做日志文件成员之间实际上形成彼此真正的镜像。这些在线重做日志文件的大小是固定的,并以循环方式使用。Oracle先写日志文件组1,当到达这组文件的最后时,会切换至日志文件组2,从头到尾重写这些文件的内容。日志文件组2填满时,再切换回到日志文件组1(假设只有两个重做日志文件组;如果有3个重做日志文件组,当然会继续写第3个组)。如图3-4所示。 4 日志文件组 图3-

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归档日志进行恢复的方法

联机重演日志没有丢失应使用完成恢复,如联机重演日志损坏,而又没有备份,就只能进行不完全恢复。 一、完全恢复: 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 日志模式切换 在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.手动归档相关操作

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 使用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丢失归档日志文件的数据库恢复方法

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日志(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大型数据库 实验五 重做日志文件、表空间管理操作

集美大学计算机工程学院实验报告 课程名称:大型数据库技术班级:计算12实验成绩: 指导教师:杨艳华姓名: 实验项目名称:重做日志文件、表空间管理操作学号:20上机实践日期:2014.12实验项目编号:实验五组号:上机实践时间:2学时 一、实验目的 1、理解重做日志文件的基本概念; 2、掌握重做日志文件组及其成员的添加、移动、删除等操作; 3、掌握归档重做日志的设置; 4、理解表空间的基本概念和分类; 5、掌握永久表空间的创建和管理操作; 6、掌握还原表空间的管理。 二、实验要求 1、完成重做日志文件组及其成员文件的管理操作; 2、完成归档重做日志的设置; 3、完成永久表空间和临时表空间的管理操作; 4、完成还原表空间的管理。 三、实验内容 (1)查看数据库当前重做日志文件组及成员的设置情况,然后,为数据库添加一组重做日志,组内包含两个成员文件,分别为redo4a.log和redo4b.log,大小分别为5MB。

(2)为上面新添加的那组重做添加一个日志成员,命名为“redo4c-姓名简拼.log”,实现重做日志的多路存储。 (3)把数据库从非归档模式修改为归档模式,之后创造条件让数据库立即归档,并检查归档是否成功 (4)创建永久表空间 ?创建一个表空间名为“TB+学号后三位+姓名简拼” ?空间的大小为50M ?表空间包括两个数据文件:表空间名_01.dbf(30M)和表空间名_02.dbf(20M),大 小均不能自动扩展 ?数据文件均存放在Oracle的安装根目录下 ?区的分配方式为统一大小,192K ?段管理采用自动方式

(5)改变上述永久表空间的可用性 ?先将表空间脱机 ?再进行联机 (6)创建一个4K的非标准块表空间,命名为“tbf+学号后三位+姓名简拼”,数据文件存储在”\oradata\orcl\姓名简拼”目录下,大小为(学号后三位*2)M。 (7)创建一个临时表空间 ?名为“TTB+学号后三位+姓名简拼” ?包含一个数据文件:表空间名_01.dbf,大小为(学号后三位*2)M,存储 在”\oradata\orcl\姓名简拼”目录下,文件的大小可以自动扩 展。 ?将该临时表空间设置为数据库的默认临时表空间 ?再将该临时表空间设置为scott用户的默认临时表空间 ?查询相关的数据字典验证上面的设置。

ORACLE使用数据文件恢复数据库

ORACLE使用数据文件恢复数据库 一、问题描述 Oracle控制文件丢失,数据文件完整,导致数据库实例不能启动。在修改数据库服务器的计算机名称、IP地址后,修改listener.ora和tnsnames.ora文件中的HOST地址后不能启动数据库实例或启动后不能登录使用数据,以及未能查找并解决数据库启动失败原因时可以通过重建控制文件的方式对数据库实例进行恢复。 二、恢复方法 1、恢复前准备工作 1)备份数据文件,文件路径为%ORACLE_NOME%/oradata/xxxx(xxxx为数据库实例)。 2)备份ORACLE安装路径下的Oracle\product\10.2.0\admin\xxxx\bdump\alert_xxxx.log (xxxx为数据库实例)。 3)ORACLE安装文件 2、恢复步骤 1)安装oracle数据库,安装时不要创建数据库实例 2)创建数据库实例:安装完成后创建数据库实例,实例名与原数据库实例相同,并创建监听服务。 3)拷贝数据文件:停止oracle相关服务,拷贝备份的数据文件到新安装的oracle数据库安装位置对应路径下,删除新成的控制文件及日志文件(%ORACLE_NOME%/oradata/ 下所有文件)、完成后重启oracle相关服务。 4)准备重建控制文件脚本:打开事先备份的alert_xxxx.log文件,查找最后一个create controlfile语句并修改以下几部分。 a)若该语句中包含NORESETLOGS,则将其修改为RESETLOGS;原因是重做日志文件 已经丢失。 b)LOGFILE段是指定重做日志文件到期望的文件位置。 c)DATAFILE段是指定到数据文件的实际文件位置。不能包含临时表空间用到的文件, 否则报错(ora-01503,ora-01160,ora-01110)。 注意:create controlfile语句中如果包含NOARCHIVELOG,则为非归档模式,如为 ARCHIVELOG,则为归档模式,没有则保持没有。 5)重建控制文件 a)打开sqlplus,使用DBA(sys)用户登录到数据库 示例:打开cmd,执行sqlplus /nolog 回车 SQL>Conn sys/password as sysdba b)关闭数据库 示例:SQL>Shutdown immediate; c)启动数据库,但不挂载数据文件 SQL>Startup nomount;

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经常处于等待状态,则就需要考虑添加日志组及其成员,一个数据库最多可以拥有MAXLOGFILES个日志组。增加重做日志是使用ALTER DA TABASE语句完成的,执行该语句时要求用户必须具有ALTER DATABASE系统权限。 1.增加重做日志组 当管理重做日志时,为防止后台进程LGWR等待写入日志组,DBA必须选择合适的日志组个数。要增加重做日志组,可以使用带ADD LOGFILE子句的ALTER DATABASE语句。例如,下面的语句向数据库中添加了一个新的重做日志组: SQL> alter database add logfile 2 ('d:\app\Administrator\oradata\orcl\redo04.log', 3 'e:\oradata\orcl\redo04b.log') 4 size 10m; 数据库已更改。 新增的重做日志组具有两个成员,每个成员文件的大小均为10MB。一般情况下,日志文件的大小在10MB到50MB之间,Oracle默认的日志文件大小为50MB。 如果在ALTER DA TABASE ADD LOGFILE语句指定GROUP子句,Oracle将自动为新建的重做日志组设置编号,例如:下面的语句可以在创建日志组时指定为第4组:SQL> alter database add logfile group 4 2 ('d:\app\Administrator\oradata\orcl\redo04.log', 3 'e:\oradata\orcl\redo04b.log') 4 size 10m; 数据库已更改。 使用组号可以更加方便地管理重做日志组,但是,对日志组的编号必须为连续的,不要跳跃式地指定日志组编号。也就是说,不要将组号编为10,20,30等这样不连续的数。否将会耗费数据库控制文件中的空间。 如果要创建一个非复合的重做日志文件,则可以使用如下的语句: alter database add logfile 'd:\app\Administrator\oradata\orcl\redo01.log' reuse; 如果要创建的日志文件已经存在,则必须在ALTER DTABASE语句中使用REUSE子句,覆盖已有的操作系统文件。在使用了REUSE的情况下,不能再使SIZE子句设置重做日志文件的大小,重做日志文件的大小将由已存在日志文件的大小决定。 2.创建日志成员文件 建立日志组时,至少要为日志组指定一个日志成员。为了防止日志成员损坏而导致日志组无法使用,Oracle建议每个日志组至少包含两个或两个以上的日志成员。如果日志组只有一个日志成员,并且该日志成员出现损坏,那么当后台进程LGWR切换到该日志组时,Oracle 会停止工作,并对该数据库执行不完全恢复。 为重做日志组添加新的成员时,只需要使用带ADD LOG MEMBER子句的ALTER DA TABASE语句即可。例如,下面示例为第1组重做日志添加了一个新的成员日志文件:SQL> alter database add logfile member

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状态,在这些状态下都可以成功执行清空操作。

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