控制文件和日志文件课件_第1页
控制文件和日志文件课件_第2页
控制文件和日志文件课件_第3页
控制文件和日志文件课件_第4页
控制文件和日志文件课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle11g数据库应用教程

1Oracle11g数据库应用教程

1第6章控制文件和日志文件的管理本章概述本章的学习目标主要内容2第6章控制文件和日志文件的管理本章概述2本章概述

Oracle数据库包含的文件类型有三种——数据文件、控制文件和重做日志文件。数据文件主要存储数据库中的数据,包括各种数据库对象和数据。控制文件存放数据库的结构信息。重做日志文件存放用户执行数据库定义和数据库操纵语言命令的记录。保证控制文件和重做日志文件的可用性和可靠性是确保Oracle数据库正常可靠运行的前提。

在第5章主要介绍了数据文件的相关知识点,本章重点介绍控制文件和日志文件的管理和维护。3本章概述Oracle数据库包含的文件类型有三种—本章的学习目标:了解控制文件的作用理解控制文件的内容掌握如何控制文件,包括创建、删除和查看等操作了解日志文件的作用掌握如何对日志文件进行管理,包括创建、查看、切换、删除等操作理解归档的概念切换数据库到归档模式设置归档参数4本章的学习目标:4主要内容6.1控制文件管理6.2重做日志管理6.3归档日志管理6.4小结6.5习题5主要内容6.1控制文件管理56.1控制文件管理

控制文件是Oracle数据库中最重要的物理文件,每个Oracles数据库都必须有一个控制文件,一个控制文件只属于一个数据库。在启动数据库实例时,Oracle会根据初始化参数定位控制文件;然后Oracle会根据控制文件在实例和数据库直接建立关联。如果控制文件被损坏,则会造成整个Oracle数据库无法启动。本节重点介绍控制文件的管理。66.1控制文件管理控制文件是Oracle数据库中最6.1.1控制文件概述

控制文件是一个很小的二进制文件,它包含了数据库的结构信息(即构成数据库的数据文件和日志文件)。在创建数据库时会创建控制文件,在数据库发生改变时会自动修改控制文件,以记录当前数据库的状态。控制文件主要包含以下信息:●数据库名称。●

数据文件和重做日志文件的位置和名称。●

数据库创建的时间戳。●

当前日志序列号。●

检查点信息。●

表空间名称。●

备份和恢复信息。76.1.1控制文件概述控制文件是一个很小的二进制

Oracle数据库的控制文件是在数据库创建的同时创建的。默认情况下,在数据库创建期间至少有一个控制文件副本。

总之,控制文件用来描述Oracle实体结构,在启动Oracle数据库时读取控制文件才能取得所有数据库文件的相关信息。一旦控制文件被损坏,数据库就无法顺利启动。可见,控制文件的管理与维护工作非常重要且必不可少。6.1.2创建控制文件

控制文件是在创建数据库时自动创建的,在数据库服务器运行的过程中,重新创建控制文件的机会一般不是很多。需要重新创建控制文件的时机有以下几种情况:8Oracle数据库的控制文件是在数据库创建的同时创建

●控制文件全部损坏,而且没有可用的备份。●修改某些永久性参数,如:MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES等。●修改数据库名称。创建控制文件的命令是CREATECONTROLFILE。一般创建控制文件的任务由SYS用户完成,如果以普通用户的身份创建控制文件,则需要有SYSDBA权限。创建控制文件的语法格式及部分语法说明注释如下:9●控制文件全部损坏,而且没有可用的备份。9

CREATECONTROLFILE

REUSEDATABASEdatabase_name[NORESETLOGS|RESETLOGS][NOARCHIVELOG|ARCHIVELOG] MAXLOGFILES//最大日志文件大小MAXLOGMENBERS//日志文件组的成员数MAXINSTANCES//最大实例个数MAXLOGHISTORY//最大历史日志文件个数LOGFILEGROUP1‘logfile_name1’SIZEsize,

…GROUPn‘logfile_namen1’SIZEsizeDATAFILE

‘datafile_name1’,

‘datafile_namen’CHARACTERSETWE8DEC//指定字符集10CREATECONTROLFILE10

