170 likes | 320 Views
第五章 日志文件管理. 日志文件用于记录数据库改变的信息。 在 SGA 区中重做日志缓冲区的数据由 LGWR 进程来写到日志文件中。 一般在数据库建立后,至少有两个或三个日志文件。 正常下有三个日志文件都在工作。工作的顺序是: LGWR 首先将数据到第一个,当第一个写满后接着写第二个,第二个写满后,开始写第三个。当第三个写满后,重新开始写第一个。. 5.1 日志切换. 当一个当前的日志完全填满且下一个必须写时,日志切换总是必须出现。 强行的日志切换 Alter system switch logfile;. 5.1 日志切换 __ 检查点.
E N D
第五章 日志文件管理 • 日志文件用于记录数据库改变的信息。 • 在SGA区中重做日志缓冲区的数据由LGWR进程来写到日志文件中。 • 一般在数据库建立后,至少有两个或三个日志文件。 • 正常下有三个日志文件都在工作。工作的顺序是:LGWR首先将数据到第一个,当第一个写满后接着写第二个,第二个写满后,开始写第三个。当第三个写满后,重新开始写第一个。 辽宁工程技术大学 软件工程系
5.1 日志切换 • 当一个当前的日志完全填满且下一个必须写时,日志切换总是必须出现。 • 强行的日志切换 • Alter system switch logfile; 辽宁工程技术大学 软件工程系
5.1 日志切换__检查点 • Oracle为了在出现故障后能退回去重演原来的信息,就需要一个叫开始点。在这个开始点时刻,数据和事务是已知的。 • 在Oracle里,只要检查点一到(出现)。Oracle就强行将当前的SGA中的redo区的改动过的块写入重做日志文件中。 辽宁工程技术大学 软件工程系
5.1 日志切换__检查点 • Oracle在INITsid.ORA文件中给出LOG_CHECKPOINT_INTERVAL参数可以设置检测点的数目 • 日志文件大小为1000块,而设置检查点间隔LOG_CHECKPOINT_INTERVAL为250,则文件写达到 1/4、2/4、3/4及4/4时产生检测点(250块、500块、750块和1000块处)。 辽宁工程技术大学 软件工程系
日志文件的切换_日志查询 • 查日志文件大小 • SQL> select group#,bytes from v$log; • 查看日志检查点数目 • SQL> show parameter log_checkpoint_interval 辽宁工程技术大学 软件工程系
5.2 建立多个日志文件 • 可以在Oracle内建立多个组,每个组包括一个或多个日志文件(每个日志文件由Oracle给出一个组编号) • 每个组太多的日志文件会影响系统性能。 辽宁工程技术大学 软件工程系
5.2 建立多个日志文件——建立日志 • 建立组内多个日志文件的语法: • ALTER DATABASE [database_name] • ADD LOGFILE [ GROUP [group_number] ] • (filename ,filename[,...] ) • [SIZE size_integer[K | M ] ] [ REUSE ] 辽宁工程技术大学 软件工程系
5.2 建立多个日志文件——创建日志 • ALTER DATABASE ADD LOGFILE GROUP 6 • (E:\DATABASE\log6a.ora,F:\DATABASE\log6b.ora) size 10m; • ALTER DATABASE ADD LOGFILE GROUP 5 • (E:\DATABASE\log5a.ora,F:\DATABASE\log5b.ora) REUSE; 辽宁工程技术大学 软件工程系
5.2 建立多个日志文件——创建日志 • 例2:建立一个新组3,组内有两个成员: • ALTER DATABASE ADD LOGFILE • GROUP 3 • ('/ora02/oradata/mydb01/redo0301.log', '/ora03/oradata/mydb01/redo0402.log') • size 10m; 辽宁工程技术大学 软件工程系
5.2 建立多个日志文件——创建日志 • 例3:建立一个新组,如果省去GROUP 3 , Oracle就自动分配一新的有效的组号: • ALTER DATABASE ADD LOGFILE • ('/ora02/oradata/mydb01/redo0301.log', '/ora03/oradata/mydb01/redo0402.log') size 10m; • ALTER DATABASE ADD LOGFILE • ('D:\ORACLE\ORADATA\ORA816\REDO41.log', 'D:\ORACLE\ORADATA\ORA816\REDO42.log') size 1m; 辽宁工程技术大学 软件工程系
5.2 建立多个日志文件——创建日志 • 例4:在一个组内加新成员,不用给出大小,系统自动按照组内的大小分配: • ALTER DATABASE ADD LOGFILE MEMBER • '/ora04/oradata/mydb01/redo0403.log' TO GROUP 2 ; 辽宁工程技术大学 软件工程系
5.3 重新命名日志成员名字 • 1. 关闭数据库,并进行完全备份; • 2. 使用操作系统命令拷贝原来的日志文件到新的地方; • 3. 用startup mount 启动数据库; • 4.用ALTER DATABASE RENAME FILE '<old_redo_file_name>' TO '<new_redo_file_name>'; • 5. 用ALTER DATABASE OPEN 打开数据库; • 6. 备份控制文件。 辽宁工程技术大学 软件工程系
5.4 删除重做日志文件——删除条件 • 删除一个日志组后,系统中至少还有两个其它的日志组; • 被删除的日志组必须是不需要存档; • 不是正在使用的日志组。 辽宁工程技术大学 软件工程系
5.4 删除重做日志文件 • 删除日志文件的语法: • ALTER DATABASE database_name • DROP LOGFILE • GROUP group_number | file_name | (file_name,file_name(,...) ) • 删除日志成员的语法: • ALTER DATABASE database_name • DROP LOGFILE MEMBER file_name; 辽宁工程技术大学 软件工程系
5.4 删除重做日志文件——替换日志文件 • 当一个重做日志组偶而被损坏使数据库不能继续使用时,不能直接删除它们,而是要用一个干净的文件或一组成员去替代这个损坏的日志组。 • ALTER DATABASE database_name • CLEAR[UNARCHIVED] LOGFILE group_identifier • [UNRECOVERABLE DATAFILE] • 如果该文件正在等待存档(归档模式),就需要UNARCHIVED。 • 如果需要脱机恢复一个数据文件,就用UNRECOVERABLE DATAFILE。 辽宁工程技术大学 软件工程系
5.4 删除重做日志文件——日志查询 • V$LOGFILE • V$LOG • V$THREAD • V$LOG_HISTORY 辽宁工程技术大学 软件工程系
5.4 删除重做日志文件 • 删除一个组3: • ALTER DATABASE DROP LOGFILE GROUP 3; • 删除一个成员: • ALTER DATABASE DROP LOGFILE MEMBER • '/orant/oradata'mydb02'redo02.log' ; 辽宁工程技术大学 软件工程系