第06章 管理控制文件和日志文件_第1页
第06章 管理控制文件和日志文件_第2页
第06章 管理控制文件和日志文件_第3页
第06章 管理控制文件和日志文件_第4页
第06章 管理控制文件和日志文件_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、2第6章 管理控制文件和日志文件4本章要点:了解控制文件的作用。掌握创建控制文件的步骤。了解控制文件的备份与恢复。掌握如何移动与删除控制文件。了解日志文件的作用。掌握日志文件组及其成员的创建与管理。理解数据库的运行模式。了解归档模式与非归档模式的区别。掌握如何设置数据库归档模式和归档目标。36.1 管理控制文件4控制文件对于Oracle数据库系统来说相当重要,它存放有数据库中数据文件和日志文件的信息。4在创建数据库时,Oracle会自动创建控制文件。4在实际应用中,由于各种原因可能会导致控制文件受损,所以数据库管理员需要掌握如何管理控制文件,包括创建、备份、恢复、移动和删除控制文件等。46.1

2、.1 创建控制文件4 创建控制文件需要使用CREATE CONTROLFILE语句,其语法如下: CREATE CONTROLFILE REUSE DATABASE database_name RESETLOGS | NORESETLOGS ARCHIVELOG | NOARCHIVELOG MAXLOGFILES number MAXLOGMEMBERS number MAXDATAFILES number MAXINSTANCES number MAXLOGHISTORY number LOGFILEGROUP group_number logfile_name SIZE number K

3、 | M , . DATAFILEdatafile_name , . ;6.1.1 创建控制文件4 语法说明如下: database_name :数据库名。 RESETLOGS | NORESETLOGS :表示是否清空日志。 ARCHIVELOG | NOARCHIVELOG :表示日志是否归档。 MAXLOGFILES number:表示最大的日志文件个数。 MAXLOGMEMBERS number:表示日志文件组中最大的成员个数。 MAXDATAFILES number:表示最大的数据文件个数。 MAXINSTANCES number:表示最大的实例个数。 MAXLOGHISTORY n

4、umber:表示最大的历史日志文件个数。 LOGFILE :为控制文件指定日志文件组。 GROUP group_number logfile_name :表示日志文件组编号。 DATAFILE :为控制文件指定数据文件。566.1.1 创建控制文件4【例例6.1】为当前数据库orcl创建新的控制文件my_controlfile,步骤如下。(1) 查询数据字典v$logfile,了解当前数据库orcl中的日志文件信息,如下:|SQL SELECT group#, member FROM v$logfile;|其中, group#表示日志文件组编号,member表示日志文件组中的成员。6.1.1

5、创建控制文件|查询数据字典v$datafile,了解当前数据库orcl中的数据文件信息,如下:|SQL SELECT name FROM v$datafile;76.1.1 创建控制文件(2) 使用管理员身份执行SHUTDOWN IMMEDIATE命令关闭数据库(此时未提交的事务全部回退,连接中断后关闭数据库),如下:|SQL CONNECT sys/manager AS SYSDBA|已连接。|SQL SHUTDOWN IMMEDIATE|数据库已经关闭。|已经卸载数据库。|ORACLE例程已经关闭。(3) 为了确保数据库数据的安全,应该在操作系统中对数据库的日志文件与数据文件进行备份。|8

6、6.1.1 创建控制文件(4) 使用STARTUP NOMOUNT命令启动数据库,此时仅仅只是启动数据库,而不会加载数据库文件,也不会打开数据库。如下:|SQL STARTUP NOMOUNT9106.1.1 创建控制文件(5) 使用CREATE CONTROLFILE语句创建新的控制文件,在创建时需要使用LOGFILE子句指定与数据库orcl相关的日志文件,使用DATAFILE子句指定与数据库orcl相关的数据文件,如下:|SQL CREATE CONTROLFILE REUSE DATABASE orcl|NORESETLOGS |NOARCHIVELOG |MAXLOGFILES 50|

