✅ 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の整合性が崩れる可能性がある。
-
次回の起動時にはインスタンスリカバリが必要。
-
通常は使用しない。