ラベル 基本動作 の投稿を表示しています。 すべての投稿を表示
ラベル 基本動作 の投稿を表示しています。 すべての投稿を表示

2014年3月12日水曜日

本番障害で大爆笑が起きた珍事

ブログを移転しました。
https://awsbloglink.wordpress.com

7年前に建築関係のシステムに参画した時の話です。
私はDBAに従事しておりカットオーバーしてプレ本番をしている段階でした。
(厳密に言うと社内の人が評価をしている状態)
DBAは、論理設計、物理設計が終わって、バックアップや性能レポートの作成、SQLの質問などを対応する状況でしたが、比較的落ち着いていました。
ただ、開発チームは頻発するバグや追加要件の対応に終われいて疲弊しており、エンドユーザーもイライラして緊張感MAXでした。

そんな状況で・・・AP、DBサーバのCPUがベタ張り状態になり動作不能に。
数十人のエンドユーザーが環境を使用しているため、事態に気付いたエンドユーザーの部長が、
どなりこんできました。
リソース不足ではなく開発チームのPGなのは予想できましたが、
当然のことながら原因追及をしなくてはなりません。

APはWebLogic(当時はBEA)。DBはOracle10gR2。


どう考えてもSQLだろうと推測して、激重状況でしたが、
EMのパフォーマンス統計を閲覧したところ、1つのSQLがDBを占有していました。
イメージ図で行くと、こんな感じの単純なSQLでした。
==========================
select *
from a , b , c
where b.code = c.code
and c.kbn = '1'
==========================

SQL文を知っている方ならダメな点にすぐ気付くと思います。
aというテーブルがbテーブル/cテーブル連合軍と直積しているんですね。
(簡単に言うと掛け算)

条件の書き忘れという単純なSQLですので、実行計画なんて見るまでもない完全なバグ。
これは部長に言ったら怒鳴り散らすだろうなと思ったんですが、言い訳を考えるためにSQL統計を
覗いたら行が凄いことに・・・
SQL統計
行:3,500,000,000,000 (3兆5千億件)
大きいテーブルで1,000万件、DWHの最大テーブルで1億件程度だったので、
この件数は破格すぎて言葉を失いました。


ただ、これを物凄い真面目な顔して報告したら、部長の怒りが少しは収まらないかなと思い・・・
とりあえず言ってみることにしました。
(どうせ怒られるんだから)

私「部長、原因がわかりました!PGから3兆5千億件のデータ取得が走っているため、
  終わるまでもうしばらく時間がかかると思います。しばらくお待ちください!」
  (終わるわけないのは重々承知)

これを言ったらプロジェクトルームが大爆笑。
エンドユーザーの課長が笑っていたため、空気を読んでくれたのかSIer側も大爆笑。


肝心の部長も・・・「一体、何をしようとしてそんなことになったのかな(笑)」と、
激怒していた部長の表情がやわらぎました。(呆れていました)

これは最後の畳み掛けとしてPGを書いた人間に理由を聞くしかないと思い、
PGを書いた人に何をしようとして、このSQL文を書いたのか?と尋ねました。

PGの回答
「家の建築に使用する扉の一覧を表示しようとしました」

部長
「弊社は取り扱っている製品が多いから、扉については他社に負けない在庫を所有しているな(笑)」


これで完全に突破口が見えたので、
「該当SQLを停止して、APとDBをサーバごと再起動して、テスト再開を提案」
許可がおりたので、即刻実行して、テストを再開して乗り切りました。
PGには厳重注意しましたが・・・。


こういう事態にならないようにリソースマネージャーを定義していたのですが、
バッチ処理などが並行して走るため、リソースの制限は本番まで止めておいてください
という指示されていたため、言い訳もなんとかたちました。


本番障害で大爆笑という珍事でした。
SQL文は条件がきちんとつながっているか確認しましょう。
ビッグデータ時代だから、件数は大したことないが、それでも建築資材を選ぶシステムで、
3兆5千億件はありえないですよね。。。

IT屋には演技力も必要というのが私の持論です。

2014年3月9日日曜日

ITエンジニアがWordよりExcelを好む理由

IT業界に携わるエンジニアの方でドキュメントの作成を経験したことがない方はいないと思います。
私の経験では職種問わず「やっぱりWordよりExcelの扱いやすいよ」と愚痴をこぼしている方をよく見かけます。
そして、そういう意見が出る方の言い分は「勝手に番号が採番されるから嫌」というWordの機能を把握していないだけなのでは・・・と感じることが多々あります。

確かに何も設定しない状態で、まっさらな状態からWordで資料を作ると、かなり面倒です。
ただ、大体のベンダー(SIer)は定型フォーマットを定義していますから、その定型フォーマットの仕様さえ把握すれば、そこまで面倒ではないと思います。

Wordは文章校正、章の自動採番、改ページ位置の調整など、Excelを使用すると手作業が入りそうな部分を自動で行ってくれため、非常に便利ですよ。

だからといってExcelを使う場面が少なくなるということは絶対ありません。
私はOracleエンジニアなのですが、Excelを使用するシーンとして真っ先に思いつくのはパラメータシートを作成する時です。

[パラメータシート(一部)]
基本情報(サーバ名、データベース名、インスタンス名 ...etc)
初期化パラメータ
各種ファイルの格納場所
ネットワークファイル(tns、listener ...etc)

例えば、顧客に対してのドキュメントの納品を例にすると、
パラメータシートだけでは設計書としては不十分だと思います。
そういう時にWordを使用して、要件、構成、根拠を記載して、その後に別紙としてパラメータシート(Excel)を参照するように文章構成すれば問題ないと思います。