データベースの作成とデータ・ディクショナリの利用方法ORACLE MASTER Silver DBAポイント解説(2)

» 2004年05月20日 00時00分 公開
[小野寺智子@IT]

これまで連載してきた「ORACLE MASTER Goldポイント解説」では第4回までは「PL/SQL」を解説し、第5回以降にDBAの解説を行っている。しかし、2003年10月の資格制度の変更に合わせ、連載タイトルを「新ORALCE MASTER Silver DBAポイント解説」に変更する。そのため、本連載は「ORACLE MASTER Goldポイント解説」で紹介した内容を確認したうえでお読みいただきたい。


 今回はデータベースの作成とデータ・ディクショナリについて解説します。試験ではよく失敗の原因は何かが問われることがあります。例えば今回取り上げる中でいえば、なぜデータベースが作成できなかったのか、といった問題などです。失敗の原因追究は試験に限らず業務でも役に立つので、ここで押さえておいてください。ですから、データベースの作成や手順の中で、何がどんな動作をしているのかをきちんと把握する必要があります。さらに、前回の「認証方法とインスタンスの管理」で紹介した仕組みが関連します。

 データ・ディクショナリも試験ではよく全体を通して問われる個所です。ですから、今回取り上げるデータ・ディクショナリの仕組みだけではなく、その全体を把握して考えることができるようにし、データ・ディクショナリについての理解を深めてください。

データベースの作成

 Oracleをインストールし、ユーザーの作成を終えるとデータベースを作成します。Oracleをインストールしたからといって、データベースがすぐに使用できる状態にあるわけではありません(図1)。インストール後はデータベースを作成する必要があります。Oracleでのデータベースの作成とは、物理ファイルをOS上に作成する作業を指します。データベース・ファイルの場所やサイズなどの計画を立て、OS認証かパスワードファイル認証で認証された特権アカウントを作成します。

図1 データベースファイル作成前の状態 図1 データベースファイル作成前の状態

 データベースを作成するには、次の2つの方法があります。

 1番目は、手動で作成する方法、CREATE DATABASE文を使用して作成する方法です。また、OMFを使用して作成することもできます。2番目は、自動で作成する方法、DBCA(DATABASE CONFIGURATION ASSISTANT)というツールを使用して作成する方法です。

 どちらの場合でも、インスタンス名やデータベース名は作成する前に決定しておく必要があります。また、OS側で環境変数もあからじめ設定する必要があります。環境変数の設定はプラットフォームによって異なります。また、環境変数と初期化パラメータで設定する値や名前はきちんと区別しておきましょう。間違いやすいので注意が必要なところです。

 初期化パラメータについては「第1回 認証方法とインスタンスの管理」を参考にしてください。

 ただし、インストールに関しては、OSがWindowsかUNIXかによって次の部分が異なります。その点はしっかりと押さえておいてください。

  • Windows環境では、サービスの作成が必要
  • UNIX環境では手動で環境変数の設定が必要

 Windowsではインストール時にいくつかの環境変数が自動的に設定されますが、環境変数ORACLE_SIDは設定されないので、手動で設定する必要があります。すべての準備が整ったら、CREATE DATABASE文でデータベースを作成します。

 CREATE DATABASE文の実行時にはインスタンスを起動します。環境変数や初期化パラメータファイルで設定した多くの値は、インスタンス部分であるメモリとプロセスに関連するため、インスタンスはNOMOUNT状態にすることしかできません。MOUNT状態時に制御ファイルが、REDOログファイルとデータファイルの名前と位置の情報を確認します。しかし、存在しないファイルの位置確認を行うことはできないので、データベースファイルはNOMOUNT状態で作成します。ここを理解するためには、前回紹介したインスタンスの起動の各フェイズを振り返ってみてください。

●データベース作成時のトラブルシューティング

 データベース作成の失敗の原因は何かを考えてみましょう。

 純粋に構文そのものが間違っている場合は、スペルミスか、CREATE DATABASE文で指定したファイルの場所が間違っている可能性があります。

 ところが、CREATE DATABASE文を実行して構文エラーになった場合でも、ファイルが指定したディレクトリに作成されることがあります。ですから、再度データベースを作成して実行する場合は、そのファイルを削除する必要があります。作成しようとしているファイルが以前の構文エラーで作成されている場合、ファイルが存在することがエラーの原因になるためです。

 また、ディスクの領域不足やファイルやディレクトリに対するユーザーアクセス権がない場合もエラーになります。

●データベース作成後の状態

 データベースを作成すると、データベースを作成する構文で指定したファイルができます。その段階では「SYS」ユーザーと「SYSTEM」ユーザーが作成されています。データ・ディクショナリもできていますが、分かりやすく参照できるようにはなっていません(図2)。

図2 データベース作成後の状態 図2 データベース作成後の状態

 データ・ディクショナリを参照するにはデータ・ディクショナリ・ビューを作成する必要があります。表1のスクリプトを実行し、データ・ディクショナリ・ビューを作成します。

SYSユーザー
Catalog.sql データ・ディクショナリ・ビューを実行するために必要
Catproc.sql PL/SQLを実行するために必要
SYSTEMユーザー 
Pupbld.sql SQL*plusの製品情報を作成するのに必要
表1 データベース作成後に実行するスクリプト

