db tech showcase tokyo...
TRANSCRIPT
住民情報システムにおけるOracleStandardEditionでの取り組み行政システムサービス(株) 技術開発部
凌 直孝
自己紹介
2013年7月に社内OA担当から開発部へ異動
Oracleデータベースを中心としたミドル~インフラ全般が守備範囲
Oracle教信者(Oracleのロゴだけでテンションが上がる)
昨年、OracleMasterPlatinumに不合格
Oracle以外では、VCPやセキスぺなどの資格を保持
2018年度データベーススペシャリスト試験対策本の執筆お手伝い中
(私の名前は載っていません。2019年度版には載りたいなぁー)
住民情報システムとは?
市区町村のお役所にて、職員の方が使用しているシステム。
住民の方々の住民情報を管理している。
例
・住民票を取りに市役所に行く
⇒職員さんは住民情報システムから住民票を印刷している。
・軽自動車税の納税通知書が自宅に届く
⇒住民情報システムから発行した通知書を圧着ハガキにして郵送されてくる。
DBがOracleになるんだけどこんな課題があるんだよね
運用に使うシェルが整備されていない
⇒運用SEのレベルに合わせて徹底的にシェル化を行う
性能が出ない
⇒検証の結果、DBが問題ではなかった
Oracle12cが未検証
⇒11gと12cで機能比較、それぞれ性能検証等
DRサイトへのデータ同期手法が未確定
OracleStandardEditionで使用可能なデータ同期手法
Oracle Streams(12cでは非推奨機能)
ベーシック・レプリケーション
アドバンスト・レプリケーション(最新の12.2でサポート対象外)
基本スタンバイデータベース
StandardEditionでのレプリケーションは段々と選択肢が減っている。。。
Oracle12.1でのアドバンスト・レプリケーションを採用
構成
本番DB DRサイトDB
DBリンク
テーブル MVIEWログ MVIEW
更新可能
書き込み可能
読み取り専用
MVIEW・・・マテリアライズド・ビュー
本稼働から4か月が過ぎたある日の夕方
運用SE
「DRサイトのアプリケーションが動きません。」
自分
「スグに確認します。(今夜は飲み会だから早急に調べないと)」
結果、飲み会は最後だけ顔を出すことに。。。
事象初動確認結果
/${oracle_home}/rdbms/admin/utllockt.sqlの結果より、排他待ちが発生していることが確認できた。
V$LOCKED_OBJECTより、レプリケーション管理者がロックをかけている
DBA_JOBS_RUNNINGより、レプリケーションのリフレッシュジョブの実行に長時間かかっていることが確認できた。
リフレッシュ処理の遅延が原因みたいだけど、なぜ?
調査の結果見えてきた遅延の原因
MVIEWログが作成されていないテーブルがある
⇒修正情報適用ミス
MVIEWログのセグメント肥大化
⇒データ入れ替え時に肥大化したまま放置
MVIEWログの統計が取得されていないことによる、動的統計の累積
⇒MVIEWログは自動で統計を取ってくれない
※UPSの設定ミスにより電源断発生による事例もあり
それぞれの対応
MVIEWログが作成されていないテーブルがある
⇒MVIEWとMVIEWログの突合、不足分を作成
MVIEWログのセグメント肥大化
⇒ALTER TABLE MLOG$_XXXXXX SHRINK SPACE;
MVIEWログの統計が取得されていないことによる、動的統計の累積
⇒exec DBMS_STATS.GATHER_TABLE_STATS(ownname => ‘xxx', tabname => 'MLOG$_XXXXXX');
調査で使用したツール参考にしたナレッジ
ハング時に取得する情報およびその取得方法(Oracle9i以降対応版 シングルインスタンス対応)(KROWN:66559)
アドバンスト・レプリケーションの診断スクリプト(KROWN:129592)
マテリアライズド・ビューのリフレッシュの進行を診断する方法(KROWN:130941)
マテリアライズド・ビューのリフレッシュの遅延、ハング時のトラブルシューティング・ガイド(KROWN:142017)
スナップショット・ログにINDEXを作成することはできますか。(KROWN:21344)
STATSPACK
SQLトレース
おわりに
MVIEWは最新バージョンでは読み取り専用しかサポートされません
MVIEWを使用すると本番DBへの書き込みが増えるので注意が必要