ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
REDOログの役割
OracleのREDOログは、すべてのデータ変更を記録するトランザクションログです。役割は2つ:
- クラッシュリカバリ: インスタンス障害時、COMMIT 済の変更を再現
- メディアリカバリ: データファイル消失時、バックアップ+REDO で時点復旧
COMMIT 時点で REDO バッファが LGWR プロセスにより必ずディスクに書かれます(fsync)。これがACID の D(永続性)を保証します。
Online Redo Log と Archive Redo Log
| 種類 | 役割 | 使い方 |
|---|---|---|
| Online Redo Log | 稼働中のDBが書き込み中の REDO | 循環使用 (Group 1 → 2 → 3 → 1...) |
| Archive Redo Log | 切替時に保管された Online の写し | メディアリカバリ用 |
Group と Member(多重化)
1つの REDO ロググループは複数の Member(同じ内容の物理ファイル)で構成できます。ディスク障害に備えた多重化です。
[ Group 1 ] [ Group 2 ] [ Group 3 ]
Member a Member a Member a
Member b Member b Member b
↑同内容 ↑同内容 ↑同内容
ディスク1 ディスク1 ディスク1
ディスク2 ディスク2 ディスク2
LGWR は Group 内の全 Member に同じ REDO を書き込む。
1 つ壊れても他の Member から復旧可能。
状態確認: v$log と v$logfile
-- グループの状態
SELECT group#, sequence#, members, status FROM v$log;
-- GROUP# SEQUENCE# MEMBERS STATUS
-- ------ --------- ------- ----------
-- 1 100 2 ACTIVE ← まだチェックポイント未完了
-- 2 101 2 CURRENT ← LGWR が今書いている
-- 3 99 2 INACTIVE ← 再利用可能
-- メンバーの物理ファイル位置と状態
SELECT group#, member, status FROM v$logfile;
-- GROUP# MEMBER STATUS
-- ------ --------------------------- ------
-- 1 /u01/oradata/redo01a.log
-- 1 /u02/oradata/redo01b.log
-- 2 /u01/oradata/redo02a.log INVALID ← 故障
-- アーカイブ済の REDO 一覧
SELECT sequence#, name FROM v$archived_log ORDER BY sequence# DESC FETCH FIRST 10 ROWS ONLY;
STATUS の意味
| STATUS | 意味 |
|---|---|
| CURRENT | LGWR が現在書き込んでいる |
| ACTIVE | クラッシュリカバリに必要(チェックポイント未完了) |
| INACTIVE | 再利用可能 |
| UNUSED | 新規追加で未使用 |
| CLEARING / CLEARING_CURRENT | クリア処理中 |
ARCHIVELOG モード
既定の NOARCHIVELOG モードでは Online Redo が上書きされて消えます。本番DBは必ず ARCHIVELOG モードに変更し、Archive Redo を保管します。
-- 現在のモード確認
ARCHIVE LOG LIST;
SELECT log_mode FROM v$database; -- ARCHIVELOG / NOARCHIVELOG
-- NOARCHIVELOG → ARCHIVELOG への切替
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
-- アーカイブ先の設定
ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/u01/arch' SCOPE=BOTH;
ALTER SYSTEM SET log_archive_dest_2 = 'LOCATION=/u02/arch' SCOPE=BOTH;
-- 手動でログ切替(テスト用)
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM ARCHIVE LOG CURRENT;
Group / Member の追加・削除
-- グループ追加(多重化2 Member、各 100MB)
ALTER DATABASE ADD LOGFILE GROUP 4
('/u01/oradata/redo04a.log', '/u02/oradata/redo04b.log') SIZE 100M;
-- 既存グループに Member 追加
ALTER DATABASE ADD LOGFILE MEMBER '/u03/oradata/redo01c.log' TO GROUP 1;
-- Member 削除
ALTER DATABASE DROP LOGFILE MEMBER '/u03/oradata/redo01c.log';
-- Group 削除(CURRENT/ACTIVE は不可、INACTIVE のみ)
ALTER DATABASE DROP LOGFILE GROUP 4;
リカバリの基本フロー
クラッシュリカバリ(自動)
─────────────────────────
インスタンス停止 → STARTUP
1. ロールフォワード: Online Redo を適用して、COMMIT 済の変更を再現
2. ロールバック : 未 COMMIT のトランザクションを巻き戻し
3. DB OPEN
メディアリカバリ(手動)
─────────────────────────
データファイル消失 → 復旧手順
1. RMAN でバックアップから データファイル復元
2. RECOVER DATABASE で Archive Redo を順次適用
3. オープン直前の Online Redo まで適用
4. ALTER DATABASE OPEN-- RMAN でのリカバリ例
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
-- 不完全リカバリ(特定時点まで)
RMAN> RUN {
SET UNTIL TIME "TO_DATE('2026-06-11 10:00:00','YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}
LogMiner で過去のDMLを掘り起こす
誤って DELETE / UPDATE してしまった場合、LogMiner で REDO ログを解析し、復元用 SQL を取得できます。
-- 解析対象ログを追加
EXEC DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/u01/arch/1_100_xxx.arc', OPTIONS => DBMS_LOGMNR.NEW);
EXEC DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/u01/arch/1_101_xxx.arc', OPTIONS => DBMS_LOGMNR.ADDFILE);
-- 解析開始
EXEC DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
-- DML を確認
SELECT scn, timestamp, username, operation, sql_redo, sql_undo
FROM v$logmnr_contents
WHERE table_name = 'ORDERS'
AND operation IN ('UPDATE','DELETE');
-- SQL_UNDO を実行すれば変更を取り消せる
-- 解析終了
EXEC DBMS_LOGMNR.END_LOGMNR;
運用のベストプラクティス
- Online Redo は3〜5 グループ × 2〜3 Member 多重化が基本
- ファイルサイズは15〜30 分でログ切替するくらいに調整
- Archive ログは別ディスク・別サーバへ転送し、定期的にバックアップ
- RAC 構成ではインスタンスごとに REDO Threadを持つ
- Data Guard でスタンバイDBへ REDO を転送し DR 構成
FAQ
Q: REDO ログを大きくする / 小さくする基準は?
A: ピーク時に 15〜30 分で 1 切替が目安。短すぎるとアーカイブが急増、長すぎるとリカバリ時間が伸びます。
Q: NOARCHIVELOG モードのまま運用していい?
A: 開発/検証だけ。本番は必ず ARCHIVELOG。データファイル障害時にバックアップ時点までしか戻れず、それ以降のデータは失われます。
Q: REDO ログを誤って削除してしまった
A: INACTIVE グループなら ALTER DATABASE CLEAR LOGFILE GROUP n で再作成。CURRENT/ACTIVE はバックアップから復旧必要。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?