●DBCA(Database Configuration Assistant)を使用したデータベース作成

 DBCAはオラクルが提供しているツールで、ウィザードに従って設定を行うとデータベースを容易に作成できます(画面1)。DBCAを使用してデータベースを作成する場合、必要最低限の情報さえ設定すれば、あとはOracleが自動的に適切なパラメータやデータベースの構造を決定してくれます。ですから、手動でデータベースを作成する場合、パラメータファイルを用意したり、各スクリプトを実行したりする必要がありますが、DBCAを使用すると手間を軽減することができます。ほかにも既存のデータベースオプションの構成やデータベースを削除することができます。

画面1 DBCAの画面。画面をクリックすると拡大して表示されます 画面1 DBCAの画面。画面をクリックすると拡大して表示されます

●OMFを使用したデータベースの作成

 前回、OMF(Oracle Managed Files)の概要を解説しました。今回はOMFを使用し、データベースを作成するとどのようになるのか具体的に解説します。初期化パラメータファイルにOMFパラメータを設定してから、データベースを作成するとデータベース作成時の構文に、REDOログファイルとデータファイルを指定して作成する必要がなくなります(画面2、画面3)。

画面2 OMFの設定。初期化パラメータファイルにパラメータdb_create_file_dest=データファイルの位置、db_create_online_log_dest_n=REDOログファイルの位置を指定する 画面2 OMFの設定。初期化パラメータファイルにパラメータdb_create_file_dest=データファイルの位置、db_create_online_log_dest_n=REDOログファイルの位置を指定する
画面3 OMFを使用したデータベース作成の構文。インスタンスを起動後(NOMOUNT)、OMFを使用した場合は上記の構文でデータベースが作成される 画面3 OMFを使用したデータベース作成の構文。インスタンスを起動後(NOMOUNT)、OMFを使用した場合は上記の構文でデータベースが作成される

データ・ディクショナリとは?

 ここで、データ・ディクショナリとは何かを解説したいと思います。データ・ディクショナリとは、データベースに関する情報を格納している表です。具体的にどのような情報を格納しているかというと、オブジェクトの作成・削除や、オブジェクトに割り当てられている記憶領域に関する情報などを指します。そのため、オブジェクトなどに変更があった場合に更新されます(図3)。

図3 データ・ディクショナリ・ビューの仕組み。もしデータ・ディクショナリを直接見ることができても、Oracleにとって分かりやすい形で保存しているので、誰がアクセスしても内容を理解できない 図3 データ・ディクショナリ・ビューの仕組み。もしデータ・ディクショナリを直接見ることができても、Oracleにとって分かりやすい形で保存しているので、誰がアクセスしても内容を理解できない

 データ・ディクショナリの管理はOracleが行います。Oracleは800以上ものデータ・ディクショナリを用意しています。データ・ディクショナリは業務でよく利用しますが、試験でもよく出題されます。しかし、すべてを覚えるのは大変です。よく使用するデータ・ディクショナリ・ビューは押さえておきましょう。また何かと関連付けて覚えておく方法も効果的です。

 データ・ディクショナリはOracleが自動的に管理する表なので、Oracleに都合のよいような形で情報を格納しています。ですから、直接ユーザーがアクセスして参照できたとしても、どのような情報が格納されているかは分かりません。

 では、このデータ・ディクショナリから情報を参照するにはどうしたらよいでしょうか?

 Oracleはデータ・ディクショナリの情報を分かりやすくユーザーに表示するために「データ・ディクショナリ・ビュー」を用意しています。

 データ・ディクショナリ・ビューには3つの接頭辞があり、検索する場合には次に紹介する接頭辞を付けて検索します。接頭辞の意味は表2のとおりです。図3の内容と併せてご覧ください。

接頭辞 検索範囲
DBA すべての情報を検索できる
ALL ユーザー所有のオブジェクトなどに関する情報とほかのユーザーがアクセス可能なオブジェクトなどの情報を検索できる
USER ユーザーの所有しているオブジェクトなどの情報を検索できる
表2 データ・ディクショナリ・ビューの接頭辞

 なお、データ・ディクショナリ・ビューに対してDML操作を行うことはできません。また、Oracleでは、データ・ディクショナリ・ビューと、次に紹介する「動的パフォーマンス・ビュー」というビューを用意しています。これらの特徴をきちんと押さえ、混同しないようにしてください。

●動的パフォーマンス・ビュー

 動的パフォーマンス・ビューは、刻々と変化するデータベースの情報を保持しています(図4)。データ・ディクショナリはオブジェクトなどに変更があった場合に更新される表ですが、動的パフォーマンス・ビューはメモリ、制御ファイルから情報を取得するので、刻々と変化するデータベースの情報を表示することができます。ですから、インスタンスが起動した時点からいくつかの動的パフォーマンス・ビューが参照できるのです。

図4 動的パフォーマンス・ビューの仕組み。動的パフォーマンスビューはデータベース稼働中はメモリに存在し、メモリと制御ファイルを元に生成される 図4 動的パフォーマンス・ビューの仕組み。動的パフォーマンスビューはデータベース稼働中はメモリに存在し、メモリと制御ファイルを元に生成される

 最後に、ちょっとした覚え方のテクニックの1つを紹介しましょう。動的パフォーマンス・ビューは単数形で、データ・ディクショナリ・ビューの大半は複数形です。ここでは、データ・ディクショナリとの違いを押さえてください。動的パフォーマンス・ビューも持ち主はデータ・ディクショナリと同じSYSユーザーです。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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