Oracle インスタンス管理


 

✅ Oracle インスタンス管理の基礎

Oracle Database は「データベース本体」と「インスタンス(=プロセス+メモリ構造)」から構成されます。
インスタンスの設定は**初期化パラメータファイル(Initialization Parameter File)**で定義され、インスタンス起動時に読み込まれます。


📂 初期化パラメータファイルの種類

種類説明
SPFILE(Server Parameter File)バイナリ形式。Oracleが直接読み書きでき、ALTER SYSTEM で動的に変更・永続化できる。CDB作成時に自動生成される。
PFILE(Text Parameter File)テキスト形式。手動で編集が必要。Oracleは読み込み専用。SPFILEから生成することも可能。ファイル名は init.ora が一般的。
SPFILE が存在しない場合、Oracle は init.ora を探して起動します。

🔧 パラメータの管理と変更方法

🔹 パラメータの性質

  • 約30個の基本パラメータを設定すれば、通常は十分な性能が得られます。

  • 約300個ある高度なパラメータは、特別な調整が必要な場合に使用。

  • 一部のパラメータ(例:SESSIONS, TRANSACTIONS)は他の値(PROCESSES)から**自動算出(派生)**される。

🔹 パラメータ変更の影響

  • 値を増やすことで性能向上の可能性もあるが、SGA(システムグローバル領域)サイズが増大しすぎると逆に性能が劣化する(スワップが発生するなど)。


⚙️ 変更の種類と適用タイミング

ALTER SYSTEMALTER SESSION でパラメータを変更できます。

属性列意味
ISSES_MODIFIABLETRUE の場合、セッション単位で変更可能(ALTER SESSION 使用)
ISSYS_MODIFIABLEシステム全体の変更方法。IMMEDIATE=即時反映、DEFERRED=次回セッション以降、FALSE=再起動が必要(静的)
🔹 SCOPE の使い分け(ALTER SYSTEM 時)
SCOPE内容備考
MEMORYメモリのみ。再起動後リセットされる。一時的な変更向け。
SPFILESPFILEに永続的に保存。次回起動時に反映される。
BOTHメモリ+SPFILE両方に反映。即時効果があり、再起動後も持続。
※PFILEで起動している場合は MEMORY しか使用できない。

🧩 PDB(Pluggable Database)との関係

  • ALTER SYSTEM を PDB上で実行すると、そのPDB専用パラメータのみ変更される。

  • ISPDB_MODIFIABLETRUE のパラメータのみ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ログファイルのリストを取得するが、存在確認やオープンは行わない。
→ メンテナンス作業(例:ファイル名変更、完全リカバリ)に使用。
OPENREDOログファイルとデータファイルをオープン。ユーザー接続が可能になる。
→ 通常運用時に使用。
STARTUP NOMOUNTALTER DATABASE MOUNT;ALTER DATABASE OPEN; という順に手動で進めることも可能です。

📝 アラートログ(Alert Log)

  • アラートログファイルには、インスタンスやデータベースの起動メッセージ、エラー、メモリ構成などが時系列で記録されます。

  • 確認コマンド: SELECT * FROM V$DIAG_INFO;

  • 起動に成功したログは記録・保存しておくと、トラブル時の比較に便利です。


🔧 アラートログに記録される内容の例(起動時)

  1. Oracleインスタンスの起動開始メッセージ

  2. メモリ構成情報(自動メモリ管理を使用しているかなど)

  3. 使用されている初期化パラメータファイル(SPFILE)

  4. 制御ファイルの場所

  5. バックグラウンドプロセスの起動結果

  6. ALTER DATABASE MOUNT → 制御ファイルを読み込み、データファイルとREDOログファイルのステータス取得

  7. ALTER DATABASE OPEN → ファイルをオープンし、ユーザー接続可能に

  8. 必要であればインスタンスリカバリの実施


🧩 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_現在のユーザー自身が所有しているオブジェクトすべてのユーザー
🔹 例:ユーザーAがユーザーBの表にアクセス権を持っている場合 → 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の整合性が崩れる可能性がある

    • 次回の起動時にはインスタンスリカバリが必要

    • 通常は使用しない。