エンタープライズ:特集 2003/07/25 18:19:00 更新

[Java Developer特別企画]2003年9月号
知っておきたいデータベース移行術「SQL Server→Oracle編」 (3/15)

JAVA Developer 2003年9月号より転載

移行の実際
 移行を行う場合、SQL Server 2000とOracle9iとの違いについて理解しなければなりません。

 機能に関しては、SQL Server 2000よりOracle9iのほうが多いため、移行できない機能はほぼ存在しません。たとえば、索引機能においては、SQL Server 2000は通常の索引(Bツリー索引)をサポートしていますが、Oracle9iはこれに加えてビットマップ索引と呼ばれるものがあり、格納されている値データをビット配列にし、ビット配列に従って検索を行うことができる機能があります。

 また、同じ機能でもそのしくみが異なるものが存在します。たとえば日付関数は当然、両データベースでサポートされていますが、現在の日付を獲得する関数名は、SQL Server 2000がGETDATE関数であるのに対して、Oracle9iではSYSDATE関数を使用します。このような違いについて、いくつかこのパートで解説します(データベースのファイル構成、データブロックの呼び名や取り扱い方法、ログの採取方法などのしくみについては触れていません)。

●しくみが異なる認証/権限
 認証に関しては、SQL Server 2000もOracle9iもWindows認証(Oracle9iはOS認証と呼ぶ)および通常のデータベース認証(SQL Server 2000はSQL Server認証と呼ぶ)を利用することができます。呼び名こそ違いますが、機能的に大きな違いはありません。

 権限に関しては、それぞれ名称が異なりますが、お互い同じ機能をサポートしています。違いは、SQL Serverがユーザーの集合体(グループ)に権限を与えるのに対して、Oracle9iは権限の集合(ロール)をユーザーに与えるところです。しくみの違いだけですので、データベース定義時に理解し、さらにコマンドと権限名の違いさえ理解できれば、問題は発生しません。

●命名規則は長さに注意
 表名、索引名や列名など、データベースではいろいろなところに名前を定義し、その名前に関するルールをまとめたものが命名規則です。SQL Serverでは、最大128文字までの名前が許されています。一方Oracle9iの場合は、30バイト以下である必要があります。このように命名規則には多少の違いがあります。

 SQL Serverの表名、索引名、列名などの表記において、30バイトを超える表記が含まれている場合は、その名前を短くする必要があります。SQL文を記述する際に使う表名などの参照方法は、どちらも「スキーマ名.テーブル名(例:guest.sample_table)」となります。

 一時表の取り扱いも注意が必要です。一時表とはユーザーがデータベースにアクセスしている間だけ有効な表のことです。セッションが終わると、その表は自動的に削除されます。集計処理や一時的な計算のために利用する一時表は、とても便利な機能です。

 SQL Serverではこの一時表を命名規則で識別します。表名の先頭に「#」記号がある場合、その表は一時表を示します。Oracle9iデータベースでは命名規則による識別ではなく、表を作成する際のコマンドで識別します。通常、表を作成するのは「CREATE TABLE文」ですが、一時表は「CREATE GLOBAL TEMPORARY TABLE 文」を使って作成します。

 移行する際には、SQL Server上の#記号がついた表名を変更し、さらにその表を作成するCREATE TABLE文をCREATE GLOBAL TEMPORARY TABLE 文に変更することで、Oracle9i上でも同じ動作が可能になります。

[JAVA Developer特別企画]
知っておきたいデータベース移行術
「SQL Server→Oracle編」
(1)データベース移行に伴う影響範囲〜JDBCドライバ
(2)移行の実際〜認証/権限と命名規則
(3)データ型の移行〜数値型
(4)データ型の移行〜文字型
(5)データ型の移行〜日付データ型
(6)データ型の移行〜ラージデータ型/そのほかの特殊な型
(7)表定義に関する情報の移行
(8)関数の移行〜数値関数
(9)関数の移行〜文字関数
(10)関数の移行〜日付関数
(11)関数の移行〜そのほかの関数
(12)演算子の移行
(13)文法/Transact-SQL文/索引/ビュー/トリガーなどの移行
(14)メリットと注意事項〜移行ポイントを再確認

関連リンク
▼JAVA Developer
▼定期購読のご案内
▼バックナンバー販売協力店

JAVA Developer9月号表紙 Javaコレクションのマスターを目指せ!
JAVA Developer 9月号

大特集
病みつき! テストファースト

特集2 BEA WebLogic
[特別企画]
・コレクションフレームワークとデータ構造
・知っておきたいデータベース移行術
 「SQL Server→Oracle編」
・Webアプリケーションセキュリティ

前のページ | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 次のページ

[西脇 資哲,JAVA Developer]