其中,NORESETLOGS|RESETLOGS代表是否重做日志或重命名数据库,NOARCHIVELOG|ARCHIVELOG代表归档状态。LOGFILE子句制定了日志文件名称和位置,DATAFILE指定了数据文件的名称和位置大小。

创建控制文件必须严格遵照创建的步骤,下面以示例说明。11其中,NORESETLOGS|RESETLOGS【例6-1】创建一控制文件。

(1)获取数据库的数据文件和重做日志文件列表。

当控制文件没有损坏,则可以从控制文件中直接获取。如果控制文件损坏了,可以从系统视图V$DATAFILE和V$LOGFILE中获取数据文件和重做日志文件的信息。前面的途径要求数据库能够正常启动,如果数据库不能正常启动,那么此时可以根据查看警告文件中的内容来找原因。如果数据库可以启动,可以通过执行下面的查询来生成文件列表。

从视图V$DATAFILE中获取数据文件的信息,代码如下:SQL>SELECTNAMEFROMV$DATAFILE;

从视图V$LOGFILE中获取日志文件的信息,代码如下:SQL>SELECTMEMBERFROMV$LOGFILE;12【例6-1】创建一控制文件。12执行结果如图6-1。图6-1查询datafile和logfile13执行结果如图6-1。13(2)关闭数据库。在创建控制文件之前要关闭数据库,一般采用正常模式关闭(SHUTDOWNIMMEDIAE),可以减少数据库重新启动过程中可能出现的问题。为保证数据库的安全,在关闭数据库后,应该把数据库的日志文件、数据文件、参数文件的等备份到其他磁盘上。(3)备份所有的数据文件和重做日志文件。(4)使用STARTUPNOMOUNT启动数据库实例。执行结果如图6-2。图6-2启动NOMOUNT实例14(2)关闭数据库。14

(5)使用CREATECONTROLFILE语句创建控制文件。如果需要重命名数据库,则使用RESETLOGS子句,否则使用NORESETLOGS子句。执行结果如图6-3。图6-3创建控制文件15(5)使用CREATECONTROLFILE语句创(6)将新的控制文件备份到其他不在线的存储介质中,如U盘、移动硬盘或磁带等。

(7)修改CONTROL_FILE参数,使其指向新建的控制文件;如果修改了数据库名称,则还需要修改DB_NAME参数。SQL>ALTERSYSTEMSETCONTROL_FILES=2‘G:\app\Administrtor\oradata\orcl\CONTROL01.CTL’,3‘G:\app\Administrtor\oradata\orcl\CONTROL02.CTL’,4‘G:\app\Administrtor\oradata\orcl\CONTROL03.CTL’5SCOPE=SPFILE;系统已更改。

(8)如果需要的话,则恢复数据库。

(9)如果在第8步中进行了恢复数据库的操作,则需要执行ALTERDATABASEOPEN语句打开数据库。SQL>ALTERDATABASEOPEN;16(6)将新的控制文件备份到其他不在线的存储介质中,如U盘、移

如果在创建控制文件时使用了RESETLOGS子句,则需要使用ALTERDATABASEOPENRESETLOGS语句。SQL>ALTERDATABASEOPENRESETLOGS;

新的控制文件已经创建成功,并且数据库已经被新创建的控制文件打开。6.1.3控制文件备份和恢复

由于控制文件本身具有特殊的重要性,为了提高数据库的可靠性,DBA要经常对控制文件进行备份,尤其是修改了数据库结构之后,需要立刻对控制文件进行备份。

17如果在创建控制文件时使用了RESETLOGS子句,

