在默认情况下,数据库日志模式切换到归档模式后,归档日志的存储路径并没有配置,oracle默认使用一个“快速恢复区”的存储位置,可以通过archive log list查看
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 14
Next log sequence to archive 18
Current log sequence 18
首先,oracle可以通过下列一组初始化参数指定两个归档路径
log_archive_dest
log_archive_duplex_dest
例如:
sql>alter system set log_archive_dest='/u01/arch';
sql>alter system set log_archive_duplex_dest='/u01/arch2';
除此之外,oracle还提供了另外一组初始化参数设置log_archive_dest_n(n=1~31),数据库归档时,可以最多产生31个相同的归档日志文件,保证这些归档日志文件的安全,不同的是,这组参数与上组不能同时使用,log_archive_dest_n指定的存储位置既可以是本地目录,也可以是一个ASM磁盘组,还可以是另一个数据库服务器,本地目录的格式为"location=本地目录",ASM磁盘组的指定格式为location=+磁盘组名称",例如location=+DATA(DATA是ASM磁盘组的名称),另外一个数据库服务器的指定格式为"service="服务名称"例如:
log_archive_dest_1="location=/u01/arch"
log_archive_dest_2="location=/u01/arch2"
log_archive_dest_3="service=backup"
另外oracle提供31个对应的初始化参数log_archive_dest_state_n 用于分别指定31个归档路径的状态,如果这些参数的值为enable,表明管理员希望数据库使用其位置,如果参数值为defer,则表明暂时不使用对应的归档位置。归档日志文件的名字不能重复,在命名中必须同时使用三个变量,即%S,%T,%R(%S代表重做日志组的sqluence的编号,总共10位,从左边补零;%T,代表重做日志组的thread编号,总共4位,%R代表数据库最近一次以resetlogs方式打开的时间戳,总共10位,左边补0,如果是小写则不补0)
例如:
sql>alter system set log_archive_format='ARC%S_%R.%T' SCOPE=SPFILE;
下面是更改log_archive_dest时报ORA-02097 ORA-16018错误的过程及解决办法:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 14
Next log sequence to archive 18
Current log sequence 18
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_2 string
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
log_archive_duplex_dest string
log_archive_format string %t_%s_%r.dbf
log_archive_local_first boolean TRUE
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
SQL> alter system set log_archive_dest="/u01oracle/arch";
alter system set log_archive_dest="/u01oracle/arch"
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST
SQL> show parameter pfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/oracle/app/oracle/product
/10.2.0/dbhome_1/dbs/spfilepro
d.ora
SQL> create pfile='/u01/init.ora' from spfile;
File created.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
[oracle@XXXX u01]$ vi /u01/init.ora
[oracle@XXXX u01]$ cat /u01/init.ora
prod.__db_cache_size=188743680
prod.__java_pool_size=4194304
prod.__large_pool_size=4194304
prod.__shared_pool_size=79691776
prod.__streams_pool_size=0
*.audit_file_dest='/u01/oracle/app/oracle/admin/prod/adump'
*.background_dump_dest='/u01/oracle/app/oracle/admin/prod/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/oracle/app/oracle/oradata/prod/control01.ctl','/u01/oracle/app/oracle/oradata/prod/control02.ctl','/u01/oracle/app/oracle/oradata/prod/control03.ctl'
*.core_dump_dest='/u01/oracle/app/oracle/admin/prod/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='prod'
#*.db_recovery_file_dest='/u01/oracle/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=prodXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=93323264
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=279969792
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/oracle/app/oracle/admin/prod/udump'
[oracle@XXXX u01]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 25 08:19:16 2017
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> create spfile from pfile='/u01/init.ora';
File created.
SQL> startup
ORACLE instance started.
Total System Global Area 281018368 bytes
Fixed Size 2020192 bytes
Variable Size 88083616 bytes
Database Buffers 188743680 bytes
Redo Buffers 2170880 bytes
Database mounted.
Database opened.
SQL> alter system set log_archive_dest='/u01/arch';
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/arch
Oldest online log sequence 14
Next log sequence to archive 18
Current log sequence 18
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string /u01/arch
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_2 string
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_9 string
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_duplex_dest string
log_archive_format string %t_%s_%r.dbf
log_archive_local_first boolean TRUE
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
SQL>