Oracle数据运行模式有归档和非归档模式两种,数据库安装后的默认情况及相互切换方法如下:
1、在Linux4.7+Oracle10g环境:当数据库创建时,如果没有选择flash_recovery_area并不启用归档操作,则模式设置如下:
SQL> archive log
list;
Database log
modeNo Archive Mode
Automatic
archivalDisabled
Archive
destination/opt/oracle/product/10.2.0/dbs/arch
Oldest online log
sequence15
Current log
sequence17
SQL>[@more@]
要改变为归档模式并改变默认的归档文件路径的具体操作步骤如下:
在操作系统创建归档所需的独立目录,如果放到默认目录,则该步骤不用执行:
[root@dbserv~]# cd /opt/
[root@dbservopt]# mkdir backup
[root@dbserv opt]#
chown -R oracle:oinstall backup/
[root@dbservopt]# chmod -R 755 backup/
关闭数据库并将重启至mount状态
SQL> shutdown
immediate;
Database closed.
Database dismounted.
ORACLE instance shut
down.
SQL> startup
mount;
SQL> archive log
list;
Database log
modeNo Archive Mode
Automatic
archivalDisabled
Archive
destination/opt/oracle/product/10.2.0/dbs/arch
Oldest online log
sequence15
Current log
sequence17
更改默认归档路径并将数据库改为归档模式(要注意location字符及等号前后无空格):
SQL> alter system set
log_archive_dest_1='location=/opt/backup';
System altered.
SQL> alter database archivelog;
Database altered.
SQL> archive log
list;
Database log
modeArchive Mode
Automatic
archivalEnabled
Archive
destination/opt/backup
Oldest online log
sequence15
Next log sequence to
archive17
Current log
sequence17
如果要返回非归档模式,则在mount状态下执行如下命令即可:
SQL>alter database noarchivelog;
2、在Linux4.7+Oracle10g环境:当数据库创建时,如果选择flash_recovery_area并不启用归档操作,则模式设置如下:
SQL> archive log
list;
Database log
modeNo Archive Mode
Automatic
archivalDisabled
Archive
destinationUSE_DB_RECOVERY_FILE_DEST
Oldest online log
sequence4
Current log
sequence6
这里的USE_DB_RECOVERY_FILE_DEST指的是,当数据库创建时如果选用flash_recovery_area的默认路径,则个如下:
SQL> show
parameter db_recovery_file_dest
NAMETYPEVALUE
------------------------------------
----------- ------------------------------
db_recovery_file_deststring/opt/oracle/flash_recovery_are
a
db_recovery_file_dest_sizebig integer 2G
该路径建库是也可以自定义,当然建库完毕后也可以如下命令修改:
SQL> alter system
set db_recovery_file_dest='/opt/backup' scope=spfile;
System altered.
SQL> show
parameter db_recovery_file_dest;
NAMETYPEVALUE
------------------------------------
----------- ------------------------------
db_recovery_file_deststring/opt/oracle
db_recovery_file_dest_sizebig integer 2G
修改后,实际效果是新生成的archivelog已经在新路径下存储,
但是flashback缺仍然在原来的路径下生成,因此整个修改过程应该如下:
1 alter system set
db_recovery_file_dest='xxx' scope=spfile;
2 shutdown
immediate;
3 startup mount
4 alter database flashback off;
5 alter database flashback on;
6 alter database
open;
以上过程中,步骤4和5是必须的;
如果要返回非归档模式,则在mount状态下执行如下命令即可:
SQL>alter database noarchivelog;
3、在Windows+Oracle10g环境:当数据库创建时,如果没有选择flash_recovery_area并不启用归档操作,则模式设置如下:
SQL> archive log
list
数据库日志模式存档模式
自动存档启用
存档终点D:oracleproduct10.2.0db10gRDBMS
最早的联机日志序列0
下一个存档日志序列1
当前日志序列1
修改过程跟Linux环境一样,即关闭数据库,在Nomont状态下:
SQL> alter system
set log_archive_dest_1='location=D:oraclebackuparchive';
系统已更改。
SQL>alter database archivelog;
数据库已更改。
SQL> archive log
list;
数据库日志模式存档模式
自动存档启用
存档终点D:oraclebackuparchive
最早的联机日志序列4
下一个存档日志序列6
当前日志序列6
SQL>
关于在Windows上艰苦时启用flash_recovery_area功能,跟Linux环境一样;
4、DB_RECOVERY_FILE_DEST、log_archive_dest_n、log_archive_dest的说明:
DB_RECOVERY_FILE_DEST参数是默认的flash
recovery area的路径,里面存放有归档日志、闪回日志以及rman的备份文件等文件。如果归档原来不在闪回去,设置归档日志存放在闪回区,可以使用如下命令:
SQL> alter system
set log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST';
System altered.
log_archive_dest_n与DB_RECOVERY_FILE_DEST参数都可以用来存放归档日志,但二者的关系是:不设置log_archive_dest_n时,使用DB_RECOVERY_FILE_DEST来存文件;当设置了log_archive_dest_n时,则使用log_archive_dest_n来存放归档日志。
log_archive_dest_n与log_archive_dest和Log_archive_duplex_dest参数不兼容,如果设置了log_archive_dest参数,需要先将其清空:
SQL> alter system
set log_archive_dest='';