备份控制文件的方法有两种:在操作系统下进行和在数据库中进行。如果是在操作系统下备份,需要先停止数据库服务器的运行,然后将控制文件复制到备份设备上,最后重新启动数据库服务器。用该方法备份时,数据库服务器暂时停止的这段时间内用户无法访问数据库。如果使用数据库备份控制文件,则不需要关闭数据库服务器。可以将控制文件备份为一个二进制文件,也可以在跟踪文件中生成一条SQL语句。【例6-2】备份控制文件,使用如下语句可以把控制文件备份为一个二进制文件,即复制当前的控制文件:SQL>ALTERDATABASEBACKUPCONTROLFILETO2‘G:\ORACLE_BACKUP\BACKUP_CONTROLFILE\CONTROL_12-2-5’;数据库已更改。18备份控制文件的方法有两种:在操作系统下进行和在数据库使用下面语句可以讲控制文件备份为可读的文本文件:SQL>ALTERDATABASEBACKUPCONTROLFILETOTRACE;数据库已更改。 需要注意的是,将控制文件以文本形式备份时,所创建的文件也为跟踪文件,该文件实际上是一个SQL脚本,可以利用它来重新创建新的控制文件。跟踪文件的存放位置由参数USER_DUMP_DEST决定。通过下面的代码可以查看,执行结果如图6-4。SQL>SHOWPARAMETERUSER_DUMP_DEST;

图6-4查看跟踪文件

备份工作完成后,即使发出了特殊情况,如控制文件损坏或丢失时,可以按照下面的方法恢复控制文件。19使用下面语句可以讲控制文件备份为可读的文本文件:图6-4查

如果控制文件被损坏,但是存储目录仍然是可访问的,并且存在控制文件副本,则可以首先关闭数据库实例,然后使用操作系统命令将控制文件副本复制到控制文件目录下,覆盖被损坏的控制文件,最后重新启动数据库。

SQL>SHUTDOWNIMMEDIATE;--使用控制文件副本覆盖当前控制文件

SQL>STARTUP;

控制文件副本的创建方法很简单,首先关闭数据库,然后将当前的控制文件复制到其他目录下,接着修改初始化参数CONTROL_FILES,增加新的控制文件或者修改原有的控制文件,最后启动数据库即可。

20如果控制文件被损坏,但是存储目录仍然是可访问的,并

如果因为永久性介质故障的原因,不能访问CONTROL_FILES参数指定的某个控制文件,并且有这个控制文件的副本。则可首先关闭数据库实例,然后使用操作系统命令把当前控制文件的副本复制到一个新的可访问位置。接着编辑初始化参数CONTROL_FILES,用新的控制文件的位置替换原来被损坏的位置。最后使用STARTUP命令重新打开数据库。6.1.4删除控制文件

如果部分控制文件损坏,或者希望减少控制文件的数目,就需要删除无用的控制文件。删除步骤如下:

(1)使用SHUTDOWN命令关闭数据库;

(2)编辑初始化参数CONTROL_FILES,使其中不再包含要删除的控制文件的名称;

(3)重新启动数据库。21如果因为永久性介质故障的原因,不能访问CONTROL_6.1.5查看控制文件信息

在创建数据库的同时控制文件自动被创建,当数据库的信息发生改变时,控制文件也随之被改变;控制文件不能手动修改,只能由Oracle数据库本身自己来修改。控制文件在数据库启动和关闭时都要使用,Oracle提供了包含控制文件信息的数据字典视图和动态性能视图。如表6-1所示。226.1.5查看控制文件信息在创建数据库的同时控制文【例6-3】查询控制文件数据字典的描述信息,代码如下,结果如图6-5。SQL>descv$controlfile图6-5数据字典v$controlfile注意:在数据字典前面加上v$符号,代表的是当前实例的动态视图。23【例6-3】查询控制文件数据字典的描述信息,代码如下,结果如【例6-4】通过查询视图V$CONTROLFILE_RECORD_SECTION获取控制文件的记录类型、记录大小、记录总数量和使用记录数量等信息,结果如下:SQL>SELECTTYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USED2FROMV$CONTROLFILE_RECORD_SECTION;图6-6数据字典v$controlfile_RECORD_SECTION24【例6-4】通过查询视图V$CONTROLFILE_RECO6.1.6使用OEM工具管理控制文件

启动OEM,单击“服务器”|“控制文件”超链接,即可显示出当前数据库中的控制文件信息,如图6-7所示。图6-7OEM显示的控制文件信息256.1.6使用OEM工具管理控制文件启动OEM,单击“

