Oracle アーカイブログ代替出力先

##概要
アーカイブログ用領域が満杯になると、REDOログをアーカイブすることができなくなり、DBが停止したり更新できなくなる。
それを避けるため、バックアップやアーカイブログのサイズが一定以上になった時に別領域にアーカイブログを出すことが可能。
設定は初期パラメータで行う。

+ 通常はFRA領域にアーカイブログを出力。
+ FRA領域の最大サイズを設定し、それを超える場合に別領域に出力する
+ 出力先を元に戻すには、ファイルを削除してFRA領域を最大サイズ以下にして手動で戻す

##手順
###設定
+ db_recovery_file_dest_size(FRA最大)を900M(テストのため)に設定
+ log_archive_dest1とlog_archive_dest2を設定

```sql
$ sqlplus / as sysdba
SQL> alter system set db_recovery_file_dest_size=900M;
SQL> select space_limit/1024/1024/1024 as "limit(GB)",space_used/1024/1024/1024 as "used(GB)" from v$recovery_file_dest;

 limit(GB)   used(GB)
---------- ----------
 .87890625 .753207684

SQL> alter system set log_archive_dest_2="location=/u01/app/oracle/oradata/datastore/ro121";
SQL> alter system set log_archive_dest_1=
     "location=USE_DB_RECOVERY_FILE_DEST REOPEN=0 MAX_FAILURE=1 ALTERNATE=LOG_ARCHIVE_DEST_2 MANDATORY";
SQL> alter system set log_archive_dest_state_2=alternate;
SQL> set linesize 120;
SQL> show parameter log_archive_dest;

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
log_archive_dest_1                   string                            location=USE_DB_RECOVERY_FILE_
                                                                       DEST REOPEN=0 MAX_FAILURE=1 AL
                                                                       TERNATE=LOG_ARCHIVE_DEST_2 MAN
                                                                       DATORY
log_archive_dest_2                   string                            location=/u01/app/oracle/oradata/datastore/ro121
```

###DBを停止・起動

##切り替えのテスト
###データを登録しアーカイブログを作成
```shell
SQL> create table test1( v1 varchar2(2000) );
SQL> insert into test1 values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
SQL> commit;
SQL> insert into test1 select * from test1;
繰り返して増やす。
適宜アーカイブログをスイッチする。
SQL> alter system switch logfile;
log_archive_dest_2下にアーカイブログ(拡張子はdbf)ができるまで繰り返す。
```

###切り替わったアーカイブログの確認
```
set linesize 200
set pagesize 1000
col name format a110
select recid,name from v$archived_log where name is not null order by 1;

    RECID NAME
---------- --------------------------------------------------------------------------------------------------------------
         3 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_23_fgzh2my6_.arc
         4 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_24_fgzh3649_.arc
         5 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_25_fgzh3r7n_.arc
         6 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_26_fgzh7f7l_.arc
         7 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_27_fgzh8cbq_.arc
         8 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_28_fgzh93r2_.arc
         9 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_29_fgzh9789_.arc
        10 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_30_fgzh9c5g_.arc
        11 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_31_fgzhbxno_.arc
        12 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_32_fgzhc5v1_.arc
        13 /u01/app/oracle/oradata/datastore/ro121/1_33_975257397.dbf
```

###FRA領域を減らす

###領域が開いたことを確認
```sql
SQL> select space_limit/1024/1024/1024 as "limit(GB)",space_used/1024/1024/1024 as "used(GB)" from v$recovery_file_dest;

 limit(GB)   used(GB)
---------- ----------
 .87890625 .145755291
```

###更にアーカイブログを出力
```shell
SQL> alter system switch logfile;
を３回実施してから下記
SQL> select recid,name from v$archived_log where name is not null order by 1;

     RECID NAME
---------- --------------------------------------------------------------------------------------------------------------
         5 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_25_fgzh3r7n_.arc
         6 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_26_fgzh7f7l_.arc
         7 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_27_fgzh8cbq_.arc
         8 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_28_fgzh93r2_.arc
         9 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_29_fgzh9789_.arc
        10 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_30_fgzh9c5g_.arc
        11 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_31_fgzhbxno_.arc
        12 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_32_fgzhc5v1_.arc
        13 /u01/app/oracle/oradata/datastore/ro121/1_33_975257397.dbf
        14 /u01/app/oracle/oradata/datastore/ro121/1_34_975257397.dbf
        15 /u01/app/oracle/oradata/datastore/ro121/1_35_975257397.dbf
        16 /u01/app/oracle/oradata/datastore/ro121/1_36_975257397.dbf
```
FRA領域が空いても出力先は戻らない。

###状況確認
```sql
SQL> select dest_id,status from v$archive_dest_status where dest_id <= 2;

   DEST_ID STATUS
---------- ---------------------------
         1 DEFERRED
         2 VALID
```
+ 1が利用禁止になっている。(show parameterの値とは異なる場合がある。RACの場合各インスタンスで確認必要）

###出力先を戻す
```sql
SQL> alter system set log_archive_dest_state_1=enable;
SQL> alter system set log_archive_dest_state_2=alternate;
SQL> select dest_id,status from v$archive_dest_status where dest_id <= 2;

   DEST_ID STATUS
---------- ---------------------------
         1 VALID
         2 ALTERNATE
```

###確認のため、アーカイブログ出力
```sql
SQL> alter system switch logfile;
SQL> select recid,name from v$archived_log where name is not null order by 1;

     RECID NAME
---------- --------------------------------------------------------------------------------------------------------------
         5 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_25_fgzh3r7n_.arc
         6 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_26_fgzh7f7l_.arc
         7 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_27_fgzh8cbq_.arc
         8 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_28_fgzh93r2_.arc
         9 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_29_fgzh9789_.arc
        10 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_30_fgzh9c5g_.arc
        11 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_31_fgzhbxno_.arc
        12 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_32_fgzhc5v1_.arc
        13 /u01/app/oracle/oradata/datastore/ro121/1_33_975257397.dbf
        14 /u01/app/oracle/oradata/datastore/ro121/1_34_975257397.dbf
        15 /u01/app/oracle/oradata/datastore/ro121/1_35_975257397.dbf
        16 /u01/app/oracle/oradata/datastore/ro121/1_36_975257397.dbf
        17 /u01/app/oracle/fast_recovery_area/datastore/ro121/RO121/archivelog/2018_05_07/o1_mf_1_37_fgzol0g4_.arc
```
+ 17が元の出力先になっている。