查看文章 |
oracle在归档模式下正常工作设置(rdbms:8.1.7.0/os:win2000) oracle数据库要在归档模式下正常工作,要进行如下设置: 一、设置数据库为归档模式 如果数据库归档模式没有开启,查询显示如下信息(非归档模式): 1、查询当前数据库的模式 SQL> archive log list; 数据库日志模式 非存档模式 2、shutdown immediate 3、 #log_archive_start = true #log_archive_dest = D:oracleoradatapeiyzarchive log_archive_dest_1='location=D:oracleoradatapeiyzarchive1' #log_archive_dest_2 = "SERVICE=standby_db1" //这里是把归档文件保存到远程standby机子上LOG_ARCHIVE_FORMAT = ARC%T%S.arc //这里变量 %s or %S 为日志序列号,%t or %T为线程号,都有操作系统自动生成(为文件名的一部分),另外%S为一固定长度,如果不够左边补0
4、把数据库启动到mount状态,进行如下操作设置数据库为归档模式 数据库已更改。 a、查看当前数据库归档模式是不是开启,如果在初始化参数文件中没有定义归档路径的话显示如下信息: SQL> archive log list 数据库日志模式 存档模式
SQL> archive log list; 数据库日志模式 存档模式 SQL> archive log start; 已处理的语句 SQL> archive log list 数据库日志模式 存档模式 6、打开数据库 SQL> alter database open; 数据库已更改。 7、做一些日志切换检查是否设置生效 SQL> alter system switch logfile; 系统已更改。 SQL> / 系统已更改。 检查操作系统目录 D:oracleoradatapeiyzarchive1和D:oracleoradatapeiyzarchive3下是否有归档文件生成,如果存在说明设置成功。
二、有关归档模式下测试的两个问题(rdbms:8.1.7.0/os:win2000)
1、修改归档路径 系统已更改。 系统已更改。 2、手工进行日志切换 SQL> alter system switch logfile; 系统已更改。 SQL> / 系统已更改。 注意:如果通过alter system set log_archive_dest_2='location=D:oracleoradatapeiyzarchive2';修改,虽然修改成功而且操作系统中D:oracleoradatapeiyzarchive2目录也存在,但通过alter system switch logfile;日志切换,该目录下仍不会产生归档日志文件,因为改参数并没有在初始化参数中定义。 4、shutdown immediate
5、startup ORACLE 例程已经启动。 Total System Global Area 51648540 bytes SQL> archive log start; 7、检查归档信息 SQL> archive log list 数据库日志模式 存档模式 8、手工进行日志切换 系统已更改。 SQL> / 系统已更改。 9、检查操作系统中归档目录
试验 1、启库 SQL> startup ORACLE 例程已经启动。 Total System Global Area 51648540 bytes 2、检查数据库归档情况 SQL> archive log list 数据库日志模式 存档模式 注意:这里虽然数据库为归档模式,但自动存档功能并未开启。 3、手工进行日志切换看会出现什么情况 SQL> alter system switch logfile; 系统已更改。 SQL> alter system switch logfile; 系统已更改。 SQL> / ...... //这里日志切换不了了,hang在这了,并没有“系统已更改。”提示,只是光标在闪 这时我检查操作系统相关归档目录并没有发现新的归档日志生成,说明日志切换一周后,最初的日志还没被归档,这时lgwr进程又要等这个日志被归档后才能使用,所以数据库hang在这了; 可以通过如下方法解决 4、另开一个sqlplus窗口,以sysdba登陆到数据库 SQL> conn / as sysdba SQL> archive log start; 已处理的语句
SQL> / 系统已更改。 数据库正常工作。
另一种方法为当数据库hang住后,另启一个sqlplus窗口,以sysdba登陆到数据库,进行如下操作: 1、首先查询归档信息 SQL> archive log list 数据库日志模式 存档模式 2、手工进行归档,因为从查询结果来看启库后最早的联机日志为81号,所以首先进行归档81号联机日志文件。再归档82、83号文件: SQL> alter system archive log sequence 81; 系统已更改。 注意: 这时到刚才hang住的窗口查看发现日志操作已经切换完毕,显示如下 SQL> / 系统已更改。 还需要注意一下: a、如果先归档83号联机日志,则报如下错误(因为它为当前正在hang住的联机日志,不能进行归档): SQL> alter system archive log sequence 83; b、如果先归档82号联机日志文件的话,系统自动把81号的联机日志文件一同进行归档了,不必要再进行81号联机文件的归档操作了 SQL> alter system archive log sequence 82; 系统已更改。 SQL> alter system archive log sequence 81; alter system archive log sequence 81
4、当然这只是一种暂时的解决方法,要想不再使数据库被hang住又不要手工进行归档,必须通过开启自动归档功能,也即: SQL> archive log start; 已处理的语句 或者 在初始化参数文件中添加log_archive_start=true参数选项 |