oracle开启/关闭归档模式

时间:2022-05-20 04:22:46

1.改变非归档模式到归档模式:   
1)SQL> conn / as sysdba (以DBA身份连接数据库)   
2)SQL> shutdown immediate;(立即关闭数据库)   
3)SQL> startup mount (启动实例并加载数据库,但不打开)   
4)SQL> alter database archivelog; (更改数据库为归档模式)   
5)SQL> alter database open; (打开数据库)   
6)SQL> alter system archive log start; (启用自动归档)   
7)SQL> exit (退出)   

使用RMAN做一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式已经不可用。

SQL> archive log list;
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 8
当前日志序列 10
SQL> select name,log_mode from v$database; NAME LOG_MODE
--------- ------------
ORCL NOARCHIVELOG SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。 Total System Global Area 855982080 bytes
Fixed Size 2180544 bytes
Variable Size 553650752 bytes
Database Buffers 293601280 bytes
Redo Buffers 6549504 bytes
数据库装载完毕。
SQL> alter database archivelog; 数据库已更改。 SQL> alter database open; 数据库已更改。 SQL> alter system archive log start; 系统已更改。 SQL> archive log lit;
SP2-0718: 非法的 ARCHIVE LOG 选项
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 8
下一个存档日志序列 10
当前日志序列 10
SQL>

2.改变归档模式到非归档模式:   
1)SQL>shutdown normal 或shutdown immediate;   
2)SQL>startup mount;   
3)SQL>alter database noarchivelog;
4)SQL>alter database open;

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。 Total System Global Area 855982080 bytes
Fixed Size 2180544 bytes
Variable Size 553650752 bytes
Database Buffers 293601280 bytes
Redo Buffers 6549504 bytes
数据库装载完毕。
SQL> alter database noarchivelog; 数据库已更改。 SQL> alter database open; 数据库已更改。 SQL> archive log list;
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 8
当前日志序列 10
SQL> select name,log_mode from v$database; NAME LOG_MODE
--------- ------------
ORCL NOARCHIVELOG SQL>

3.归档相关命令 
select name,log_mode from v$database;查看归档状态
archive log list;查看归档状态
archive log stop;
archive log start;
archive log list;
show parameters;
show parameters log_archive_start;
show parameters log_archive_max_process; #归档进程数
alter system set log_archive_max_process=5; #将归档进程数改为5
select * from v$bgprocess; #检察后台进程

  执行手动归档:

(1)对所有没有归档的重做日志进行归档:

通过ALTER SYSTEM ARCHIVE LOG ALL;

(2)当前的重做日志文件进行归档:

ALTER SYSTEM ARCHIVE CURRENT

(3)指定日志序列号的重做日志文件进行归档

ALTER SYSTEM ARCHIVE LOG SEQUCNE 56;

(4)指定日志组编号的重做日志文件进行归档

ALTER SYSTEM ARCHIVE LOG GROUP 2

(5)指定联机的重做日志文件进行归档

ALTER SYSTEM ARCHIVE LOG

LOGFILE 'D:\oracle\oradata\work\REDO01.LOG '

(6) 将下一个没有归档的重做日志文件组进行归档:

ALTER SYSTEM ARCHIVE LOG NEXT
4.指定归档日志文件路径:

动态修改归档路径:
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';

也可以把联机重做日志归档到远程机器上,如:log_archive_dest_3='SERVICE=standby1';

或是修改初始何参数文件pfile,加入log_archive_dest_1='location=/oracle/oracle10g/……'

5、归档默认格式

SQL> show parameter log_archive_format;     

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_format string %t_%s_%r.dbf

%t表示Thread Number      %表示指定日志序列号     %r表示重置日志的ID resetlogs ID.

6、查看数据库中的归档进程

SQL> select * from v$bgprocess where paddr<>'' and name like '%ARC%';

PADDR              PSERIAL# NAME  DESCRIPTION                                                           ERROR
---------------- ---------- ----- ---------------------------------------------------------------- ----------
00000000DC1F6190 1 ARC0 Archival Process 0 0
00000000DF1CD448 1 ARC1 Archival Process 1 0
00000000DC1F6978 1 ARC2 Archival Process 2 448