“一般信息”页面中,显示了所有的控制文件信息,包括控制文件的名称与位置。如果需要查看控制文件中记录文档段的信息,则可进入“记录文档段”页面。如果单击“备份到跟踪文件”按钮,就可以将控制文件备份到跟踪文件中。

控制文件是Oracle非常重要的文件之一,如何安全地管理这个文件对数据库的日常维护、备份和恢复都具有重要意义。26“一般信息”页面中,显示了所有的控制文件信息,包括控6.2重做日志管理

在Oracle中,事务对数据库所作的修改将以重做记录的形式保存在重做日志缓存中。当事务提交时,由LGWR进程将缓存中与该事务相关的重做记录全部写入重做日志文件,此时该事务被认为成功提交。重做日志对数据库恢复来说是至关重要的。本节将重点介绍重做日志的基本概念,以及如何管理重做日志。6.2.1重做日志概述

重做日志文件由重做记录组成,而每个重做记录由一组变化元素组成,变化元素中记录了数据库中每个单独的数据块的变化情况。276.2重做日志管理在Oracle中,事务对数据库

重做日志文件是由重做记录组成的,重做记录由一组修改向量组成。每个修改向量都记录了数据库中某个数据块所做的修改。可以使用重做记录不仅能够恢复对数据文件所做的修改操作,还能够恢复对回滚段所做的修改操作。当使用重做数据恢复数据库时,数据库将从重做记录中读取变化元素,然后将变化应用到相关的数据块中。

在Oracle中,用户对数据库所做的修改首先被保存在内存中,这样可以提高数据库的性能,因为对内存中的数据进行操作要比对磁盘进行操作快得多。Oracle每隔一段时间就会启动LGWR进程将内存中的重做记录保存到重做日志文件中。因此,即使发生故障导致数据库崩溃,Oracle也可以利用重做信息恢复丢失的数据。28重做日志文件是由重做记录组成的,重做记录由一组修改

每个Oracle数据库至少两个重做日志文件,Oracle以循环方式使用重做日志文件的。即当一个重做日志文件被写满后,后台进程LGWR开始写入下一个重做日志文件;当所有重做日志文件都写满后,LGWR进程再重新写入第一个重做日志文件中。在安装Oracle11g时,默认创建三组重做日志文件。图6-8显示了重做日志的循环写入方式。图6-8LGWR写入重做日志的过程29每个Oracle数据库至少两个重做日志文件,Ora

为了提高数据库的可靠性,Oracle提供了多路复用联机重做日志文件的功能。也就是说,系统在不同的位置上自动维护重做日志的两个或更多副本。从安全角度出发,这些副本的保存位置应该在不同的磁盘上。多路复用指通过创建重做日志组来实现,组包括一个重做日志文件和它的多元副本。每个重做日志组由数字来定义,如图6-9所示。图6-9多路复用重做日志文件30为了提高数据库的可靠性,Oracle提供了多路复用

图中,A、B、C分别属于不同的组,A_LOG1和A_LOG2都是组1的成员。每个日志文件组的成员必须同时处于激活状态,这样LGWR进程就可以同时写入这两个日志文件。LGWR不会同时写入不同组的日志文件。如果LGWR写入不同组中的一个成员文件,则数据库将此成员标记为INVALID,并在LGWR追踪文件和数据库警告日志中写入一条错误信息,记录下它的日志文件组编号和成员编号,以帮助DBA确定故障,并进一步排除故障。 在设置或更改数据库实例的重做日志文件之前,需要考虑数据库对重做日志文件的限制:31图中,A、B、C分别属于不同的组,A_L

●参数MAXLOGFILES:在创建数据库CREATEDATABASE语句中使用该参数可以为数据库指定重做日志文件的最大组数。●参数MAXLOGMEMBERS:在创建数据库CREATEDATABASE语句中使用该参数可以为每个组指定成员的最大数量。如果需要修改以上两个参数的值的唯一办法是重新创建数据库的控制文件。32●参数MAXLOGFILES:在创建数据库CREATE6.2.2创建重做日志组及成员

