Upgrade to Pro — share decks privately, control downloads, hide ads and more …

キャンディちゃんに叱られる(登壇用資料)

 キャンディちゃんに叱られる(登壇用資料)

HirokazuYatsunami

January 29, 2019
Tweet

More Decks by HirokazuYatsunami

Other Decks in Technology

Transcript

  1. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | オラクルコンサルの新年会トークセッション 2 「平成」最後の新年
  2. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 4 Q:「平成」の次の元号で何個目? ヒント:今上天皇は、125代目。 虫殺し(645年)大化の改新の天智天皇(38代目) の時代から1373年間(87の天皇)使用している。 【正解】 715年~が霊亀 724年~が神亀 770年~が宝亀 【理由】 珍しい亀が見つかり、献上されたため、改元 当然、 システム改修など 気にする必要のない 牧歌的な時代 これまで 使われた 文字数は 72文字 「平」は 12回使われ ている
  3. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 7 WHO AM I 八波博和(やつなみ ひろかず) 最近の趣味 寿司 東京都新宿区在住 歳独身 俺は結婚できない じゃない。 結婚しないんだ‼
  4. • 2019 平成31年 32歳 ORA入り4年目 のシーズン 「勝負の年」とか 意気込んでみたり 会社を起業 2名の社員を抱え、それなり

    に利益を出す(20代にして はリッチだった・・・) 2010 平成22年 24歳 2015.11 平成27年 28歳 法 人 の 経 営 権を譲渡し… ORACLE 入 社 ( 所 謂 Ora 入 り) ボーっと生きて た(ORA入り だけで満足) 2018 平成30年 31歳 ITの仕事もはじめる 斜陽業界での放送作家とい う生業。いつか詰むと予測。 (詰みかけていた) ORA 入 り 3 年 目 の シーズン とある事を切っ掛けに やる気スイッチON ロイヤルカスタマーPJ のPM…等 青い⁉ 青と青に赤 クセがスゴイ
  5. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 10 今から思えば、 20代は遊びす ぎたなあ… 平成ネタ 再び 昭和風に いえば 「人間万事塞翁が馬」 (きっと) これでよかった
  6. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 12 最近の“現場”での気づき • 数理的、定量的な積み上げや、法律家的な製品知識も大切(織り込み済 み、揺り籠)だが、抽象度をあげて、定性的な議論を運ぶための構想力、合 意形成のための芯を喰った対話~からの~考察が深まることを意識しつつ導 線を引くスキル、時に、局面創出力も大切
  7. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 13 最近の“現場”での気づき • 数理的、定量的な積み上げや、法律家的な製品知識も大切(織り込み済 み、揺り籠)だが、抽象度をあげて、定性的な議論を運ぶための構想力、合 意形成のための芯を喰った対話で考察が深まることを意識しつつ導線を引くス キル、時に、局面創出力も大切 ⇒ 意思決定者のリード・タイムを精緻に短縮させる。落としどころのレコメンド 初期の状態 反復可能な状態 定義された状態 管理された状態 最適化された状 態 情報を整理整頓(「コンサルティング」「スクルト」)して、 チーム全体の生産性が向上したり、意思決定者の決断の精度がUP する瞬間に喜びを感じる今日この頃
  8. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 14 最近の“現場”での気づき • 「早く行きたければ一人で行け。遠くに行きたければみんなで行け」 「名選手、必ずしも名監督にあらず」 1人の能力が 1 ⇒ 20 にスキルアップ 8人の能力が 1 ⇒ 5 にスキルアップ した方が、チーム全体のスキルの総量はアップする チームプレイ大事。育成やオンボーディングも大事。
  9. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 15 最近の“現場”での気づき • 「仕事ができる」とはどういうことか? 事務処理能力が高い?プレゼン能力が高い?マネージメント能力? 社内調整能力?政治力? コミュニケーション能力?数理的なエンジニアリグ、プログラミング能力? モチベーションを維持する力 大事 自分のモチベーションを長期間コントロールでき、 安定的にやる気に燃えていること
  10. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 16 最近の“現場”での気づき • 「仕事ができる」とはどういうことか? 事務処理能力が高い?プレゼン能力が高い?マネージメント能力? コミュニケーション能力?数理的なエンジニアリグ、プログラミング能力? モチベーションを維持する力 大事 本当に強いポケモン・トレーナなら… 「好きな事 vs 得意な事」問題 好きなこと 得意なこと
  11. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 17 最近の“現場”での気づき • 「仕事ができる」とはどういうことか? 事務処理能力が高い?プレゼン能力が高い?マネージメント能力? コミュニケーション能力?数理的なエンジニアリグ、プログラミング能力? モチベーションを維持する力 大事 本当に強いポケモン・トレーナなら… 好きな事 vs 得意な事 「好きな事 vs 得意な事」問題
  12. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 18 最近の“現場”での気づき 「キャリア」なんてただのイメージで、 日々の業務の積み重ね方があるだけ… (但し、「小学生のサッカー」=「目の前の問題ばかり拾う状態」 にならないように注意)
  13. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 21 「いってらっしゃーいってお別れするとき、 手を振るのはなぜ?」 「かんぱーいってするときにグラスを カチン、あれはなぜするの?」
  14. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 22 「なぜ Oracle Database は version1 からではなく version2 からなの?」 「どうして、Oracle Database の トランザクションはタイムスタンプでなく System Change Number(SCN) で管理するの?」 「どうして、RACの投票ディスクは奇数個がいいの?」 どして?
  15. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 24 「なぜ Oracle Database は version1 からではなく version2 からなの?」 「どうして、Oracle Database の トランザクションはタイムスタンプでなく System Change Number(SCN) で管理するの?」 「どうして、RACの投票ディスクは奇数個がいいの?」
  16. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 25 715年~が霊亀 724年~が神亀 770年~が宝亀
  17. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 26 Larry Ellison、Ed Oates、Bruce Scott、Bob Miner Michael Stonebraker Roger Sippl
  18. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 27 Larry Ellison、Ed Oates、Bruce Scott、Bob Miner Michael Stonebraker Roger Sippl Larry Ellison、Ed Oates、Bruce Scott、Bob Miner
  19. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 28 Oracle Database進化の歴史(~Oracle 7(1992年・平成4年)まで) 更に大量のクライアント環境への対応 「行レベルロック」、「PL/SQL」 Oracle 6 Oracle v5 分散トランザクションのサポート、Bツリー索引の実装 C/Sアーキテクチャ、分散環境のサポート Oracle v4 同時アクセスでも待たされない 「マルチバージョニングによる読み取り一貫性」 Oracle v3 Oracle Databaseソフトウェアのポータビリティ C言語ベースのマルチプラットフォームデータベース Oracle v2 初の商用リレーショナルデータベース ビジネスロジックをデータベースで実行 「PL/SQLストアドプロシージャ」、「パラレルクエリ」 Oracle 7 どして?
  20. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 29 顧客が最初のリリースの購入をためらう可能性があると考えたため
  21. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 30 「なぜ Oracle Database は version1 からではなく version2 からなの?」 「どうして、Oracle Database の トランザクションはタイムスタンプでなく System Change Number(SCN) で管理するの?」 「どうして、RACの投票ディスクは奇数個がいいの?」
  22. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 31 データベース構成ファイル(1/2) 制御ファイルとデータファイル 【制御ファイル】 データベースの物理構造情報、制御情報を格納 ・データファイル、 REDO ログ・ファイルの名前と位置情報 ・特定の時点(チェックポイント時)に取得される SCN(DB内のタイムスタンプ) ・データベース全体に関する情報(DBID、バックアップ情報など) 【データファイル】 ユーザが利用するデータを格納 ・表、ビュー、索引など実際に利用されるデータ ・データベースを管理するためのメタデータ表(データ・ディクショナリ) -表・索引などの定義情報、使用中領域の容量情報、ユーザ・権限に関する情報など メモリ インスタンス データベース O S
  23. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 32 データベース構成ファイル(2/2) REDO ログ・ファイルとアーカイブ REDO ログ 【REDO ログ・ファイル】 データの変更履歴(REDO ログ)を格納 ・変更を伴う操作(UPDATE, INSERT, DELETEなど) ・変更時点の最新 SCN、タイムスタンプ、トランザクションID ・COMMIT 時点の SCN(DB内のタイムスタンプ)、タイムスタンプ 【アーカイブ REDO ログ】 ※データベース構成ファイルではなく、データベース関連ファイルに分類されます REDO ログ・ファイルの長期保存用のコピー ※REDO ログ・ファイルは循環運用される(過去の REDO ログは上書きされる)ため、 データベースを最新状態に復旧するために必要 リカバリ時に利用 メモリ インスタンス データベース O S どして? タイムスタンプだと同時にコミット処理された場合、区別がつかないため
  24. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 33 System Change Number 枯渇 しないの? 毎秒10万トランザクションが24時間続いたとしても 89年間枯渇しない計算 毎秒1万トランザクションなら890年 毎秒1000トランザクションなら8900年 • SCNは、6バイトで表現している つまり、 281,474,976,710,656(281兆4749億7671万656) (1バイトは8bitなので、10進法で考えれば 256*256*256* 256*256*256)通り
  25. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 34 「なぜ Oracle Database は version1 からではなく version2 からなの?」 「どうして、Oracle Database の トランザクションはタイムスタンプでなく System Change Number(SCN) で管理するの?」 「どうして、RACの投票ディスクは奇数個がいいの?」
  26. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 36 v Cache Fusion とは… Automatic Storage Management(ASM) Oracle Clusterware Cache Fusion Server2 Instance2 Server1 Instance1 block DATA1 DATA3 ① RAC1 DATA1を 更新したい! ② RAC2 DATA3を 検索したい! block DATA1 DATA3 UPDATE ! (DATA1) SELECT (DATA1) DATA1 block DATA1 DATA3 Write-Read の競合と Cache Fusion の動作 複数ノードから同じブロックへの処理があると Cache Fusion で競合を解決 - Write と Read の競合 (上図) - Write と Write の競合 【前提】キャッシュ・フュージョン発生時の動作 – サマリ
  27. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 37 【前提】Oracle Clusterware - クラスタ・ノードのメンバーシップ管理 Cluster Synchronization Services (CSS) によるクラスタノードの異常検知 各ノードのノード監視用プロセス(CSS)がクラスタ・ノード構成の一貫性を担保する 相互に生存監視を実施し、異常ノードを切り離す CSSは2種類のハートビートを実施 ネットワーク・ハートビート(1秒毎) • スプリットブレインの発生を検知するため • ノード間通信の死活監視のため • タイムアウト:misscount (デフォルト30秒) ※スプリットブレインとは、ノード間の通信に問題が発生し、クラスタが複数に分かれてしまうこと。 ディスク・ハートビート(1秒毎) • スプリットブレイン解決を担保するための投票ディスクへの定期書き込み • タイムアウト:disktimeout(デフォルト200秒) IP CSS CSS CSS IP IP 投票ディスク Node#1 Node#2 Node#3 いわば、“腐ったミカン”(昭和ネタ)を被害最小限のうちに排除する仕組み
  28. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 38 Oracle Clusterware - クラスタ・ノードのメンバーシップ管理 Cluster Synchronization Services (CSS) によるクラスタノードの異常検知 各ノードのノード監視用プロセス(CSS)がクラスタ・ノード構成の一貫性を担保する 相互に生存監視を実施し、異常ノードを切り離す CSSは2種類のハートビートを実施 ネットワーク・ハートビート(1秒毎) • スプリットブレインの発生を検知するため • ノード間通信の死活監視のため • タイムアウト:misscount (デフォルト30秒) ※スプリットブレインとは、ノード間の通信に問題が発生し、クラスタが複数に分かれてしまうこと。 ディスク・ハートビート(1秒毎) • スプリットブレイン解決を担保するための投票ディスクへの定期書き込み • タイムアウト:disktimeout(デフォルト200秒) IP CSS CSS CSS IP IP 投票ディスク Node#1 Node#2 Node#3 Oracle Database が大事にしていること 正しいデータを格納・永続化すること “腐ったミカン”は迅速に排除する
  29. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 39 スプリット・ブレイン解決のため、投票ディスクを 介して、生き残るサブ・クラスタを決定する 各ノードのCSSは、ディスク・ハートビート時にそれぞれ自身が 通信可能なノード番号を投票ディスクに書き込んでいる 排除ノード決定の際は、下記2ケースによって生 存させるノードが異なる ケース①全ノードが過半数の投票ディスクにアクセス可能な場 合 ケース②一部ノードが過半数の投票ディスクにアクセス不可能 な場合 L2 Switch CSS CRS CSS CRS Node#1 Node#2 Node#3 CSS CRS Instance Listener VIP Instance Listener VIP Instance Listener VIP 制御ファイル データファイル U R インスタンス1用 R U R インスタンス2用 R U R インスタンス3用 R 投票ディスク OCR 排除ノードの決定する際の投票ディスクの役割(1/3) 【前提】RAC障害パターン - インターコネクト障害
  30. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 40 ケース①:全ノードが過半数の投票ディスクにアクセス可能な場合 各ノードでそれぞれが過半数の投票ディスクにアクセスできていれば、他のノードと通信手段が確保 できていることになるため、所属するノード数が最も多いサブクラスタを残す。 各ノードのCSSはディスク・ハートビート時にそれぞれ自身が通信可能なノード番号を投票ディスクに書き込みます。 そのため、このケースの場合は、ノード#2、#3を残し、#1を停止する 排除ノードの決定する際の投票ディスクの役割(2/3) ノード#1 ノード#2 ノード#3 投票 ディスク#1 #1 #2、3 #3、2 投票 ディスク#2 #1 #2、3 #3、2 投票 ディスク#3 #1 #2、3 #3、2 例)ノード#2は、投票ディスク#1、#2、#3にノード#2、 #3に通信可能であることを記載する 制御ファイル データファイル U R インスタンス1 用 R U R インスタンス2 用 R U R インスタンス3 用 R L2 Switch 投票ディスク OCR CSS CRS CSS CRS Node#1 Node#2 Node#3 CSS CRS Insta nce Listen er VIP Insta nce Listen er VIP Insta nce Listen er VIP 投票ディスク 投票ディスク 【前提】RAC障害パターン - インターコネクト障害
  31. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 41 ケース②:一部ノードが過半数の投票ディスクにアクセス不可能な場合 過半数の投票ディスクにアクセスできないノードを残そうとしてもノード#2、#3は#1を停止する手段 を失っており、RAC障害復旧に必要なクラスタの再構成ができない そのため、所属するノード数が最も多いサブクラスタとしてノード#2、#3で通信ができていたとしても、 過半数の投票ディスクにアクセスできないため、過半数にアクセスできるノード#1を残し、ノード#2、 #3を停止すべきと判断する ノード#1 ノード#2 ノード#3 投票 ディスク#1 × #2、3 #3、2 投票 ディスク#2 #1 × × 投票 ディスク#3 #1 × × 制御ファイル データファイル U R インスタンス1 用 R U R インスタンス2 用 R U R インスタンス3 用 R L2 Switch 投票ディスク OCR CSS CRS CSS CRS Node#1 Node#2 Node#3 CSS CRS Insta nce Listen er VIP Insta nce Listen er VIP Insta nce Listen er VIP 投票ディスク 投票ディスク 排除ノードの決定する際の投票ディスクの役割(3/3) 【前提】RAC障害パターン - インターコネクト障害
  32. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 42 ケース②:一部ノードが過半数の投票ディスクにアクセス不可能な場合 過半数の投票ディスクにアクセスできないノードを残そうとしてもノード#2、#3は#1を停止する手段 を失っており、RAC障害復旧に必要なクラスタの再構成ができない そのため、所属するノード数が最も多いサブクラスタとしてノード#2、#3で通信ができていたとしても、 過半数の投票ディスクにアクセスできないため、過半数にアクセスできるノード#1を残し、ノード#2、 #3を停止すべきと判断する ノード#1 ノード#2 ノード#3 投票 ディスク#1 × #2、3 #3、2 投票 ディスク#2 #1 × × 投票 ディスク#3 #1 × × 制御ファイル データファイル U R インスタンス1 用 R U R インスタンス2 用 R U R インスタンス3 用 R L2 Switch 投票ディスク OCR CSS CRS CSS CRS Node#1 Node#2 Node#3 CSS CRS Insta nce Listen er VIP Insta nce Listen er VIP Insta nce Listen er VIP 投票ディスク 投票ディスク 排除ノードの決定する際の投票ディスクの役割(3/3) 【前提】RAC障害パターン - インターコネクト障害 クラスタ ノードの異 常検知 インスタン スの異常 検知 排除ノード の決定 排除ノード の停止 クラスタ ノードの 再構成 リソース の再構成 インスタンスリ カバリ 排除インスタ ンスの決定 排除インスタ ンスの停止 時間 RAC データベース Oracle Clusterware ※一連の処理が自動で行われる
  33. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 45 ノード#A ノード#B ノード#C 投票 ディスク#1 #A,B #A,B × 投票 ディスク#2 #A,B #A,B × 投票 ディスク#3 #A,B #A,B #C ノード#A ノード#B ノード#C 投票 ディスク#1 × × #C 投票 ディスク#2 #A,B #A,B × 投票 ディスク#3 × × #C
  34. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 46 ノード#A ノード#B ノード#C 投票 ディスク#1 #A,B #A,B × 投票 ディスク#2 #A,B #A,B × ノード#A ノード#B ノード#C 投票 ディスク#1 × × #C 投票 ディスク#2 #A,B #A,B × 「半数」じゃだめ 「過半数」でくちゃ
  35. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 47 4多重、6多重にしても 過半数(3,5)を満たすため 許容される障害数は 3多重(過半数2)と 5多重(過半数3)のときと 変わらない 過半数以上の Voting Disk で全損の障害が発生すると、 スプリット・ブレイン時に正常な生存ノードの選別ができないため、 すべてのノードがダウンします。 そのため、想定しているディスク障害に耐えうる Voting Disk の配置や冗長性を 選択。
  36. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 48 「どうして、REDOログバッファは256MB以上大きくしても効果がないの?」
  37. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 49 ログ・バッファの情報を書き込む LGWR プロセスは、1インスタンス1プロセスであることや、REDOロ グの書き込み頻度は非常に多いことからREDOログ生成量が非常に多いシステムであっても通 常 256 MB 以上に設定しても効果は見込まれません。 また、256 MB 以上に設定しても下記のデメリットがあるため、注意が必要です。 確保した領域がほぼ使用されずメモリが無駄に なることがある(書き込み頻度が多いため) 待機イベント log file sync の待機時間が増加 することがある(書き込み頻度が減少し1回当たりの書き込み サイズが大きくなることがあるため)
  38. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 50 https://medium.com/@yatsunami/%E3%83%AD%E3%82%B0%E3%83%90%E3%83%83 %E3%83%95%E3%82%A1%E3%82%92- %E5%9B%9E%E8%BB%A2%E5%AF%BF%E5%8F%B8- %E3%81%A7%E4%BE%8B%E3%81%88%E3%81%A6%E3%81%BF%E3%81%9F- 3a141090d742
  39. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 51 「俺のALTTER文がこんなにFullScanするわけがない」ALTER文で外部参照整合性制約を付 与した際のクエリ遅延、ALTER文に内包された再帰SQLが大暴れした話
  40. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 54 最近の“現場”での気づき • 組織の中での自己や他者の「得意」の活かし方 自己や他者のどこが優れていて、どこが劣っているか、正しく認識していますか? ※ 前述したチームプレイの重要性にも通じる話 組織に貢献できる人になろうとするのであれば、 自己や他者の“得意”を説明できることが重要
  41. Copyright © 2019 Oracle and/or its affiliates. All rights reserved.

    | 55 最近の“現場”での気づき • 組織の中での自己や他者の「得意」の活かし方 自分のどこが優れていて、どこが劣っているか、正しく認識していますか? ※ 前述したチームプレイの重要性にも通じる話 組織に貢献できる人になろうとするのであれば、 自己や他者の“得意”を説明できることが重要