1、了解ORACLE的运行方式
ORACLE数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复数据库,可以保证不丢失任何已提交的数据;二是不归档方式(NOARCHIVELOG),只能恢复数据库到最近的回收点(冷备份或是逻辑备份)。
如何改变数据库的运行方式,一般情况下为NOARCHIVELOG方式。当数据库创建好以后,根据我们的需要把需要运行在归档方式的数据库改成ARCHIVELOG方式。
2、查看查看当前数据库是否处于归档模式
首先要查看归档与不归档方式,需要我们切换用户到oracle用户,使用命令:su - oracle;在使用如下两种方式查看:
- 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;
(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;