在创建数据库的时候,可以规划数据库的重做日志,并创建重做日志组及其成员文件。但在数据库创建后,有时也需要添加新的重做日志。要创建新的重做日志组及其成员,用户必须拥有ALTERDATABASE的系统权限。1.创建重做日志组使用ALRERDATABASE语句创建重做日志组。语法如下:ALTERDATABASE[database_name]ADDLOGFILEGROUPnfilenameSIXEsize336.2.2创建重做日志组及成员在创建数据库的时候

database_name:需要修改的数据库名,省略表示当前数据库。

n:表示创建重做日志组的组号,组号在重做日志组中是唯一的。

filename:日志文件组存储的位置。

m:日志文件组的大小,默认的大小是50MB。34 database_name:需要修改的数据库名,省略表示当【例6-5】使用ALTERDATABASE语句中的ADDLOGFILE子句创建重做日志组,代码如下,执行结果如图6-10。SQL>ALTERDATABASE2ADDLOGFILEGROUP53‘G:\app\Administrator\oradata\orcl\NEWLOG5-1.LOG’SIZE10M;图6-10创建重做日志文件组图中所示,在数据库中已经创建了新的重做日志文件组。35【例6-5】使用ALTERDATABASE语句中的ADD2.创建重做日志成员在ALRERDATABASE语句中使用ADDLOGFILEMEMBER关键字创建重做日志成员。语法如下:ALTERDATABASE[database_name]ADDLOGFILEMEMBERfilenameTOGROUPn362.创建重做日志成员36【例6-6】使用ALTERDATABASE语句中的ADDLOGFILE子句添加重做日志文件到重做日志文件组中5,代码如下,执行结果如图6-11。SQL>ALTERDATABASE2ADDLOGFILEMEMBER3‘G:\app\Administrator\oradata\orcl\NEWLOG5-2.LOG’

4TOGROUP5;图6-11创建重做日志文件成员通过查看操作系统文件夹,发现日志文件NEWLOG5-2.LOG文件已添加到指定文件夹下。37【例6-6】使用ALTERDATABASE语句中的ADD6.2.3修改重做日志文件的存储位置和名称

在数据库的运行过程中,有时可能会根据需要修改重做日志文件的存储位置或名称。重做日志文件的信息是记录在控制文件中的,修改重做日志文件的存储位置或名称实际上意味着修改控制文件中的信息。修改之前,还要保证用户拥有ALTERDATABASE系统权限、复制文件到指定位置的操作系统权限以及打开和备份数据库的权限。386.2.3修改重做日志文件的存储位置和名称在数据【例6-7】修改当前数据库的重做日志文件的存储位置和名称,具体操作步骤如下:(1)使用SHUTDOWN命令关闭数据库。SQL>SHUTDOWN;(2)在操作系统中重命名重做日志文件或将重做日志文件复制到新的位置上。(3)重启数据库实例,加载数据库但不打开数据库。SQL>STARTUPMOUNT;39【例6-7】修改当前数据库的重做日志文件的存储位置和名称,具(4)使用RENAMEFILE子句的ALTERDATABASE语句重新设置重做日志文件的名称和路径。SQL>ALTERDATABASERENAMEFILE2‘G:\app\Administrator\oradata\orcl\REDO01.LOG’,3‘G:\app\Administrator\oradata\orcl\REDO02.LOG’,4‘G:\app\Administrator\oradata\orcl\REDO03.LOG’5TO6‘G:\app\Administrator\oradata\orcl\REDONEW01.LOG’,7‘G:\app\Administrator\oradata\orcl\REDONEW02.LOG’,8‘G:\app\Administrator\oradata\orcl\REDONEW03.LOG’;数据库已更改。40(4)使用RENAMEFILE子句的ALTERDATA(5)打开数据库。SQL>ALTERDATABASEOPEN;

(6)备份控制文件。重启启动数据库,通过查询数据字典V$LOGFILE可以查看数据库现在所使用的重做日志文件。SQL>SELECTMEMBERFROMV$LOGFILE;6.2.4删除重做日志文件

在某些情况下,需要将某个重做日志组或日志成员删除。例如,由于某个日志成员损坏而导致整个重做日志组不可用,这时需要将损坏的日志成员删除。1.删除日志文件删除成员日志文件之前,需要注意以下几种情况:●删除重做日志文件是合理的,每个重做日志组中至少要包含一个可有的成员。41(5)打开数据库。6.2.4删除重做日志文件在某

