もんじゅ会議室 > せんちゃん専用掲示板 >
第6回 制御ファイル 投稿者 とく 日時 2003 年 9 月 22 日 12:52:02:

(回答先: 第4回 DBA 表領域とデータファイル 投稿者 とく 日時 2003 年 9 月 22 日 12:51:09)

第6回 制御ファイル
http://www.seshop.com/se/edu/shikaku/omo/miti/miti_gold06.asp?educat=gold2

さて、今回はDBAの番ですね。DBAの試験は如何にOracleのアーキテクチャが理解でき
ているかが大事です。コマンドやパラメタ名を暗記していても、「だからどうして?」
なんて聞かれたら、答えられなくて固まってしまいます。また、問題の意図がわから
なくて正解できなかったと言う声を良く聞きますが、「暗記で勝負!」の方にその傾
向が強いようです。では、今日はインスタンス、データディクショナリ、制御ファイ
ルの話をしながら、「暗記で勝負!」ではなく、「だからどうして?」を学習する要
領をお伝えしましょう。では、早速問題!「データベースの状態にNOMOUNT、MOUNT、
OPENがあります。V$SGAは、NOUMOUNT状態から検索することが可能です。しかし、V$D
ATABASEは、MOUNT状態から検索することが可能です。どちらも動的パフォーマンス・
ビューなのに、なぜ異なるのですか?」

NOMOUNT状態は、未だインスタンス(SGAとバックグラウンドプロセス)しか、立ち上
がっていないから、そこから取得できる情報(動的パフォーマンス・ビュー)しか、
検索できません。
NOMOUNT状態でアクセス可能なのは、

V$SGA… SGAは獲得できているから
V$INSTANCE… インスタンスは起動されているから
V$PROCESS… データベース接続はできないけど、プロセスの起動だけならできるからバックグラウンド・プロセスは起動されているし。
V$SESSION… データベースの接続には関係ないから
V$VERSION… データベースの接続には関係ないから
V$OPTION… データベースの接続には関係ないから、製品(RDBMS)のオプション
V$PARAMETER… インスタンスを起動していると言うことは、初期化パラメタの内容は把握できていると言うことだから

では、MOUNT状態で、V$THREAD、V$CONTROLFILE、V$DATABASE、V$DATAFILE、V$DATAFI
LE_HEADER、V$LOGFILEがアクセスできる理由は?これらのディクショナリの情報は、
制御ファイルから取得できるからです。MOUNT状態は、制御ファイルのみがアクセス
できる状態です。データファイルはまだ、アクセスできません。MOUNT状態は、制御
ファイルに記録されている内容を検索することはできますが、それが正しいかどうか
は確認しません。だから、SYSTEM表領域の移動や、DBAの範囲ではありませんがファ
イルを損傷した場合の回復作業は、MOUNT状態で行えるのです。

OPENすると、制御ファイルの内容を元に、実際にデータファイルやログファイルを探
し、アクセス可能な状態にします。ここで、ファイルが損傷していたり見つからない
とOPEN出来ないエラーになります。そこで、実際にOPENしに行く前に、NOMOUNT状態
で、制御ファイルの内容を書き換えてしまうのです。それが、ALTER DATABASEコマン
ドです。

なぜ、SYSTEM表領域の移動や、ファイルを損傷した場合の回復作業はMOUNTではなけ
ればいけないの?なぜOPENではいけないの?というのが、前述のMOUNT状態で取得で
きる情報は何か?逆から考えると、制御ファイルから取得できる情報は何か?から、
追って考えることが出来るのです。前回の「表領域とデータ・ファイルの管理」の範
囲にデータファイルの移動という内容があります。ALTER TABLESPACEコマンドとALTE
R DATABASEコマンドの使い分けが出来るようにしておきましょう。

制御ファイルには、データベースファイルの名前が、記録されているから、OPEN前に
それを移動先の名前に書き換えてしまいたい。だから、MOUNT状態で作業する。

さあ、これから先はご自分で、「だからどうして?」を考えながら、勉強してみてく
ださい。今回はこれでおしまい。

 

 次へ  前へ


フォローアップ:

このページに返信するときは、このボタンを押してください。投稿フォームが開きます。


 

 

 

 

せんちゃん専用掲示板掲示板へ