今日から一週間、研修です。
1日中勉強です。幸せです。
質問しても
「聞く前に調べろ」
とか
「そんなことも知らないの?」
とか
言われません。
天国です。
プレッシャーからも開放されて、腹痛も治りました。
しかも、就職活動ぶりの大手町。ビルがいっぱい。OLっぽい。
しかも、お食事券5000円分もらって毎日ただでごはん。
しかも、ドリンク券15枚もらって毎日ただでぶれいく。
おっと。話がそれました。
***
何しに行ったかというと・・・
オラクルデータベース管理者としての基礎を勉強しました。
てか、オラクルマスターGOLDとるためには研修を受けないといけないんですね。
それで、35万も払って研修を受けるわけですね。
1日目の感想は・・・
楽しい♪
です。
受講生は5人です。贅沢っ。
興味がわきすぎて、講義終了後40分も先生をお引止めしてしまいました・・・
今日はアプリケーションのインストールからデータベース作成、
データベースの起動、シャットダウンとオラクルデータベースの
概要(SGAとDBの概念など)を勉強しました。
普段だったら面倒だなぁ・・・
って感じの作業だけどっ。
Selverのときに勉強したはずなのに、チェックポイントの発生に
ついて誤認してました。
以下、ただの備忘録なのでお見苦しく・・・。
☆備忘録1
チェックポイントは以下のタイミングで実行されます。
・ログスイッチ発生時
・DBの正常終了時(SHUTDOWN ABORTや障害発生以外)
・CHECKPOINTコマンド発行時
・表領域オフライン時
☆ぼやき
うっかりCOMMITを発行したタイミングと思い込んでました。
もしそうだとすると、REDOログバッファからREDOログファイルへの
書き込みと同時になってしまい、I/Oが頻発してしまいます。
それに、REDOとデータベースファイル差分がないんじゃREDOの意味ないし・・・。
REDOは変更履歴を時系列に記述してるだけだから、負荷が低いんだそうです。
だから、基本REDOに書いておいて、データベースバッファの内容に関しては
チェックポイントでデータファイルに書き込みにいくんだとか。
だけど、COMMITしたのにメモリ上にデータが残ってるなんてっ
って思っちゃいますよね。(私だけ?)
データベースバッファはインスタンス起動時にクリーンな状態になっちゃう
から、障害発生時はREDOログからデータをロールフォワードするってことかな?
混乱してきました・・・
☆備忘録2
チェックポイントが実行されるとCKPT(バックグラウンドプロセスのひとつ)
が制御ファイルとデータファイルにSCN(システムチェンジナンバー)
を記録して、現在どこまでデータファイルに書き出してますよっていう
ことを記録する。
コレを頼りに、インスタンス起動時にSMONがチェックして自動リカバリ
するんですね。
☆備忘録3
とはいえ、SHUTDOWN時はやはりIMMEDIATEオプションで強制的に
チェックポイントを実行してCOMMITされていないデータはロールバックする
のがメジャーみたいですね。
☆ぼやき
障害発生してるんだから、ちゃんとCOMMITされるか分からないし
管理者のタイミングで止めたいってことかな?
TRANSACTIONALでも大差ないし、どうせなら発行したSQL文はCOMMITしたいのでは?
と思ってしまうけれど。
あと、次回STARTUP時に自動でリカバリはするけど、実際のアプリで
「じゃあどこまで処理が行われたの?」
っていうのはSQLログや更新するTABLEで確認して、アラートログで障害発生の
タイミングとつき合わせ???
うーん。5年もこの仕事してるのに申し訳ないけど実際にトラブルになったら
どうしてるんだろう??
しかもココで言ってるトランザクションってSQL発行からCOMMITまでだよね。
DB更新系のストアードなど(途中でCOMMITしてたりするやつ)で
途中で障害が発生して片やCOMMIT片やロールバックされたら意味分からないよね。
あと、現在質問中のもの。
☆
インストール時のキャラクタセットで、データベースキャラクタセットと
各国語キャラクタセットってなんだろう?
文字コード系は特に苦手・・・。
結局・・・気になったので調べました。
そしたら試験用のテキストに書いてありました・・・。
型によって違うみたいです。
CHAR、VARCHAR2はデータベースキャラクタセット
NCHAR、NVERCHAR2は各国語キャラクタセット
要はこれだけ。
で、データベースキャラクタセットは可変長のキャラクタセットしか設定
できません。※1
例えば文字コードを格納するすべての列で多言語対応が必要な場合は
Unicodeを使用することになるけれど、UTF-8を使用しなければならないため
(※1の理由で固定長のUTF-16は使用不可)アジア言語の場合は3バイトの
サイズが使われてしまうのだそうです。
だからすべての列に必要ないなら、各国語キャラクタセットをUTF-16にして
NCHAR、NVERCHAR2を使用すれば効率がいいんだね。
ほうほう。
1日中勉強です。幸せです。
質問しても
「聞く前に調べろ」
とか
「そんなことも知らないの?」
とか
言われません。
天国です。
プレッシャーからも開放されて、腹痛も治りました。
しかも、就職活動ぶりの大手町。ビルがいっぱい。OLっぽい。
しかも、お食事券5000円分もらって毎日ただでごはん。
しかも、ドリンク券15枚もらって毎日ただでぶれいく。
おっと。話がそれました。
***
何しに行ったかというと・・・
オラクルデータベース管理者としての基礎を勉強しました。
てか、オラクルマスターGOLDとるためには研修を受けないといけないんですね。
それで、35万も払って研修を受けるわけですね。
1日目の感想は・・・
楽しい♪
です。
受講生は5人です。贅沢っ。
興味がわきすぎて、講義終了後40分も先生をお引止めしてしまいました・・・
今日はアプリケーションのインストールからデータベース作成、
データベースの起動、シャットダウンとオラクルデータベースの
概要(SGAとDBの概念など)を勉強しました。
普段だったら面倒だなぁ・・・
って感じの作業だけどっ。
Selverのときに勉強したはずなのに、チェックポイントの発生に
ついて誤認してました。
以下、ただの備忘録なのでお見苦しく・・・。
☆備忘録1
チェックポイントは以下のタイミングで実行されます。
・ログスイッチ発生時
・DBの正常終了時(SHUTDOWN ABORTや障害発生以外)
・CHECKPOINTコマンド発行時
・表領域オフライン時
☆ぼやき
うっかりCOMMITを発行したタイミングと思い込んでました。
もしそうだとすると、REDOログバッファからREDOログファイルへの
書き込みと同時になってしまい、I/Oが頻発してしまいます。
それに、REDOとデータベースファイル差分がないんじゃREDOの意味ないし・・・。
REDOは変更履歴を時系列に記述してるだけだから、負荷が低いんだそうです。
だから、基本REDOに書いておいて、データベースバッファの内容に関しては
チェックポイントでデータファイルに書き込みにいくんだとか。
だけど、COMMITしたのにメモリ上にデータが残ってるなんてっ
って思っちゃいますよね。(私だけ?)
データベースバッファはインスタンス起動時にクリーンな状態になっちゃう
から、障害発生時はREDOログからデータをロールフォワードするってことかな?
混乱してきました・・・
☆備忘録2
チェックポイントが実行されるとCKPT(バックグラウンドプロセスのひとつ)
が制御ファイルとデータファイルにSCN(システムチェンジナンバー)
を記録して、現在どこまでデータファイルに書き出してますよっていう
ことを記録する。
コレを頼りに、インスタンス起動時にSMONがチェックして自動リカバリ
するんですね。
☆備忘録3
とはいえ、SHUTDOWN時はやはりIMMEDIATEオプションで強制的に
チェックポイントを実行してCOMMITされていないデータはロールバックする
のがメジャーみたいですね。
☆ぼやき
障害発生してるんだから、ちゃんとCOMMITされるか分からないし
管理者のタイミングで止めたいってことかな?
TRANSACTIONALでも大差ないし、どうせなら発行したSQL文はCOMMITしたいのでは?
と思ってしまうけれど。
あと、次回STARTUP時に自動でリカバリはするけど、実際のアプリで
「じゃあどこまで処理が行われたの?」
っていうのはSQLログや更新するTABLEで確認して、アラートログで障害発生の
タイミングとつき合わせ???
うーん。5年もこの仕事してるのに申し訳ないけど実際にトラブルになったら
どうしてるんだろう??
しかもココで言ってるトランザクションってSQL発行からCOMMITまでだよね。
DB更新系のストアードなど(途中でCOMMITしてたりするやつ)で
途中で障害が発生して片やCOMMIT片やロールバックされたら意味分からないよね。
あと、現在質問中のもの。
☆
インストール時のキャラクタセットで、データベースキャラクタセットと
各国語キャラクタセットってなんだろう?
文字コード系は特に苦手・・・。
結局・・・気になったので調べました。
そしたら試験用のテキストに書いてありました・・・。
型によって違うみたいです。
CHAR、VARCHAR2はデータベースキャラクタセット
NCHAR、NVERCHAR2は各国語キャラクタセット
要はこれだけ。
で、データベースキャラクタセットは可変長のキャラクタセットしか設定
できません。※1
例えば文字コードを格納するすべての列で多言語対応が必要な場合は
Unicodeを使用することになるけれど、UTF-8を使用しなければならないため
(※1の理由で固定長のUTF-16は使用不可)アジア言語の場合は3バイトの
サイズが使われてしまうのだそうです。
だからすべての列に必要ないなら、各国語キャラクタセットをUTF-16にして
NCHAR、NVERCHAR2を使用すれば効率がいいんだね。
ほうほう。