😺

ORACLE MASTER Silver DBA 取得に必要な知識のまとめ~インスタンス編~

2024/05/20に公開

はじめに

本記事はORACLE MASTER Silver DBA取得に必要な知識の個人的まとめになります。

ORACLE MASTERとは

Oracle Databaseの管理スキルを証明するOracle社の資格です。

Bronze, Silver, Gold, Platinumの4ランクあります。

インスタンスの起動

Oracle Databaseを使用するにはインスタンスを起動し、データベースをオープンする必要があります。

インスタンスを起動するにはSQL *Plusから STARTUP コマンドをSYSDBA権限を付与されたユーザーで接続して実行します。

通常は事前作成済みのSYSユーザーで接続します。

SYSTEMユーザーは管理権限を持っていないため、インスタンスの起動などは行えないことに注意してください。

データベースオープン

データベースがオープンするまでのステップは以下の通りです。

状態 説明 読み込むファイル
SHUTDOWN インスタンスが停止し、データベースもクローズした状態 -
NOMOUNT インスタンスが起動した状態、SGAが割り当てられ、バックグラウンドプロセスが起動 初期化パラメータファイル
MOUNT 制御ファイルが読み書き可能な状態 制御ファイル
OPEN データベースがオープンした状態、REDOログファイルとデータファイルが読み書き可能

データベースがOPEN状態になるまで特殊な管理権限を持たない通常のユーザーは接続できません。

起動状態の遷移

SQL *Plusからインスタンスを実行する場合は特にオプションを指定せずに STARTUP コマンドを実行し、OPEN状態に遷移させます。

しかし、いくつかの管理タスクを実行する場合や、データベースファイルに障害が発生した場合などでは、 STARTUP コマンドにオプションを指定してNOMOUNTやMOUNT状態で起動を一旦停止します。

オプションは以下の通りです。

コマンド 説明
startup nomount NOMOUNT状態までインスタンスを起動する
startup mount MOUNT状態までインスタンスを起動する
startup open または startup OPEN状態までインスタンスを起動する(通常起動)

ALTER DATABASE

NOMOUNT状態またはMOUNT状態で起動した後、先の起動状態まで進めるには ALTER DATABASE を実行します。

NOMOUNTからMOUNTに遷移する場合は ALTER DATABASE MOUNT 、MOUNTからOPENへ遷移する場合は ALTER DATABASE OPEN です。

起動状態と実行可能な処理

一部の処理はNOMOUNTまたはMOUNTで実行する必要があります。

起動状態 実行できる処理
NOMOUNT データベースの作成(CREATE DATABASE)と制御ファイルの作成(CREATE CONTROLFILE)
MOUNT アーカイブログモードへの変更(ALTER DATABASE RCHIVELOG)とデータベース全体のリカバリ処理

ファイル障害とインスタンス起動処理の停止

起動ステップ別で読み込む関連ファイルに障害がある場合はそのステップでインスタンス起動処理が停止します。

  • 初期化パラメータファイルに障害がある場合はNOMOUNTへの遷移に失敗しSHUTDOWNのまま
  • 制御ファイルに障害がある場合はMOUNTへの遷移に失敗しNOMOUNTのまま
  • データファイルまたはREDOログファイルに障害がある場合はOPENへの遷移に失敗しMOUNTのまま

インスタンスの停止

インスタンスを停止するにはSQL *Plusで SHUTDOWN コマンドを実行します。

SHUTDOWN コマンドはSYSDBA権限またはその他の特殊な管理言々を付与されたユーザーで接続して実行する必要があります。

SHUTDOWN コマンドには以下のオプションがあります。

オプション 説明 既存の接続の扱い 実行中のSQLの扱い
NORMAL すべての接続が終了されるまで待機し、インスタンスの停止処理を行う。オプション未指定時のデフォルト ユーザーが接続を終了するまで待機 何もしない
TRANSACTIONAL 実行中のトランザクションが終了されるまで待機し、インスタンスの停止処理を行う トランザクション終了時に切断される トランザクション終了を待機する
IMMEDIATE 実行中の処理を取り消したうえでインスタンスの停止処理を行う 切断される 取り消す(ロールバック)
ABORT 実行中の処理に対する取引処理を実行せず、インスタンスを強制終了する 切断される 強制終了(ロールバックを実行しない)