●当删除日志文件属于INACTIVE日志组时,才可以删除。如果不是,可以先强制进行日志切换。●删除日志文件,如果是归档模式,则要确保已经归档,才可以删除。删除日志文件的语法如下:ALTERDATABASE[database_name]DROPLOGFILEMEMBERfilename其中,filename是指日志文件的名字,包括路径。42●当删除日志文件属于INACTIVE日志组时,才可以【例6-8】在SQL*Plus中删除名为NEWLOG5-2的日志文件,执行结果如图6-12。图6-12删除重做日志文件成员43【例6-8】在SQL*Plus中删除名为NEWLOG5-22.删除日志文件组如果某个重做日志组不再需要使用,可以将整个日志组删除。删除一个日志组时,其中的成员文件也将被一起删除。删除日志组时,也需要注意如下几点:●无论日志组中有多少个成员,一个数据库至少需要两个日志组。●只能删除处于INACTIVE状态的日志组。如果要删除CURRENT状态的重做日志组,则必须执行一个手工切换日志,使其切换到INACTIVE状态。●如果数据库处于归档模式下,在删除重做日志组之前必须确定它已经被归档。可以通过查询V$LOG数据字典视图,查看是否已经对日志组进行过归档。可以参考如下代码:SQL>SELECTGROUP#,ARCHIVED,STATUSFROMV$LOG;442.删除日志文件组44删除重做日志文件组的语法如下:ALTERDATABASE[database_name]DROPLOGFILEGROUPn【例6-9】在SQL*Plus中删除组号是5的日志文件组,执行结果如图6-12。图6-13删除重做日志文件组需要注意的是,删除重做日志文件成员和删除重做日志文件组的操作只是在数据字典和控制文件中将它们的记录信息删除,并不会物理地删除操作系统中相应的文件,这需要手工在操作系统中将相应的文件删除。45删除重做日志文件组的语法如下:456.2.5清空重做日志文件

在数据库运行过程中,如果由于重做日志文件的损坏而导致归档操作无法进行,数据库服务器的运行最终将停止。在这种情况下,可以将重做日志文件的内容全部清空。清空重做日志文件的操作可以在不关闭数据库的情况下手工清空日志文件中的内容。清空重做日志文件的语法结构如下:ALTERDATABASE[database_name]CLEARLOGFILEGROUPn466.2.5清空重做日志文件46【例6-10】在SQL*Plus中清空组号是4的日志文件组,代码如下:SQL>ALTERDATABSECLEARLOGFILEGROUP4;数据库已更改。如果重做日志没有归档,则可以在语句中添加UNARCHIVED关键字,代码如下:SQL>ALTERDATABSECLEARUNARCHIVEDLOGFILEGROUP4;数据库已更改。需要注意的是,如果被清空的重做日志组还没有归档,有可能造成数据丢失。所以,应提前创建数据库的另一个备份。47【例6-10】在SQL*Plus中清空组号是4的日志文件组6.2.6重做日志文件的切换

数据库服务器在运行过程中,LGWR后台进程将重做日志写入重做日志文件。当第一个日志组写满后,LGWR将自动切换到第二个日志组,并将重做日志写入第二个日志组。依此类推,当最后一个日志组被写满后,LGWR将自动切换到第一个日志组,这个循环的过程是自动的。在某些特殊的情况下,需要手工切换日志,即在当前重做日志组尚未写满的时候,强制LGWR进程将重做日志写入下一个日志组。

执行手工切换重做日志任务的用户需要有ALTERSYSTEM系统权限,完整的语法格式如下:ALTERSYSTEMSWITCHLOGFILE486.2.6重做日志文件的切换48

每进行一次切换,Oracle都会在数据库警告文件中对其进行记录,而且无论是自动切换还是手动切换,日志序列号都会自动加1。虽然日志组是循环使用的,但是日志序列号是无限递增的。重做日志序列号唯一标识了重做日志文件和归档日志文件。当进行数据库恢复时,就可以按照序列号递增的顺序依次查找所需的重做日志文件和归档日志文件。6.2.7查看重做日志文件

