tech_memo / ORACLE / ArchiveLog


tech_memo/ORACLE

アーカイブログ出力先

  • 出力先設定情報
    select dest_id,dest_name,destination from v$archive_dest;
  • 出力済みのアーカイブログファイルの情報
    SELECT RECID,THREAD#,SEQUENCE#,NAME,ARCHIVED FROM V$ARCHIVED_LOG ORDER BY 1;

アーカイブログモード切替

  • インスタンス停止
    SQL> shutdown immediate
  • マウント起動
    SQL> startup mount
  • アーカイブログモード設定
    • アーカイブON
      SQL> alter database archivelog;
    • アーカイブOFF
      SQL> alter database noarchivelog;
  • インスタンスオープン
    SQL> alter database open;
  • アーカイブモード確認
    SQL> select log_mode from v$database;

アーカイブログモード確認

  • いくつか方法はあるが、sqlだと以下
    select log_mode from v$database;
  • コマンドの場合
    SQL> archive log list
    Database log mode              No Archive Mode
    Automatic archival             Disabled
    Archive destination            USE_DB_RECOVERY_FILE_DEST
    Oldest online log sequence     244
    Current log sequence           245

フラッシュリカバリ

  • フラッシュリカバリの有効化確認
    V$DATABASEビューのFLASHBACK_ON列が「YES」になっていることで確認できます。
    
    SQL> select FLASHBACK_ON from v$database;
    
    FLASHBACK_ON
    ------------------
    NO
  • 初期化パラメータ
    • db_recovery_file_destとlog_archive_destの両方が指定されている場合は、フラッシュリカバリは適用されない。
      SQL> show parameter db_reco
      
      NAME                                 TYPE        VALUE
      ------------------------------------ ----------- ------------------------------
      db_recovery_file_dest                string      +DATA
      db_recovery_file_dest_size           big integer 4977M
  • 情報取得
    select * from v$recovery_file_dest
    
    NAME                           SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
    ------------------------------ ----------- ---------- ----------------- ---------------
    +DATA                           5218762752          0                 0               0

アーカイブ削除方法

  • フラッシュリカバリを使用している場合はRMANで消さないといけない。(ASM、Filesystem共通)
    racle@racserver1 ~]$ rman
    
    Recovery Manager: Release 11.2.0.2.0 - Production on Fri Jun 1 19:20:06 2012
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    oRMAN> connect target sys
    
    target database Password:
    connected to target database: RAC (DBID=2366920219)
    using target database control file instead of recovery catalog
    
    RMAN> delete archivelog all;
    
    released channel: ORA_DISK_1
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=1237 instance=rac1 device type=DISK
    List of Archived Log Copies for database with db_unique_name RAC
    =====================================================================
     
    Key     Thrd Seq     S Low Time
    ------- ---- ------- - ---------
    3       1    245     A 11-MAY-12
            Name: +DATA/rac/archivelog/2012_05_16/thread_1_seq_245.444.783460301
    
    Do you really want to delete the above objects (enter YES or NO)? YES
    deleted archived log
    archived log file name=+DATA/rac/archivelog/2012_05_16/thread_1_seq_245.444.783460301 RECID=3 STAMP=783460374
    

非フラッシュリカバリ

  • 初期化パラメータ + 出力先
    • log_archive_destのVALUEに、出力先を設定する。この値と、db_recovery_file_dest、こちら(非フラッシュリカバリ)が適用される。
      SQL> show parameter LOG_ARCHIVE_DEST
      
      NAME                                 TYPE        VALUE
      ------------------------------------ ----------- ------------------------------
      log_archive_dest                     string
      log_archive_dest_1                   string
      log_archive_dest_2                   string
      log_archive_dest_state_1             string      enable
      log_archive_dest_state_2             string      enable

ASM上のアーカイブファイル削除SQL作成SQL

  • 非フラッシュリカバリのみ。もしフラッシュリカバリモードで消してしまった場合は、RMANでcrosscheckを行い、RMANでdeleteする。
    select 'alter diskgroup '||gname|| ' drop file '''||
    full_alias_path ||''''||' ;' as "drop sql"
    from
    (select concat('+'||gname, sys_connect_by_path(aname, '/')) full_alias_path,
    gname
    from (select g.name gname, a.parent_index pindex,a.name aname,
    a.reference_index rindex from v$asm_alias a, v$asm_diskgroup g
    where a.group_number = g.group_number)
    start with (mod(pindex, power(2, 24))) = 0
     connect by prior rindex = pindex)
     where full_alias_path like '%ARCHIVELOG%'
     and full_alias_path like '+%/%/%/%/%';

RACでのアーカイブモード切替

  • http://oracle-pub.wikidot.com/rac-manage-arch
  • 1. dbリソースの停止
    [oracle@racserver1 ~]$ srvctl stop database -d rac
  • 2. dbリソースをインスタンス単位で、マウント状態で起動
    [oracle@racserver1 ~]$ srvctl start database -d rac -n racserver1 -o mount
  • 3. DBに接続して、ログモード切替
    [oracle@racserver1 ~]$ sqlplus / as sysdba
     
    SQL> alter database noarchivelog;
    
    Database altered.
  • 4. DBオープン
    SQL> alter database open;
    
    Database altered.
  • 5. 他のインスタンスを起動
     [oracle@racserver1 ~]$ srvctl start database -d rac -n racserver2

log switchの実行

ASM上のアーカイブログ情報の取得

select FILE_NUMBER, SPACE from V$ASM_FILE where type = 'ARCHIVELOG' order by 1;