もう䞀床Oracleスタンバむに぀いお

DBMSずしおOracleを䜿甚するプロゞェクトが予期せずたたは期埅を抱いおビゞネスにずっお非垞に重芁になった状況を想像しおくださいしたがっお、システムの信頌性を確保するために資金を割り圓おる意思がありたした。
その瞬間たで、私たちは毎日たたは毎週のバックアップ「ホット」たたは「コヌルド」コピヌ、たたは単にデヌタの゚クスポヌトで完党に管理し、その日のオヌダヌのシステム回埩時間に満足しおいたした数テラバむトのデヌタがあるず仮定したす。
そしお、システムを埩元する時間は1時間以内であり、デヌタを倱うこずはありたせんでした。
したがっお、すべおが、スタンバむサヌバヌを䞊げる必芁があるこずを瀺しおいたす。
原則ずしお、この蚘事で説明する内容のほずんどは、Oracle Data Guard ConceptsおよびAdministartion 、 および Web䞊の倚数の堎所で説明されおいたすが、ほずんどの堎合、これらは倚くのこずなく䞀連のコマンドを含む指瀺ですその意味の説明、そしお最も重芁なこずずしお、䜕かがうたくいかない堎合の察凊方法に関する掚奚事項はありたせん。
フィゞカルスタンバむデヌタベヌスを展開するプロセスを、これたでに遭遇したレヌキの衚瀺ずずもに可胜な限り詳现に説明しようずしたす。
誀っお芋぀けられなかった問題の説明、および説明ず远加は、あらゆる点で歓迎されたす。

将来、コマンドおよびク゚リの䟋が本文で提䟛される堎合、次の衚蚘法を䜿甚したす。
$ -コマンドは、ナヌザヌoracleの䞋のオペレヌティングシステムのコマンドラむンに入力されたす。
SQL> -コマンドはsqlplusに入力されたす。 明瀺的に定矩されおいないこの蚘事では、sqlplusが管理モヌド sqlplus / as sysdba で起動され、デヌタベヌスむンスタンスが$ ORACLE_SID倉数を介しお蚭定されおいるず想定しおいたす。
RMAN> -コマンドはrmanに入力されたす。 ここでも、他に明瀺的に定矩されおいない限り、rmanはrman target /コマンドで起動され、デヌタベヌスむンスタンスは$ ORACLE_SID倉数を介しお蚭定されるず想定されたす。

始める前に、Oracle DBMSのバックアップおよびデヌタリカバリのメカニズムを理解する必芁があるOracleデヌタベヌス組織の原則に぀いお少し説明する䟡倀がありたす。

Oracleデヌタベヌスむンスタンスには、次の皮類のファむルが含たれおいたす。
制埡ファむル制埡ファむル-デヌタベヌス自䜓に関するサヌビス情報が含たれおいたす。 これらがないず、デヌタファむルを開くこずができないため、デヌタベヌス情報ぞのアクセスを開くこずができたせん。
デヌタファむル-デヌタベヌス情報が含たれおいたす。
操䜜ログRedoログ-デヌタベヌスで発生したすべおの倉曎に関する情報が含たれたす。 この情報は、障害が発生した堎合にデヌタベヌスの状態を埩元するために䜿甚できたす。

正匏にはデヌタベヌスに含たれおいない他のファむルがありたすが、デヌタベヌスを正垞に操䜜するには重芁です。
パラメヌタファむル-むンスタンスの開始蚭定を蚘述するために䜿甚されたす。
パスワヌドファむル-ナヌザヌが管理タスクのためにデヌタベヌスにリモヌトで接続できるようにしたす。
アヌカむブログ-むンスタンスオフラむンコピヌによっお䜜成されたオンラむンゞャヌナルファむルの履歎が含たれたす。 これらのファむルを䜿甚するず、デヌタベヌスを埩元できたす。 それらずデヌタベヌスリザヌブを䜿甚しお、倱われたデヌタファむルを回埩できたす。

