oracle运行方式之归档方式与不归档方式的转换

1、了解ORACLE的运行方式

     ORACLE数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复数据库,可以保证不丢失任何已提交的数据;二是不归档方式(NOARCHIVELOG),只能恢复数据库到最近的回收点(冷备份或是逻辑备份)。

    如何改变数据库的运行方式,一般情况下为NOARCHIVELOG方式。当数据库创建好以后,根据我们的需要把需要运行在归档方式的数据库改成ARCHIVELOG方式。

2、查看查看当前数据库是否处于归档模式

    首先要查看归档与不归档方式,需要我们切换用户到oracle用户,使用命令:su - oracle;在使用如下两种方式查看:

  1. select name, log_mode from v$database;

           

            ****  log_mode的值为 NOARCHIVELOG 表示数据库处于非归档模式

           

            ***  log_mode的值为 ARCHIVELOG 表示数据库处于归档模式

     2. archive log list; 

        这种方式需要oracle最高权限(sysdba)

          (1)、进入Sqlplus控制台,命令:sqlplus /nolog;

          (2)、以系统管理员登录,命令:connect /as sysdba;  

扫描二维码关注公众号,回复: 4248263 查看本文章

          (3)、查询当前归档方式,命令:archive log list;

            

               Database log mode 的值为 No Archive Mode;

               Automatic archival 的值为 Disabled,表示当前数据库处于非归档模式

                --------------------- 

               Database log mode 的值为 Archive Mode

               Automatic archival 的值为 Enabled, 表示数据库已开启归档模式

3、将不归档模式改为归档模式(以下命令均在Sqlplus控制台输入)

(1)、关闭数据库,命令:shutdown immediate;

(2)、启动数据库到mount状态,命令:startup mount;

(3)、修改数据库为归档模式,命令:alter database archivelog;

(4)、打开数据库,命令:alter database open;

(5)、查询数据库是否已处于归档模式,命令:archive log list;如果Database log mode 的值为 Archive Mode,并且Automatic archival 的值为 Enabled, 表示数据库已开启归档模式;

(6)、修改日志文件命名格式

    alter system set log_archive_max_processes = 5; 

    alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;

(7)、更改日志文件路径

    alter system set log_archive_dest_1='location=/data/archivelog/orcl';当我们使用archive log list命令显示时,会看到Archive destination的值更改为 /data/archivelog/orcl,

假如有需要,可以生成多份一样的日志,以防不测,在添加一份日志保存位置命令:alter system set log_archive_dest_2='location=/bak/orcl/archive_log';

4、将Oracle数据库设置为非归档模式
1)、关闭数据库 
shutdown immediate 
2)、再后面把数据库启动到mount的模式 
startup mount 
3)、关闭flash闪回数据库模式,如果不关闭的话,在后面关闭归档日志的时候就会出现讨厌的ora-38774错误。 
alter database flashback off 
4)、接着把数据库改为非归档模式 
alter database noarchivelog; 
5)、都修改好了以后,然后打开数据库 
alter database open; 
6)、察看一下归档日志的空间大小 
select * from v$recovery_file_dest; 
接着看一下log日志的状态 
select * from v$log; 
再看一下闪回日志使用状况 
select * from v$flash_recovery_area_usage;

猜你喜欢

转载自my.oschina.net/u/3872757/blog/2961457