7、MAXLOGMEMBERS 3|MAXDATAFILES 50|MAXINSTANCES 5|MAXLOGHISTORY 4496.1.1 创建控制文件|LOGFILE| GROUP 1 C:appAdministratororadataorclredo01.log SIZE 50M,| GROUP 2 C:appAdministratororadataorclredo02.log SIZE 50M,| GROUP 3 C:appAdministratororadataorclredo03.log SIZE 50M|DATAFILE| C:appAdministratororadataorcl

8、system01.dbf,| C:appAdministratororadataorclsysaux01.dbf,| C:appAdministratororadataorclundotbs01.dbf,| C:appAdministratororadataorclusers01.dbf,| C:appAdministratororadataorclmyspace.dbf,| C:appAdministratororadataorclbookspace.dbf,| C:appAdministratororadataorclbookundo.dbf;|控制文件已经创建。116.1.1 创建控制文

9、件(6) 新的控制文件创建好后,还需要设置服务器参数文件SPFILE中的control_files参数的值为新建的控制文件,让新的控制文件生效。|新创建的控制文件可以通过数据字典v$constrolfile来查询,如下:|SQL SELECT name FROM v$consrolfile;126.1.1 创建控制文件|使用ALTER SYSTEM语句修改control_files参数的值,如下:|SQL ALTER SYSTEM SET control_files = | C:appAdministratororadataorclcontrol01.ctl,| C:appAdministra

10、tororadataorclcontrol02.ctl,| C:appAdministratororadataorclcontrol03.ctl|SPACE = SPFILE;|系统已更改。(7) 打开数据库,如下:|SQL ALTER DATABASE OPEN ;|数据库已更改。数据库已更改。如果在创建控制文件时使用了RESETLOGS选项,则在打开数据库时也必须使用RESETLOGS选项,语句如下:|ALTER DATABASE OPEN RESETLOGS ;136.1.2 备份控制文件4为了防止控制文件出现故障,DBA应该经常及时地备份控制文件。备份控制文件有两种方式:备份为二进制文

11、件、备份为脚本文件。14156.1.2 备份控制文件41备份为二进制文件备份为二进制文件,实际上就是复制控制文件。【例例6.2】将orcl数据库的控制文件备份为二进制文件,如下:|SQL ALTER DATABASE BACKUP CONTROLFILE TO F:oraclefileorcl_control_090925.bkp ;|数据库已更改。数据库已更改。上述示例在F:oraclefile目录下生成orcl数据库的备份文件orcl_control_090925.bkp。166.1.2 备份控制文件42备份为脚本文件备份为脚本文件,实际上也就是生成创建控制文件的SQL脚本。【例例6.3】

12、将orcl数据库的控制文件备份为脚本文件,如下:|SQL ALTER DATABASE BACKUP CONTROLFILE TO TRACE ;|数据库已更改。数据库已更改。生成的脚本文件将自动存放到系统定义的目录中,并由系统自动命名。该目录由参数user_dump_dest指定,可以使用SHOW PARAMETER命令查看该参数的值。|SQL SHOW PARAMETER user_dump_dest;176.1.3 恢复控制文件4如果控制文件受损,就可以使用控制文件的备份文件对其进行恢复。4【例例6.4】恢复数据库控制文件。步骤如下。(1) 使用SHUTDOWN IMMEDIATE命令关

13、闭数据库。|SQL CONNECT sys/manager AS SYSDBA|已连接。|SQL SHUTDOWN IMMEDIATE|数据库已经关闭。|已经卸载数据库。|ORACLE例程已经关闭。(2) 在操作系统中使用完好的控制文件副本覆盖损坏的控制文件。6.1.3 恢复控制文件(3) 使用STARTUP命令启动并打开数据库。执行STARTUP命令时,数据库以正常方式启动数据库实例,加载数据库文件,并且打开数据库。|SQL STARTUP18196.1.4 移动与删除控制文件4 特殊情况下,需要移动控制文件,例如保存控制文件的磁盘等介质受到损坏。4 【例例6.5】移动数据库控制文件。步骤如

