Oracle Master Silver DBA試験の試験範囲をまとめる。
1.Oracle Databaseアーキテクチャの理解
1-1 Oracleデータベースの基本的な動作と構造
SQLコマンドの分類
・データ検索・・SELECT
・データ操作言語(DML)・・INSERT,UPDATE,DELETE
・データ定義言語(DDL)・・
CREATE,DROP,ALTER,TRUNCATE,GRANT,REVOKE
・トランザクション制御・・COMMIT,ROLLBACK
セッションの確立
1.SQL*Plus等のクライアントアプリケーション起動時、ユーザープロセスが生成。
2.ユーザープロセスが、データベースサーバー上で接続要求を受け付けているリスナーに対しOracleデータベースの接続要求を送る。
3.ユーザープロセスから接続要求を受け取ったリスナーがサーバープロセスを生成。
4.サーバープロセスがユーザープロセスからの処理要求を待機。
5.ユーザープロセスがユーザー名とパスワードをサーバープロセスに送信し、正しい場合ログインが成功しセッションが確立。
ORACLE_HOMEとOracleデータベースの関係
・一つのORACLE_HOMEには、特定のバージョンのOracleソフトウェアをインストール可能。
・あるOracleデータベースは特定のORACLE_HOMEと関連。
・同一データベースサーバーに複数のORACLE_HOMEを作成可能。
・あるORACLE_HOMEに関連するOracleデータベースは複数作成可能。
ORACLE_HOME
Oracleのソフトウェアのインストール先となるディレクトリ。Oracleの動作に必要なプログラムなどが格納。
1-2 Oracleデータベースの内部構造とインスタンス
Oracleデータベースの内部構造
インスタンスとデータベースファイルから構成。
・インスタンス・・Oracleの処理を行う常駐部分。システムグローバル領域というメモリ領域とバックグラウンドプロセスから構成。
・データベースファイル・・データベースを構成するファイル群の総称。データファイル、REDOログファイル、制御ファイルから構成。
インスタンスの起動および停止
起動する際はSQL*Plusでstartupコマンドを実行。停止する際はshutdownコマンドを実行。
システムグローバル領域
インスタンス起動時に割り当てられるメモリ領域。プロセス間で共有されるデータが保管。
バックグラウンドプロセス
インスタンス起動時にSGAのメモリー割り当てと併せて起動されるプロセスの総称。
特定の接続に限定されないOracleデータベース全体の処理を担う。
主に下記がある。
・データベースライター(DBWn)・・データベースバッファキャッシュ内の変更済みブロックをデータファイルに書き込む
・ログライター(LGWR)・・REDOログバッファのREDOデータをREDOログファイルに書き出す
・チェックポイント(CKPT)・・DBWnに対して、データベースバッファキャッシュ内の変更済みブロックをデータファイルに書き込む指示を出す。また、制御ファイルにチェックポイント情報を書き込む。
・システムモニター(SMON)・・インスタンスが異常終了した場合、次回インスタンス起動時にデータベースファイルの整合性を復旧する処理を実行する。また、未使用の一時セグメントを解放する。
・プロセスモニター(PMON)・・プロセスが異常終了した場合、そのプロセスが使用していたデータやリソースの後処理を行う。また、アイドル時間を超えたセッションを検知し、強制終了などの対処を指示する。
初期化パラメータ
各メモリ領域のサイズや各機能のON/OFF、プロセスの動作特性等、インスタンスの動作特性を決定するパラメータ。初期化パラメータファイルに記載。
インスタンスとデータベースファイルの対応関係
一つのインスタンスは、一組のデータベースファイルに対応する。
インスタンスとデータベースファイルを異なるコンピュータに配置することはできない。
RAC構成のデータベース
複数のデータベースサーバでOracleデータベースを実現し、高い可用性と性能を実現する構成。異なるデータベースサーバー上で起動する複数のインスタンスが、共有ストレージ領域に配置された一個のデータベースファイルへアクセスする。
1-3 データベース記憶域構造
データファイルと表領域
データファイル
データを格納するためのファイルで、表や索引などが格納。
表領域
一つ以上のデータファイルをグループ化したもの。表や索引の格納先に指定される。
オブジェクトに記憶域を割り当てる仕組み
・データファイルは、固定サイズに分割されて使用される。これをデータブロックと呼ぶ。
・データブロックの中にオブジェクトのデータを保管する。
・複数のデータブロックをエクステントとしてまとめ、エクステントをセグメントに割り当てる。
・セグメントの空き領域が不足した場合、セグメントにエクステントを追加する。
・表領域には、一つ以上のセグメントを格納できる。
・オブジェクトとセグメントは一対一で対応。(ビューは除く。)
・セグメントは、一つ以上のエクステんとで構成。
・エクステントは、複数のデータブロックで構成。
制御ファイル
データベースの構成情報及び管理情報を記録するファイル。
CONTROL_FILES初期化パラメータにファイル名を設定する。
REDOログファイル
データベースに加えた全ての変更内容が記録。直近の変更が失われるような障害から回復するために使用。トランザクションがコミットされたタイミングで、REDOデータをREDOログファイルに書き込む。
インスタンスリカバリ
インスタンス起動時に前回処理時の異常終了を検知すると、REDOログファイルからデータベースの変更履歴を読み出し、データファイルに反映されていない変更をデータファイルに適用し、併せてデータベースファイルの整合性を回復する仕組み。
REDOログファイルの多重化とログスイッチ
REDOログファイルが破損するとREDOデータおよび対応するデータベースの変更履歴が失われてしまうため、REDOログファイルを多重化する。
多重化構成におけるREDOログファイルをメンバーと呼び、多重化されたメンバーの組をグループと呼ぶ。
メンバーへのREDOデータの書き込み
データベースに対して変更処理が実行されると、インスタンスは、カレントのグループ内の全メンバーに実行された変更に対応するREDOデータを書き込む。
ログスイッチ
カレントグループのメンバーに空き領域がなくなると、別のロググループがカレントになり、インスタンスはそのロググループのメンバーにデータベースのREDOデータを書き込む。この切り替えをログスイッチと呼ぶ。
アーカイブログファイル
一連のREDOデータを保管するため、上書きされる前にREDOデータをコピーして生成されるファイル。ログスイッチが実行されるたびに生成。アーカイブログファイルを出力する運用モードをARCHIVELOGモードと呼ぶ。
メディアリカバリとARCHIVELOGモード
データベースファイルが破損した際、メディアリカバリという手法でデータベースを復旧する。
メディアリカバリを行うには、正常な状態で取得したデータベースのバックアップ及びバックアップ取得時点から障害発生時点までの一連のREDOデータが必要。一連のREDOデータを保管するには、データベースをARCHIVELOGモードで運用する必要がある。
1-4 Oracleのメモリー構造と関連する内部処理
データベースバッファキャッシュ
性能向上のため、データファイルから読み出したブロックをメモリー上に一時的に保管しておく。
REDOログバッファ
REDOログファイルに書き込む前のREDOデータを一時的に保管するメモリー領域。
PGA(プログラムグローバル領域)
特定のOracleプロセス専用のメモリー領域。プロセス間で共有されない。
Oracleデータベースの作成及び各種ツールの使用
2-1 Database Configuration Assistant
データベースの作成・削除、構成変更、テンプレートの管理等が行える。
拡張構成の選択項目
・デプロイメント・タイプ・・データベースを作成するために使用するデータベース・テンプレートを指定する。
・データベース識別情報・・グローバルデータベース名とインスタンスSIDを指定する。
・記憶域オプション・・データベースファイルをどの記憶域に配置するかを指定する。
・高速リカバリ・・高速リカバリ領域の場所及びサイズを指定する。
・ネットワーク構成・・リモート接続に使用するリスナーを指定する。
・Oracle Data Vault・・オプション機能であるOracle Database Vault、Oracle Label Securityを使用するかどうか指定。
・構成オプション・・Oracleデータベースで使用する各種メモリー領域のサイズ、データブロックのサイズ、起動プロセスの最大数、キャラクタセット、地域設定、接続モード、サンプルスキーマを導入するかどうかを指定する。
・管理オプション・・EM Expressを構成するかどうか、作成したデータベースをEnterprise Maneger Cloud Controlの管理対象として登録するかどうかを指定する。
・ユーザー資格証明・・管理用ユーザーのパスワードを入力する。
2-2 SQL*Plus
SQL*Plusの起動時のコマンド指定
sqlpplus <ユーザー名>/<パスワード>
SQL*Plusを起動し、指定したユーザ名とパスワードでOracleデータベースに接続する。
sqlpplus <ユーザー名>
SQL*Plusを起動し、指定したユーザ名でOracleデータベースに接続する。パスワードの入力が求められる。
sqlpplus
SQL*Plusを起動し、Oracleデータベースに接続する。ユーザ名とパスワードの入力が求められる。
sqlpplus /nolog
SQL*Plusを起動するのみで、Oracleデータベースに接続しない。
注意
Oracleでは、ユーザ名は大文字小文字が区別されないが、パスワードは大文字小文字が区別される。
SQL*Plusコマンド
・@・・@に続けて指定したファイルに記載されたコマンドを実行する。
・COLUMN・・列の表示形式を設定または確認する
・CONNECT・・Oracleデータベースに接続する
・DEFINE・・置換変数を設定または確認する
・DESCRIBE・・指定した表などのオブジェクトの定義を確認する
・EXECUTE・・一つのPL/SQL文を実行する
・EXIT・・SQLPlusを終了する
・HOST・・OSコマンドを実行する
・SET・・SQLPlusシステム変数を設定する
・SHOW・・SQLPlusシステム変数の値または現行のSQLPlus環境を表示する
・SHUTDOWN・・インスタンスを停止する
・STARTUP・・インスタンスを起動する
・UNDEFINE・・置換変数を削除する
Oracle Enterprise Manager Database Express
Webブラウザ画面からOracleデータベースの管理作業を行えるツール。次の管理作業を実行可能。
・初期化パラメータの編集
・表領域の管理
・UNDO管理
・REDOログファイルの管理
・制御ファイルの管理
・ユーザーの管理
・ロールの管理
・ADDMによって検出されたパフォーマンスの結果と推奨事項の表示
・AWRに取得した統計の表示
・SQLチューニングアドバイザの実行
Oracle Enterprise Manager Cloud Control
複数のサーバーに配置された複数のOracleデータベース、Oracleデータベース以外の製品を統合的に管理できるツール。Oracleデータベースの起動や停止など、EM Expressから実行できない操作を含め、ほぼ全ての管理作業を実行可能。
Cloud Controlの構成要素
・OMS・・Webベース管理コンソールを提供するWebアプリ。OMA、OMRと連携して動作し、様々なターゲットを管理する。
・OMR・・Cloud Controlの管理情報やOMAが収集したデータを管理するためのOracleデータベース。
・OMA・・管理対象サーバー上の管理対象ターゲットの制御および情報の収集を行う。全ての管理対象サーバーにOMAを配置する必要がある。
データベースインスタンスの管理
3-1 インスタンスの起動
SQL*Plusによるインスタンス起動
STARTUPコマンドを実行。SYSDBA権限を付与されたユーザで実行する必要がある。
インスタンス起動からデータベースオープンまでのステップ
SHUTDOWN状態・・インスタンスが停止し、データベースもクローズした状態
NOMOUNT状態・・インスタンスが起動した状態。初期化パラメータファイルを読み込む。
MOUNT状態・・制御ファイルが読み書き可能な状態。制御ファイルを読み込む。
OPEN状態・・データベースがオープンした状態。REDOログファイルとデータファイルを読み込む。
起動状態と接続可能なユーザー
OPEN状態以外の状態には、特殊な管理権限を持つユーザー(SYSDBAなど)しか接続できない。OPEN状態になると、SYSTEMユーザーなどの一般ユーザーも接続可能になる。
起動状態と実行可能な処理
以下の処理は以下の状態で実行する必要がある。
・データベースの作成、制御ファイルの作成・・NOMOUNT状態
・アーカイブログモードへの変更、データベース全体のリカバリ処理・・MOUNT状態
3-2 インスタンスの停止
SHUTDOWNコマンドによるインスタンスの停止
SYSDBAまたはその他の特殊な管理権限を付与されたユーザーが実行できる。以下のオプションがある。
・NORMAL・・全ての接続が終了されるまで待機し、インスタンスの停止処理を行う。
・TRANSACTIONAL・・実行中のトランザクションが終了されるまで待機し、インスタンスの停止処理を行う。
・IMMEDIATE・・実行中の処理を取り消した上で、インスタンスの停止処理を行う。
・ABORT・・実行中の処理の取り消しを行わず、インスタンスを強制終了する。
3-3 データディクショナリビューと動的パフォーマンスビュー
データディクショナリビュー
データディクショナリの管理情報を人間が読みやすい形式に変換するSELECT文により定義されたビュー。SYSユーザーが所有。表などのオブジェクトの定義情報や、ユーザーの情報等が格納。以下の3つに分類。
・DBA_・・データベース全体の管理情報が表示される。権限を持つユーザーのみアクセス可能。
・ALL_・・問い合わせを実行したユーザーがアクセスできる範囲の管理情報が表示される。
・USER_・・問い合わせを実行したユーザーが種有する範囲の管理情報が表示される。
動的パフォーマンスビュー
制御ファイルに格納された内部管理情報、またはインスタンスで保管している内部管理情報を確認するためのビュー。ビュー名は「V$」から始まる。
3-4 自動診断リポジトリ(ADR)の使用
自動診断リポジトリの概要
アラートログやトレースファイルが集中管理される。あるディレクトリにある、製品やデータベースなどに応じたディレクトリ構造で整理されたログファイルの集合体。
3-5 アラートログとトレースファイルの使用
アラートログ
インスタンスで発生した致命的なエラーや、起動・終了などの管理情報、インスタンスの構成変更など、多くの情報がテキスト形式で出力。
プロセストレースファイルとインシデントダンプファイル
プロセストレースファイル
サーバープロセスやバックグラウンドプロセスなどの各プロセスが出力した情報がテキスト形式で出力。
インシデントダンプファイル
インシデントに関する診断情報の一つ。障害に関わる詳細な診断情報がテキスト形式で出力。
#3 3-6 初期化パラメータの管理
初期化パラメータとは
各メモリー領域のサイズや各機能のON/OFF、プロセスの動作特性など、インスタンスの動作特性を決定するパラメータ。
初期化パラメータファイルの種類
・spfile・・バイナリ形式。ALTER SYSTEM SET文で設定値を変更可能。
・pfile・・テキスト形式。テキストエディタで直接編集可能。
4 Oracle Net Serviceの設定
4-1 Oracle Net Serviceの設定と使用するツール
Oracle Net Serviceとリモート接続
以下手順で行われる。
1.接続先Oracleデータベースに対応する接続識別子を指定し、SQLPlusを起動
2.tnsnames.oraから接続識別子に対応する接続先Oracleデータベースの情報を得る
3.接続記述子のホスト名及びポート番号で接続を待ち受けるリスナーに対して。接続要求を送信
4.接続要求を受信したリスナーは、接続要求に含まれるデータベースサービス名に対応するOracleデータベースに接続を中継
5.SQLPlusとOracleデータベースでリモート接続が確立
4-2 リスナーの設定とサービス登録
リスナーとは
データベースサーバーで動作し、ネットワークを介した接続の要求を受け付け、接続要求をOracleデータベースに転送する役割を持つプロセス。
listener.oraによるリスナーの設定
リスナーの名前、データベースサーバーのホスト名などを記載。
同一データベースサーバー上での複数リスナーの起動
一つのデータベースサーバーに名前が異なる複数のリスナーを起動可能だが、それぞれのリスナーで異なるポート番号を使用する必要がある。
リスナー制御ユーティリティを使用した管理
ターミナルやコマンドプロンプト上で使用するツール。リスナーの起動・停止などの管理作業を実行可能。
リスナーへのサービス登録
リスナーはOracleデータベースへの接続要求を中継するため、構成情報および起動状態をリスナーに登録しておく必要がある。
・動的サービス登録・・インスタンスのLPEGプロセスが自Oracleデータベースの情報を登録する。インスタンスが起動するとリスナーにサービスが登録され、停止すると解除される。LOCAL_LISTENER初期化パラメータにリスナーのアドレス情報を設定する。
・静的サービス登録・・リスナーの設定ファイルlistener.oraにOracleデータベースの情報を記載する。インスタンスの起動状態によらず、サービス登録された状態となる。
4-3 クライアントの設定とリモート接続の実行
クライアントからのリモート接続とネーミングメソッド
クライアントアプリケーションからOracleデータベースにリモート接続するには、データベースサーバー上で動作しているリスナーに接続要求を送信し、リスナーによって接続先Oracleデータベースへ接続を中継する必要がある。その際に必要な情報は下記3つ。
・データベースサーバーのホスト名またはIPアドレス
・リスナーのTCPポート番号
・データベースサービス名
接続識別子から、上記3つの情報を含む接続記述子を得る方法をネーミングメソッドと呼ぶ。
ローカルネーミング
クライアントコンピュータ上の設定ファイルに、接続先情報を記載しておき、ここから接続先情報を得るネーミングメソッド。設定ファイルtnsnames.oraにネットサービス名と接続先情報の対応関係を記載する。
ローカルネーミングを使用することで、データベースサーバーのホスト名またはIPアドレスなどの環境固有の情報をクライアントアプリケーションに指定する必要がなくなる。
簡易接続ネーミング
接続識別子に接続先情報を直接指定するネーミングメソッド。
4-4 Oracle Net Service の高度な設定
TNS_ADMIN環境変数
設定したディレクトリにOracle Net Service関連の設定ファイルを配置できるようになる。
接続時フェイルオーバー
接続先リスナー情報として複数のアドレスを指定しておき、最初に使用したアドレスで接続に失敗した場合、次のアドレスで再度接続を試行する方法。
接続時ロードバランシング
接続先リスナー情報として複数のアドレスを指定しておき、接続実行時にいずれかのアドレスをランダムに使用することで、接続先アドレスを負荷分散する機能。
4-5 共有サーバー接続
共有サーバー接続とは
あるセッションにおける処理を、複数のプロセスで実行する接続モード。
共有サーバー接続の構成方法
SHARED_SERVICE初期化パラメータに1以上の値を設定する。
4-6 データベースリンクとOracle Database Gateway
データベースリンク
あるOracleデータベースから別のOrackeデータベースにある表にアクセスできるようにする仕組み。
Oracle Database Gateway
データベースリンクのデータベースにOracleデータベース以外のDBMS製品を使用可能にする仕組み。
5.ユーザー、ロール及び権限の管理
5-1.Oracle Databaseのユーザー
事前作成済みの管理用ユーザー
SYS・・データベースの起動・停止を含む全ての操作を実行できる管理用ユーザー。
SYSTEM・・データベースの起動・停止などの一部の操作を除き、ほぼ全ての操作を実行できる管理用ユーザー。
ユーザー名とパスワードの規則
ユーザー名
以下の場合ユーザー名をダブルクォーテーションで囲む。
・英数字および「$」「_」「#」以外の文字を使用した場合
・先頭にアルファベット以外の文字を使用した場合
・Oracleの予約語を使用した場合
・アルファベットの大文字小文字を区別する場合
パスワード
・英数字および「$」「_」「#」以外の文字を使用した場合
・先頭にアルファベット以外の文字を使用した場合
・Oracleの予約語を使用した場合
ユーザーの削除
DROP USERコマンドで行う。以下点に注意。
・データベースに接続中のユーザーは削除不可。
・ユーザーが表や索引などのオブジェクトを所有している場合、あらかじめオブジェクトを削除しておくか、CASCADEを指定する。
5-2.権限とロール
権限
システム権限とオブジェクト権限
・システム権限・・データベースに対してどのような操作を許可するか
・オブジェクト権限・・他のユーザーが所有する特定のオブジェクトに対してどのような操作を許可するか
システム権限の付与・取り消し
GRANT システム権限名 TO 付与対象ユーザー;
REVOKE システム権限名 TO 取り消し対象ユーザー;
オブジェクト権限の付与・取り消し
GRANT オブジェクト権限名 ON オブジェクト TO 付与対象ユーザー;
REVOKE オブジェクト権限名 ON オブジェクト TO 取り消し対象ユーザー;
ロール
複数の権限を一つにまとめて扱いやすくしたもの。
ロールの留意点
ロールをユーザーに付与した後で、ロールに変更を加えると、そのロールを付与されたすべてのユーザーにロールの変更が反映される。
ロールへの権限付与・取り消し
付与
GRANT 付与する権限 TO ロール名;
取り消し
REVOKE 取り消す権限 TO ロール名;
ロールのユーザーへの付与・取り消し
付与
GRANT 付与するロール名 TO ユーザー名;
取り消し
REVOKE 取り消すロール名 FROM ユーザー名;
PUBLICロール
付与した権限が全てのOracleユーザーに付与されるロール。
権限分析
DBMS_PRIVILEGE_CAPTUREを使って、不要な権限がユーザーに付与されていないか調べることが可能。
OS認証
接続処理を実行したOSのユーザー名をもとにOracleユーザーの認証を行う方法
OS認証を使用する一般ユーザーの作成
IDENTIFIED EXTERNALLY句を指定したCREATE USER文を実行して作成。この時、Oracleユーザー名にはOS_AUTHENT_PREFIX初期化パラメータで指定された接頭辞を付けたものを指定。
5-4 領域割当て制限
クオータとは
その表領域においてユーザーが使用可能な記憶域の最大サイズ。
UNLIMITED TABLESPACEシステム権限
全ての表領域について無制限に記憶域を割り当てることが可能。ロールには付与できず、ユーザーに直接付与する必要がある。
5-5 プロファイル
プロファイルとは
パスワード管理ポリシー及びリソース制限に関する設定をセットにしたもの。
5-6 管理権限
SYSDBA権限
・インスタンスの起動停止、バックアップとリカバリを含むすべての管理操作を実行可能。
・すべてのユーザーのデータにアクセス可能。
・SYSユーザーで接続される。
SYSOPER権限
・インスタンスの起動停止、バックアップとリカバリを含む管理操作を実行可能だが、データベースの作成と削除、不完全リカバリは実行不可
・ユーザーのデータにアクセス不可
・PUBLICユーザーで接続される。
管理権限を持つユーザーの認証
データベースがOPENされていない状態で接続・認証できる必要があるため、OS認証及びパスワードファイル認証が使用される。
6 表領域及びデータファイルの管理
6-1 表領域の概念
表領域の種類
格納できるセグメントの種類による分類
・永続表領域・・表や索引などのオブジェクトを格納するために使用。
・UNDO表領域・・UNDOセグメントと呼ばれる、過去のデータを保持する特殊なセグメントを格納するために使用。
・一時表領域・・一時セグメントと呼ばれる、一時的なデータを保持する特殊なセグメントを格納するために使用。
データファイルのブロックサイズによる分類
表領域を構成するデータファイルのブロックサイズにより、標準ブロックサイズの表領域と、非標準ブロックサイズの表領域に分類。
・標準ブロックサイズの表領域・・データベースのデフォルトのブロックサイズを使用。DB_BLOCK_SIZE初期化パラメータに設定。
・非標準ブロックサイズの表領域・・データベースのデフォルトのブロックサイズとは異なるブロックサイズを使用。DB_nk_CACHE_SIZE初期化パラメータを設定する。
ローカル管理方式の表領域
以下機能を持つ。
・エクステント割り当ての自動化
・自動セグメント領域管理
・bigfile表領域
・遅延セグメント作成
・セグメントの縮小
エクステント割り当ての自動化
以下二つの決定方法がある。
・AUTOALLOCATE・・Oracleがエクステントサイズを自動決定する。デフォルト。
・UNIFORM・・エクステントのサイズが固定となる。表領域作成時にサイズを指定。
UNDO表領域のエクステント割り当てタイプは常にAUTOLLOCATE、一時表領域の割り当てタイプは常にUNIFORMとなる。
biffile表領域
大きなサイズのデータベースを想定した機能。データファイルの最大サイズが32TBで、一つのデータファイルで構成される。
6-2 表領域とデータファイルの管理
データファイルの移動
・オフライン移動・・移動対象のデータファイルで構成される表領域をオフラインにしてから、データファイルを移動する。移動作業中は対象の表領域にはアクセスできない。
・オンライン移動・・移動対象のデータファイルで構成される表領域をオンラインにしたまま、データファイルを移動する。移動作業中も対象の表領域にアクセス可能。
6-3 Oracle Managed Files
Oracleが自動的にデータベースファイルのファイル名の命名、作成、削除を行うことで、データベース管理者の管理負荷軽減を狙った機能。
7 データ格納のための記憶域の利用
7-1 行の格納方法とブロックの空き領域管理
データブロックへの行データの格納
ブロックは、管理用の領域であるヘッダー領域とデータ格納用の領域に分かれる。
ヘッダー領域の中にブロックヘッダー、表ディレクトリ、行ディレクトリという領域がある。
ブロックの空き領域管理
行データのサイズ変更に備えて、どれだけのブロックないの空き領域を残しておくかを、PCTFREEパラメータに設定できる。
セグメント領域管理方式
・自動セグメント領域管理方式・・空き領域があるブロックをツリー形式の管理構造で管理。表レベルの設定項目がPCTFREEのみ
・手動セグメント領域管理方式・・空き領域があるブロックをリスト形式の管理構造で管理。表レベルの設定項目が多い
セグメント領域管理方式の構成手順
1.使用するセグメント領域管理方式を指定して表領域を作成する。
2.ブロック空き領域管理関連の物理属性パラメータを指定して表を作成する。
行移行と行連鎖
・行連鎖・・一つの行のデータサイズがブロックのデータ格納用領域よりも大きい場合に、行データを複数の行断片に分割し、それぞれの行断片を別々のブロックに格納する。
・行移行・・行のサイズが拡張するようなUPDATE文を実行した際、拡張したデータがブロックの空き領域に収まらなかった時の行データの格納形態。
7-2 セグメントの管理
オブジェクトとセグメント
表や索引などのデータを保持するオブジェクトには、セグメントと呼ばれる記憶域が1対1で対応する。ビュー、シノニム、シーケンス、ストアドプログラムなど、セグメントを持たないオブジェクトもある。
遅延セグメント作成
DEFERRED_SEGMENT_CREATION初期化パラメータをTRUEに設定すると、セグメントを持つオブジェクトを作成しても、オブジェクトにデータが格納されるまでセグメントが作成されない。
ローカル管理方式の表領域で使用可能。
再開可能領域割り当て
セグメント拡張を正常に実行できない状況が発生した場合に、処理を一時停止し、パラメータで指定した秒数だけエラー発生及び処理の強制終了を待つ機能。
セグメントの縮小
HWMとは
「そのセグメントのどこまでデータが格納されたことがあるか」を示す。HWMよりも後ろのブロックにはデータが存在しないこと、全てのデータはセグメントの先頭ブロックからHWMの間に格納されていることが保証される。
TRUNCATE TABLE分とエクステントの解放
・DROP STORAGE(デフォルト)・・表の作成後に追加で割り当てられたエクステんと
・DROP ALL STORAGE・・すべてのエクステント
・REUSE STORAGE・・エクステントを解放しない
特殊なセグメント
・永続セグメント・・データを保持するオブジェクトを作成するのと併せて作成される。
・UNDOセグメント・・変更処理を実行した際、過去データを保管するために使用。
・一時セグメント・・大量のデータをソートする場合など、メモリー内でデータ処理が実行できない場合に一時的にデータを保管する。
7-3 領域の節約
基本表圧縮(ROW STORE COMPRESS BASIC)
ダイレクトパスロード操作、ALTER TABLE MOVE、表のオンライン定義を行った場合のみデータが圧縮される。
高度な行圧縮(ROW STORE COMPRESS ADVANCED)
すべての操作でデータが圧縮される。
8 UNDOの管理
8-1 トランザクション及びUNDOデータの理解
UNDO表領域とUNDOセグメント
・UNDO表領域・・変更前の過去データを格納するための表領域。
・UNDOセグメント・・UNDO表領域に格納される、過去データを保持する特殊なセグメント。
UNDOデータの用途
・トランザクションのロールバック
・読み取り一貫性
・インスタンスリカバリでのロールバック処理
UNDOセグメントとトランザクションの関係
・一つのトランザクションにはある特定のUNDOセグメントが対応。
・一つのUNDOセグメントに、複数のトランザクションが割り当てられることがある。
・大量のデータを変更するトランザクションを実行した場合、大量のUNDOデータが出力される。
UNDOデータの保存と上書き
UNDOデータのステータスに応じて、UNDOデータが保存されるか他のUNDOデータで上書きされるかが決まる。
ステータスは、トランザクションが実行中かどうか、トランザクションが終了してからUNDO保存期間内であるか否かによって3つに分岐する。
・アクティブ・・UNDOデータが上書きされない
・有効期限内・・UNDOデータが原則的に上書きされない
・有効期限切れ・・UNDOデータが上書きされる可能性がある
UNDOとREDOの違い
UNDOは、「実行したことをなかったことにする」一方で、REDOは「一度実行したことをもう一度行う」。
8-2 UNDO保存の設定
UNDOの保存期間
UNDO_RETENTION初期化パラメータにUNDO保存期間(秒)を設定することで、トランザクションが終了してからUNDO保存期間を経過していないUNDOデータを上書きしないよう動作する。
UNDO保存期間の保証
以下を実行することで、UNDO保存期間だけ、必ずUNDOデータが保持されるようになる。
ALTER TABLESAPCE UNDO表領域名 RETENTION GUARANTEE
※UNDO保存期間の保証を有効にすると、トランザクション実行によるUNDOデータの生成よりも、過去のUNDOデータの保管を優先するため、UNDO保存期間に長い期間を設定すると、トランザクション実行に失敗する事がある。
8-3 一時UNDO機能
一時UNDOとは
一時表に格納したデータを変更した時の、UNDOデータの出力先を一時表領域に変更でき、REDOの生成を完全に抑止可能。
一時UNDOの有効化
TEMP_UNDO_ENABLED初期化パラメータをTRUEに指定する。
9 データの移動
9-1 Oracle Data Pump
Oracle Data Pumpとは
データをOracleデータベース外部にエクスポート/Oracleデータベース外部からインポートするツール。
Data Pumpの動作モード
処理対象となるデータの範囲に応じて5つの動作モードが存在。
・スキーマモード・・SCHEMASパラメータで指定されたスキーマのすべてのオブジェクトをエクスポート/インポートする。
・表モード・・TABLESパラメータで指定された表のみをエクスポート/インポートする。
・表領域モード・・TABLESPACESパラメータで指定された表領域に格納されているオブジェクトをエクスポート/インポートする。
・全体モード・・データベース全体をエクスポート/インポートする。FULLパラメータでこのモードを指定する。
・トランスポータブル表領域モード・・データベース間で表領域を移行する為に使用する。TRANSPORT_TABLESPASEパラメータでこのモードを指定する。
9-2 SQL*Loader
OSファイルシステム上のデータをOracleデータベース上の表にロードするツール。
SQL*Loaderエクスプレスモード
制御ファイルなしでデータをロードできるモード。以下の留意点がある。
・ロード対象の表のデータ型は、文字、数値、日時
・データファイルは、CSVファイル、タブ区切りファイルなどの特定の区切り文字で区切られたテキスト形式のファイルである必要がある。
・ロード対象の表に存在しているデータは削除されず、ロード対象のデータが追加される。
9-3 外部表
OSファイルシステム上のファイルをあたかもOracleデータベース上にある表のように扱うことができる仕組み。
ORACLE_LOADERアクセスドライバの外部表
SQL*Loaderでロードできる形式の外部ファイルを、外部表としてアクセスできる。
ORACLE_DATAPUMPアクセスドライバの外部表
問い合わせ結果をダンプファイルに出力し、そのダンプファイルを別のOracleデータベースで外部表を介して読み取ることが可能。