留意点は以下の通りです。

  • SHUTDOWN ABORT はインスタンスを強制終了します。このため、データベースファイルは整合性が取れていない状態になります
    • データベースファイルの整合性は次回インスタンス起動時に自動的に回復されます
  • SHUTDOWN NORMAL, SHUTDOWN TRANSACTIONAL, SHUTDOWN IMMEDIATE でインスタンスを停止するとチェックポイントと呼ばれる処理が実行され、データベースファイルは整合性が取れた状態になります
    • チェックポイントはデータベースバッファキャッシュ上のすべての変更済みブロックをデータファイルに書き込む処理です
  • SHUTDOWN NORMAL では1つでも接続が残っているとインスタンスの停止処理は実行されず、接続の終了を待機します
  • SHUTDOWN TRANSACTIONAL では1つでも実行中のトランザクションが残っているとインスタンスの停止処理は実行されず、トランザクションの終了を待機します
  • SHUTDOWN IMMEDIATE では実行中のトランザクションをロールバックします
  • 日常の計画的なインスタンス停止では SHUTDOWN ABORT を使用しないでください

データディクショナリビュー

データディクショナリビューはデータディクショナリと呼ばれるOracle Database内部の管理情報を格納する特殊な表をもとにして作られたビューです。

データディクショナリは人間が読みやすい形式ではないため、代わりにデータディクショナリビューを問い合わせます。

データディクショナリビューはデータディクショナリの管理情報を人間が読みやすい形式に変換するSELECT文により定義されたビューです。

データディクショナリの実体はSYSユーザーが所有し、SYSTEM表領域に格納された表です。

このため、データベースがOPENされていない場合はデータディクショナリビューとデータディクショナリにはアクセスできません。

また、データディクショナリに格納されているOracle Database内部の管理情報はOracle Databaseにより自動的にメンテナンス(表の作成、削除が自動的に反映)されます。

主なデータディクショナリビューは以下の通りです。

ビュー名 確認できる情報 関連ビュー
DBA_TABLES 表の情報 ALL_TABLES, USER_TABLES
DBA_INDEXES 索引の情報 ALL_INDEXES, USER_INDEXES
DBA_VIEWS ビューの情報 ALL_VIEWS, USER_VIEWS
DBA_SEQUENCES シーケンスの情報 ALL_SEQUENCES, USER_SEQUENCES
DBA_SYNONYMS シノニムの情報 ALL_SYNONYMS, USER_SYNONYMS
DBA_CONSTRAINTS 制約の情報 ALL_CONSTRAINTS, USER_CONSTRAINTS
DBA_USERS ユーザーの情報
DBA_TABLESPACES 表領域の情報
DBA_DATA_FILES データファイルの情報
DBA_FREE_SPACE データファイルの空き領域に関する情報

ADR(自動診断リポジトリ)

アラートログやトレースファイルは**ADR(自動診断リポジトリ)**で集中管理されます。

ログファイルなどはDIAGNOSTIC_DEST初期化パラメータによって設定された自動診断リポジトリのベースディレクトリ(ADRベース)に保存されます。

アラートログ

アラートログに出力される主な情報は以下の通りです。

  • インスタンスの起動・終了処理の状況
  • デフォルト値以外の値が設定された初期化パラメータの値
  • 発生したすべての内部エラー(ORA-00600, ORA-07445)
  • ブロック障害エラー(ORA-01578)
  • デッドロックエラー(ORA-00060)
  • その他の重大なエラー
  • 実行した管理コマンドとその実行結果
  • ジョブの実行エラー

インスタンスにおいて発生したすべてのエラーがアラートログに記録されるわけではありません。
(SQLの構文エラーや一時的なSQL実行エラーなどの致命的なエラーは記録されない)

初期化パラメータ

初期化パラメータは各メモリ領域のサイズや各機能のON/OFF、プロセスの動作特性などのインスタンスの動作特性を決定するパラメータです。

