日本オラクル クロスインダストリー統括本部
OracleDirect テクニカルサービスグループ
すけ川 哲生


企業が抱えるデータ量は、その規模の大小にかかわらず、毎年、驚異的なスピードで増加し続けています。
また、個人情報保護法など情報セキュリティに関する法整備が進められる中、データを安全に管理することは、すべての企業にとって重要な課題となっています。つまり、データを格納するデータベースの役割は、今後さらに大きな比重を占めることが予想されるのです。
Microsoft Access(Access)は、簡単かつシンプルな操作性で、多くの個人または企業で使用されているデータベースです。しかし、簡単・シンプルであるがゆえに、さまざまな課題を秘めていることも事実です。
これからの時代を考えると、より高機能なデータベースへの移行が望ましいのではないでしょうか。
ここでは現在、Accessが抱えるさまざまな課題を挙げるとともに、Oracleにおける解決策をご提案しています。もちろんAccessからOracleへの移行方法についても分かりやすく解説、実際の導入事例やその効果についても紹介しています。


データの検索に時間がかかる 障害時にきちんとバックアップできない 作業途中にデータが消えてしまった 運用管理に負担を感じている セキュリティが不安だ
                                                       ※解決したい課題をクリックしてください。


Accessから高信頼のOracleへ
Accessは、使い勝手が良く、手軽に扱えるデータベースとして定評があります。しかし、業務拡大などに伴って、データ量が増大したり、より多くのユーザーでデータを共有しようとするとさまざまな課題が起こりうる可能性を秘めています。これより、Accessの中に潜む様々な課題を挙げるとともに、Oracleデータベースにおける解決策をご紹介します。


AccessとOracleの比較

いくら手軽でも、パフォーマンスが低かったり、更新した内容がきちんと保存されなければ、せっかく作成したデータベースも意味をなさなくなってしまいます。また、個人情報や企業の重要なデータが保管されているデータベースに対しては、セキュリティについても考慮しておくことが必須です。セキュリティに対するニーズが多様化している中、Accessでどれだけ対応できるでしょうか。さらに、Accessをクライアントに使用している場合、アプリケーションの配布コストや、バージョンアップ時の運用管理など、頭を悩ます問題がいくつも生じてきます。以下は、AccessとOracleを比較したものです。

  Access Oracle Database 10g
対象規模 個人、小規模 小〜大規模
データ量 最大2GB 最大8,192PB(8,192,000,000GB)
ユーザー数 最大255ユーザー
(推奨:5ユーザー)
無制限
セキュリティ ファイル単位までの
アクセス制御*
レコード(行)・カラム(列) 単位
までのアクセス制御
自動バックアップ なし あり
データベース保守機能 なし あり
データベース統合管理ツール なし あり
データ分析機能 なし あり
システム障害・自然災害対策 なし あり
* 最新バージョンでは多少異なります。




Accessのデータベースをファイルサーバー上に配置し、複数のユーザーで使用する「ファイル共有形式」にすると、データを取得した場合、パフォーマンスが低下する恐れがあります。これは、Accessのデータベース・エンジンである「JETデータベース・エンジン」に起因するものです。「JETデータベース・エンジン」の場合、ファイルサーバー上のデータベースに対して検索を要求すると、必要なデータだけをクライアントに送るわけではなく、一旦すべてのデータをクライアントに送り、クライアント側で必要な部分を抽出するような仕組みになっているからです。


上記のような要求をOracleに対して行った場合、Oracleでは、必要なレコードのみを抽出したあとクライアントにデータを送信します。必要なデータだけを送信するため、ネットワーク・トラフィックは最小限に抑えることができます。また、パーティション表などをはじめとして、大規模システムにて培われた優れた機能を提供しておりますので、データ量の増加に伴い、多くのデータを効率よく管理し、パフォーマンスを向上させる機能を備えています。




Accessではバックアップを取得する際、データベースを停止する必要があります。もちろんその間、データベースを使用することはできません。たとえ1レコードしか変更を加えていなかった場合でも、データベースファイルのサイズが1GBであれば1GB分をまるまるコピーしてバックアップする必要があるのです。ファイルサイズが小さい場合、さほど気にはなりませんが、データ量が増えてくるとバックアップに要する時間も増え、作業の負荷が上がります。
また、運用のことを考えた場合、Accessでのバックアップは人手を介して行う必要があるため、バックアップをし忘れてしまうと、障害時の復旧が行えず大切なデータを全て失ってしまいます。


