首页 > 数据库 > Oracle > Oracle 归档和非归档模式之间的切换
Oracle 数据运行模式有 归档和非归档模式两种,数据库安装后的默认情况及相互切换方法如下:
1、在Linux4.7+Oracle10g环境:当数据库创建时,如果没有选择flash_recovery_area并不启用归档操作,则模式设置如下:
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /opt/oracle/product/10.2.0/dbs/arch
Oldest online log sequence 15
Current log sequence 17
SQL>
[@more@]要改变为归档模式并改变默认的归档文件路径的具体操作步骤如下:
在操作系统创建归档所需的独立目录,如果放到默认目录,则该步骤不用执行:
[root@dbserv ~]# cd /opt/
[root@dbserv opt]# mkdir backup
[root@dbserv opt]# chown -R oracle:oinstall backup/
[root@dbserv opt]# 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 mode No Archive Mode
Automatic archival Disabled
Archive destination /opt/oracle/product/10.2.0/dbs/arch
Oldest online log sequence 15
Current log sequence 17
更改默认归档路径并将数据库改为归档模式(要注意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 mode Archive Mode
Automatic archival Enabled
Archive destination /opt/backup
Oldest online log sequence 15
Next log sequence to archive 17
Current log sequence 17
如果要返回非归档模式,则在mount状态下执行如下命令即可:
SQL> alter database noarchivelog;
2、在Linux4.7+Oracle10g环境:当数据库创建时,如果选择flash_recovery_area并不启用归档操作,则模式设置如下:
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 4
Current log sequence 6
这里的USE_DB_RECOVERY_FILE_DEST指的是,当数据库创建时如果选用flash_recovery_area的默认路径,则个如下:
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /opt/oracle/flash_recovery_are
a
db_recovery_file_dest_size big integer 2G
该路径建库是也可以自定义,当然建库完毕后也可以如下命令修改:
SQL> alter system set db_recovery_file_dest='/opt/backup' scope=spfile;
System altered.
SQL> show parameter db_recovery_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /opt/oracle
db_recovery_file_dest_size big 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='';
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18841027/viewspace-1058473/ ,如需转载,请注明出处,否则将追究法律责任。