✅ Oracle インスタンス管理の基礎
Oracle Database は「データベース本体」と「インスタンス(=プロセス+メモリ構造)」から構成されます。
インスタンスの設定は**初期化パラメータファイル(Initialization Parameter File)**で定義され、インスタンス起動時に読み込まれます。
📂 初期化パラメータファイルの種類
| 種類 | 説明 |
|---|---|
| SPFILE(Server Parameter File) | バイナリ形式。Oracleが直接読み書きでき、ALTER SYSTEM で動的に変更・永続化できる。CDB作成時に自動生成される。 |
| PFILE(Text Parameter File) | テキスト形式。手動で編集が必要。Oracleは読み込み専用。SPFILEから生成することも可能。ファイル名は init.ora が一般的。 |
init.ora を探して起動します。🔧 パラメータの管理と変更方法
🔹 パラメータの性質
-
約30個の基本パラメータを設定すれば、通常は十分な性能が得られます。
-
約300個ある高度なパラメータは、特別な調整が必要な場合に使用。
-
一部のパラメータ(例:
SESSIONS,TRANSACTIONS)は他の値(PROCESSES)から**自動算出(派生)**される。
🔹 パラメータ変更の影響
-
値を増やすことで性能向上の可能性もあるが、SGA(システムグローバル領域)サイズが増大しすぎると逆に性能が劣化する(スワップが発生するなど)。
⚙️ 変更の種類と適用タイミング
ALTER SYSTEM や ALTER SESSION でパラメータを変更できます。
| 属性列 | 意味 |
|---|---|
ISSES_MODIFIABLE | TRUE の場合、セッション単位で変更可能(ALTER SESSION 使用) |
ISSYS_MODIFIABLE | システム全体の変更方法。IMMEDIATE=即時反映、DEFERRED=次回セッション以降、FALSE=再起動が必要(静的) |
ALTER SYSTEM 時)| SCOPE | 内容 | 備考 |
|---|---|---|
| MEMORY | メモリのみ。再起動後リセットされる。一時的な変更向け。 | |
| SPFILE | SPFILEに永続的に保存。次回起動時に反映される。 | |
| BOTH | メモリ+SPFILE両方に反映。即時効果があり、再起動後も持続。 |
MEMORY しか使用できない。🧩 PDB(Pluggable Database)との関係
-
ALTER SYSTEMを PDB上で実行すると、そのPDB専用パラメータのみ変更される。 -
ISPDB_MODIFIABLEがTRUEのパラメータのみPDB内で変更可能。 -
明示的に設定されていない場合、PDBはCDB(ルート)側のパラメータを継承する。
🔍 パラメータ確認方法
| 方法 | コマンド |
|---|---|
| 名前で検索 | SHOW PARAMETER [キーワード] |
| SQLで確認 | SELECT * FROM V$PARAMETER WHERE NAME LIKE '%POOL%'; |
| SPFILE内容確認 | V$SPPARAMETER ビュー |
| 現在セッションに適用中 | V$PARAMETER2 |
| インスタンス全体に適用中 | V$SYSTEM_PARAMETER2 |
✅Oracle データベースインスタンスの起動と起動モード
🔹 ユーザー接続前に必要なこと
-
ユーザーがデータベースに接続できるようにするには、DBAがデータベースインスタンスを起動する必要があります。
-
起動時、Oracleデータベースは段階的にモード(状態)を変えてアクセス可能になります。
-
STARTUPコマンドで各ステージに応じた起動が可能です。デフォルトはOPENモード。
🔄 各起動ステージの説明
| モード | 説明と用途 |
|---|---|
| NOMOUNT | 初期化パラメータファイルを読み込み、SGAを確保し、バックグラウンドプロセスを起動。制御ファイルは読み込まない。 → データベース作成、制御ファイル再作成、リカバリ用途に使用。 |
| MOUNT | 制御ファイルを開いて読み込む。データファイルやREDOログファイルのリストを取得するが、存在確認やオープンは行わない。 → メンテナンス作業(例:ファイル名変更、完全リカバリ)に使用。 |
| OPEN | REDOログファイルとデータファイルをオープン。ユーザー接続が可能になる。 → 通常運用時に使用。 |
STARTUP NOMOUNT → ALTER DATABASE MOUNT; → ALTER DATABASE OPEN; という順に手動で進めることも可能です。📝 アラートログ(Alert Log)
-
アラートログファイルには、インスタンスやデータベースの起動メッセージ、エラー、メモリ構成などが時系列で記録されます。
-
確認コマンド:
SELECT * FROM V$DIAG_INFO; -
起動に成功したログは記録・保存しておくと、トラブル時の比較に便利です。
🔧 アラートログに記録される内容の例(起動時)
-
Oracleインスタンスの起動開始メッセージ
-
メモリ構成情報(自動メモリ管理を使用しているかなど)
-
使用されている初期化パラメータファイル(SPFILE)
-
制御ファイルの場所
-
バックグラウンドプロセスの起動結果
-
ALTER DATABASE MOUNT→ 制御ファイルを読み込み、データファイルとREDOログファイルのステータス取得 -
ALTER DATABASE OPEN→ ファイルをオープンし、ユーザー接続可能に -
必要であればインスタンスリカバリの実施
🧩 PDB(Pluggable Database)の起動
-
PDBを起動する=データファイルを開くこと
-
起動モードは4種類:
-
READ WRITE(通常モード) -
READ ONLY -
MIGRATE -
MOUNTED(まだオープンしていない状態)
-
-
操作コマンド:
ALTER PLUGGABLE DATABASE PDB名 OPEN;(またはCLOSE;)
🔚 補足ポイント
-
V$DATABASEビューはMOUNTモード以上で参照可能。 -
初期化パラメータやリカバリのシナリオに応じて適切なモードを使い分ける。
-
複数のSSHターミナルを使って、片方で起動、もう片方でアラートログを記録する方法が推奨されている。
✅ OracleのトレースファイルとADR(Automatic Diagnostic Repository)
📄 アラートログとトレースファイル
-
アラートログ: データベースインスタンスやデータベースに関するメッセージの時系列ログ。
-
トレースファイル: 各サーバープロセスやバックグラウンドプロセスごとに生成され、内部エラー発生時に詳細情報を出力。
🔹 もし内部エラーが検出されてトレースファイルに情報が書き込まれた場合は、Oracleサポートに連絡すべき。
🆘 インシデント番号と診断データ
-
重大なエラーが発生すると、自動的にインシデント番号が付与され、その番号に関連づけてトレースファイルなどの診断情報が保存されます。
📁 ADR(Automatic Diagnostic Repository)
-
ファイルベースの中央診断データリポジトリで、以下の情報を保持:
-
トレースファイル
-
アラートログ
-
ヘルスレポート
-
インシデント情報など
-
-
特徴:
-
データベース外部に保存 → DBがダウンしていても確認可能
-
複数インスタンス・製品にまたがる統一ディレクトリ構造
-
🛠 ADRCI(ADR Command Interpreter)
-
コマンドラインツールで、ADRの操作が可能。
-
主なコマンド:
-
SHOW HOMES:ADRにある全てのホームを表示 -
SET HOME:作業対象のインスタンスを指定 -
SHOW ALERT:アラートログを表示 -
SHOW INCIDENT:発生したインシデントの一覧を表示 -
SHOW INCIDENT -mode detail -p "incident_id=xxx":特定インシデントの詳細確認 -
HELP:利用可能なコマンドの一覧表示
-
♻️ データ保持とパージ(削除)ポリシー
ADRには自動パージ機能があり、以下の2つの方法で古いデータを削除できます:
🕒 1. 時間ベースの保持期間(Time-based retention)
-
Long retention(インシデントやアラートログなど重要データ): デフォルト365日
-
Short retention(トレース、コアダンプなど): デフォルト30日
💾 2. サイズベースの保持(Size-based retention)
-
ADRホームディレクトリの最大サイズを設定。
-
サイズ超過時は、まず古いデータから削除される。
現在の設定は ADR_CONTROL ビューへのクエリで確認可能。
✅ Oracle データディクショナリとは
🔍 データディクショナリの概要
-
データディクショナリとは、データベースに関するメタデータ(情報そのものの情報)を保持する表やビューの集合。
-
これには、次のような情報が含まれる:
-
データベース構造(表・列・索引・ビューなど)
-
ユーザーと権限
-
ストレージ構造(セグメント、エクステント)
-
その他内部的な管理情報
-
⚙ Oracleによる利用
-
Oracleは、SQLの解析時に頻繁にデータディクショナリを参照している。
-
例えば、指定された表や列が存在するか?
-
ユーザーが適切な権限を持っているか?
-
-
新たにオブジェクトが作成されると、Oracleが自動的にディクショナリを更新。
-
例: ユーザーHRが
INTERNSという表を作る → それに関する情報が辞書に自動的に追加される。
-
⚠ 注意点
-
ディクショナリ内のデータはOracleだけが変更すべき。
-
SYSスキーマ内のオブジェクトや行をユーザーが直接変更してはならない。-
データ整合性が損なわれる可能性があるため。
-
📊 ディクショナリビューの種類
| 接頭辞 | 内容 | 誰が見れる? |
|---|---|---|
CDB_ | すべてのPDBを含むCDB全体の情報 | DBAユーザーのみ |
DBA_ | 特定のCDBまたはPDB内のすべてのオブジェクト情報 | DBAユーザーのみ |
ALL_ | 現在のユーザーが所有している、またはアクセス可能なオブジェクト | すべてのユーザー |
USER_ | 現在のユーザー自身が所有しているオブジェクト | すべてのユーザー |
ALL_TABLESで見えるが、USER_TABLESでは見えない。📚 その他のビューと機能
-
DICTIONARYビュー:すべてのデータディクショナリビューの一覧を表示できる。 -
DESCRIBEコマンド:特定のビューに含まれるカラム一覧を確認できる。
🌀 動的パフォーマンスビュー(V$ビュー)
-
Oracleは、データベースの動作状況やパフォーマンス情報も動的に保持している。
-
これらは
V$で始まる 動的パフォーマンスビューで提供され、たとえば以下が可能:-
特定マシンからのセッションの確認
-
ファイル状態の確認
-
ロックを保持しているセッションやユーザーの特定
-
-
これらはインスタンスが停止すると消える一時的情報であり、揮発性の情報。
✅ Oracle データベースのシャットダウン方法
🧩 シャットダウンの4つのモード
Oracleデータベースをシャットダウンするには、SHUTDOWN コマンドを使い、次の4つのモードから選択できます。
| モード | 特徴 | 使用タイミング・注意点 |
|---|---|---|
| NORMAL | - すべてのユーザーが自発的に切断するまで待機 - 新しい接続は受け付けない | ⏳ 時間がかかる可能性あり(非推奨) |
| IMMEDIATE | - 現在のセッションを強制切断 - 未コミットのトランザクションはロールバック | ✅ 最も実用的で一般的な方法 |
| TRANSACTIONAL | - 現在実行中のトランザクションが完了するまで待機 - その後セッションを切断 | 🔁 業務停止を最小限に抑えたいときに有効 |
| ABORT | - 強制終了(電源プラグを抜くような動作) - 次回起動時にリカバリ処理が必要 | 🚫 緊急時以外では非推奨 |
💡 実際の挙動例
-
SHUTDOWN NORMAL:-
現在接続中のユーザーが手動でログアウトするまで待つ。
-
その間、他のユーザーは引き続きSQLを実行できる。
-
接続が全て切れるとシャットダウンが始まる。
-
-
SHUTDOWN IMMEDIATE:-
すぐに全ユーザーの接続を切断し、トランザクションはロールバック。
-
新規接続も受け付けず、比較的迅速にシャットダウン完了。
-
次回起動時にリカバリは不要。
-
-
SHUTDOWN ABORT: -
最終手段として使用。DBの整合性が崩れる可能性がある。
-
次回の起動時にはインスタンスリカバリが必要。
-
通常は使用しない。