14、下。(1) 在新的磁盘路径下存放控制文件。(2) 使用ALTER SYSTEM语句,修改服务器参数文件SPFILE中的control_files参数的值为新路径下的控制文件。(3) 使用SHUTDOWN IMMEDIATE命令关闭数据库。(4) 使用STARTUP命令启动并打开数据库。4 如果需要删除某个控制文件,也可以采用类似步骤,删除时只需要在步骤2中,修改control_files参数的值,让其值不再包含需要删除的控制文件,此时控制文件不再与数据库关联,但若要彻底删除该文件,需要在操作系统中进行删除。206.2 管理日志文件4日志文件主要记录了数据库中的修改信息,它对数据库的恢复至关重要

15、。一般情况下,Oracle数据库实例创建完后就会自动创建3组日志文件,数据库管理员可以根据需要向数据库中添加更多的日志文件组。4本节将介绍如何管理数据库中的日志文件。216.2.1 创建日志文件组及其成员41创建日志文件组创建日志文件组的语法如下:|ALTER DATABASE ADD LOGFILE GROUP group_number |( file_name , . ) SIZE number K | M REUSE ;语法说明如下。|GROUP group_number:为日志文件组指定组编号。:为日志文件组指定组编号。|file_name:为该组创建日志文件成员。:为该组创建日志文件

16、成员。|SIZE number:指定日志文件成员的大小。:指定日志文件成员的大小。|REUSE:如果创建的日志文件成员已存在,可以使用:如果创建的日志文件成员已存在,可以使用REUSE关键关键字覆盖已存在的文件。但是该文件不能已经属于其他日志文件组,字覆盖已存在的文件。但是该文件不能已经属于其他日志文件组,否则无法替换。否则无法替换。6.2.1 创建日志文件组及其成员4 例6.6 创建日志文件组4,如下: SQL ALTER DATABASE ADD LOGFILE GROUP 4 ( C:appAdministratororadataorclredo04.log, C:appAdminist

17、ratororadataorclredo05.log ) SIZE 5M; 数据库已更改4 上述示例为当前数据库创建了日志文件组4,在该组中创建了两个日志文件成员:redo04.log和redo05.log,他们都在C:appAdministratororadataorcl目录下,大小为5MB。22236.2.1 创建日志文件组及其成员42向日志文件组添加日志文件成员向日志文件组添加新的日志文件成员,同样需要使用ALTER DATABASE语句,其语法如下:|ALTER DATABASE ADD LOGFILE MEMBER|file_name TO GROUP group_number |

18、, . ;6.2.1 创建日志文件组及其成员4 例6.7 向日志文件组3和4添加日志文件,如下: SQL ALTER DATABASE ADD LOGFILE MEMBER C:appAdministratororadataorclredo06.log TO GROUP 3, C:appAdministratororadataorclredo07.log TO GROUP 4;4 查询数据字典v$logfile,观察日志文件是否创建成功,以及日志文件组中是否添加了新的日志文件成员,如下: SQL SELECT group#, member FROM v$logfile;24256.2.2 修改

19、日志文件4需要的时候可以修改日志文件的名称(包含路径),这需要使用ALTER DATABASE RENAME FILE语句,其语法形式如下:ALTER DATABASE RENAME FILE file_name TO new_file_name ; 6.2.2 修改日志文件4【例例6.8】修改E:APPADMINISTRATORORADATAORCL路径下的redo07.log文件的名称与路径,步骤如下。(1) 使用SHUTDOWN命令关闭数据库。使用此命令关闭数据库时,数据库需要等待所有客户端从Oracle中正常退出,然后才可以关闭。|SQL CONNECT sys/manager AS

