控制文件管理
与控制文件相关的视图
查看控制文件信息
控制文件可以包含以下信息:
数据库名称;
相关数据文件和重做日志文件的名称和位置;
数据库创建的时间戳;
当前的日志序列号;
检查点信息;
Path:C:\oracle\product\10.2.0\db_1\database
Path:C:\oracle\product\10.2.0\db_1\dbs
当数据库打开时,Oracle数据库服务器必须可以写控制文件。没有控制文件,数据库将无法装载,恢复数据库也很困难。
查看初始控制文件名称
创建控制文件副本
(1)关闭数据库。
(2)将当前的控制文件复制到其他目录下。
创建新的控制文件
数据库的控制文件被永久破坏,而且没有对控制文件进行备份。
需要修改数据库名。
使用CREATE CONTROLFILE语句创建控制文件:
分享李老师的手工创建控制文件视频:http://pan.baidu.com/share/link?shareid=423439&uk=3912660076
脚本:http://pan.baidu.com/share/link?shareid=423636&uk=3912660076感谢李老师!
(1)获取数据库的数据文件和重做日志文件列表。
(2)关闭数据库。
SHUTDOWN IMMEDIATE
(3)备份所有的数据文件、重做日志文件和SPFILE参数文件。
(4)使用STARTUP NOMOUNT启动数据库实例。
(5)使用CREATE CONTROLFILE语句创建控制文件。如果需要重命名数据库,则使用RESETLOGS子句,否则使用NORESETLOGS子句。
(6)将新的控制文件备份到其他不在线的存储介质中,如U盘、移动硬盘或磁带等。
(7)根据实际情况修改CONTROL_FILE参数;如果修改了数据库名称,则还需要修改DB_NAME参数。
(8)如果需要的话,则恢复数据库。
(9)如果在第8步中进行了恢复数据库的操作,则需要执行ALTER DATABASE OPEN语句打开数据库。如果在创建控制文件时使用了RESETLOGS子句,则需要使用ALTER DATABASE OPEN RESETLOGS语句。
恢复控制文件
如果控制文件被破坏,但存储控制文件的目录仍然是可访问:
关闭数据库实例;
使用操作系统命令将控制文件副本复制到控制文件目录下;
使用STARTUP命令打开数据库实例。
如果存储介质被破坏,导致存储控制文件的目录无法访问:
关闭数据库实例;
使用操作系统命令将控制文件副本复制到一个新的可以访问的目录下;
修改CONTROL_FILES参数,将无效的控制文件目录修改为新的目录;
使用STARTUP命令打开数据库实例。
删除控制文件
(1)关闭数据库。
(2)编辑CONTROL_FILES参数的值,删除指定的控制文件信息。
(3)重新启动数据库。
重做日志的基本概念
重做日志文件由重做记录组成,而每个重做记录由一组变化元素组成,变化元素中记录了数据库中每个单独的数据块的变化情况。
可以使用重做记录来恢复数据库的变化,保护回滚数据。当使用重做数据恢复数据库时,数据库将从重做记录中读取变化元素,然后将变化应用到相关的数据块中。
LGWR写入重做日志的过程
如果重做日志文件已经被填满了,则LGWR将变化数据写入下一个重做日志文件;
如果最后一个有效的重做日志文件被填充满了,则LGWR将变化数据写入第一个重做日志文件;
多路复用重做日志 系统在不同的位置上自动维护重做日志的两个或更多副本。从安全角度出发,这些副本的保存位置应该在不同的磁盘上。
LGWR对重做日志文件无效时的响应
情 况 | LGWR的动作 |
LGWR可以写入组中的至少一个成员文件 | 正常完成写操作。LGWR写入组中可访问的成员文件,忽略不可访问的成员文件 |
在日志切换时,LGWR无法访问下一个组,因为该组需要被归档 | 临时停止数据库操作,等待该组可以被访问或该组已经被归档 |
在日志切换时,由于介质被破坏,下一组的所有成员都无法被访问 | Oracle数据库返回错误,数据库实例被关闭。此时,需要从有效的重做日志文件中执行介质恢复操作。 如果数据库的检查点已经超出了丢失的重做日志,则不需要进行介质恢复了,因为重做日志中记录的数据写入到数据文件中。现在只需要删除无效的重做日志组。如果数据库还没有对失效的日志进行归档操作,则执行ALTER DATABASE CLEAR UNARCHIVED LOG禁止归档操作,这样就可以删除日志文件了 |
当LGWR写入时,所有组中的成员文件都突然无法访问 | Oracle数据库返回错误,数据库实例被关闭。此时,需要从有效的重做日志文件中执行介质恢复操作。如果介质没有被破坏,只是不小心掉线了,则不需要执行介质恢复,只要将介质恢复在线,然后让数据库执行自动实例恢复即可 |
查看重做日志信息
创建重做日志组和成员
注意大小不能小于下图,具体的对待看个体配置
不指定路径默认路径为:C:\oracle\product\10.2.0\db_1\database
创建重做日志组和成员(添加成员)
重命名重做日志成员
用户必须拥有如下权限:
ALTER DATABASE系统权限。
复制文件到指定位置的操作系统权限。
打开和备份数据库的权限。
(1)使用SHUTDOWN命令关闭数据库。
(2)将重做日志文件复制到新的位置。
(3)使用STARTUP MOUNT命令装载数据库。
(4)使用带RENAME FILE子句的ALTER DATABASE语句重命名数据库的重做日志文件.
(5)使用ALTER DATABASE OPEN命令打开数据库。
删除重做日志组和成员(只是逻辑上的删除,物理文件手动删除啊!!!)
清空重做日志文件(只是逻辑上的删除,物理文件手动删除啊!!!)
ALTER DATABASE CLEAR LOGFILE命令初始化此日志文件。执行此命令时,不需要关闭数据库
归档日志管理
Oracle数据库允许将被填充满的重做日志文件组保存到一个或多个离线的位置,这叫做归档重做日志,简称归档日志。
将重做日志文件转换为归档重做日志文件的过程叫做归档,此过程只能在ARCHIVELOG模式下数据库中进行。
如果设置了自动归档模式,则后台进程ARCn将自动地执行归档操作。数据库会启动多个归档进程,确保一旦日志文件被填满马上就会被归档。
______________________________________________________________________________________________________
自动归档日志的过程
_________________________________________________________________________________________________________
指定归档目的地
(1)使用SHUTDOWN命令关闭数据库。
(2)设置初始化参数LOG_ARCHIVE_DEST_n,使用LOCATION关键词设置位置信息,如果要将归档目的地指定到备用数据库,则可以使用SERVICE设置有效的网络服务名。
(3)可以编辑初始化参数LOG_ARCHIVE_FORMAT,设置归档文件的初始化模式。
与归档日志相关的视图
查看归档日志信息
若数据库运行在非归档模式下,则所有进程状态均为Stopped。
如果数据库实例没有运行在归档模式下,可用以下命令将其转换为归档模式:
查看归档日志信息
如果要删除未归档的重做日志组,则可以在语句中使用UNARCHIVED关键字:
![](https://files.cnblogs.com/files/wjshan0808/0.bmp)