Oracle数据库可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog)
归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和相应的备份策略相结合,只有归档模式没有相应的备份策略只会带来麻烦。
本文简单介绍如何启用和关闭数据库的归档模式。
1.shutdown normal或shutdown immediate关闭数据库
[oracle@oracle oracle]$ sqlplus “/ as sysdba”
SQL*Plus: Release 9.2.0.4.0 – Production on Sat Oct 15 15:48:36 2005
Copyright (c) 1982, 2002, Oracle Corporation.? All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 – Production
With the Partitioning option
JServer Release 9.2.0.4.0 – Production
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
2.启动数据库到mount状态
SQL> startup mount;
ORACLE instance started.
Total System Global Area? 101782828 bytes
Fixed Size?????????????????? 451884 bytes
Variable Size????????????? 37748736 bytes
Database Buffers?????????? 62914560 bytes
Redo Buffers???????????????? 667648 bytes
Database mounted.
不过今天在本机数据库上更改Oracle数据库中的非归档模式改为归档模式的时候,发现Windows下用命令行关闭Oracle数据库后,按照上述方法启动,却老是提示错误,上网也没有找到解决方法;最后发现用shutdown关闭数据库后,不能马上使用startup打开数据库,应该先连接到一个空的例程,然后再启动数据库,下面是尝试的过程,希望可以帮到大家,只在Windows下碰到该问题,Linux和Unix下不是很清楚,有待验证。
??? SQL> conn sys/sys@test as sysdba
已连接。
这里也可以直接用SQL> conn / as sysdba来连接
??? SQL> shutdown normal
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
??? SQL> startup mount
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
??? SQL> startup mount
ORA-24324: 未初始化服务句柄
ORA-01041: 内部错误, hostdef 扩展名不存在
??? SQL>
这里一定要再连接一次,否则会无法启动数据库!网上说什么更改监听文件或者sqlnet文件都是无济于事的!!!
??? SQL> conn sys/sys@test as sysdba
已连接到空闲例程。
??? SQL> startup
ORACLE 例程已经启动。
3.启用或停止归档模式
如果要启用归档模式,此处使用
alter database archivelog 命令。
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode????????????? Archive Mode
Automatic archival???????????? Enabled
Archive destination??????????? /opt/oracle/oradata/conner/archive
Oldest online log sequence???? 148
Next log sequence to archive?? 151
Current log sequence?????????? 151
如果需要停止归档模式,此处使用:
alter database noarchivelog 命令。
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area? 101782828 bytes
Fixed Size?????????????????? 451884 bytes
Variable Size????????????? 37748736 bytes
Database Buffers?????????? 62914560 bytes
Redo Buffers???????????????? 667648 bytes
Database mounted.
SQL> alter database noarchivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode????????????? No Archive Mode
Automatic archival???????????? Enabled
Archive destination??????????? /opt/oracle/oradata/conner/archive
Oldest online log sequence???? 149
Current log sequence?????????? 152
4.修改相应的初始化参数
Oracle10g之前,还需要修改初始化参数使数据库处于自动归档模式。
在pfile/spfile中设置如下参数:
log_archive_start = true
重启数据库此参数生效,此时数据库处于自动归档模式。
也可以在数据库启动过程中,手工执行:
archive log start
使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式。
?查看oracle数据库当前运行的归档方式,可以用SQL> archive log list;来查询,查看Database log mode 的状态,需要在sys用户权限下。