5.管理控制文件和日志文件
5.1管理控制文件
5.1.1控制文件概述
控制文件是一个很小的二进制文件,用于在数据库(包括数据文件、控制文件、日志文件)和实例(指Oracle内存管理结构)之间建立起关联,在进行数据库操作时必须打开。含有数据库的结构信息,包括数据文件和日志文件信息。只有Oracle进程才能够安全地更新控制文件的内容,任何时候都不要试图手动编辑控制文件。控制文件的主要内容:
数据库名称和SID标识。
数据文件和日志文件列表(包括文件名称和对应的路径信息)。
数据库创建的时间戳。
表空间信息。
当前重做日志文件序列号。
归档日志信息。
检查点信息。
回滚段的起始和结束。
备份数据文件信息。
如何对控制文件进行日常管理:
1)及时备份控制文件。
2)保护控制文件。
5.1.2控制文件的多路复用
为提高数据库安全性,至少要为数据库建立两个控制文件,并且最好备份到不同的磁盘中。多路复用控制文件就是在系统的不同位置同时存放多个控制文件的副本。
在初始化参数control_files中列出了当前数据库的所有控制文件名。实现控制文件的多路复用主要包括更改control_files参数和复制控制文件两个步骤:
1)更改control_files文件
2)复制控制文件
5.1.3创建控制文件
在所有控制文件损坏或丢失的情况下,手动创建一个新的控制文件是唯一的补救办法。创建控制文件的过程:
1)查看数据文件和重做日志文件
Select member from v$logfile;
Select name from v$datafile;
Select name from v$controlfile;
2)关闭数据库
shutdown immediate
3)备份文件
备份所有数据文件和重做日志文件
4)启动数据库实例
startup nomount;
5)创建新的控制文件
Create controlfile命令
6)编辑参数
编辑spfile文件中的初始化参数control_files,使其指向新的控制文件。
7)打开数据库
Alter database open
5.1.4备份和恢复控制文件
为了提高数据库的可靠性,降低由于丢失控制文件而造成灾难性后果的可能性,DBA需要尽量对控制文件进行备份。特别是当修改了数据库结构之后,需要立即对控制文件进行备份。
1)备份控制文件
备份为二进制文件:alter database backup controlfile;
备份为可读文件:alter database backup controlfile to trace;
查看备份位置:show parameter user_dump_dest;
2)恢复控制文件
参数文件本身损坏:在初始化文件中设置参数值为备份的完好的控制文件。
磁盘介质永久性损坏:磁盘分区发生物理的永久损坏,导致Oracle系统不能访问参数文件中指定的控制文件,并且这个控制文件有一个多路复用的情况下,用户可以修改初始化参数将控制文件指定到新的可以访问的位置上。
A.关闭数据库实例,将当前控制文件的多路复用文件复制到新的可用位置。
B.编辑初始化参数,用新的控制文件的位置替换掉原来损坏的位置,或者说删除原来损坏的位置,添加一个新的控制文件的位置。
C.重新启动数据库。
5.1.5删除控制文件
如果控制文件的位置不再适合时,可以从数据库中删除控制文件,操作如下:
1)关闭数据库
2)编辑初始化参数control_files,清除掉打算删除的控制文件名称。
3)重启数据库。
5.1.5查询控制文件信息
Select type,record_size,records_total,records_used from v$controlfile_record_section;
5.2管理重做日志文件
重做日志文件也就是通常所说的日志文件,是保证数据库安全和数据库备份与恢复的文件,是数据库安全和恢复的最基本保障。
5.2.1重做日志文件概述
重做日志文件用于记录事务操作所引起的变化,当执行DDL或DML操作时,由LGWR进程将缓冲区中与该事务相关的重做记录全部写入重做日志文件。当丢失或损坏数据库中的数据时,Oracle会根据重做日志文件中的记录恢复丢失的数据。
1)日志文件爱你内容与数据恢复
重做日志文件由重做记录组成,重做记录又称重做条目,它由一组变更向量组成。每个变更向量都记录了数据库中某个数据块所做的修改。
利用重做记录,可以恢复对数据文件所做的修改操作,还能够恢复对回滚段所做的修改操作,因此,重做日志文件不仅可以保护数据,还能够保护回滚段数据。
2)写入重做日志文件
在Oracle中,用户对数据库所做的修改首先被保存在内存中,当满足一定条件时,LGWR进程将内存中的重做日志记录保存到重做日志文件中。
5.2.2增加日志组及其成员
在Oracle数据库中,至少需要两个重做日志文件组,每个组可以包含一个或多个重做日志成员。需要注意的是,对于重做日志文件的维护,需要用户具有修改数据库的权限。
1)添加新的重做日志文件组
2)创建日志成员文件
5.2.3删除重做日志
1)删除日志成员
2)删除日志文件组
3)清空重做日志文件
5.2.4更改重做日志的位置或名称
1)关闭数据库
2)手动复制源文件到目标位置,甚至可以进程重命名
3)再次启动数据库实例,加载数据库,但不打开数据库(startup mount)
4)使用alter database rename file语句重新设置重做日志文件的路径及名称
5)打开数据库(alter database open)
6)打开数据库后,新的重做日志文件的位置和名称将生效
5.2.5查看重做日志信息
V$LOG:显示控制文件中的日志文件信息
V$LOGFILE:日志组和日志成员信息
V$LOG_HISTORY:日志历史信息
5.3管理归档日志文件
5.3.1日志模式分类
1)归档模式
在重做日志文件被覆盖前,Oracle能够将已经写满的重做日志文件通过复制保存到指定的位置,保存下来的所有重做日志文件被称为“归档重做日志”,这个过程就是“归档过程”。只有数据库处于归档模式时,才会对重做日志文件执行归档操作。
2)非归档模式
非归档模式只能用于保护实例故障,而不能保护介质故障,当数据库处于非归档模式时,如果进行日志切换,生成的新内容将直接覆盖掉原来的日志记录。
5.3.2管理归档操作
1)日志模式切换
A.查看当前日志模式
Select log_mode from v$database;
B.关闭并重新启动数据库
Shutdown immediate;
Startup mount;
C.改变日志模式
Alter database archivelog;
D.打开数据库
Alter database open;
2)配置归档进程
当数据库处于归档模式时,默认情况下Oracle会自动启动两个归档日志进程。通过改变初始化参数LOG_ARCHIVE_MAX_PROCESSES的值,用户可以动态地增加或减少归档进程的个数。
Alter system set log_archive_max_processes=3;
5.3.3设置归档文件位置
1)本地归档目标
2)远程归档目标
5.3.4查看归档日志信息
查看归档日志信息主要有两种方法:一种是使用数据字典和动态性能视图;另一种是使用ARCHIVE LOG LIST命令。
1)使用数据字典和动态性能视图
V$DATABASE:用于查询数据库是否处于归档模式
V$ARCHIVED_LOG:包含控制文件中所有已经归档的日志信息
V$ARCHIVE_DEST:包含所有归档目标
V$ARCHIVE_PROCESSES:包含已启动的ARCN进程状态信息
V$BACKUP_REDOLOG:包含所有已经备份的归档日志信息
2)使用archive log list命令
Connect system/1qaz2wsx sysdba;
Archive log list;