Home  >  Article  >  Database  >  Oracle 归档与非归档的切换

Oracle 归档与非归档的切换

WBOY
WBOYOriginal
2016-06-07 17:04:35924browse

Oracle 归档与非归档的切换,对于非归档模式的数据库该为归档模式(主要以Oracle 10g为参考)使用以下步骤: 1. SQLgt; alter s

首先查看数据库现有模式可使用以下语句
select name,log_mode from v$database;
也可以用下面的语句
archive log list;(该方法需要as sysdba)

SQL> archive log list
Database log mode       No Archive Mode
Automatic archival      Disabled
Archive destination      /export/home/Oracle/product/8.1.7/dbs/arch
Oldest online log sequence   28613
Current log sequence     28615

SQL> SELECT NAME,LOG_MODE FROM V$DATABASE;

NAME    LOG_MODE
--------  ------------
BIGSUN   NOARCHIVELOG


对于非归档模式的数据库该为归档模式(主要以Oracle 10g为参考)使用以下步骤:
1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';
该语句含义是确定归档日志的路径,实际上Oracle 10g可以生成多份一样的日志,保存多个位置,以防不测

例如再添加一个日志位置可使用以下语句
SQL>alter system set log_archive_dest_2='location=/oracle/oracle10g/log2/archive_log';

2.关闭数据库
SQL> shutdown immediate

3.启动数据mount状态:
SQL> startup mount;

4、修改数据库为归档模式:
SQL> alter database archivelog;

5、打开数据库,查询:
SQL> alter database open;

修改日志文件命名格式:
SQL> alter system set log_archive_max_processes = 5;
SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;

修改完成后可以查看日志模式是否修改成功!

特别指出的是在Oracle 9i中还要修改参数log_archive_start = true才能生效,oracle 10g中已经废除了该参数,所以不需要设置该参数。

Oracle 9i启动归档
1,sqlplus "/ as sysdba" 在DOS命令行下运行进入SQL管理员操作控制台。
2,shutdown immediate;  关闭ORACLE数据库。
3,startup mount;       启动数据库到mount状态
4,alter database archivelog(noarchivelog); 启用(禁止)归档模式。
5,,alter database open;  打开数据库。
6,archive log list; 查看是否开启了归档模式
7,archive log start(stop);   开启(停止)归档模式。
8, alter system switch logfile; --强制系统进行日志切换,可马上观察到归档日志的产生

归档模式转化为非归档模式
在这里所有的操作要在数据库的那台机器上操作,用SYS用户进行登录,首先设置归档进程关闭。
alter system set log_archive_start=false scope=spfile;
然后关闭数据库
shutdown immediate
再后面把数据库启动到mount的模式
startup mount
关闭flash闪回数据库模式,如果不关闭的话,在后面关闭归档日志的时候就会出现讨厌的ORA-38774错误。
alter database flashback off
接着把数据库改为非归档模式
alter database noarchivelog;
都修改好了以后,然后打开数据库
Alter database open;
察看一下归档日志的空间大小
select * from v$recovery_file_dest;
接着看一下log日志的状态
select * from v$log;
再看一下闪回日志使用状况
select * from v$flash_recovery_area_usage;
这些都没有问题以后,数据库问题就解决了。

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn