控制文件和重做日志文件

控制文件是一个二进制文件,包含了关于数据库物理结构的重要信息,包括数据库的名称,相关的数据文件和重做日志文件的名称
和位置,当前的日志序列号等内容.

创建复合控制文件(oracle最多支持同时使用8个控制文件)
oracle将同时写入所有的控制文件中,但是只会读取 control_files参数中所指定的第一个控制文件
1.关闭数据库
2.将已有的控制文件复制多份并且重新命名,再将他们移动到操作系统的其它位置
 control_files = ( 'i:/oracle/oradata/ctrloradb01.ctl',
     'j:/oracle/oradata/ctrloradb02.ctl',
     'k:/oracle/oradata/ctrloradb03.ctl',
     'l:/oracle/oradata/ctrloradb04.ctl')
3.修改初始化参数文件中的control_files的设置
4.重新启动数据库

备份控制文件
1.将控制文件备份为二进制文件
alter database backup controlfile to 'i:/oracle/backup/control.bkp';

2.将控制文件备份为文本文件(备份到oracle/base/admin/sid/udump目录下的跟踪文件中,将在跟踪文件中生成一个SQL脚本)
alter database backup controlfile to trace;

删除控制文件
1.关闭数据库
2.编辑control_files初始化参数,使其中不再包含要删除的控制文件的名称
3.在操作系统中删除控制文件
4.重新启动数据库

控制文件数据字典:
v$controlfile 所有控制文件的名称和状态信息

/* 重做日志文件 */
oracle数据库所使用的一组重做日志中至少需要包含两个重做日志文件组.
只有当某个事务所产生的重做记录全部被写入重做日志文件之后,oracle才认为这个事务已经成功提交.重做记录也可能会在事务提交之前就写入重做日志文件.

LGWR进程在开始写入下一个重做日志文件之前,必须确认这个即将被覆盖的重做日志文件已经完成如下工作:
*  如果数据库处于非归档模式,已写满的重做日志文件在被覆盖之前,其中所有重做记录所对应的事务的修改
   操作结果必须已经全部被写入到数据文件中
*  如果数据库处于归档模式,已写满的重做日志文件在被覆盖之前,不仅要对应所有事务的修改操作结果全部被   写入到数据文件中,还需要等待归档进程完成对它的归档操作

在建立复合重做日志文件时,应当将同一个重做日志组中的各个成员分布到不同的硬盘中去,这样还可以避免LGWR进程和ARCn进程之间产生的硬盘I/O冲突.如果有条件,最好也能够将数据文件和日志文件分别存放在不同的硬盘中,这样还可以避免LGWR进程与DBWR进程之间的I/O冲突.

重做日志组的最大数目: maxlogfiles
每个重做日志组的所能拥有得最大成员数目: maxlogmembers

创建重做日志组(复合)
重做日志组得组号不能大于maxlogfiles参数设定的值,当中不能有间断.
alter database add logfile
 ('i:/oracle/oradata/oradb01/redo0301.rdo',
  'i:/oracle/oradata/oradb01/redo0302.rdo') size 100M
(应为没有指定group子句,oracle将自动为新建的重做日志组设置组号,一般是在当前组号之后递增)

alter database add logfile group 3
 ('i:/oracle/oradata/oradb01/redo0301.rdo',
  'i:/oracle/oradata/oradb01/redo0302.rdo') size 100M

创建一个非复合重做日志文件
alter database add logfile
 'i:/oracle/oradata/oradb01/redo01.rdo'

创建成员日志文件(不能使用SIZE参数来设定日志文件大小)
alter database add logfile member
 'i:/oracle/oradata/oradb01/redo0303.log' to group 3
或者
alter database add logfile member
 'i;/oracle/oradata/oradb01/redo0303.log' to
 ('i;/oracle/oradata/oradb01/redo0301.log',
  'i;/oracle/oradata/oradb01/redo0302.log')

改变重做日志文件名称或位置
1.关闭数据库
2.在操作系统级别重新命名或移动重做日志文件,要删除原来位置上的文件
3.startup mount,不打开数据库
4.用rename file子句的alter database语句
alter database rename file
 'I;/oracle/oradata/oradb01/redo0301.log',
 'I;/oracle/oradata/oradb01/redo0302.log' to
 'j;/oracle/logs/redo0301.log',
 'k;/oracle/logs/redo0302.log'
5.alter database open
6.备份控制文件

重做日志组的状态 active/current/inactive
成员日志文件的状态 valid/invalid/stale

删除重做日志组(只能删除INACTIVE状态的重做日志组,如果要删除CURRENT状态的重做日志组,必须执行一次手工日志切换,将它切换到INACTIVE状态)

alter database drop logfile group 3
最后需要手动删除操作系统中的相应文件

删除成员日志文件(只能删除INACTIVE状态的重做日志组中的成员日志文件)
alter database drop logfile member
 'i:/oracle/oradata/oradb01/redo0302.log'
最后需要手动删除操作系统中的相应文件

手工切换日志(每进行一次日志切换后,ORACLE将会在数据库的警告文件中进行记录)
alter system switch logfile

清空重做日志组
(就是将重做日志文件中的内容全部初始化,想当于删除重做日志文件,再重建它)
alter database clear logfile group 3

如果要清空的重做日志组尚未归档,必须指定unarchived子句(oracle将避免对这个重做日志组进行归档,其中保存的重做记录暂时不会丢失)
alter database clear unarchived logfile group 3

警告:如果被清空的重做日志组还没有被归档,有可能造成数据丢失.比如,如果在一个表空间切换到脱机状态时是不干净的,即SGA区中有部分属于该表空间的脏缓存块还没有写入数据文件,那么在下一次将该表空间恢复为联机状态时,会需要使用到重做日志文件中的信息来进行恢复,而如果包含恢复信息的重做日志组中已经被清空,那么该表空间将无法恢复为联机状态.

重做日志文件数据字典
v$log  重做日志文件的基本信息 
v$logfile 各个成员日志文件的信息

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值