連載
» 2004年09月04日 00時00分 公開

RDBMSアーキテクチャの深層(3):OracleとSQL Server、導入・構築・運用の違いとは? (3/3)

[白石善彦, 安間裕,アクセンチュア・テクノロジー・ソリューションズ]
前のページへ 1|2|3       

構築フェイズ

 データベースの構築時に求められる要件の1つは構築のしやすさです。本番環境においては将来的なことも考え、綿密な計画の下にデータベースを構築するべきですが、開発環境などにおいてはパフォーマンスやリカバリ計画はそれほど重要ではなく、構築における効率を上げることの方がより重要だと考えられます。

 Oracleの場合インスタンス・データベースを作成するには、まず初期化パラメータファイルを用意しなければなりません。Oracleの経験がある方はまずこの初期化パラメータの作成、設定方法を調べるところから始められたことかと思います。初期化パラメータの中身はメモリ領域の大きさ、制御ファイルの場所、言語設定、ログファイルといった基本的な設定から始まり、それに続いてさまざまな設定項目が多岐にわたって存在します。Oracleを構築する際には初期化パラメータの習得は避けて通れません。

 一方、SQL Serverには初期化パラメータファイルに相当するものがありません。SQL Serverのインスタンスを作成する際は、実メモリをインスタンスがどれだけ確保するのかの最大値(つまりOracleでいうsga_max_size)を指定するだけで、その確保したメモリ内における各メモリプールなどの大きさは基本的にはSQL Serverがすべて自動調整する仕組みになっています。SQL Serverはインスタンスとデータベースが1対1ではないため、インスタンスを作成した後にデータベースを作成することになりますが、このデータベース作成もGUIを使用して簡単に作成することが可能です。Oracleに比べると浅い知識でも、導入までの時間がかからないというのが私の経験上の感想です。Oracleのように、それぞれの用途に合わせてメモリの大きさを個別に指定する必要もなければ、Oracleが推奨するメモリ領域の計算式なども覚える必要はありません。

Point

  • Oracle構築には初期化パラメータの習得が欠かせないが、SQL Serverは特別な事前知識を持たなくても構築可能。また基本的にメモリの用途を細かく設定する必要もなく、自動調整される。

運用フェイズ

 データベース運用は、バックアップ・リカバリ、パフォーマンスチューニング、セキュリティ管理など重要事項が多岐にわたります。ここでは特にOracleと手順が異なるため、運用の際に注意が必要なバックアップ・リカバリについて両者の違いを解説したいと思います。

 バックアップ・リカバリの中心となるトランザクションを保持するアーキテクチャが両者で大きく異なります(図5)。なお、Oracleではトランザクションを保持するログを「REDOログ」と呼びますが、SQL Serverでは「トランザクションログ」と呼びます。

図5 ログアーキテクチャの違い 図5 ログアーキテクチャの違い

1. バックアップ方法の違い

 Oracleを運用されている方は、OracleがREDOログファイル最低2個以上を循環利用し、またログファイルがいっぱいになった場合には、(アーカイブログモード時)アーカイブログを保管するディレクトリを初期化パラメータで指定しておくだけで、ログファイルが自動的にアーカイブログとして保存されることをご存じだと思います。

 SQL Serverのバックアップアプローチは多少異なっているので注意が必要です。まず、トランザクションログはデフォルトでは1つのファイルで、その中が仮想ログというグループに分けられます。その仮想ログが循環利用される仕組みになっています。注意しなければならないのはOracleと違い、ログファイルが自動拡張されることです。SQL Serverでは、トランザクションログのバックアップをしたときに、初めてトランザクションログ内の仮想ロググループが上書き可能となります(復旧モデルが完全または一括ログの場合)。また、トランザクションバックアップはOracleのように自動で行われるわけではないので、手動で行うか、または自動化のジョブを自分で定義しなければなりません。バックアップをしない限り仮想ロググループが上書き可能にならないというポイントを忘れていると、ログファイルは永遠に増え続けることになります。

2. リカバリ方法の違い

 データベースリカバリにおいても両者は異なっています。Oracleでは、データベースリカバリ時に障害の復旧直前まで戻したい場合は、まずは対象のデータファイルをリストアし、アーカイブログをデータベースに適用した後、現在のREDOログファイルを適用し、トランザクションを復旧します。

 SQL Serverではリカバリをする前に、まず現在のトランザクションログファイルをバックアップしなければなりません。これを忘れると障害の復旧直前まで戻らなくなってしまいます。トランザクションログファイルのバックアップ後、データファイル、トランザクションログのバックアップを復元および復旧します。

Point

  • SQL ServerではOracleと違いバックアップのスケジュールを組まないとトランザクションログが永遠に増え続けることになる。
  • SQL Serverではリカバリの手順として、まずリストアをする前に現時点のトランザクションログのバックアップを取得する必要がある。

今回のまとめ

 今回はOracleとSQL Serverの基本的な違い、注意点などを導入・構築・運用といったフェイズに分けて解説を行いました。

 次回は、分離レベルとロッキング・メカニズムの比較について解説します。

著者紹介

アクセンチュア・テクノロジー・ソリューションズ

アクセンチュアから生まれた、企業改革のためのシステム開発を手掛けるエンジニア集団。安間裕が代表取締役社長を務める。白石善彦は現在海外にてUNIXおよびデータベースアドミニストレーターとして活躍中。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。