Oracleでは、バックアップの最中も滞りなくデータベースを稼働させることができ、ユーザーは普段と変わりなく業務を続けることが可能です。バックアップの実行は、GUI画面より実行することができ、スケジュールに登録して自動運用することもできます。
さらに、増分バックアップの機能を利用すると、毎回データベース全体のバックアップを取得するのではなく、前回のバックアップから変更があった部分のみをバックアップすることができますので、バックアップの時間の短縮とバックアップファイルのサイズの軽減を実現するとこができます。もちろん、障害が発生した時にバックアップ時点までしか復旧できないということはなく、障害時の直前まで復旧できます。




Accessのデータベースを複数のユーザーが共有して使用している際、他のユーザーが変更途中の確定していないデータを読み取ってしまったり、不注意からお互いのデータにアクセスしてしまい、「データが入力されなかった」、「データが消えてしまった」などの問題が発生する場合があります。また、長時間に及ぶバッチ更新(一括更新)などを行った場合、処理中は他のユーザーがデータにアクセスできないという状況も起こりえます。せっかくデータベースを使用してデータを共有しているのに、使用したいときに使用できないのでは、ユーザーの不満も募ります。


Oracleでは、完全な行レベルロックを提供しており、クライアント側にて特別に意識する必要なくデータ更新時の整合性を保証します。誰かが更新しているレコードと同じレコードを変更しようとした場合は、その変更が完了するまで自動的に待ち、更新が可能になってから作業を開始します。
また、Oracle独自の機能として「マルチバージョニング読み取り一貫性」が実装されていますので、誰かが更新途中のレコードに対して問い合わせを行っても待たされることはありません。この場合Oracleは、確定している最新のレコードをユーザーに返します。




Accessの場合、データ量が増えてくるとデータベースファイル(.mdbファイル)を分割する必要性が出てくる場合があります。データが複数ファイルに分割されると、必要なデータを複数のファイルから取得する手間がかかります。また、更新や追加が行われるたびに正しいファイルを指定しないとデータの整合性が取れなくなります。
また、データが一元管理できないため、アプリケーション作成時も複雑さを増し、リアルタイムに正しいデータを取得するのが困難になることが予想されます。バックアップなどの運用管理作業もデータベースごとに実行することとなるので、運用管理コストも増大し、セキュリティの面でもマイナス要因となります。


Oracleでは、8,192PB(ペタ・バイト)までのデータを取り扱うことが可能です。実にAccessの約43億倍のデータを扱うことが可能ということです。
Oracleを利用することで、データベースを分割することなくデータを一元管理して利用することができるため、リアルタイムに最新の整合性の取れた情報に容易にアクセスすることが可能であり、バックアップやセキュリティなど運用の面からもコスト軽減に貢献します。




Accessは基本的にファイル単位でのアクセス制御ですので、データベースにアクセスできるユーザーは、たとえ必要の無いデータであったとしても、データベース内すべてのデータを参照することができます。
またAccessでは、容易にファイルをコピーし、持ち出されてしまう危険性もあります。Access内のデータを暗号化することはできませんので、この時点で情報が漏えいする危険性をはらんでいるのです。また不測の事態が起こっても、「誰にコピーされたのか?」ということを追跡調査する機能が備わっていないため、問題解決の糸口すらつかむことができません。


Oracleでは、企業のニーズに合わせ、データベースに様々なセキュリティ対策を施すことが可能です。表などのオブジェクト単位はもちろん、表の行や列単位にまでアクセス制御をかけることができます。例えば、人事情報の氏名など一般的な部分は誰でも参照できるが、給与金額や自宅の電話番号は上司にしか参照できない、といったことが可能です。
万一、情報が漏えいしたとしても、きめ細かな監査機能により、「誰が、いつ、どのようなSQL文にてデータにアクセスしたか?」といった情報を、行や列単位に取得できます。またアクセス制御のみならず、データベース内のデータを暗号化して格納するといったことも行えます。