由于日志文件自身的重要性,DBA可能要经常查询日志文件。与重做日志文件相关的数据字典视图有三个,如表6-2所示。49每进行一次切换,Oracle都会在数据库警告文件中

通过查询数据字典视图V$LOG可以查看重做日志文件组的组号、序列号、大小、是否归档、状态等信息。执行效果如图6-14。其中重做日志文件的状态如表6-3所示。图6-14查看重做日志文件组50通过查询数据字典视图V$LOG可以查看重做日

通过查询数据字典视图V$LOGFILE可以获得每个重做日志组中的日志成员及其状态等信息。其中日志成员的状态如表6-4所示。51通过查询数据字典视图V$LOGFILE可以获得每个6.2.8使用OEM管理重做日志文件

使用OEM工具也可以很方便的管理重做日志文件。启动OEM,单击“服务器”|“重做日志文件组”超链接,即可显示出当前数据库中的所有重做日志组信息,如图6-15所示。图6-15OEM显示的重做日志文件组信息526.2.8使用OEM管理重做日志文件52

在显示的重做日志组信息页面如果单击“创建”按钮,可以为数据库添加一个日志文件组;如果单击“编辑”按钮,可以对当前选中的重做日志文件进行修改,包括添加/删除成员日志文件、移动或重命名成员日志文件;如果选择了“操作”列表框中的某一操作类型(如切换日志),单击“开始”按钮,将执行该操作。6.3归档日志管理

归档日志(ArchiveLog)是非活动的重做日志备份。通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中,这个过程叫做归档。当数据库出现介质故障时,使用数据文件备份、归档日志和重做日志可以完全恢复数据库。53在显示的重做日志组信息页面如果单击“创建”按钮,可以为6.3.1归档日志概述

Oracle数据库的修改内容都记录在重做日志文件中,但是由于重做日志文件是以循环方式工作的,会出现重做日志文件被新写入的重做日志文件覆盖的问题。为了完整地记录数据库的全部更新操作,Oracle提出了归档日志的概念来解决这一问题。

在重做日志文件被覆盖之前,Oracle能够将已经写满的重做日志文件通过复制保存到指定的位置,保存下来的所有重做日志文件被称为“归档重做日志”,这个过程就是“归档过程”。只有数据库处于归档模式时,才会对重做日志文件执行归档操作。归档操作可以由后台进程ARCn自动完成,也可以由DBA手工来完成。

546.3.1归档日志概述Oracle数据库的修改内

归档日志文件中包含了被覆盖的日志文件和重做日志文件的序列号。当数据库处于归档模式下,写日志进程LGWR不能够对未归档的重做日志文件组进行重用和改写操作。如果设置了自动归档模式,则后台进程ARCn将自动地执行归档操作。为了提高归档的速度,可以考虑启动多个ARCn进程加速归档的速度。

使用归档日志文件可以实现恢复数据库、更新备用数据库以及获取数据库的历史信息等目的。用户可以选择自动归档或手动归档,但自动归档模式更加方便快捷。55归档日志文件中包含了被覆盖的日志文件和重做日志文件6.3.2管理归档模式

数据库服务器有两种日志模式:归档模式和非归档模式。在非归档模式下,当一个重做日志组被写满时,LGWR进程将自动切换到下一重做日志组,这个重做日志组中以前的重做日志文件将被覆盖。而在归档模式下,每个重做日志组在被覆盖之前都做了归档操作,生成一个归档日志文件。