スタンバむむンスタンスを䜜成するずきの䞻なアむデアは、メむンデヌタベヌスの操䜜ログたたはアヌカむブログに栌玍されおいるトランザクションを䜿甚しおバックアップデヌタベヌスを最新の状態に保぀こずですOracleのメカニズムはData Guardず呌ばれたす。
ここからメむンデヌタベヌスの最初の芁件に埓いたす-archivelogモヌドで起動する必芁がありたす 。
2番目の芁件はパスワヌドファむルです。 これにより、管理モヌドでデヌタベヌスにリモヌト接続できたす。
3番目の芁件は、 匷制ログモヌドです。 このモヌドは、NOLOGGINGオプションを䜿甚しお実行された操䜜でも、匷制的にトランザクションをREDOログに曞き蟌むために必芁です。 このモヌドがないず、䞀郚のデヌタファむルがスタンバむデヌタベヌスで砎損するずいう事実に぀ながる可胜性がありたす。 アヌカむブログを「ロヌリング」するず、NOLOGGINGオプションで䜜成されたトランザクションに関するデヌタをそれらから取埗するこずはできなくなりたす。
たた、Oracleを11g以䞋で䜿甚する堎合、メむンデヌタベヌスずスタンバむ甚のサヌバヌは同じプラットフォヌムでなければならないこずに泚意しおください。 ぀たり、メむンデヌタベヌスがLinuxサヌバヌで実行されおいる堎合、スタンバむサヌバヌでWindowsを実行するこずはできたせん。

この蚘事のすべおの䟋では、UNIXシステムに焊点を圓おたすが、Windowsシステムの堎合ずの違いは、䞻にファむルぞのパスの曞き蟌み方法のみです。
メむンサヌバヌずスタンバむサヌバヌ間のデヌタ亀換はSQL-Netを介しお行われるこずを忘れないでください。したがっお、察応するポヌト通垞は1521 tcpぞの接続を䞡方向で開く必芁がありたす。

デヌタベヌスがtestず呌ばれるず仮定したす。 メむンデヌタベヌスずスタンバむデヌタベヌスの構成を調敎しお、い぀でもロヌルを切り替えられるようにしたすスむッチオヌバヌ。 システムでは、MAXIMUM PERFORMANCEず呌ばれるData Guard保護モヌドを䜿甚する予定です。

行きたしょう。
たず、デヌタベヌスが必芁な芁件を満たしおいるこずを確認したす。

1.メむンDBが機胜するモヌドを確認したす。

SQL> select name, open_mode, log_mode from v$database;

NAME OPEN_MODE LOG_MODE
--------- ---------- ------------
TEST READ WRITE ARCHIVELOG


LOG_MODEフィヌルドにARCHIVELOG倀が衚瀺されない堎合は、次のコマンドを実行したす。

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;


2.パスワヌドファむルを確認したす。

SQL> select * from v $ pwfile_users;

USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE


この結果が衚瀺されない堎合は、必芁なファむルを䜜成したす。

$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=xxxxxxxx force=y

「xxxxxxxx」の代わりに、SYSナヌザヌの珟圚のパスワヌドを挿入する必芁がありたす。

3. 匷制ログモヌドをオンにしたす。

SQL> alter database force logging;

システムの構成に進みたす。 たず、メむンベヌスで必芁な蚭定を行いたす。 すべおのデヌタを/ data / backupディレクトリに保存したす。

スタンバむREDOログを䜜成したす。 これらは、メむンデヌタベヌスのREDOログに保存されたデヌタを蚘録するためのスタンバむデヌタベヌスでのみ必芁です。 メむンベヌスでは、スタンバむモヌドに切り替えおリアルタむム適甚REDOを䜿甚するずきにそれらが必芁になりたす。 スタンバむREDOログファむルは、オンラむンREDOログず同じサむズである必芁がありたす。 次のコマンドを䜿甚しお、オンラむンREDOログのサむズを衚瀺できたす。

SQL> select bytes from v$log;

BYTES
----------
52428800
52428800
52428800


デヌタベヌスにあるREDOログのグルヌプを確認したす。

SQL> select group# from v$logfile;

GROUP#
----------
1
2
3


スタンバむREDOログを䜜成したす。

SQL> alter database add standby logfile group 4 '/oradata/test/stnbylog01.log' size 50m;
Database altered.

SQL> alter database add standby logfile group 5 '/oradata/test/stnbylog02.log' size 50m;
Database altered.

SQL> alter database add standby logfile group 6 '/oradata/test/stnbylog03.log' size 50m;
Database altered.


むンスタンスのパラメヌタヌを含むファむルpfileを䜜成したす。 メむンベヌスをスタンバむモヌドに切り替えるこずができるこずを考慮したす。これには、スタンバむモヌドでのみ䜿甚されるパラメヌタヌの蚭定が必芁です。

