技術ブログ
技術ブログ
目次
Oracle ACEの渡部です。コーソルが最近力を入れている製品である Dbvisit Standby(以下Dbvisit)は、Oracle Databaseの基本スタンバイ機能をベースにした製品です。
基本スタンバイ機能はなかなか便利な機能ですが、Dbvisitに代表される支援ツールを使わないと、手順が複雑で導入・運用しずらいという問題点があります。 このエントリでは、Oracle Databaseの基本スタンバイについて、スタンバイデータベースの構築手順、ログ転送→適用の手順、スイッチオーバーの手順、フェイルオーバーの手順をまとめます。 かなり面倒なことがわかるはずです。
なお、Dbvisitを導入すれば、この問題点は解決されます。 ;-P
支援ツールを使用しない基本スタンバイ運用における、スタンバイデータベースの構築手順を以下に示します。
SQL> -- ARCHIVELOG設定
SQL> ALTER DATABASE ARCHIVELOG;
Database altered.
SQL> -- FORCE LOGGING設定
SQL> ALTER DATABASE FORCE LOGGING;
Database altered.
SQL> SELECT log_mode, force_logging FROM v$database;
LOG_MODE FORCE_LOGGING
------------ ---------------------------------------
ARCHIVELOG NO
RMAN> run {
2> allocate channel c1 device type disk format '/var/tmp/oracle-backup/%U';
3> backup as compressed backupset full database plus archivelog;
4> release channel c1;
5> }
released channel: ORA_DISK_1
allocated channel: c1
channel c1: SID=271 device type=DISK
Starting backup at 29-MAY-19
current log archived
channel c1: starting compressed archived log backup set
channel c1: specifying archived log(s) in backup set
input archived log thread=1 sequence=18 RECID=18 STAMP=1009538421
channel c1: starting piece 1 at 29-MAY-19
channel c1: finished piece 1 at 29-MAY-19
piece handle=/var/tmp/oracle-backup/1cu2olbl_1_1 tag=TAG20190529T112021 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 29-MAY-19
Starting backup at 29-MAY-19
channel c1: starting compressed full datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/dvt8c2b1/system01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/dvt8c2b1/sysaux01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/dvt8c2b1/undotbs01.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/dvt8c2b1/users01.dbf
channel c1: starting piece 1 at 29-MAY-19
channel c1: finished piece 1 at 29-MAY-19
piece handle=/var/tmp/oracle-backup/1du2olbn_1_1 tag=TAG20190529T112023 comment=NONE
channel c1: backup set complete, elapsed time: 00:01:05
Finished backup at 29-MAY-19
Starting backup at 29-MAY-19
current log archived
channel c1: starting compressed archived log backup set
channel c1: specifying archived log(s) in backup set
input archived log thread=1 sequence=19 RECID=19 STAMP=1009538488
channel c1: starting piece 1 at 29-MAY-19
channel c1: finished piece 1 at 29-MAY-19
piece handle=/var/tmp/oracle-backup/1eu2oldo_1_1 tag=TAG20190529T112128 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 29-MAY-19
Starting Control File and SPFILE Autobackup at 29-MAY-19
piece handle=/u01/app/oracle/product/12.2.0/dbhome_1/dbs/c-306897338-20190529-09 comment=NONE
Finished Control File and SPFILE Autobackup at 29-MAY-19
released channel: c1
$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 29 11:27:02 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
SQL> alter database create standby controlfile as '/var/tmp/oracle-work/stndby_control.ctl';
Database altered.
SQL> create pfile='/var/tmp/oracle-work/init.ora' from spfile;
File created.
$ scp /var/tmp/oracle-backup/* oracle@ldvt8c2bs:/var/tmp/oracle-backup/
$ scp /var/tmp/oracle-work/stndby_control.ctl oracle@ldvt8c2bs:/u01/app/oracle/oradata/dvt8c2b1/control01.ctl
$ scp /var/tmp/oracle-work/stndby_control.ctl oracle@ldvt8c2bs:/u01/app/oracle/oradata/dvt8c2b1/control02.ctl
$ scp /var/tmp/oracle-work/init.ora oracle@ldvt8c2bs:$ORACLE_HOME/dbs/
$ scp $ORACLE_HOME/dbs/orapw* oracle@ldvt8c2bs:$ORACLE_HOME/dbs/
以後はスタンバイ側で実行
$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 29 11:28:52 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile=$ORACLE_HOME/dbs/init.ora;
ORACLE instance started.
Total System Global Area 1895825408 bytes
Fixed Size 8622048 bytes
Variable Size 570425376 bytes
Database Buffers 1308622848 bytes
Redo Buffers 8155136 bytes
SQL> create spfile from pfile='$ORACLE_HOME/dbs/init.ora';
File created.
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1895825408 bytes
Fixed Size 8622048 bytes
Variable Size 570425376 bytes
Database Buffers 1308622848 bytes
Redo Buffers 8155136 bytes
Database mounted.
$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Wed May 29 11:29:43 2019
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: DVT8C2B1 (DBID=306897338, not open)
RMAN> crosscheck backup;
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=259 device type=DISK
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/var/tmp/oracle-backup/1cu2olbl_1_1 RECID=44 STAMP=1009538421
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/var/tmp/oracle-backup/1du2olbn_1_1 RECID=45 STAMP=1009538423
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/var/tmp/oracle-backup/1eu2oldo_1_1 RECID=46 STAMP=1009538488
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/u01/app/oracle/product/12.2.0/dbhome_1/dbs/c-306897338-20190529-09 RECID=47 STAMP=1009538490
Crosschecked 4 objects
RMAN> delete noprompt force expired backup;
using channel ORA_DISK_1
List of Backup Pieces
BP Key BS Key Pc# Cp# Status Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
47 47 1 1 EXPIRED DISK /u01/app/oracle/product/12.2.0/dbhome_1/dbs/c-306897338-20190529-09
deleted backup piece
backup piece handle=/u01/app/oracle/product/12.2.0/dbhome_1/dbs/c-306897338-20190529-09 RECID=47 STAMP=1009538490
Deleted 1 EXPIRED objects
RMAN> catalog start with '/var/tmp/oracle-backup/';
searching for all files that match the pattern /var/tmp/oracle-backup/
no files found to be unknown to the database
RMAN> restore database;
Starting restore at 29-MAY-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=259 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/dvt8c2b1/system01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/dvt8c2b1/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/dvt8c2b1/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/dvt8c2b1/users01.dbf
channel ORA_DISK_1: reading from backup piece /var/tmp/oracle-backup/1du2olbn_1_1
channel ORA_DISK_1: piece handle=/var/tmp/oracle-backup/1du2olbn_1_1 tag=TAG20190529T112023
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:15
Finished restore at 29-MAY-19
RMAN> recover database;
Starting recover at 29-MAY-19
using channel ORA_DISK_1
starting media recovery
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=19
channel ORA_DISK_1: reading from backup piece /var/tmp/oracle-backup/1eu2oldo_1_1
channel ORA_DISK_1: piece handle=/var/tmp/oracle-backup/1eu2oldo_1_1 tag=TAG20190529T112128
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/app/oracle/arch/1_19_1009044989.dbf thread=1 sequence=19
media recovery complete, elapsed time: 00:00:00
Finished recover at 29-MAY-19
RMAN> shutdown immediate
database dismounted
Oracle instance shut down
RMAN> startup nomount
connected to target database (not started)
Oracle instance started
Total System Global Area 1895825408 bytes
Fixed Size 8622048 bytes
Variable Size 570425376 bytes
Database Buffers 1308622848 bytes
Redo Buffers 8155136 bytes
RMAN> ALTER DATABASE MOUNT STANDBY DATABASE;
Statement processed
支援ツールを使用しない基本スタンバイ運用における、ログ転送→適用の手順を以下に示します。
$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 29 11:35:11 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
SQL> alter system switch logfile;
System altered.
SQL> set lines 160
SQL> set pages 1000
SQL> col NAME format a120
SQL> SELECT SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE#, NAME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# NAME
---------- ------------- ------------ ------------------------------------------------------------------------------------------------------------------------
1 1408558 1424047
2 1424047 1424961
3 1424961 1425483
4 1425483 1425718
5 1425718 1425728
6 1425728 1426259
7 1426259 1483182
8 1483182 1483232
9 1483232 1483292
10 1483292 1483344
11 1483344 1483702
12 1483702 1483806
13 1483806 1484173
14 1484173 1484208
15 1484208 1484532
16 1484532 1484569
17 1484569 1485123
18 1485123 1485347 /u01/app/oracle/arch/1_18_1009044989.dbf
19 1485347 1485382 /u01/app/oracle/arch/1_19_1009044989.dbf
20 1485382 1485761 /u01/app/oracle/arch/1_20_1009044989.dbf
20 rows selected.
$ scp /u01/app/oracle/arch/* oracle@ldvt8c2bs:/u01/app/oracle/arch/
以後はスタンバイ側で実行
$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 29 11:35:41 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
SQL> SELECT MAX(SEQUENCE#) FROM V$LOG_HISTORY;
MAX(SEQUENCE#)
--------------
19
SQL> RECOVER STANDBY DATABASE UNTIL CANCEL;
ORA-00279: change 1485382 generated at 05/29/2019 11:21:28 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/arch/1_20_1009044989.dbf
ORA-00280: change 1485382 for thread 1 is in sequence #20
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00279: change 1485761 generated at 05/29/2019 11:35:14 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/arch/1_21_1009044989.dbf
ORA-00280: change 1485761 for thread 1 is in sequence #21
ORA-00278: log file '/u01/app/oracle/arch/1_20_1009044989.dbf' no longer needed
for this recovery
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00308: cannot open archived log '/u01/app/oracle/arch/1_21_1009044989.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
SQL> SELECT MAX(SEQUENCE#) FROM V$LOG_HISTORY;
MAX(SEQUENCE#)
--------------
20
SQL>
スイッチオーバーの手順については概要のみをスライドで示すだけにとどめさせていただきます・・・ ぶっちゃけかなり面倒です。
フェイルオーバーの手順についてもスライドで示すだけにとどめさせていただきます。フェイルオーバーは、プライマリ側に障害が発生した場合に実行する操作であり、言い換えれば、「もはやプライマリ側は存在しない」という前提でおこなう作業ですので、プライマリ側と一切連携を取る必要がない(というか、取りようがない)ため、手順はシンプルです。
Dbvisit Standby は歴史が長く、全世界および日本での導入実績も多数ある製品です。 安心してご利用いただけます。
2021年5月時点で、国内での最新バージョンは 9.0.20 ですが、近日中に新バージョン 10のリリースが予定されています。
バージョン10の主な新機能は以下の通りです。
コーソルはDbvisit Standbyの一次代理店で、Dbvisit Standbyの製品販売を行います。 加えて、Dbvisitの導入およびサポートを行います。
コーソルでは、Dbvisitを用いたOracle Standard Edition向け災害対策環境構築サービスを提供しています。
SIer様、販社様がDbvisit Standbyを販売することも可能です。
コーソルからDbvisit Standbyを購入いただけると、認定資格Dbvisit Standby Certified Associate取得者数12名、ORACLE MASTER Platinum 単年取得者数7年連続No.1(2014年度~2020年度)という指標に裏付けされた高い技術力により責任もって製品を導入いたします。また、導入後も品質の高い製品サポートをご提供いたします。
総勢12名のエンジニアが認定資格Dbvisit Standby Certified Associateを取得
Dbvisitに関わる総勢12名のエンジニアが認定資格Dbvisit Standby Certified Associateを取得しました!
Dbvisitに関する技術的な知見をセミナーおよび技術ブログで発信
Oracle AWS移行セミナー Dbvisit on EC2セッション骨子(2020年7月22日実施)
3/11開催SIOS社共催Oracle SEHA+Dbvisitセミナーのお知らせ
3/3(水) お昼のDbvisit + Insight Qubeウェビナーのお知らせ
11/10-12 db tech showcase コーソル担当セッションのご紹介 #dbts2020
Dbvisit関連ブログ記事を多数公開
Dbvisit Standby Snapshot Option – Dbvisit 9新機能
Dbvisitとカスタムスクリプトによる基本スタンバイ管理・運用の比較
Dbvisit : スイッチオーバーとフェイルオーバーの比較
スタンバイDBを再作成せずにStandby ExpressからDbvisit Standbyへ変更する方法
Oracle ASM RACからシングル構成のスタンバイDBを作成する – Dbvisit
REDO欠落時のブロック破損時のスタンバイDB再作成を回避する / Dbvisitの同期機能
Dbvisit Standbyのアーキクチャと管理コンソール操作
Oracle Database基本スタンバイの各種手順(スタンバイDB構築、ログ転送→適用、スイッチオーバー、フェイルオーバー)
Oracle Database Standard Editionの拠点災害対策ソリューションとは (基本スタンバイとDbvisit)
7年連続ORACLE MASTER Platinum取得者数No.1! Oracle Certification Award 2020
Dbvisit Standbyと併せて使用される、Oracle Databaseについても製品販売、製品サポート、製品の導入を行います。また、リモート回線経由でスポット的なDBA実務を行うリモートDBAサービス、コンサルティングやベンダコントロールを含めたOracle Databaseプロフェッショナルサービスを時間制で提供する時間制DBAサービスも提供しています。
非常駐型データベース運用サービス