用户可以在创建数据库时,设置数据库的初始归档模式。在CREATEDATABASE语句中使用关键字ARCHIVELOG可以将数据库设置为归档模式,使用关键字NOARCHIVELOG可以将数据库设置为非归档模式。具体操作方法参见第4章。566.3.2管理归档模式数据库服务器有两种日志模式在默认情况下,数据库初始处于非归档模式,数据库管理员可以在两种模式下进行切换。切换前可以先执行命令ARCHIVELOGLIST查看当前数据库处于什么模式。执行结果如图6-16。图6-16查看当前数据库所处的模式用户也可通过SELECT语句查询数据库的日志模式。SQL>SELECTlog_modeFROMV$DATABASE;57在默认情况下,数据库初始处于非归档模式,数据库管理员可以在两只有SYSDBA用户才能改变数据库的归档模式。操作步骤:首先关闭数据库服务器,然后备份数据库以防止数据丢失,接着启动数据库到MOUNT状态,执行切换模式,最后重新打开数据库到OPEN状态。【例6-11】将当前数据库从非归档模式切换到归档模式,代码如下。SQL>SHUTDOWNSQL>STARTMOUNT;SQL>ALTERDATABASEARCHIVELOG;SQL>ALTERDATABASEOPEN;切换后再次查看当前数据库的模式状态,已经切换到归档模式,如图6-17所示。图6-17切换后数据库所处的模式58只有SYSDBA用户才能改变数据库的归档模式。操作步骤:首先

如果数据库处于归档模式下,利用ARCn进程进行归档是最佳选择。然而也可以采用手工归档方式,即DBA需要执行命令,对重做日志文件进行归档。当数据库处于MOUNT状态时,执行如下命令:SQL>ALTERDATABASEARCHIVELOGMANUAL;

执行此命令时,数据库必须处于已装载但未打开的状态。可以首先使用SHUTDOWNIMMEDIATE语句关闭数据库,再使用STARTUP语句装载数据库。手动归档所有日志文件的代码如下:SQL>ALTERSYSTEMARCHIVELOGALL;59如果数据库处于归档模式下,利用ARCn进程进行归档是

在归档模式下,如果启动了自动归档功能,重做日志的归档是由后台进程ARCn自动完成的。在默认情况下数据库服务器启动2个ARCn进程。当重做日志组的切换非常频繁时,可能需要多个ARCn进程同时工作。初始化参数LOG_ARCHIVE_MAX_PROCESSES可以指定启动的ARCn进程的数目。在一个数据库服务器最多可以启动30个ARCn进程。【例6-12】设置启动的ARCn进程的数目,代码如下。SQL>ALTERSYSTEMSETLOG_ARCHIVE_MAX_PROCESSES=4;系统已更改。60在归档模式下,如果启动了自动归档功能,重做日志的归6.3.3设置归档位置

归档日志文件存储在数据库服务器的某个特定位置。在Oracle中,归档日志文件的存储位置和文件名称是由初始化参数指定的。由于归档日志文件的特殊重要性,在数据库服务器中可以对每个重做日志组同时产生多个归档日志文件,这些归档日志文件的内容完全相同,为了防止磁盘损坏并且缩短归档的时间,可以把这些归档日志文件存放在不同的磁盘上。可使用初始化参数LOG_ARCHIVE_DEST_n指定多个归档位置。其中,n的取值从1到31。初始化参数LOG_ARCHIVE_DUPLEX_DEST可用于指定次归档位置。归档前首先关闭数据库。然后设置初始化参数LOG_ARCHIVE_DEST_n,本地目录的指定格式为“LOCATION=本地目录”,例如:616.3.3设置归档位置归档日志文件存储在数据库服SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_1=”LOCATION=G:\Oracle_backup\archive1”;SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_2=”LOCATION=G:\Oracle_backup\archive2”;SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_3=”LOCATION=G:\Oracle_backup\archive3”;如果设置的归档位置是网络上另一台数据库服务器,格式为“SERVICE=网络服务”,例如:SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_4=”SERVICE=DB1”;其中,DB1是远程备用数据库的服务名。62SQL>ALTERSYSTEMSETLOG_ARCH

设置归档位置后,还可以进一步设置归档日志名称。设置归档日志名称的初始化参数是LOG_ARCHIVE_FORMAT。其命名方式为:使用%S指定归档文件名称中包含日志序列号,使用%T表示归档文件名称中包含的归档线程号,使用%R表示重置日志编号。例如,下面语句指定了归档日志文件命名的方法:SQL>ALTERSYSTEMSETLOG_ARCHIVE_FORMAT=ARC%S_%R%T_.ARC’SCOPE=SPFILE;

重新启动数据后,设置L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论