1 设置数据库为归档模式
作者:沈小然 日期:2014-9-23 地点:北京
1.1 设置归档模式
1)首先查看数据库是否处于归档模式,Oracle数据库默认处于非归档模式下
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 175
Current log sequence 177
上面显示没有处于归档模式,我们设成归档模式
2)更改归档模式,需要在启动模式为mount状态才能设置
关闭数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
启动mount状态
SQL> startup mount
ORACLE instance started.
Total System Global Area 2438529024 bytes
Fixed Size 2230792 bytes
Variable Size 1107297784 bytes
Database Buffers 1308622848 bytes
Redo Buffers 20377600 bytes
Database mounted.
更改数据库为归档模式
SQL> alter database archivelog;
Database altered.
切换数据库启动模式为open,数据库可以正常工作了。
SQL> alter database open;
Database altered.
再次查看是否为归档模式,是否开启自动归档,默认归档文件保存位置
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 181
Next log sequence to archive 183
Current log sequence 183
默认归档文件保存位置在/u01/app/oracle/admin/test/pfile/init.ora.7222014134227文件中的
db_recovery_file_dest="/u01/app/oracle/fast_recovery_area"
归档模式设置完成,重启数据库以后依然是归档模式。
1.2 更改归档日志文件的路径
首先创建归档日志路径,最好放到不同于oracle安装位置的单独分区下。
从Oracle 10g开始可以生成多份一样的归档日志,保存在多个位置以防不测。我们创建两个。
[root@VM oracle]# mkdir /data/oracle/log1
[root@VM oracle]# mkdir /data/oracle/log2
[root@VM oracle]# chown -R oracle.oinstall /data/oracle
SQL> alter system set log_archive_dest_1='location=/data/oracle/log1/archive_log';
System altered.
提示:如果没事先创建归档日志目录,会提示下面的错误
SQL> alter system set log_archive_dest_1='location=/data/oracle/log1/archive_log';
alter system set log_archive_dest_1='location=/data/oracle/log1/archive_log'
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16032: parameter LOG_ARCHIVE_DEST_1 destination string cannot be translated
ORA-07286: sksagdi: cannot obtain device information.
Linux-x86_64 Error: 2: No such file or directory
查看状态
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /data/oracle/log1/archive_log
Oldest online log sequence 181
Next log sequence to archive 183
Current log sequence 183
增加第二个归档日志保存位置
SQL> alter system set log_archive_dest_2='location=/data/oracle/log2/archive_log';
System altered.
查看状态
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /data/oracle/log2/archive_log
Oldest online log sequence 181
Next log sequence to archive 183
Current log sequence 183
提示:只能看到最新的归档目录。
1.3 修改归档日志文件名格式
1)查看生成的默认归档日志文件名
SQL> select name from v$archived_log;
NAME
--------------------------------------------------------------------------------
/data/oracle/log1/archive_log/1_183_856273328.dbf
/data/oracle/log2/archive_log/1_183_856273328.dbf
/data/oracle/log1/archive_log/1_184_856273328.dbf
/data/oracle/log2/archive_log/1_184_856273328.dbf
/data/oracle/log1/archive_log/1_185_856273328.dbf
/data/oracle/log2/archive_log/1_185_856273328.dbf
默认的归档日志文件名如上所示,都是二进制文件。
2)修改归档日志文件名格式
SQL> alter system set log_archive_format="archive_%t_%s_%r.log" scope=spfile;
System altered.
注意:这里文件后缀虽然改成了.log但归档日志文件依然是二进制文件,无法使用vi查看。
%t:重做线程编号
%s:日志序列号
%r:RESETLOGS的ID值
从10g开始,配置归档日志文件格式时,必须带有%s,%t和%r匹配符。
3)手工的方式让Oracle 直接使用下一个日志组,而不管当前使用的日志组是否写满,这样方便我们查看新的归档日志格式是否设置生效。
SQL> alter system switch logfile;
System altered.
SQL> select name from v$archived_log;
NAME
--------------------------------------------------------------------------------
/data/oracle/log1/archive_log/1_183_856273328.dbf
/data/oracle/log2/archive_log/1_183_856273328.dbf
/data/oracle/log1/archive_log/1_184_856273328.dbf
/data/oracle/log2/archive_log/1_184_856273328.dbf
/data/oracle/log1/archive_log/1_185_856273328.dbf
/data/oracle/log2/archive_log/1_185_856273328.dbf
/data/oracle/log1/archive_log/archive_1_186_856273328.log
/data/oracle/log2/archive_log/archive_1_186_856273328.log
8 rows selected.
我们看到新生成了归档日志,设置的格式也生效了。
来源:oschina
链接:https://my.oschina.net/u/86462/blog/317402