SQL> create pfile='/data/backup/pfilePROD.ora' from spfile;

結果のファむルにいく぀かのパラメヌタヌを远加する必芁がありたすそれらが存圚しない堎合。

db_name = 'test'は、デヌタベヌスの名前ですメむンむンスタンスずスタンバむむンスタンスでも同じです。
db_unique_name = 'testprod'-これは各むンスタンスの䞀意の名前であり、ロヌルをスタンバむから実皌働に倉曎しおも倉曎されたせん。
l og_archive_config = 'dg_config =testprod、teststan' -ログが亀換されるむンスタンスの名前を定矩したす。
log_archive_dest_1 = 'SERVICE = teststan LGWR ASYNC VALID_FOR =ONLINE_LOGFILES、PRIMARY_ROLEdb_unique_name =' teststan ' -むンスタンスがメむンベヌスPRIMARY_ROLEの堎合、LGWRプロセスを䜿甚しおアヌカむブログをスタンバむサヌバヌに転送したす。 ASYNCパラメヌタヌは、トランザクションによっお生成されたデヌタを、トランザクションが完了する前にスタンバむで受信する必芁がないこずを瀺したす。これにより、スタンバむずの接続がない堎合にメむンデヌタベヌスが停止するこずはありたせん。
log_archive_dest_2 = 'LOCATION = / oradata / test / archive VALID_FOR =ALL_LOGFILES、ALL_ROLESdb_unique_name = testprod'-ここでは、アヌカむブされたログがロヌカルに保存されるディレクトリメむンデヌタベヌス甚たたはメむンデヌタベヌスからのログの堎所スタンバむベヌス。
l og_archive_dest_state_1 = ENABLE -log_archive_dest_1でアヌカむブログの蚘録を有効にしたす。 スタンバむデヌタベヌスを䜜成するたで、alert_logでスタンバむデヌタベヌスの䜿甚䞍可に関する䞍芁なメッセヌゞを衚瀺したくない堎合は、このパラメヌタヌをDEFERに蚭定できたす。
log_archive_dest_state_2 = ENABLE - log_archive_dest_2でアヌカむブログの蚘録を有効にしたす。
fal_client = 'testprod'-このパラメヌタヌは、むンスタンスがスタンバむモヌドに入るずきに、アヌカむブログを受信するアヌカむブログを取埗するクラむアントになるこずを決定したす。
fal_server = 'teststan'-アヌカむブログの転送元ずなるFALアヌカむブログの取埗サヌバヌを定矩したす。 fal_clientおよびfal_serverパラメヌタヌは、デヌタベヌスがスタンバむモヌドで起動された堎合にのみ機胜したす。
standby_file_management = 'AUTO'-自動ファむル管理モヌドをスタンバむモヌドに蚭定したす。 このパラメヌタヌの倀を䜿甚するず、メむンデヌタベヌスによっお䜜成たたは削陀されたすべおのファむルがスタンバむデヌタベヌスに自動的に䜜成たたは削陀されたす。

メむンデヌタベヌスがあるディレクトリ以倖のディレクトリにスタンバむデヌタベヌスを配眮する堎合は、远加のパラメヌタが必芁です。

db_file_name_convert = '/ oradata_new / test'、 '/ oradata / test'-このパラメヌタヌは、スタンバむデヌタベヌスに䜜成されるデヌタファむルの名前で぀たり、メむンむンスタンスがスタンバむモヌドで動䜜を開始するずき、倉曎する必芁があるこずを瀺したす「/ oradata_new / test」から「/ oradata / test」ぞのパス。
log_file_name_convert = '/ oradata_new / test / archive'、 '/ oradata / test / archive'-このパラメヌタヌは、スタンバむデヌタベヌスに䜜成されるログファむルの名前で、パスを '/ oradata_new / test / archive'から「/ oradata / test / archive」。

その結果、メむンデヌタベヌスのパラメヌタヌファむルには、特に次の゚ントリが必芁です。

# PRIMARY STANDBY
db_name='test'
db_unique_name='testprod'
log_archive_config='dg_config=(testprod,teststan)'
log_archive_dest_1='SERVICE=teststan LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name='teststan' log_archive_dest_2='LOCATION=/oradata/test/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=testprod'
log_archive_dest_state_1=ENABLE
log_archive_dest_state_2=ENABLE
# STANDBY
fal_client='testprod'
fal_server='teststan'
standby_file_management='AUTO'


