大阪市で住民票などの証明書発行業務を担う基幹システムが停止。復旧まで21時間を要し、8000件近い証明書発行業務に影響が及んだ。原因はOracle Databaseのクラスタ機能に潜むバグだった。ネットワークの不調をきっかけにシステムが停止し、再起動もできなくなった。米オラクルはバグの存在を把握しながら対外開示をしていなかったとみられる。

 2019年6月7日午後0時5分頃。大阪市内の24の区役所や出張所、梅田・難波・天王寺のサービスカウンターで、住民票の写しや記載事項証明書、国民健康保険や税務関連の証明書などが印刷できなくなった。金曜日の昼休みということもあり、週内に書類を発行してもらおうと区役所など窓口に来ていた住民からは悲鳴と怒号が上がった。

図 大阪市で2019年6月7日に発生したシステム障害の概要
図 大阪市で2019年6月7日に発生したシステム障害の概要
印刷機能を担うシステムが停止し、住民票が発行不能に
[画像のクリックで拡大表示]

 同じ頃、大阪市西区の阿波座にある大阪市ICT戦略室も騒然としていた。システム障害を知らせる警報が鳴り、各区役所からトラブル発生を知らせる電話が相次いだ。「統合基盤システムが停止しました。確認してもらえますか」。ICT戦略室の担当者はシステムの開発元で保守契約も交わしているNTTデータ関西の担当者を呼び寄せた。同社はNTTデータの地域子会社だ。

 統合基盤システムは大阪市の基幹システムだ。住民基本台帳、税務、福祉、国民健康保険、介護保険という住民情報系の5システムと連携し、各システムへのログイン時のユーザー(職員)認証や各システムから受け取った証明書データなどの印刷をつかさどる。2015年1月に運用を始めた。「住民情報系5システムに共通して必要となる機能を統合基盤システムに切り出すことでコスト削減を図った」(ICT戦略室)。システムはアプリケーションサーバーと、職員の認証情報や印刷用データなどを管理するデータベースサーバー、それらのデータを蓄積する共有ストレージなどから成る。

 データベース管理システム(DBMS)は米オラクルの「Oracle Database」を採用している。バージョンは「システム構成に関わるので明らかにできない」(大阪市ICT戦略室)。負荷分散と障害回避を目的に同製品のクラスタ機能「Oracle Real Application Clusters(Oracle RAC)を使い、2ノードをActive/Active構成で並行稼働させている。片方が止まってもサービスを継続できるようにしていたが、今回は「2ノードがほぼ同時に停止した」(同)。アプリケーションサーバーは稼働していたものの、ユーザー認証や印刷データの格納に不可欠なDBMSが停止した。これによって「統合基盤システムのほぼ全てが使えなくなった」(同)。

 NTTデータ関西の保守担当者はDBMSが停止している事態を把握し再起動を試みた。しかし2ノードとも再起動できない状態が続いた。このためNTTデータ関西は日本オラクルなどと連絡を取りつつ原因究明を開始。その結果、午後3時30分頃にDBMSのシステムファイルが破損している事実を特定した。

 破損していたシステムファイルはOracle RACを構成する各ノードがそれぞれの死活状況を共有ストレージに書き込む「投票ディスク」である。この内容が異常なデータになっていたという。「投票ディスクを参照した2つのノードが共に異常を検知して、それぞれ自身でDBMSとしての機能を停止させた」(大阪市ICT戦略室)。保守担当者が再起動を試みてもできなかったのは、各ノードが再起動の過程で投票ディスクの内容を参照するようになっていたからだ。投票ディスクの異常値を検知して停止してしまった。