この投稿は最後にmssql_wangwangによって2017-9-2315に編集されました:26
最近、私はOracleのDGを学び、DGを正常に構成しましたが、毎回メインライブラリでaltersystemswitchlogfileを実行する必要があります。データを同期できます。
スタンバイデータベースでalterdatabaserecovermanagedstandbydatabasedisconnectfromsessionを実行すると言われていることをオンラインで確認してください。
ただし、データを手動で実行して毎回同期することしかできません。
データベースマスターパリマリーとスタンバイがリアルタイムでデータを自動的に同期する方法を尋ねたいのですが、
たとえば、メインデータベースでデータの一部を挿入または変更してコミットし、スタンバイデータベースですぐにクエリを実行できます。SQL ServerのAlwayson関数と同じように、自動的に同期できます。
Oracleバージョンは12Cです
スタンバイモード:
SQL> selectopen_modefromv $ database;
OPEN_MODE
--------------------
READONLYWITHAPPLY
チャントの不一致。完全な手順を投稿してください。
2017-9-2321に公開されたjieyancai:00
チャントの不一致。完全な手順を投稿してください。
まず、メインライブラリの構成
-メインライブラリをFORCELOGGINGモードに設定します
SQL> alterdatabaseforcelogging;
SQL> selectforce_loggingfromv $ database;
-メインライブラリパラメータファイルを変更します。
altersystemsetdb_unique_name = 'ORCLMAIN'scope = spfile;
altersystemsetlog_archive_config = 'DG_CONFIG =(ORCLMAIN、ORCLSTANDBY)';
altersystemsetlog_archive_dest_1 = 'LOCATION = / data / archlogvalid_for =(all_logfiles、all_roles)db_unique_name = ORCLmain'scope = spfile;
altersystemsetlog_archive_dest_2 = 'SERVICE = ORCLSTANDBYlgwrasyncvalid_for =(online_logfile、primary_role)db_unique_name = ORCLSTANDBY'scope = spfile;
altersystemsetlog_archive_dest_state_1 = ENABLE;
altersystemsetlog_archive_dest_state_2 = ENABLE;
altersystemsetfal_client = 'ORCLMAIN'scope = spfile;
altersystemsetfal_server = 'ORCLSTANDBY'scope = spfile;
altersystemsetstandby_file_management = autoscope = spfile;
alterdatabaseaddstandbylogfilegroup6( '/ oracle / app / redolog / redo06_1.log'、 '/ data / redolog / redo06_2.log')size500M;
alterdatabaseaddstandbylogfilegroup7( '/ oracle / app / redolog / redo07_1.log'、 '/ data / redolog / redo07_1.log')size500M;
alterdatabaseaddstandbylogfilegroup8( '/ oracle / app / redolog / redo08_1.log'、 '/ data / redolog / redo08_1.log')size500M;
-データベースを再起動します
SQL> shutdownimmediate;
SQL>スタートアップ
SQL> createpfilefromspfile;
-メインライブラリのpfileファイルをスタンバイライブラリにコピーする
scp-P2237 $ ORACLE_HOME / dbs / initORCLmain.oraORCLstandby:$ ORACLE_HOME / dbs--pfileファイルをスタンバイデータベースにコピーします
scp-P2237 $ ORACLE_HOME / dbs / orapwORCLmain.oraORCLstandby:$ ORACLE_HOME / dbs--パスワードファイルをスタンバイデータベースにコピーします
次に、スタンバイデータベースの構成
-監視の構成(静的登録の構成)
vim $ ORACLE_HOME / network / admin / listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(GLOBAL_DBNAME = ORCLma)
(ORACLE_HOME = / oracle / app / oracle / product / 11.2.0 / db_1)
(SID_NAME = ORCLmain)
)
リスナー=
(DESCRIPTION_LIST =
(説明=
(アドレス=(プロトコル= TCP)(ホスト= 192.168.1.6)(ポート= 5015))
(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC5015))
)
)
-tnsnamesファイルを変更します。
ORCLSTANDBY =
(説明=
(ADDRESS_LIST =
(アドレス=(プロトコル= TCP)(ホスト= 192.168.1.6)(ポート= 5015))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCLma)
)
)
ORCLMAIN =
(説明=
(ADDRESS_LIST =
(アドレス=(プロトコル= TCP)(ホスト= 192.168.1.7)(ポート= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCLmain)
)
)
-11gデータベースの基本ディレクトリを作成します。
#su-oracle
mkdir-p / oracle / app / oracle / admin / ORCLmain / {adump、dpdump、pfile}
mkdir-p / oracle / app / oracle / fast_recovery_area / {ORCLmain、ORCLMAIN}
mkdir-p / data / oradata / ORCLmain
mkdir-p / data / archlog
-スタンバイデータベースのpfileファイルを変更します。
* .db_name = 'ORCLma'
* .db_unique_name = 'ORCLstandby'
* .fal_client = 'ORCLSTANDBY'
* .fal_server = 'ORCLMAIN'
* .log_archive_dest_2 = 'SERVICE = ORCLMAINlgwrasyncvalid_for =(online_logfile、primary_role)db_unique_name = ORCLMAIN'
-スタンバイデータベース作成-SID
--oradim-new-sidORCLSTANDBY
-スタンバイデータベースのnodata状態を開始します。
SQL> createspfilefrompfile = '$ ORACLE_HOME / dbs / initORCLmain.ora'
SQL> startupnomount;
3番目に、スタンバイデータベースでRMANを使用して、ダンプ(コピー)データベースを起動します。
[oracle @ ORCLstandby〜] $ rmantarget'sys / "SysTest!" '@ ORCLmainauxiliary'sys / "SysTest"' @ ORCLstandby
RMAN>アクティブデータベースからのスタンバイのファイル名チェックのためのターゲットデータベースの複製;
注:エラーは報告されず、コピーは成功します。次の手順に進みます。
1.スタンバイデータベースのステータスを表示する
SQL> selectopen_mode、database_role、db_unique_namefromv $ database;
alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
上記は設定手順です。アドバイスしてください。ありがとう
mssql_wangwang投稿日:2017-9-2410:44
まず、メインライブラリの構成
-メインライブラリをFORCELOGGINGモードに設定します
次のコマンドを実行して結果を確認します。
スタンバイマシン:
sqlplus / assysdba
SHUTDOWNIMMEDIATE;
STARTUPMOUNT;
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEDISCONNECTFROMSESSION;
selectopen_modefromv $ database;
この投稿の最終編集者:mssql_wangwang(2017-9-2413):40
2017年9月24日発行のonca416:54
次のコマンドを実行して結果を確認します。
スタンバイマシン:
SQL> selectopen_modefromv $ database;
OPEN_MODE
--------------------
READONLYWITHAPPLY
上記の方法を試しましたが、データを自動的に同期できません。メインライブラリのaltersystemswitchlogfileを手動で実行する必要があります。
手動でスタンバイデータベースをアーカイブして同期データをクエリする必要があるたび。私はDGの3つのモードも試しましたが、どれも、最大の保護、最大の使いやすさ、最大のパフォーマンスはすべて同じ問題です。
問題は何ですか
SQL Serverのalwaysonの同期データと非同期データのどちらが基本的に5秒も変わらないかどうかは、スタンバイデータベースに送られます。
これは私にも当てはまります。ロググループのステータスを見ると、それらはすべてUNASSIGNEDですか?
selectgroup#、sequence#、first_change#、next_change#、status、used、con_idfromv $ standby_log;
スタンバイデータベースのストランドバイロググループのサイズがメインライブラリのonlineredologよりも小さいことが原因で、この問題が発生している可能性があります。
待機データベースの待機ロググループのサイズを変更し、解決しました。
2017年9月24日発行のyueli34:47
スタンバイデータベースのストランドバイロググループのサイズがメインライブラリのonlineredologよりも小さいことが原因で、この問題が発生している可能性があります。
待機データベースの待機ロググループのサイズを変更したところ......
待機する:
SQL> SELECTgroup#、members、bytes / 1024 / 1024byte_mb、statusFROMv $ log;
GROUP#MEMBERSBYTE_MBSTATUS
----------------------------------------------
1250通貨
2250クリア
3250クリア
メイン:
SQL> SELECTgroup#、members、bytes / 1024 / 1024byte_mb、statusFROMv $ log;
GROUP#MEMBERSBYTE_MBSTATUS
----------------------------------------------
1250通貨
2250非アクティブ
3250非アクティブ
両面とも同じサイズです。
待機する:
SQL> selectgroup#、sequence#、first_change#、next_change#、status、used、con_idfrom
v $ standby_log;
GROUP#SEQUENCE#FIRST_CHANGE#NEXT_CHANGE#STATUSUSED
-------------------------------------------------- ---------------
CON_ID
----------
61423865432387891ACTIVE484352
0
71323846162386543ACTIVE761344
0
81523878912426347ACTIVE26267136
0。
メイン:
SQL> selectgroup#、sequence#、first_change#、next_change#、status、used、con_idfrom
v $ standby_log;
GROUP#SEQUENCE#FIRST_CHANGE#NEXT_CHANGE#STATUSUSED
-------------------------------------------------- ---------------
CON_ID
----------
60UNASSIGNED0
0
70UNASSIGNED0
0
80UNASSIGNED0
0
メインライブラリはUNASSIGNEDです
mssql_wangwang投稿日時:2017-9-2510:51
待機する:
SQL> SELECTgroup#、members、bytes / 1024 / 1024byte_mb、statusFROMv $ log;
スタンバイデータベースは、スタンバイロググループをv $ standby_logビューとして認識します。v $ログビューではありません。
現在のログファイルを使用してデータベースを回復し、管理されたスタンバイデータベースをセッションから切断します。
代わりに
alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;