一更改日志操作模式三步走
默认情况下Oracle数据库采用的是非归档模式但是非归档模式不能够防止因物理损坏而导致丢失数据问题为此数据库管理员可能需要把日志操作模式从非归档模式转换为归档模式其实要进行这个转换的话只需要通过简单的三个步骤即可不过在进行操作之前要需要注意以下的操作都必须要求用户具有数据库管理员的权限即只有SYSDBA或者SYSOPER身份才能够执行如下的操作
要更改日志操作模式具体操作步骤如下
第一步先确定当前的日志操作模式当数据库管理员更改当前操作日志模式之前需要先确定一下当前日志操作模式此时数据库管理员可以查询动态性能视图来确认当前日志操作模式如可以利用如下语句来查询我们所需要的信息动态性能视图中存储着很多数据库运行信息从中我们数据库管理员可以获取很多有用的信息如现在要了解当前数据库的日志操作模式就可以从数据库动态性能视图中获知
第二步关闭数据库如果确认数据库当前的日志操作模式为非归档模式需要把它改为归档操作模式需要先关闭当前运行的数据库然后重新装载数据库需要注意的是更改日志操作模式只能够在MOUNT状态下进行因此必须首先关闭数据库然后重新装载数据库另外如果需要更改日志操作模式那么在关闭数据库时不能够使用SHUTDOWN ABORT命令SHUTDOWN ABORT命令的作用其实跟KILL进程具有同样的效果若利用这个命令的话可能会给数据库带来一些不利的因素如可能导致文件状态不一致在数据库正常关闭的时候数据库会同步校验各个文件使得重新启动的时候文件时间点一致并且不用进行崩溃修复而使用这个命令不会进行这个检验所以采用SHUTDOWN ABORT命令关闭数据库的时候可能会导致数据库启动出错导致已经递交的数据丢失甚至出现数据库崩溃的噩梦所以无论是在更换数据库日志操作模式又或者其他原因需要关闭数据库的最好不要采用这个命令只有在采用其他关闭数据库命令不能够奏效的情况下才能够使用这个命令笔者建议通过SHUTDOWN IMMEDIATE命令来关闭数据库
数据库关闭之后再利用Startup命令把数据库启动到MOUNT状态再次提醒一次只有在Mount状态下才能够更改日志操作模式
第三步更改日志操作模式以上准备工作做好之后就可以利用相关命令来更改日志操作模式我们可以利用如下命令来进行更改
然后重新打开数据库之后设置就生效了
二手工对重做日志文件进行归档
有时候出于某些原因数据库管理员可能需要手工对重做日志进行归档在G以后的版本中默认情况下当将日志操作模式从非归档模式转换为归档操作模式的时候Oracle数据库会在后台自动启动一个ARCH进程这个进程就是负责重做日志的备份任务通常情况下归档模式下数据库会自动备份重做日志
若需要手工备份重做日志的话即手工归档则必须在改变操作日志模式中明确说明即在上面的命令中加入MANUAL参数如果加入这个参数后则数据库管理员就必须手工执行归档命令如果数据库管理员没有手工执行归档命令的话则日志组中的内容就无法被进行覆盖所以通常情况下除了一些特殊的需要如数据库测试才使用手工归档方式否则的话就还是采用自动归档方式更加的合理值得一提的是根据笔者了解这个参数只是一个过渡参数主要为了跟以前的Oracle数据库版本兼容估计在不久之后这个手工归档的参数会取消掉
三设置归档文件的存储位置
在操作系统管理中系统管理员往往会重新设置我的文档IE收藏夹等存储位置以防止系统奔溃时这些数据的丢失其实在Oracle归档日志文件管理中也是如此当数据库管理员把日志操作模式从非归档模式转换为归档模式时需要根据实际情况重新设置归档文件的存储位置
当数据库处于归档模式时如果进行日志切换后台进程将自动生成归档日志文件归档日志文件的默认存储位置为Oracle数据库安装目录下的RDBMS下而在实际工作中数据库管理员往往会改变其存储位置如出于空间的考虑或者安全方面的考虑会把归档日志存放在数据文件不同的硬盘中等等
如果需要更改归档日志的操作文件则需要变更相应的初始化参数参数LogArchiveDest就是用来控制归档日志的存储路径的通常情况下若是没有备用数据库的话则只需要把归档日志存放到服务器上的独立的硬盘中即可而不需要进行异地备份如果需要配置本地归档日志的存储路径则可以通过以上的初始化参数以及LogArchiveDuples_Dest参数其中前面一个参数用来指定第一个归档日志的位置第二个参数用来指定第二个归档日志的位置当分别对以上两个参数进行配置后数据库系统在进行日志切换时后台进程就会生成两份完全相同的归档日志分别存储在上面两个不同的路径中这里需要强调的一点是存放在两个不同路径中的归档日志文件是完全相同的这主要是出于数据安全的需要一般情况下只需要一个归档日志即可若不放心的话则可以设置多个归档日志存放位置不过这些归档日志最好能够存放到不同的磁盘上否则的话就没有多少的实际意义
除了以上这个配置参数之外平时工作中我们还经常会使用LogArchiveDest_N这个参数这个参数主要用于指定多个归档位置通常情况下可以多大十个归档位置这个参数跟先前提到的两个参数有比较大的不同数据库管理员要对此有清晰的认识只有如此才能够根据自己的需要选择合适的初始化参数他们的差异主要有以下几点
一是不带N的初始化参数(即前面的两个参数)只能够用来配置本地归档位置而后面谈到的这个参数这可以用来配置本地归档位置与远程归档位置也就是说如果数据库管理员要把归档日志文件保存在网络上的其它主机中时就必须利用后面的参数进行配置这个区别是几个参数之间最大的差异不过由于网络传输等方面的限制笔者并不建议把归档日志保存在其它主机上而是建议在数据库服务器中增加一块独立的硬盘用来保存归档日志文件即可因为硬盘之间数据的复制要比网络传输要快的多这可以避免重做日志归档时对网络资源过多的占用从而降低网络的性能
二是前面两个参数只能够配置两个不同的归档日志位置;而后面一个参数则可以配置多大十个归档日志文件位置这是两者数量上的差异不过没什么作用对于大部分企业来说可能两个归档日志文件存放位置已经可以满足他们的需求了另外一个小的差异就是后面这个参数不能够跟前面两个参数共存为此当使用后者这个参数时就需要先把前面两个参数禁用掉因为数据库默认情况下是启动第一个初始化参数的
三是具体的配置也有所不同利用后者参数指定归档日志存储位置时如果配置本地归档位之则需要指定Location选项;如果是配置远程归档日志位置时则就需要制定Service选项这个选项主要用来指定远程数据库的网络服务名通常情况下数据库管理员可以同时配置本地归档位置与远程归档位置
对于以上这些初始化参数数据库管理员需要根据自己的工作习惯进行配置一个基本的原则就是兼顾归档日志文件的安全性与其对性能的影响其它没有硬性的规定根据笔者的经验如果这些初始化参数设置的好的话可以让我们数据库管理的工作更加顺畅便捷