初期化パラメータは初期化パラメータファイルと呼ばれるファイルに記載されており、インスタンスの起動時にそのファイルを読み込むことで各設定値をインスタンスに適用します。

なお、すべてのパラメータを設定する必要はなく、設定されていないものについてはデフォルト値が設定されます。

初期化パラメータファイルはspfile(サーバーパラメータファイル)とpfile(テキスト形式の初期化パラメータファイル)の2種類があり、基本的にspfileを使って運用します。

また、spfileとpfileが両方存在する場合はspfileが優先して読み込まれます。

主な初期化パラメータは以下の通りです。

初期化パラメータ 動的変更可/不可 説明
CONTROL FILES × 制御ファイルのファイル名
DB BLOCK SIZE × デフォルトのブロックサイズ。データベースの作成後は変更できない
DB_CACHE_SIZE データベースバッファキャッシュのサイズ
DB_nK_CACHE_SIZE (n=2,4,8,16,32) × 「非標準ブロックサイズのデータベースバッファキャッシュのサイズ
DB_DOMAIN × データベースの識別子で、RAC構成でないシングルデータベースでは通常インスタンスのSIDと一致する。データベースの作成後は原則的に変更しない
DB_NAME × DB_NAMEに付与するドメイン名
DB_RECOVERY_FILE_DEST 高速リカバリ領域のディレクトリバス
DB_RECOVERY_FILE_DEST_SIZE 高速リカバリ領域のサイズ
DEFERRED SEGMENT CREATION 遅延セグメント作成の有効/無効
DIAGNOSTIC_DEST ADRベースのディレクトリバス
DISPATCHERS 共有サーバー接続のためのディスパッチャの構成
JAVA POOL SIZE Java プールのサイズ
LARGE POOL SIZE ラージプールのサイズ
LOCAL LISTENER 動的サービス登録を行うリスナーのアドレス情報
LOG BUFFER × ログバッファのサイズ
MEMORY TARGET 総メモリー(SGA+PGA)の使用サイズ
MEMORY MAX TARGET × MEMORY TARGETの最大サイズ
NLS DATE FORMAT 日時データの書式モデル
NLS LANGUAGE データベースのデフォルト言語。メッセージ、曜日名、月名の表示言語などに関係する
NLS TERRITORY データベースの地域設定。デフォルトの日付書式、デフォルトの小数点文字などに関係する
OS AUTHENT PREFIX × 一般ユーザーの OS 認証におけるユーザー名の接頭辞
PGA AGGREGATE_TARGET PGAの使用サイズ
PROCESSES × Oracle で起動できる最大プロセス数
RESUMABLE TIMEOUT 再開可能領域割当ての待機秒数
SHARED POOL SIZE 共有プールのサイズ
SHARED SERVERS 共有サーバープロセスの初期起動数
SGA TARGET SGAの使用サイズ
SGA MAX SIZE × SGA_TARGETの上限サイズ
UNDO MANAGEMENT × 自動 UNDO 管理の使用/不使用
UNDO RETENTION UNDO保存の下限値(秒)
UNDO TABLESPACE UNDO表領域の名称

初期化パラメータは SHOW PARAMETERS コマンドか動的パフォーマンスビュー(V$PARAMETER, V$SYSTEM_PARAMETER)から確認できます。

初期化パラメータの変更は ALTER SYSTEM SET で行えます。

変更時には SCOPE 句で変更が有効となる範囲や変更が反映されるタイミングを設定します。

SCOPE句の指定 説明
SPFILE SPFILEの設定値を変更する。インスタンスの再起動時、変更が有効となる
MEMORY 現在起動中のインスタンス内でのみ変更が有効となる。再起動後、変更は失われる。PFILE使用時はMEMORYのみが有効
BOTH 現在起動中のインスタンスとSPFILEの両方の設定値を変更する。SPFILE使用時はBOTHがデフォルト

また、pfile使用時にも ALTER SYSTEM SET で初期化パラメータを変更できますが、変更内容はpfileには反映されません。そのため、再起動後に変更を反映するにはpfileを編集する必要があります。

おわり

インスタンス編はここまで。

次はOracle Net Servicesについて説明していきます。

Discussion