ORACLE MASTER Silver DBA 取得に必要な知識のまとめ~インスタンス編~
はじめに
本記事は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