20、SYSDBA|已连接。|SQL SHUTDOWN IMMEDIATE|数据库已经关闭。|已经卸载数据库。|ORACLE例程已经关闭。266.2.2 修改日志文件(2) 使用STARTUP MOUNT命令启动数据库。使用该命令时,将启动数据库实例,而且加载数据库文件,但是不打开数据库。|SQL STARTUP MOUNT(3) 在操作系统中修改redo07.log文件的路径或名称。可以直接修改文件的名称,也可以复制该文件,为该文件设置新的存储目录和名称。本示例中复制redo07.log文件到同一目录,并修改新文件的名称为redo07_new.log。(4) 使用ALTER DATABASE RE

21、NAME FILE语句修改日志文件,如下:|SQL ALTER DATABASE RENAME FILE C:appAdministratororadataorclredo07.log TO C:appAdministratororadataorclredo07_NEW.log|数据库已更改276.2.2 修改日志文件(5) 使用ALTER DATABASE OPEN语句打开数据库。|SQL ALTER DATABASE OPEN;通过上述步骤,已经修改了日志文件redo07.log的名称,下面查询数据字典表v$logfile,观察修改后的结果。|SQL SELECT group#, memb

22、er FROM v$logfile;28296.2.3 切换日志文件组4日志文件组是循环使用的,当一组日志文件被写满时,Oracle系统自动切换到下一组日志文件。4在需要的时候,数据库管理员也可以手动切换日志文件组。切换日志文件组需要使用如下语句:ALTER SYSTEM SWITCH LOGFILE ;306.2.3 切换日志文件组4 【例例6.9】手动切换当前数据库的日志文件组。在切换之前,先通过数据字典v$log查询当前数据库正在使用哪个日志文件组,如下:SQL SELECT group# , status FROM v$log ; GROUP# STATUS- - 1 CURRENT

23、2 INACTIVE 3 INACTIVE 4 UNUSED4 其中,status表示日志文件组的当前使用状态,其值可为ACTIVE(活动状态,归档未完成)、CURRENT(正在使用)、INACTIVE(非活动状态)和UNUSED(从未使用)。6.2.3 切换日志文件组4 从查询结果看出,数据库当前正在使用日志文件组1。切换日志文件组,如下:SQL ALTER SYSTEM SWITCH LOGFILE;系统已更改。4 再次查询数据字典v$log,查看切换日志文件组后当前数据库正在使用的日志文件组,如下:SQL SELECT group#, status FROM v$log;31326.2.

24、4 清空日志文件组4清空日志文件组需要使用ALTER DATABASE语句,其语法如下:ALTER DATABASE CLEAR LOGFILE GROUP group_number ;4另外,清空日志文件组需要注意如下两点:被清空的日志文件组不能处于CURRENT状态,也就是说不能清空数据库当前正在使用的日志文件组。当数据库中只有两个日志文件组时,不能清空日志文件组。6.2.4 清空日志文件组4例6.10 清空日志文件组4,如下:SQL ALTER DATAVASE CLEAR LOGFILE GROUP4;数据库已更改。4如果日志文件组正处于ACTIVE状态,则说明该日志文件组尚未归档,此

25、时如果想清空该日志文件组,应该在清空的语句中UNARCHIVED关键字,语句形式如下:ALTER DATABASE CLEAR UNARCHIVED GROUP group_number;336.2.5 删除日志文件组及其成员4如果日志文件组中的日志文件受损无法再使用,DBA可以删除该文件,如果整个日志文件组都不需要再使用,也可以删除整个日志文件组。34356.2.5 删除日志文件组及其成员41删除日志文件删除日志文件的语法如下:|ALTER DATABASE DROP LOGFILE MEMBER logfile_name ;删除日志文件需要注意如下几点:|该日志文件所在的日志文件组不能处于

