db tech showcase tokyo...

12
住民情報システムにおける OracleStandardEditionでの 取り組み 行政システムサービス(株) 技術開発部 直孝

Upload: shinogi-naotaka

Post on 21-Jan-2018

280 views

Category:

Data & Analytics


2 download

TRANSCRIPT

Page 1: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

住民情報システムにおけるOracleStandardEditionでの取り組み行政システムサービス(株) 技術開発部

凌 直孝

Page 2: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

自己紹介

2013年7月に社内OA担当から開発部へ異動

Oracleデータベースを中心としたミドル~インフラ全般が守備範囲

Oracle教信者(Oracleのロゴだけでテンションが上がる)

昨年、OracleMasterPlatinumに不合格

Oracle以外では、VCPやセキスぺなどの資格を保持

2018年度データベーススペシャリスト試験対策本の執筆お手伝い中

(私の名前は載っていません。2019年度版には載りたいなぁー)

Page 3: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

住民情報システムとは?

市区町村のお役所にて、職員の方が使用しているシステム。

住民の方々の住民情報を管理している。

・住民票を取りに市役所に行く

⇒職員さんは住民情報システムから住民票を印刷している。

・軽自動車税の納税通知書が自宅に届く

⇒住民情報システムから発行した通知書を圧着ハガキにして郵送されてくる。

Page 4: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

DBがOracleになるんだけどこんな課題があるんだよね

運用に使うシェルが整備されていない

⇒運用SEのレベルに合わせて徹底的にシェル化を行う

性能が出ない

⇒検証の結果、DBが問題ではなかった

Oracle12cが未検証

⇒11gと12cで機能比較、それぞれ性能検証等

DRサイトへのデータ同期手法が未確定

Page 5: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

OracleStandardEditionで使用可能なデータ同期手法

Oracle Streams(12cでは非推奨機能)

ベーシック・レプリケーション

アドバンスト・レプリケーション(最新の12.2でサポート対象外)

基本スタンバイデータベース

StandardEditionでのレプリケーションは段々と選択肢が減っている。。。

Oracle12.1でのアドバンスト・レプリケーションを採用

Page 6: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

構成

本番DB DRサイトDB

DBリンク

テーブル MVIEWログ MVIEW

更新可能

書き込み可能

読み取り専用

MVIEW・・・マテリアライズド・ビュー

Page 7: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

本稼働から4か月が過ぎたある日の夕方

運用SE

「DRサイトのアプリケーションが動きません。」

自分

「スグに確認します。(今夜は飲み会だから早急に調べないと)」

結果、飲み会は最後だけ顔を出すことに。。。

Page 8: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

事象初動確認結果

/${oracle_home}/rdbms/admin/utllockt.sqlの結果より、排他待ちが発生していることが確認できた。

V$LOCKED_OBJECTより、レプリケーション管理者がロックをかけている

DBA_JOBS_RUNNINGより、レプリケーションのリフレッシュジョブの実行に長時間かかっていることが確認できた。

リフレッシュ処理の遅延が原因みたいだけど、なぜ?

Page 9: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

調査の結果見えてきた遅延の原因

MVIEWログが作成されていないテーブルがある

⇒修正情報適用ミス

MVIEWログのセグメント肥大化

⇒データ入れ替え時に肥大化したまま放置

MVIEWログの統計が取得されていないことによる、動的統計の累積

⇒MVIEWログは自動で統計を取ってくれない

※UPSの設定ミスにより電源断発生による事例もあり

Page 10: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

それぞれの対応

MVIEWログが作成されていないテーブルがある

⇒MVIEWとMVIEWログの突合、不足分を作成

MVIEWログのセグメント肥大化

⇒ALTER TABLE MLOG$_XXXXXX SHRINK SPACE;

MVIEWログの統計が取得されていないことによる、動的統計の累積

⇒exec DBMS_STATS.GATHER_TABLE_STATS(ownname => ‘xxx', tabname => 'MLOG$_XXXXXX');

Page 11: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

調査で使用したツール参考にしたナレッジ

ハング時に取得する情報およびその取得方法(Oracle9i以降対応版 シングルインスタンス対応)(KROWN:66559)

アドバンスト・レプリケーションの診断スクリプト(KROWN:129592)

マテリアライズド・ビューのリフレッシュの進行を診断する方法(KROWN:130941)

マテリアライズド・ビューのリフレッシュの遅延、ハング時のトラブルシューティング・ガイド(KROWN:142017)

スナップショット・ログにINDEXを作成することはできますか。(KROWN:21344)

STATSPACK

SQLトレース

Page 12: DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」

おわりに

MVIEWは最新バージョンでは読み取り専用しかサポートされません

MVIEWを使用すると本番DBへの書き込みが増えるので注意が必要