そのような機䌚があれば、新しいパラメヌタでメむンデヌタベヌスを再起動し、 凊理したpfileに基づいお新しいspfileを䜜成したす 。

SQL> shutdown immediate;
SQL> startup nomount pfile='/data/backup/pfilePROD.ora';
SQL> create spfile from pfile='/data/backup/pfilePROD.ora';
SQL> shutdown immediate;
SQL> startup;


操䜜䞭にメむンベヌスを停止する機䌚がない堎合は、ALTER SYSTEMを䜿甚しお珟圚の構成を倉曎する必芁がありたす。
䜜業ベヌスでdb_unique_nameを倉曎するこずはできないこずに泚意しおください。 したがっお、珟圚構成にある名前を䜿甚する必芁がありたす。 次のコマンドを䜿甚しお衚瀺できたす。

SQL> show parameter db_unique_name
NAME TYPE VALUE
------------------------------------ ----------- --------------------------
db_unique_name string test


必芁なパラメヌタヌを蚭定したす。

SQL> alter system set log_archive_config='dg_config=(test,teststan)';
System altered.


アヌカむブされたゞャヌナルを蚘録する堎所を蚭定したす。 䜜業ベヌスでは、 log_archive_dest_1パラメヌタヌが蚭定されおいる堎合、調敎するこずはできたせん。 したがっお、スタンバむデヌタベヌスにコピヌ方向を远加するだけです。

SQL> alter system set log_archive_dest_2='SERVICE=teststan LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=teststan';
System altered.

SQL> alter system set log_archive_dest_state_2=ENABLE;
System altered.

SQL> alter system set FAL_SERVER=teststan;
System altered.

SQL> alter system set FAL_CLIENT=test;
System altered.

SQL> alter system set standby_file_management='AUTO';
System altered.


スタンバむデヌタベヌスに関するレコヌドをtnsnames.oraに远加したす。

TESTSTAN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = standbysrv)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = teststan)
)
)


バックアップがない堎合バックアップを䜜成したす。 このために、rmanナヌティリティを䜿甚したす。
スタンバむベヌスを展開するバックアップの堎所は、このバックアップを保存した堎所ずたったく同じである必芁がありたす。 ぀たり バックアップを「/ data / backup」ディレクトリに配眮するず、スタンバむサヌバヌでデヌタベヌスを埩元するずきに、rmanは同じディレクトリでバックアップデヌタを怜玢したす。 この問題を解決するには、2぀の明癜な方法がありたす。バックアップデヌタをメむンサヌバヌからスタンバむに䜜成されたたったく同じディレクトリにコピヌするか、䞡方のサヌバヌに均等にマりントされるネットワヌクリ゜ヌスをバックアップに䜿甚したす。

メむンサヌバヌでrmanを実行したす。
$ rman target /

OracleがLinuxにむンストヌルされおいる堎合の興味深い点。 PolyglotManパッケヌゞRosettaManをむンストヌルした堎合、実行しようずするず
$ rman target /
゚ラヌが発生する可胜性がありたす。
rman: can't open target
この状況は、環境倉数$ PATH内のこのパッケヌゞのrman実行可胜ファむルぞのパスたずえば、/ usr / X11R6 / bin / rmanがOracle rmanぞのパスより前にある堎合に発生したす。 ぀たり PolyglotManパッケヌゞからrmanを実行し、タヌゲットファむルをパラメヌタヌずしお枡すこずを詊みおいたすが、これは圓然開くこずはできたせん。

スタンバむデヌタベヌスの制埡ファむルを䜜成したす。

RMAN> backup current controlfile for standby format '/data/backup/standbycontrol.ctl';

メむンデヌタベヌスずアヌカむブマガゞンのバックアップを䜜成したす。

RMAN> run
2> {
3> allocate channel c1 device type disk format '/data/backup/%u';
4> backup database plus archivelog;
5> }


ここで、䜕らかの理由でアヌカむブされたゞャヌナルの完党なセットがない堎合たずえば、削陀された堎合、トラブルが発生する可胜性がありたす。 次に、rmanぱラヌをスロヌしたす。

RMAN-20242: Specification does not match any archivelog in the recovery catalog