26、该日志文件所在的日志文件组不能处于CURRENT状态。状态。|该日志文件所在的日志文件组中必须还包含有其他日志该日志文件所在的日志文件组中必须还包含有其他日志成员。成员。|如果数据库运行在归档模式下,则应该在删除日志文件如果数据库运行在归档模式下,则应该在删除日志文件之前,确定它所在的日志文件组已经被归档,否则会导之前,确定它所在的日志文件组已经被归档,否则会导致数据丢失。致数据丢失。6.2.5 删除日志文件组及其成员4 例6.11 删除日志文件redo07_new.log,如下:SQL ALTER DATABASE DROP LOGFILE MEMBER C:appAdministrator

27、oradataorclredo07_NEW.log ;数据库已更改。36376.2.5 删除日志文件组及其成员42删除日志文件组删除日志文件组的语法如下:|ALTER DATABASE DROP LOGFILE GROUP group_number ;删除日志文件组需要注意如下几点:|一个数据库至少需要两个日志文件组。一个数据库至少需要两个日志文件组。|日志文件组不能处于日志文件组不能处于CURRENT状态。状态。|如果数据库运行在归档模式下,应该确定该日志文件组如果数据库运行在归档模式下,应该确定该日志文件组已经被归档。已经被归档。例6.12 删除日志文件组4,如下:|SQL ALTER D

28、ATABASE DROP LOGFILE GROUP 4;386.3 管理归档日志4Oracle数据库有两种日志模式:非归档日志模式(NOARCHIVELOG)和归档日志模式(ARCHIVELOG)。4在非归档日志模式下,如果发生日志切换,则日志文件中原有内容将被新的内容覆盖;4在归档日志模式下,如果发生日志切换,则Oracle系统会将日志文件通过复制保存到指定的地方,这个过程叫“归档”,复制保存下来的日志文件叫“归档日志”,然后才允许向文件中写入新的日志内容。396.3.1 设置数据库模式4安装Oracle 11g时,默认设置数据库运行于非归档模式,这样可以缩短数据库的创建时间。在数据库成功

29、运行后,数据库管理员可以根据需要修改数据库的运行模式。4如果要修改数据库的运行模式,可以使用如下语句:ALTER DATABASE ARCHIVELOG | NOARCHIVELOG ;4其中,ARCHIVELOG表示归档模式;NOARCHIVELOG表示非归档模式。406.3.1 设置数据库模式4【例例6.13】用管理员身份修改当前数据库的运行模式。修改前也通过ARCHIVE LOG LIST命令查看当前数据库的运行模式,如下:SQL CONNECT sys/manager AS SYSDBA已连接。SQL ARCHIVE LOG LIST ;数据库日志模式 非存档模式自动存档 禁用存档终点

30、 USE_DB_RECOVERY_FILE_DEST最早的联机日志序列 7当前日志序列 106.3.1 设置数据库模式4从查询结果可以看出,数据库当前运行在非归档模式下。通过下面的步骤可以修改数据库的运行模式。(1) 使用SHUTDOWN命令关闭数据库。|SQL SHUTDOWN|数据库已经关闭。|已经卸载数据库。|ORACLE例程已经关闭。(2) 使用START MOUNT命令启动数据库|SQL START MOUNT416.3.1 设置数据库模式(3) 修改数据库的运行模式,如下:|SQL ALTER DATABASE ARCHIVELOG;|数据库已更改。(4) 使用ALTER DATABASE OPEN语句打开数据库|SQL ALTER DATABASE OPEN;4再次使用ARCHIVE LOG LIST命令查看当前数据库的运行模式,观察是否修改成功,如下:SQL ARCHIVE LOG LIST ;数据库日志模式 非存档模式自动存档 禁用存档终点 USE_DB_RECOVERY_FILE_DEST最早的联机日志序列 7当前日志序列 10426.3.2 设置归档目标4归档目标就是指存放归档日志文件的目录。一个数据库可以有多个归档目标。在创建数据库时,默认设置了归档目标,可以通过db_recovery_file_dest参

温馨提示

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

评论

0/150

提交评论