(34) Oracle存储结构管理(3)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.4 管理数据库存储结构(3)
1.重做日志文件的概念
(1)重做日志文件,保存了用户对数据库所作的更新操作(DDL 、DML ),包含的主要信
息是记录事务的开始和结束、事务中每项操作的对象和类型、更新操作前后的数据值等。
(2)重做日志文件是由重做记录构成的,每个重做记录由一组修改相量组成。 (3)用户对数据库所做的修改都是在数据库的数据高速缓冲区中进行的,同时将产生的重
做记录写入重做日志缓冲区。在一定条件下由DBWR 进程将数据高速缓冲区中修改后的结果成批写回数据文件中,而重做日志缓冲区中的重做记录由LGWR 进程周期性的写入重做日志文件。
(4)利用重做日志文件恢复数据库是通过事务的重做(REDO )或回退(UNDO )实现的。
2.重做日志文件的工作过程
(1)每个数据库至少需要两个重做日志文件,采用循环写的方式进行工作。当一个重做日
志文件写满后,进程LGWR 就会移到下一个日志组,称为日志切换,同时信息会写到控制文件中。
(2)重做日志文件工作流程
日志切换
日志切换
重做日志文件1
日志切换
重做日志文件2 重做日志文件3
1,4,7,…
2,5,8,… 3,6,9,… LGWR
重做日 志缓冲区
(3)为了保证LGWR 进程的正常进行,通常采用重做日志文件组(GROUP),每个组中包
含若干完全相同的重做日志文件成员(MEMBER),这些成员文件相互镜像。
MENBER1_1
MENBER1_2 MENBER2_1
MENBER2_2 MENBER3_1
MENBER3_2
GROUP1 GROUP2 GROUP3 DISK 1
DISK 2
3.重做日志文件的管理 (1)添加重做日志文件组
(2)添加重做日志文件组成员文件
(3)改变重做日志文件组成员文件的名称和位置 (4)删除重做日志文件组成员 (5)删除重做日志文件组 (6)重做日志文件切换 (7)清空重做日志文件组 (8)查看重做日志文件信息
(9)利用OEM管理重做日志文件
(1)添加重做日志文件组
✧语法
ALTER DATABASE ADD LOGFILE……
✧示例
ALTER DATABASE ADD LOGFILE GROUP 4
('D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\
REDO04a.LOG', 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\
ORCL\REDO04b.LOG')SIZE 4M;
(2)注意:
✧分配给每个重做日志文件的初始空间至少为4 MB。
✧如果没有使用GROUP 子句指定组号,则系统会自动产生组号,为当前重做日
志文件组的个数加1。
✧在Oracle10.2.0之前的版本中,数据库最多允许的重做日志文件组的数量由控
制文件中的MAXLOGFILES参数决定。
✧在Oracle10.2.0之前的版本中,每个重做日志文件组中最多成员文件数量由控
制文件中的MAXLOGMEMBERS参数决定。
(3)添加重做日志文件组成员
✧语法
ALTER DATABASE ADD LOGFILE MEMBER…TO GROUP…
✧示例
ALTER DATABASE ADD LOGFILE MEMBER
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\
ORCL\REDO01C.LOG' TO GROUP 1,
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\
REDO04C.LOG' TO GROUP 4;
✧注意:
✓同一个重做日志文件组中的成员文件存储位置应尽量分散。
✓不需要指定文件大小。新成员文件大小由组中已有成员大小决定。
(4)改变重做日志文件组成员名称或位置
✧语法
ALTER DATABASE RENAME FILE…TO
✧注意
✓只能更改处于INACTIVE或UNUSED状态的重做日志文件组的成员文件的名称或位置。
✧示例:将重做日志文件REDO01C.LOG重命名为REDO01B.LOG,将REDO04C.LOG
移到D:\ORACLE\PRODUCT\10.2.0\ORADA TA目录下。
✓检查要修改的成员文件所在的重做日志文件组状态
SELECT group#,status FROM v$log;
✓如果要修改的日志文件组不是处于INACTIVE或UNUSED状态,则需要进行手动日志切换。
✓重命名重做日志文件或将重做日志文件移到新位置
✓打开D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL文件夹,将REDO01C.LOG 更名为REDO01B.LOG,同时将REDO04C.LOG移到
D:\ORACLE\PRODUCT\10.2.0\ORADATA文件夹下。
✓执行ALTER DATABASE RENAME FILE…TO语句
A LTER DATABASE RENAME FILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01C.LOG',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO4C.LOG' TO
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO001B.LOG',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\REDO04C.LOG
(5)删除重做日志文件组成员
✧语法
✓ALTER DATABASE DROP LOGFILE MEMBER
✧注意
✓只能删除状态为INACTIVE或UNUSED的重做日志文件组中的成员;若要删除状态为CURRENT的重做日志文件组中的成员,则需执行一次手动日志切换。
✓如果数据库处于归档模式下,则在删除重做日志文件之前要保证该文件所在的重做日志文件组已归档。
✓每个重做日志文件组中至少要有一个可用的成员文件,即VALID状态的成员文件。如果要删除的重做日志文件是所在组中最后一个可用的成员文件,则无法
删除。
ALTER DATABASE DROP LOGFILE MEMBER
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\REDO4c.LOG';
(6)删除重做日志文件组
✧语法
ALTER DATABASE DROP LOGFILE GROUP
✧注意
✓无论重做日志文件组中有多少个成员文件,一个数据库至少需要使用两个重做日志文件组。
✓如果数据库处于归档模式下,则在删除重做日志文件组之前,必须确定该组已经被归档。
✓只能删除处于INACTIVE状态或UNUSED状态的重做日志文件组,若要删除状态为CURRENT的重做日志文件组,则需要执行一次手动日志切换。