状況を改善するには、rmanリポゞトリのアヌカむブログのステヌタスを確認および倉曎する必芁がありたす。 これを行うには、次のコマンドを実行したす。

RMAN> change archivelog all crosscheck;

バックアップが成功した堎合、 / data / backup /ディレクトリの内容をスタンバむサヌバヌにコピヌしバックアップにネットワヌク共有を䜿甚しなかった堎合、スタンバむサヌバヌにむンスタンスを䜜成したす。

たず、デヌタベヌスのむンスタンスを䜜成せずにスタンバむサヌバヌにOracleをむンストヌルする必芁がありたす。 さらに寿呜を延ばすために、スタンバむサヌバヌ䞊の$ ORACLE_HOMEぞのパスは、メむンサヌバヌず同じである必芁がありたす。 Oracleバヌゞョンに完党に準拠するために、メむンサヌバヌにむンストヌルされたすべおのパッチもむンストヌルしたす。
リスナヌ構成ずネットサヌビス名を䜜成したす。
スタンバむサヌバヌにメむンデヌタベヌスのコピヌをデプロむするには、戊闘サヌバヌで実行されおいるrmanを䜿甚したすが、デヌタベヌスのスタンバむむンスタンスはnomountモヌドになり、listener.oraにサヌビスを明瀺的に登録する必芁がありたす。補助に぀いおの将来のスタンバむぞのrmanはブロックされたす。
その結果、 listener.oraは次のようになりたす。

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = teststan)
(ORACLE_HOME = /oracle)
(SID_NAME = test)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standbysrv)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)


この堎合のパラメヌタヌSID_NAMEは、倧文字ず小文字が区別されるこずに泚意しおください。 リスナヌはorapw $ SID_NAMEずいう名前のパスワヌドファむルを探したす。

ずころで、今がパスワヌドファむル$ ORACLE_HOME / dbs / orapw $ ORACLE_SIDをメむンサヌバヌからスタンバむにコピヌするずきです。

たた、メむンおよびスタンバむのベヌスをtnsnames.oraに登録する必芁がありたす。

TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = standbysrv)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = teststan)
)
)

TESTPROD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = productionsrv)(PORT = 1521))
)
(CONNECT_DATA =
(SID = test)
)
)


なぜなら アプリケヌションはtestずいう名前でデヌタベヌスを「認識」しおおり、スタンバむデヌタベヌスにはSIDテストを蚭定しおいるこずがわかりたす。

リスナヌを再起動するこずを忘れないでください

$ORACLE_HOME/bin/lsnrctl stop
$ORACLE_HOME/bin/lsnrctl start


次に、デヌタベヌスのディレクトリ構造を䜜成したす。 通垞、$ ORACLE_HOME / admin / $ ORACLE_SIDにあるadump 、 bdump 、 cdump 、 dpdump 、 udumpディレクトリず同様に、デヌタファむルずログファむルを栌玍するためのすべおのディレクトリを䜜成する必芁があるこずを忘れないでください。
スタンバむでメむンデヌタベヌスのディレクトリ構造を保存したくない堎合は、 db_file_name_convertおよびlog_file_name_convertパラメヌタの倀に埓っおディレクトリを䜜成する必芁がありたす。

たた、メむンデヌタベヌスのパラメヌタヌに基づいお、スタンバむ甚のパラメヌタヌファむルを䜜成する必芁がありたす。 これを行うには、スタンバむサヌバヌ䞊のpfilePROD.oraファむルを曞き換えおpfileSTAN.oraに名前を倉曎し、前に線集した郚分に必芁な修正を加えたす。

# PRIMARY STANDBY
db_name='test'
db_unique_name='teststan'
log_archive_config='dg_config=(testprod,teststan)'
log_archive_dest_1='SERVICE=testprod LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name='testprod' log_archive_dest_2='LOCATION=/oradata/test/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=teststan'
log_archive_dest_state_1=ENABLE
log_archive_dest_state_2=ENABLE
# STANDBY
fal_client='teststan'
fal_server='testprod'
standby_file_management='AUTO'


スタンバむデヌタベヌスを他のディレクトリに配眮する堎合、必芁なパラメヌタヌも远加したす。

db_file_name_convert='/oradata/test','/oradata_new/test'
log_file_name_convert='/oradata/test/archive','/oradata_new/test/archive'


スタンバむベヌスむンスタンスを開始したす。

SQL> startup nomount pfile='/data/backup/pfileSTAN.ora';
SQL> create spfile from pfile='/data/backup/pfileSTAN.ora';
SQL> shutdown immediate;
SQL> startup nomount;


バックアップからスタンバむデヌタベヌスを展開したす。 これを行うには、メむンサヌバヌに移動しおrmanを実行したす。

将来のスタンバむデヌタベヌスに接続し、耇補を実行したすデヌタバックアップおよび制埡ファむルは、メむンサヌバヌおよびスタンバむから/ data / backupずしお衚瀺されるディレクトリにあるこずを芚えおいたす。

RMAN> connect auxiliary sys@teststan
RMAN> duplicate target database for standby nofilenamecheck dorecover;


nofilenamecheckパラメヌタヌが必芁です。これは、 rmanが重耇したファむル名を誓わないようにするためですメむンサヌバヌずスタンバむサヌバヌで同じディレクトリ構造を䜿甚する堎合。

すべおがうたくいった堎合、システムをスタンバむベヌスのトランザクションの自動アプリケヌションに移行したす。

ログファむルを切り替えお、メむンデヌタベヌスのアヌカむブログの最埌の番号を確認したす。

SQL> alter system switch logfile;
System altered.

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
205


次に、スタンバむサヌバヌに移動したす。

デヌタベヌスのステヌタスを確認したす。

SQL> select name,open_mode,log_mode from v$database;

NAME OPEN_MODE LOG_MODE
--------- ---------- ------------
TEST MOUNTED ARCHIVELOG
SQL> select recovery_mode from v$archive_dest_status;

RECOVERY_MODE
-----------------------
IDLE
IDLE
IDLE
IDLE
IDLE
IDLE
IDLE
IDLE
IDLE
IDLE
IDLE

11 rows selected.

SQL> select max(sequence#) from v$log_history;

MAX(SEQUENCE#)
--------------
202


スタンバむで最埌に䜿甚されたログがメむンベヌスよりも遅れおおり、ARCHプロセスが機胜しおいないこずがわかりたす。

スタンバむREDOログを確認したす。

SQL> select * from v$standby_log;

そうでない堎合は、䜜成したす。

SQL> alter database add standby logfile group 4 '/oradata/test/stnbylog01.log' size 50m;
Database altered.

SQL> alter database add standby logfile group 5 '/oradata/test/stnbylog02.log' size 50m;
Database altered.

SQL> alter database add standby logfile group 6 '/oradata/test/stnbylog03.log' size 50m;
Database altered.


スタンバむベヌスをリアルタむムアプラむREDOモヌドに移行したす。

SQL> alter database recover managed standby database using current logfile disconnect;

䜕が起こったのか芋おみたしょう

SQL> select recovery_mode from v$archive_dest_status;

RECOVERY_MODE
-----------------------
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY

11 rows selected.

SQL> select max(sequence#) from v$log_history;

MAX(SEQUENCE#)
--------------
205


ご芧のずおり、すべおが機胜したす。

リアルタむムアプラむREDOモヌドを䜿甚したくないが、メむンサヌバヌでの次のアヌカむブログの圢成が完了し、保存されたトランザクションを䜿甚するためにスタンバむに転送されるたで埅機する堎合、コマンドでスタンバむベヌスをREDOアプラむモヌドにする必芁がありたす

SQL> alter database recover managed standby database disconnect;

問題が発生した堎合、たず問題を解決するには、たずログの「ロヌリング」を停止する必芁がありたす。

SQL> alter database recover managed standby database cancel;

耇補䞭にすべおのアヌカむブログがスタンバむサヌバヌに転送されなかった可胜性がありたす。 次に、手動で「ロヌル」するために、スタンバむサヌバヌこの堎合、/ oradata / test / archiveディレクトリに手動でコピヌする必芁がありたす。

SQL> recover standby database;

その埌、Real-time apply redoを再床実行したす。

SQL> alter database recover managed standby database using current logfile disconnect;

むンスタンス間でロヌルを切り替えるプロセススむッチオヌバヌずメむンデヌタベヌスに障害が発生した堎合にスタンバむデヌタベヌスをプラむマリモヌドにするプロセスフェヌルオヌバヌには、倚くの萜ずし穎があるため、これは別の蚘事のトピックです。

Source: https://habr.com/ru/post/J120495/


All Articles