この章では、スキーマ・オブジェクトの作成および管理について説明します。この章の内容は、次のとおりです。
スキーマはデータベース・オブジェクトの集合です。スキーマはデータベース・ユーザーによって所有され、ユーザー名と同じ名前を共有します。スキーマ・オブジェクトは、ユーザーによって作成される論理構造です。表や索引などのいくつかのオブジェクトはデータを保持します。ビューやシノニムなどのその他のオブジェクトは定義のみで構成されます。
注意: 単一の表領域と単一のスキーマ間には関係性がまったくありません。同じスキーマ内のオブジェクトは異なる表領域の記憶域を使用でき、表領域は異なるスキーマからのデータを格納できます。 |
スキーマ・オブジェクトの命名
データベースのすべてのオブジェクトは1つのスキーマに属し、スキーマ内に一意の名前を持っています。異なるスキーマにある場合、複数のデータベース・オブジェクトは同じ名前を共有できます。スキーマ名を使用して、確実にオブジェクトを参照できます。たとえば、hr.employees
は、hr
スキーマでemployees
という名前の表を参照します。(employees
表はhr
によって所有されます。)データベース・オブジェクトおよびスキーマ・オブジェクトという用語は同じ意味で使用されます。
データベース・オブジェクトを作成するときには、必ず任意のスキーマ内に作成する必要があります。その1つの方法として、スキーマを所有するユーザーとしてデータベースにログインしてからオブジェクトを作成します。通常、1つのアプリケーションに属するすべてのオブジェクトは、同一スキーマ内に配置できます。
スキーマ・オブジェクト名は特定のルールに従っている必要があります。スキーマ内で一意であるのみでなく、スキーマ・オブジェクト名が30バイト以下で先頭が文字で始まる必要があります。これらのルールのいずれかに違反する名前のオブジェクトの作成を試みると、データベースでエラーが発生します。
「SQL表示」ボタン
スキーマ・オブジェクトは、SQLまたはOracle Enterprise Manager Database Control(Database Control)を使用して作成および操作できます。
Database Controlを使用してスキーマ・オブジェクトを作成する際、「SQL表示」ボタンをクリックすると、指定したスキーマ・オブジェクトのプロパティに相当するSQL文が、グラフィカル・インタフェースによって表示されます。Database Controlは、このSQL文を送信して、スキーマ・オブジェクトを作成します。このオプションを選択すると不完全な文も表示されるので、スキーマ・オブジェクトのすべての仕様を入力して、Database Controlが送信する完全なSQL文を確認する必要があります。
関連項目:
|
データベース管理者(DBA)として、所有するスキーマおよびその他のスキーマでスキーマ・オブジェクトを作成、変更および削除できます。この目的のために、データベース管理者はDBA
ロールを付与されているユーザーとして定義されます。これにはSYS
およびSYSTEM
ユーザーがデフォルトで含まれます。DBA
ロールは、管理タイプ・アクセスを必要とするユーザーのみに付与することをお薦めします。
他のユーザーに、DBA権限を付与することなくスキーマ・オブジェクトを管理させることができます。たとえば、通常は、アプリケーション開発者がスキーマ・オブジェクトを作成、変更、削除できます。そのため、RESOURCE
ロールをアプリケーション開発者に付与します。
「非管理ユーザーのDatabase Controlへのアクセス権の付与」の説明に従って、スキーマ・オブジェクトを管理するためにDatabase Controlにログインする前に、Database Controlへの開発者アクセス権を付与する必要があります。Database Controlへのアクセス権を付与しない場合、開発者はSQL*PlusまたはSQL Developerでスキーマ・オブジェクトを管理する必要があります。
次の項ではデータベース表およびデータベース表の作成、変更方法を説明します。
表は、Oracle Databaseのデータ記憶域の基本的な単位です。すべてのユーザーがアクセスできるデータがここに含まれています。各表は列と行で構成されています。たとえば、employees
テーブルには、last_name
およびemployee_id
と呼ばれる列があります。この表の各行は異なる従業員を表し、last_name
およびemployee_id
の値が収められています。
表を作成するときには、表のタイプを指定し、列と制約を定義します。制約とは、データの整合性を保持するためのルールです。
この項の内容は次のとおりです。
Oracle Databaseで最も一般的な表の種類はemployees
表のような単純な列で構成されているリレーショナル表です。他の2つの表のタイプとして、オブジェクト表およびXMLType
表がサポートされています。この3つのタイプの表は、どれも永続または一時として定義できます。一時表はトランザクションまたはセッション中にのみ存在するセッションのプライベート・データを保持します。結果セットは複数の操作により構築されるため、結果セットを一時的にメモリーに保持する必要があるアプリケーションで役立ちます。
ヒープ構造または索引構成構造のいずれかでリレーショナル表を構築できます。ヒープ構造では、行を格納する順序は特に決まっていません。索引構成表では行の順序は選択されたいずれかの列の値によって決定されます。一部のアプリケーションでは、索引構成表を使用してパフォーマンスおよびディスク領域の使用効率を向上させることができます。
この項では永続のヒープ構成表について説明します。その他の表のタイプおよび使用する場合の詳細は、『Oracle Database管理者ガイド』、『Oracle Database概要』および『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。SQLによる表の作成および変更に必要な構文は、『Oracle Database SQL言語リファレンス』を参照してください。
データを保持するために表の列を定義します。列を作成するときに、次の属性を指定します。
データ型の属性は、列に格納されるデータの種類を定義します。 表を作成する場合、各列のデータ型を指定する必要があります。
データ型は各列に含むことができる値のドメインを定義します。たとえば、DATE
列では値February 29
(うるう年を除く)、値2
またはSHOE
は使用できません。その後、列に挿入した各値はその列をデータ型と想定します。たとえば、17-JAN-2004
を日付列に挿入する場合、有効な日付に変換したことを確認した後にOracle Databaseは文字列を日付値として処理します。
表8-1に、一般的なOracle Database組込みデータ型の一部を示します。
表8-1 一般的なデータ型
データ型 | 説明 |
---|---|
詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。 |
|
精度 |
|
日付と時刻の両方含むコンポジット値です。各 |
|
シングルバイト・キャラクタまたはマルチバイト・キャラクタを含むキャラクタ・ラージ・オブジェクト(CLOB)。固定幅および可変幅のキャラクタ・セットがサポートされ、両方ともデータベース・キャラクタ・セットで使用されます。最大サイズは(4GB - 1)*(データベース・ブロック・サイズ)です。たとえば、32Kのブロック・サイズの場合、最大CLOBサイズは128TBです。 |
制約により列の有効な値が決定します。Oracle Enterprise Manager Database Control(Database Control)では、表の作成ページの列レベルで定義できる制約は、行が挿入または更新されるたびに列に値があることを要求するNOT NULL
制約のみです。「表レベルの制約について」で説明されている、列定義の一部または表定義の一部として定義できるその他の制約とは異なり、NOT NULL
制約は列定義の一部として定義する必要があります。
データベースの整合性のため列にデータを指定する必要がある場合は、NOT NULL
制約を使用します。たとえば、すべての従業員が特定の部門に所属する必要がある場合、部門の識別子を含む列はNOT NULL
制約を付けて定義される必要があります。ただし、行が追加または変更される際にデータが不明または存在しない可能性があるときは、NOT NULL
として列を定義しないでください。NOT
NULL
制約を使用しない列の例として、メール・アドレス内の2番目のオプション行があります。
データベースは列または表の主キーを含む列にNOT NULL
制限を自動的に追加します。
列に値が入力されないまま新しい行が挿入されると、この値が列に自動的に格納されます。デフォルト値はリテラルに、または式として指定できます。ただし、式を作成する方法には制限があります。詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
列データの自動暗号化が可能です。詳細は、『Oracle Database 2日でセキュリティ・ガイド』の透過的データ暗号化の説明を参照してください。
Oracle Databaseでは、データの整合性を確保するためのルールを適用できます。たとえば、従業員のデータを含む表では、従業員名列の値としてNULL
は受け入れられません。同様に、この表では同一のIDを持つ従業員が2人存在することはできません。
Oracle Databaseでは、表レベルおよび列レベルの両方で制約と呼ばれるデータの整合性規則を適用できます。制約に違反する行を挿入または更新を試行するSQL文はエラーになり、ロールバックされます。同様に、データが入力されている表に新しく制約を適用すると、既存の行が新しい制約に違反する場合、エラーになります。
主キー: 列(列の組合せ)は行の一意の識別子である必要があります。主キー列にNULL
値は指定できません。
一意キー: 2つの行が指定された列または列の組合せにおいて重複値を持たない場合必要になります。列のセットは一意キーになります。
チェック: 1つの列(または複数の列の組合せ)が表のすべての行の条件を満たすことを要求します。チェック制約はブール式である必要があります。行が挿入または更新されるたびに評価されます。チェック制約の例はSALARY > 0
です。
外部キー: 特定の列(または列の組合せ)では、子表にあるすべての列の値が親表に存在する必要があります。外部キーを含む表は依存表または子表と呼ばれます。外部キーを参照する表は親表と呼ばれます。外部キー制約の例として、従業員表の部門列には、親の部門表に存在する部門IDが含まれる必要があります。
制約が作成され、通常、異なるステータスで変更できます。オプションで有効または無効を選択すると、行が追加または変更されるときに制約をチェックするかどうかを決定できます。また、オプションで遅延、または即時を選択すると、制約の検証をトランザクションの最後に行うか、文の最後に行うかを決定できます。
関連項目:
|
この項では、表作成に関する追加情報を示します。この付録には、次の項があります。
新規の表には、ユーザー定義型で定義された1つ以上の列が含まれます。ユーザー定義型により、単一列は単一行内に複数の値を含むことができます。注文書のような実在するエンティティを示すオブジェクト・タイプの場合、配列、ネストされた表、またはオブジェクトなどが複数の値として表示されます(注文書型の列の値を取得すると、注文書番号、顧客番号、数量などが含まれた レコード を戻すことができます)。ユーザー定義型はCREATE TYPE文を使用して作成されます。ユーザー定義型はCREATE TYPE
文を使用して作成します。詳細は、Oracle Database SQL言語リファレンスを参照してください。
ラージ・オブジェクト(LOB)列は、テキストやストリーミング・ビデオなどの非構造化データの格納に使用され、情報をTB単位まで保持できます。Oracle Database 11gでは、次世代のLOBデータ型で、高パフォーマンスで管理しやすいだけでなく、既存のLOBインタフェースとの完全な下位互換性を実現するSecureFilesを使用できます。SecureFilesは、高いパフォーマンスと容易な管理性を提供し、既存のLOBインタフェースとの完全な下位互換性があり、高度なデータ圧縮や重複解除、透過的暗号化などの拡張機能を備えています。Oracle Database 10gリリース2以前で使用可能なLOB実装は、下位互換性がサポートされており、BasicFilesと呼ばれています。表にLOB列を追加する場合は、SecureFileまたはBasicFileとして作成するかどうかを指定できます。記憶域タイプを指定しない場合は、LOBがBasicFileとして作成され、下位互換性が保持されます。
1つ以上のLOB列がある表を作成する場合は、そのLOB列を選択し、表の作成ページの一般サブページで「拡張属性」をクリックして、記憶域タイプ(BasicFileまたはSecureFile)と記憶域オプションを指定します。表中のすべてのLOB列に同じ記憶域タイプおよび記憶域オプションを指定する場合は、「デフォルトのLOB属性の設定」をクリックします。
表および索引をパーティション化できます。大規模な表と索引をサポートするため、アドレス・キーをパーティション化して、表と索引をパーティションと呼ばれる小規模で管理しやすいピースに分割できます。パーティション化された表と索引にアクセスする際に、SQL問合せおよびDML文を変更する必要はありません。パーティション化はアプリケーションに対して透過的です。
パーティションが定義された後、特定の操作の効率が非常に向上されます。たとえば、一部の問合せではデータベースが表のすべてではなくパーティションのサブセットのみにアクセスして問合せ結果が生成されます。この技術(パーティション・プルーニングと呼ばれます)により向上したパフォーマンスを概算できます。また、データ管理操作はすべての表ではなくパーティション・レベルで発生します。これによりデータ・ロード、索引作成および再ビルド、バックアップおよびリカバリなどの操作の時間が大幅に削減されます。
各パーティションはその他のパーティションから独立した固有の表領域に格納されます。異なる表領域は異なるディスクに配置できるため、可用性およびパフォーマンスのためにより適切にチューニングできる表構造が提供されます。頻繁にアクセスされるデータはパフォーマンスの高いディスクに配置され、取得される頻度の低いデータはより低コストの記憶域に配置されるため、異なる表領域のパーティションを別々のディスクに保存することにより、使用可能な記憶域使用量を最適化できます。
パーティション化は、様々なタイプの大量のデータを管理するアプリケーションで役立ちます。オンライン・トランザクション処理(OLTP)システムでは、多くの場合、管理性および可用性が向上し、データ・ウェアハウス・システムではパフォーマンスと管理性が向上します。
表について複数の記憶域属性を指定できます。たとえば、ディスク上の表の初期サイズを指定できます。表の記憶域属性設定の詳細は、『Oracle Database管理者ガイド』および『Oracle Database SQL言語リファレンス』を参照してください。
表の圧縮機能は、OLTPアプリケーションとデータ・ウェアハウス・アプリケーションのどちらにも適しています。表を圧縮すると、必要なディスク記憶域を節約でき、入出力やバッファ・キャッシュの要件が低くなるため、問合せのパフォーマンスがよくなります。圧縮はアプリケーションに対して透過的に行われるため、INSERT、UPDATEまたはDELETEなどの標準DML操作や一括ロードの実行にかかるオーバーヘッドは最小限で済みます。表の圧縮機能の構成は、表の作成ページの記憶域サブページで実行できます。
関連項目:
|
Database Controlを使用して、指定したスキーマ内にすべての表をリストでき、各表の定義を表示できます。
表を表示するには、次の手順を実行します。
データベースのホームページにアクセスし、SYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「表」をクリックします。
表ページが表示されます。
「スキーマ」フィールドでスキーマ名を入力します。または、「スキーマ」フィールドの横にある懐中電灯アイコンをクリックするとスキーマを検索します。
SYS
およびhr
を含むスキーマ名の例が表示されます。
「オブジェクト名」フィールドを空白のままにして、スキーマ内のすべての表を検索して表示します。または、オブジェクト名(またはオブジェクト名の一部)を入力し、検索を制限します。
「オブジェクト名」フィールドに検索文字列を入力すると、名前の先頭とその検索文字列が一致するすべての表が表示されます。検索文字列の先頭にアスタリスク(*)を入力した場合、表名の一部に検索文字列を含むすべての表が表示されます。
「実行」をクリックします。
指定したスキーマの表が表示されます。
特定の表の定義を表示するには、表を選択し「表示」をクリックします。または表名をクリックします。
表の表示ページが表示されます。
表名および表定義の表示以外にも、表に格納されたデータおよびデータを表示するために使用されるSQL文を表示できます。また、SQL文を変更し、結果セットを変更できます。
表データを表示するには、次の手順を実行します。
「表の表示」の説明に従って表を検索します。たとえば、hr
スキーマの表を検索します。
データが含まれている表を選択します。
たとえば、employees
を選択します。
「アクション」リストで、「データの表示」を選択して「実行」をクリックします。
表のデータの表示ページが表示されます。
「問合せ」フィールドは表のデータ表示を実行するSQL問合せを表示します。「結果」セクションは表のデータを表示します。すべての列を表示するにはページの下にある横スクロール・バーを使用する必要がある可能性があります。
(オプション)列の名前をクリックして、列内の値ごとにデータをソートします。
(オプション)「再問合せ」をクリックして、問合せを変更し、データを再度表示します。
表の再問合せページが表示されます。このページでは表示する列を選択できます。また、結果を制限するSQL SELECT
文のWHERE
句を指定できます。
表のコンテンツを参照するために、独自のSQL SELECT
文を記述して送信することもできます。Database ControlでSQLワークシート・セッションを開始して、SQL文を実行できます。これを行うには、データベース・ホームページの「関連リンク」セクションの「SQLワークシート」をクリックします。
SELECT
文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
Database Controlを使用して、表を作成できます。表を作成しデータを入力する前に、サイズを見積もり、十分にデータを保持できる領域があることを確認します。
次の例では、第7章「ユーザー・アカウントおよびセキュリティの管理」で作成したnick
スキーマでpurchase_orders
という名前の表を作成します。この表には次の列が含まれます。
列名 | データ型 | サイズ | Not NULL |
---|---|---|---|
PO_NUMBER |
NUMBER |
あり | |
PO_DESCRIPTION |
VARCHAR2 |
200 | なし |
PO_DATE |
DATE |
あり | |
PO_VENDOR |
NUMBER |
あり |
NICKスキーマにPURCHASE_ORDERS表を作成するには、次の手順を実行します。
データベースのホームページで、ユーザーnick
またはSYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「表」をクリックします。
表ページが表示されます。
「作成」をクリックします。
表を作成: 表編成ページが表示されます。
「標準、ヒープ構成」を選択し、「続行」をクリックします。
表の作成ページが表示されます。
「名前」フィールドに表の名前としてpurchase_orders
と入力し、「スキーマ」フィールドにnick
と入力します。
デフォルトの表領域は、「例: ユーザー・アカウントの作成」で、ユーザーnick
を作成したときに指定しました。この表では、デフォルトの表領域の設定を使用します。
「列」セクションでpurchase_orders
表の列情報をこのトピック上部の表で指定されたとおりに入力します。たとえば、purchase_orders
表の最初の列では、名前をPO_NUMBER
、データ型をNUMBER
と入力し、「NOT NULL」チェック・ボックスを選択します。
すべてのpurchase_orders
列では、「スケール」および「デフォルト値」を空白のままにします。
注意: パーティション化された表を作成するには、この手順でページ上部の「パーティション」をクリックします。 |
(オプション)次の手順を実行して、表のサイズの見積りを取得します。
「表サイズの見積り」をクリックします。
表サイズの見積りページが表示されます。
「予測される行数」フィールドで400000
を入力し、「表サイズの見積り」をクリックします。
見積り結果は計算され表示されます。
「OK」をクリックし、表の作成ページに戻ります。
表のサイズの見積りは、表の記憶域パラメータに指定する値を判断する際に役立ちます。
「接続タイプ」をクリックし、接続タイプ・サブページを表示します。ここで表の主キーを指定できます。
「制約」リストで「PRIMARY
」を選択し、「追加」をクリックします。
PRIMARY制約の追加ページが表示されます。
「使用可能な列」リストで「PO_NUMBER」
を選択し、「移動」をクリックします。
注意: 「PO_NUMBER」 をダブルクリックすることもできます。 |
po_number
列は選択済列リストへ移動します。
「続行」をクリックし、表の作成ページの接続タイプ・サブページに戻ります。
「OK」をクリックします。
表ページに戻り、確認メッセージが表示され、「表」リスト内の新規の表が表示されます。purchase_orders
表が、主キーとしてpo_number
とともに作成されます。
Database Controlを使用して、表の列を追加および削除し、表制約を管理できます。この項の内容は次のとおりです。
この例では、「例: 表の作成」で作成したpurchase_orders
表に列を追加します。新しい2つの列はpo_date_received
およびpo_requestor_name
という名前です。
PURCHASE_ORDERS表に列を追加するには、次の手順を実行します。
データベースのホームページで、ユーザーnick
またはSYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「表」をクリックします。
表ページが表示されます。
「スキーマ」フィールドでNICK
と入力し、「実行」をクリックします。
ユーザーnick
が所有するすべての表が表示されます。
PURCHASE_ORDERS
表を選択し、「編集」をクリックします。
表の編集ページが表示されます。
「列」セクションの最初に選択可能な行で、新しいpo_date_received
列について次の情報を入力します。
フィールド名 | 値 |
---|---|
名前 |
PO_DATE_RECEIVED |
データ型
|
DATE |
「サイズ」、「スケール」、「NOT NULL」および「デフォルト値」を空白のままにします。
次の使用可能な行で新しいpo_requestor_name
列に関する情報を入力します。
フィールド名 | 値 |
---|---|
名前 |
PO_REQUESTOR_NAME |
データ型
|
VARCHAR2 |
サイズ |
40 |
「スケール」、「NOT NULL」および「デフォルト値」を空白のままにします。
「適用」をクリックします。
表が正常に変更されたことを表す更新メッセージが表示されます。
この例では、「例: 表に列を追加」でpurchase_orders
表に追加したpo_requestor_name
列を削除します。
PO_REQUESTOR_NAME列を削除するには、次の手順を実行します。
データベースのホームページで、ユーザーnick
またはSYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「表」をクリックします。
表ページが表示されます。
「スキーマ」フィールドでnick
と入力し、「実行」をクリックします。
ユーザーnick
が所有するすべての表が表示されます。
PURCHASE_ORDERS
表を選択し、「編集」をクリックします。
表の編集ページが表示されます。
「列」セクションでPO_REQUESTOR_NAME
列を選択し、「削除」をクリックします。
削除された行の情報を含む列は、空白のままにします。
「適用」をクリックします。
表が正常に変更されたことを表す更新メッセージが表示されます。
この例では、「例: 表の作成」で作成したpurchase_orders
表に表制約を追加します。po_date_received
値がpo_date
の値と同じ日付かそれ以降であるというルールを実施するには、チェック制約を追加します。
PURCHASE_ORDERS表に表制約を追加するには、次の手順を実行します。
データベースのホームページで、ユーザーnick
またはSYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「表」をクリックします。
表ページが表示されます。
「スキーマ」フィールドでnick
と入力し、「実行」をクリックします。
ユーザーnick
が所有するすべての表が表示されます。
PURCHASE_ORDERS
表を選択し、「編集」をクリックします。
表の編集ページが表示されます。
「接続タイプ」をクリックし、接続タイプ・サブページを表示します。
「追加」ボタンのすぐ横のリストでCHECK
を選択し、「追加」をクリックします。
CHECK制約の追加ページが表示されます。
「名前」フィールドにpo_check_rcvd_date
と入力し、システムに割り当てたデフォルト名を上書きします。
「チェック条件」フィールドに次を入力します。
po_date_received >= po_date
この式は、po_date_received
がpo_date
より大きいかまたは等しいということを示しています。日付列では、po_date_received
がpo_date
と同じ日付に、または遅い日付に開始されたのと同じことです。
「続行」をクリックします。
接続タイプ・サブページに新しい制約が表示されます。
「適用」をクリックします。
確認メッセージが表示されます。
表制約を変更する方法はいくつかあります。たとえば、既存の表制約を有効な状態から無効な状態に変更できます。この例では、「例: 新しい表制約の追加」のpurchase_orders
表に対して作成したチェック制約を無効にします。
PURCHASE_ORDERS表の制約を無効にするには、次の手順を実行します。
データベースのホームページで、ユーザーnick
またはSYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「表」をクリックします。
表ページが表示されます。
「スキーマ」フィールドでnick
と入力し、「実行」をクリックします。
ユーザーnick
が所有するすべての表が表示されます。
purchase_orders
表を選択し、「編集」をクリックします。
表の編集ページが表示されます。
「接続タイプ」をクリックし、接続タイプ・サブページを表示します。
PO_CHECK_RCVD_DATE
という名前の制約を選択し、「編集」をクリックします。
CHECK制約の編集ページが表示されます。
「属性」セクションで「無効」を選択し、「続行」をクリックします。
「適用」をクリックします。
確認メッセージが表示されます。無効化された列はチェック制約が無効化されたことを示します。
Database Controlを使用して、表から制約を削除できます。表制約を削除すると他の制約を削除してしまう可能性があります。たとえば、他の表(子表)の外部キー制約の参照元の表(親表)から主キー制約を削除した場合、カスケード削除メカニズムにより子表の外部キー制約も削除されます。
この例では、「例: 新しい表制約の追加」のpurchase_orders
表で作成したチェック制約を削除します。
PURCHASE_ORDERS表から制約を削除するには、次の手順を実行します。
データベースのホームページで、ユーザーnick
またはSYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「表」をクリックします。
表ページが表示されます。
「スキーマ」フィールドでNICK
と入力し、「実行」をクリックします。
ユーザーNICK
が所有するすべての表が表示されます。
PURCHASE_ORDERS
表を選択し、「編集」をクリックします。
表の編集ページが表示されます。
「接続タイプ」をクリックし、接続タイプ・サブページを表示します。
PO_CHECK_RCVD_DATE
という名前の制約を選択し、「削除」をクリックします。
チェック制約がリストから削除されます。
「適用」をクリックします。
確認メッセージが表示されます。
Database Controlを使用して、データを表にロードできます。データは、ブラウザが実行中のローカル・コンピュータにあるソース・ファイルから、またはOracleインスタンスが実行中のデータベース・ホスト・コンピュータにあるソース・ファイルからロードできます。ではOracle SQL*Loaderユーティリティを起動してデータをロードするため、ソース・ファイル内のデータ形式は、SQL*Loaderでサポートされている任意の形式を使用できます。この例ではソース・ファイルとして、カンマ区切りテキスト・ファイルを使用します。SQL*Loader用語では、ソース・ファイルをデータファイルと呼びます。
SQL*Loaderでは、データファイルからのデータのロードの制御にも制御ファイルが使用されます。制御ファイルは、SQL*Loaderコマンド言語で記述された文が含まれるテキスト・ファイルです。これらの文により、検索するデータの場所、データの記述および解析の方法、データの挿入の場所などを指定されます。Database Controlには、SQL*Loaderを使用したデータ・ロード・ジョブの準備および実行の手順を示すデータのロード・ウィザードが含まれています。(ウィザードは、オンラインのガイド付きワークフローです。)データのロード・ウィザードはSQL*Loader制御ファイルを自動的に作成します。
この例では、「例: 表の作成」で作成したPURCHASE_ORDERS
表にデータをロードします。簡略化のために、この例では3行のみロードします。
この例のために、データベースのホスト・コンピュータまたはローカル・コンピュータのファイル・システム上にload.dat
という名前のテキスト・ファイルを作成する必要があります。ファイルの内容は次のとおりです。
1, Office Equipment, 25-MAY-2006, 1201, 13-JUN-2006 2, Computer System, 18-JUN-2006, 1201, 27-JUN-2006 3, Travel Expense, 26-JUN-2006, 1340, 11-JUL-2006
注意: この例では、PURCHASE_ORDERS 表内の列が次のとおりであると想定します。PO_NUMBER 、PO_DESCRIPTION 、PO_DATE 、PO_VENDOR およびPO_DATE_RECEIVED 。PURCHASE_ORDERS 表にこれらの列のすべてが含まれていない(または追加の列が含まれている)場合、テキスト・ファイルのデータを適宜変更してください。 |
PURCHASE_ORDERS表にデータをロードするには、次の手順を実行します。
データベースのホームページにアクセスし、SYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「データ移動」をクリックします。
データ移動サブページが表示されます。
「行データの移動」セクションで「ユーザー・ファイルからのデータのロード」をクリックします。
データのロード: 制御ファイルの生成または既存の制御ファイルの使用ページが表示されます。
「制御ファイルの自動生成」を選択し、データベースのホスト・コンピュータにホスト資格証明(ユーザー名およびパスワード)を入力します。
「続行」をクリックします。
データのロード・ウィザードの最初のページが表示されます。タイトルは「データのロード: データファイル」です。
ウィザードの手順に従って、「次へ」をクリックして、新規の各手順に進みます。
ウィザード・ページの使用の詳細は、各ウィザード・ページにある「ヘルプ」をクリックします。ウィザードの最後に、SQL*Loaderを実行したジョブを送信します。その後ジョブ・ステータス・ページが表示されます。必要に応じて、正常な終了(または失敗)のステータスが表示されるまでステータス・ページをリフレッシュします。
ジョブに成功した場合、データが正常にロードされたことを次のいずれかで確認します。
表データを表示します。
詳細は、「表データの表示」を参照してください。
SQL*Loaderのログ・ファイルを確認します。このファイルは、ユーザーがSQL*Loaderのデータファイル用に指定したホスト・コンピュータ・ディレクトリに書き込まれます。
注意: ジョブの成功は、Database ControlがSQL*Loaderユーティリティを実行できたことを意味します。SQL*Loaderがエラーなしに実行されたことを意味しているとはかぎりません。そのため、データが正常にロードされたことを確認する必要があります。 |
ジョブに失敗した場合、SQL*Loaderログ・ファイルを確認し、エラーを修正して再度実行してください。
表が不要になった場合、Database Controlを使用して削除できます。表を削除すると、表のデータおよび依存オブジェクト(索引など)がデータベースにより削除されます。また、データ・ディクショナリから表が削除されます。
SYSTEM
表領域ではないローカル管理表領域から表を削除すると、データベースは表に関連付ける領域をすぐに要求しません。かわりに、表と依存オブジェクトをごみ箱に配置します。それにより、必要な場合は、表とそのデータ、およびごみ箱から取り出した依存オブジェクトを回復できます。表ページの「ごみ箱」をクリックすると、ごみ箱の中身を表示できます。ごみ箱内に表示されるのは、ユーザーが所有する表のみです。表示方法、消去方法、所有者ではない場合のリカバリの方法などのごみ箱の詳細は、『Oracle Database管理者ガイド』を参照してください。
表を削除するには、次の手順を実行します。
「表の表示」で説明されているとおりに、削除する表を検索します。
表を選択し、「オプションを指定して削除」をクリックします。
オプションを指定して削除ページが表示されます。
「表定義、そのすべてのデータおよび依存オブジェクトを削除します(DROP)」を選択します。
「すべての参照整合性制約を削除します(CASCADE CONTRAINTS)」を選択します。
「はい」をクリックします。
表ページに戻り、確認メッセージが表示されます。
次の項では索引の作成および管理方法を説明します。
索引は、表に関連付けられたオプションのスキーマ・オブジェクトです。索引または表を作成して問合せのパフォーマンスを向上させることができます。ユーザーが特定の情報をすばやく見つけるのにこのドキュメントの索引が役立つのと同様、Oracle Databaseの索引でも表データへのアクセスがすばやくなります。
必要な数の索引を表に作成できます。表の1つ以上の列にそれぞれ索引を作成します。たとえば、発注表では、ベンダー番号列に索引を作成すると、実際に行をソートせずにベンダー番号の順で表の行に順次アクセスできます。さらに、表全体をスキャンすることなく特定のベンダー宛てに発行されたすべての発注に直接アクセスできます。
索引が作成されると、自動的にデータベースによって保守および使用されます。行の新規追加、更新、削除など、表のデータまたは構造の変更は、関連するすべての索引に自動的に組み込まれます。これは、ユーザーに対して透過的に行われます。
一部の索引は表の制約を反映して暗黙的に作成されます。たとえば、データベースにより主キー制約列または一意キー制約列に索引が自動的に作成されます。
次の各項では、索引のバックグラウンド情報について説明します。
通常、索引は単一または少数の既存の行で操作する問合せおよびDML文のパフォーマンスを向上させます。ただし、索引が多すぎると、行を追加、変更、または削除する文の処理のオーバーヘッドが増加します。
索引を追加するとアプリケーションのパフォーマンスが向上するかどうかを判断するには、Oracle Enterprise Manager Database Control(Database Control)でSQLアクセス・アドバイザを実行します。詳細は、「SQLアクセス・アドバイザの実行」を参照してください。
付加的な索引を追加する前に、データベースの問合せおよびDMLのパフォーマンスを確認する必要があります。新しい索引が追加された後にパフォーマンスを比較できます。
関連項目:
|
索引は、様々な索引属性の組合せを使用していくつかの方法で作成できます。1次索引属性は次のとおりです。
標準(Bツリー)およびビットマップ
標準、Bツリー索引には、値が格納されている行のディスク・アドレスとともに索引キーの各値のエントリが含まれます。Bツリー索引はデフォルトであり、Oracle Databaseのほとんどの索引で一般的なタイプです。
ビットマップ索引では値および潜在的な行アドレスをカプセル化するビット文字列が使用されます。これはBツリー索引よりも簡潔で、より効率のよい検索のタイプを実行できます。ただし、通常の使用ではビットマップ索引には表における行操作時により多くのオーバーヘッドが必要であり、Oracle Databaseデータ・ウェアハウス・ガイドの説明に従って、データ・ウェアハウス環境で主に使用します。
昇順および降順
索引のデフォルト検索は最低値から最高値の順で行われます。文字データはASCII値によってソートされています。数値データは最小値から最大値、日付は最も古い値から最新の値の順になっています。このデフォルトの検索メソッドは昇順索引として作成されたインデックスで実行されます。索引検索は降順オプションを使用した関連インデックスの作成により検索の順番を逆順にできます。
列およびファンクション
通常、索引エントリは表の単一または複数の列の、単一または複数の値に基づいています。これは列の索引です。または、表データから索引付けされた値が導出されるファンクション・ベースの索引を作成することもできます。たとえば、大/小文字が混在している可能性がある文字データを検索するには、UPPER()
ファンクションに基づいたファンクションベースの索引を使用して、すべてが大文字であるかのように値を検索できます。
単一列および連結
単一の列に索引を作成する場合は単一列索引、複数列に作成する場合は、連結索引と呼びます。連結索引は、SQL文を頻繁に実行するWHERE
句にほとんどすべての索引列が含まれている場合に役立ちます。
非パーティションおよびパーティション
表同様、索引をパーティションで区切ることができます。ほとんどの場合は、関連する表をパーティション化するときに索引をパーティション化し、表と同じパーティション化スキームを使用して索引をパーティション化すると便利です。(たとえば、表が売上日によってレンジ・パーティション化されている場合は、索引を売上日に作成して、表のパーティションと同じ範囲で索引をパーティション化します。)これはローカルのパーティション索引として知られるものです。ただし、索引は、その表と同じパーティション化スキームを使用してパーティション化する必要はありません。また、パーティション化されていない(グローバルな)索引を、パーティション化された表に作成することもできます。
関連項目:
|
Database Controlの索引ページを使用して、データベース内の索引を表示します。
索引を表示するには、次の手順を実行します。
データベースのホームページにアクセスし、SYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「索引」をクリックします。
索引ページが表示されます。
「検索条件」リストで、次のいずれかの操作を行います。
「索引名」を選択して、名前で索引を検索します。
すべての索引には、システムに割り当てられた名前またはユーザーに割り当てられた名前があります。
「表名」を選択して、特定の表に属する索引を検索します。
「スキーマ」フィールドでスキーマ名を入力します。または、「スキーマ」フィールドの横にある懐中電灯アイコンをクリックするとスキーマを検索します。
次の操作を1つ実行します。
索引名で検索する場合は、「オブジェクト名」フィールドを空白のままにし、スキーマ内のすべての索引を検索して表示します。または、索引名または索引名の一部を検索文字列として入力します。
「オブジェクト名」フィールドに検索文字列を入力すると、名前の先頭とその検索文字列が一致するすべての索引が表示されます。検索文字列の先頭にアスタリスク(*)を入力した場合、索引名の一部に検索文字列を含むすべての索引が表示されます。
表名で検索する場合は、表名または表名の一部を「オブジェクト名」フィールドに入力します。
検索文字列として一部の表名を入力すると、検索文字列で始まる名前を持つすべての表の索引が表示されます。検索文字列の先頭にアスタリスク(*)を入力した場合、表名の一部に検索文字列を含むすべての表の索引が表示されます。
「実行」をクリックします。
特定スキーマでの索引が表示されます。
特定の索引の定義を表示するには、索引を選択し、次に「表示」をクリックします。または索引名をダブルクリックします。
索引の表示ページが表示されます。このページには、索引のステータス、索引が構築される表および列、索引により消費される領域、定義に使用されるオプション、および索引の統計情報などの索引に関する基本情報が含まれます。
索引を作成するときは、索引付けする1つ以上の表の列および作成する索引のタイプを指定します。
この例では、SH.PRODUCTS
表のSUPPLIER_ID
列に標準のBツリー索引を作成します。(SH
スキーマはサンプル・スキーマの一部です。)
SH.PRODUCTS表でサプライヤ索引を作成するには、次の手順を実行します。
「表の表示」の説明に従って、SH
スキーマ内の表を表示します。
PRODUCTS
表を選択します。
「アクション」リストで、「索引の作成」を選択して「実行」をクリックします。
索引の作成ページが表示されます。
次の情報を入力します。
「名前」フィールドに、PRODUCTS_SUPPLIER_IDX
と入力します。
「表領域」フィールドでは、デフォルト値を使用します。
「索引タイプ」では、「標準 - Bツリー」を選択します。
順序
列に1
を入力して、「表の列」リストからSUPPLIER_ID列を選択します。
索引が複数の列で構成されている場合(連結索引)、含める次の列に2
を入力し、さらに次の列にも同様に入力します。これらの数字は、左から順に、またはソート順序で最も重要な列から順に連結している順序を示します。
「ソート順」では、デフォルトの「ASC」を使用します(昇順)。
「OK」をクリックして索引を作成します。
索引ページに戻り、確認メッセージが表示されます。新規の索引が索引の表にリストされます。
不要になった索引は、Database Controlを使用して削除できます。
この例では、「例: 索引の作成」でSH.PRODUCTS
表に作成したPRODUCTS_SUPPLIER_IDX
索引を削除します。
注意: 制約の実施に現在使用されている索引の削除はできません。まず制約を無効にするか削除する必要があります。その結果、索引が削除されなければ、索引を削除してください。 |
SH.PRODUCTS表でサプライヤ索引を削除するには、次の手順を実行します。
データベースのホームページにアクセスし、SYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「索引」をクリックします。
索引ページが表示されます。
「検索条件」リストで、「表名」を選択します。
「スキーマ」フィールドにSH
と入力します。
「オブジェクト名」フィールドに、PROD
と入力します。
表名の最初の数文字のみが入力できます。
「実行」をクリックします。
PRODUCTS
表のすべての索引が表示されます。
PRODUCTS_SUPPLIER_IDX
索引を選択して、次に「削除」をクリックします。
確認ページが表示されます。
「はい」をクリックし、索引を削除します。
索引ページに戻り、確認メッセージが表示されます。
次の項ではビューの作成および管理方法を説明します。
ビューは、1つ以上の表または他のビュー内のデータをカスタマイズして表示したものです。したがって、ビューはストアド・クエリーと考えることができます。ビューは実際にはデータを格納しませんが、かわりに表に基づいてデータを導出します。これらの表はビューの実表と呼ばれます。
表同様、ビューも、いくつかの制限を付けて、問合せ、更新、挿入および削除できます。ビューに対して実行するすべての操作は、ビューの実表に実際に影響します。ビューでは、事前決定されている表の行および列のセットへのアクセスを制限することで、セキュリティ・レベルを追加できます。データの複雑さを表に出さずに、複雑な問合せを格納することもできます。
SYS
スキーマには多くの重要なビューがあります。静的データ・ディクショナリ・ビューおよび動的パフォーマンス・ビューの2つのタイプがあります。SYS
スキーマ内のビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
静的データ・ディクショナリ・ビュー
データ・ディクショナリ・ビューは、データ・ディクショナリが変更される場合のみ変更され、変更の頻度が低いため静的ビューと呼ばれます。データ・ディクショナリが変更される例には、新規の表を作成する場合またはユーザーに権限を付与する場合が含まれます。
多くのデータ・ディクショナリの実表は、次の3つのビューに対応しています。
DBA_
ビューにはデータベース全体のすべての関連情報が表示されます。DBA_
ビューは管理者のみを対象としています。
DBA_
ビューの例はDBA_TABLESPACES
で、データベースの各表領域に1行ずつ含まれます。
ALL_
ビューには、現在のユーザーが権限またはロールを介してオブジェクトへのアクセス権を持っている場合、現在のユーザーのスキーマからの情報およびその他のスキーマにおけるオブジェクトからの情報を含む、現在のユーザーに対するアクセス可能なすべての情報が表示されます。
ALL_
ビューの例は、ALL_TABLES
で、ユーザーがオブジェクト権限を持つすべての表に1行ずつ含まれます。
USER_
ビューには現在のユーザーのすべての情報が表示されます。これらのビューに問い合せる場合、特別な権限は必要ありません。
USER_
ビューの例は、USER_TABLES
で、ユーザーが所有するすべての表に1行ずつ含まれます。
DBA_
ビュー、ALL_
ビューおよびUSER_
ビューの列は通常ほぼ同一です。
動的パフォーマンス・ビュー
動的パフォーマンス・ビューでは、実行中のデータベース・アクティビティを監視します。管理者のみ使用可能です。動的パフォーマンス・ビューの名前はV$
で始まります。そのため、これらのビューは多くの場合V$
ビューとして参照されます。
V$
ビューの例は、V$SGA
で、システム・グローバル領域(SGA)のメモリー・コンポーネントの現行のサイズを戻します。
Oracle Enterprise Manager Database Control(Database Control)を使用して、指定したスキーマにビューをリストできます。ビュー定義を表示することもできます。
ビューを表示するには、次の手順を実行します。
データベースのホームページにアクセスし、SYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「ビュー」をクリックします。
ビュー・ページが表示されます。
「スキーマ」フィールドでスキーマ名を入力します。または、「スキーマ」フィールドの横にある懐中電灯アイコンをクリックするとスキーマを検索します。
SYS
およびhr
を含むスキーマ名の例が表示されます。
「オブジェクト名」フィールドを空白のままにして、スキーマ内のすべてのビューを検索して表示します。または、ビュー名(またはビュー名の一部)を入力して検索を制限します。
「オブジェクト名」フィールドに検索文字列を入力すると、名前の先頭とその検索文字列が一致するすべてのビューが表示されます。検索文字列の先頭にアスタリスク(*)を入力した場合、ビュー名の一部に検索文字列を含むすべてのビューが表示されます。
「実行」をクリックします。
特定スキーマでのビューが表示されます。
特定のビューの定義を表示するには、ビューを選択し、次に「表示」をクリックします。またはビュー名をダブルクリックします。
表示ページが表示されます。
この例では、hr.employees
表を実表として使用するking_view
というビューを作成します。(hr
スキーマはサンプル・スキーマの一部です。)このビューによって表データがフィルタ処理され、従業員IDが100であるKingマネージャに直接レポートする従業員のみが問合せで戻されます。アプリケーション・シナリオでは、このビューによってhr.employees
表のセキュリティ・レベルが追加され、Kingマネージャ関連情報の適切なプレゼンテーションが提供されます。
HR.EMPLOYEES表にKING_VIEWビューを作成するには、次の手順を実行します。
データベースのホームページにアクセスし、ユーザーhr
またはSYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「ビュー」をクリックします。
ビュー・ページが表示されます。
「作成」をクリックします。
ビューの作成ページが表示されます。
次の情報を入力します。
「名前」フィールドに、king_view
と入力します。
「スキーマ」フィールドに、hr
と入力します。
「問合せテキスト」フィールドに、次のSQL文を入力します。
SELECT * FROM hr.employees WHERE manager_id = 100
「OK」をクリックします。
ビュー・ページに戻り、確認メッセージが表示されます。ビュー・リスト内に新しいビューが表示されます。
KING_VIEWビューをテストするには、次の手順を実行します。
ビュー・ページで、king_view
を選択し、「アクション」リストから「データの表示」を選択します。
「実行」をクリックします。
表示ページの「データの表示」が表示されます。ビューによって選択されたデータが「結果」セクションに表示されます。
(オプション)SQL*PlusまたはSQL Developerで次のSQL文を発行することで、ビューをテストすることもできます。
SELECT * FROM king_view
不要になったビューは、Database Controlを使用してを削除できます。
この例では、以前に「例: ビューの作成」で作成したhr.king_view
ビューを削除します。
HR.KING_VIEWビューを削除するには、次の手順を実行します。
データベースのホームページにアクセスし、SYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで「ビュー」をクリックします。
ビュー・ページが表示されます。
「スキーマ」フィールドに、hr
と入力します。
「オブジェクト名」フィールドに、king
と入力します。
ビュー名の最初の数文字のみを入力できます。
「実行」をクリックします。
ビューのリストにKING_VIEW
が表示されます。
KING_VIEW
を選択して、次に「削除」をクリックします。
確認ページが表示されます。
「はい」をクリックし、ビューを削除します。
ビュー・ページに戻り、確認メッセージが表示されます。
この項では、データベースに格納されているプログラム・コードに関するデータベース管理者(DBA)としての機能を説明します。この付録には、次の項があります。
Oracle Databaseでは、データベースにプログラム・コードを格納できます。開発者はPL/SQLまたはJavaでプログラム・コードを書き込み、そのコードをスキーマ・オブジェクトに格納します。DBAとして、Oracle Enterprise Manager Database Control(Database Control)を使用して、次のようなプログラム・コード・オブジェクトを管理できます。
PL/SQLパッケージ、プロシージャ、ファンクションおよびトリガー
Javaソース・コード(Javaソース)およびコンパイルされたJavaクラス
実行できるアクションには、これらのコード・オブジェクトの作成、コンパイル、シノニムの作成、権限の付与および依存性の表示が含まれます。スキーマ・サブページの「プログラム」セクションにあるリンクをクリックして、これらのオブジェクトの管理ページにアクセスします。
プログラム・コード・オブジェクトの作成および管理は主にアプリケーション開発者に責任があることに注意してください。ただし、DBAとしてこれらのオブジェクトの管理のサポートを要求される可能性もあります。プログラム・コード・オブジェクトが依存するスキーマ・オブジェクトが変更または削除されるとプログラム・コード・オブジェクトが無効になる可能性があるため、プログラム・コード・オブジェクトに関する最も頻度の高いタスクは、プログラム・コード・オブジェクトを再検証(コンパイル)することになります。
注意: プログラム・コード・オブジェクト以外のタイプのスキーマ・オブジェクトは無効になります。たとえば、表を削除すると、その表を参照するビューが無効になります。 |
関連項目:
|
データベース管理者(DBA)として、無効になったスキーマ・オブジェクトの再検証を要求される場合があります。依存しているオブジェクトが変更されると、スキーマ・オブジェクト(トリガー、プロシージャ、ビューなど)は無効になる可能性があります。たとえば、PL/SQLプロシージャに表の問合せが含まれている場合に、問合せで参照される表の列を変更すると、PL/SQLプロシージャが無効になります。コンパイルしてスキーマ・オブジェクトを再検証します。
注意: プログラム・コードを格納しているスキーマ・オブジェクトをコンパイルするのみで必ず再検証できるとはかぎりません。改善処置がまず必要である場合があります。たとえば、参照している表が削除されてビューが無効になった場合に、ビューをコンパイルすると、表が存在していないことを示すエラー・メッセージが生成されます。表を再作成するか、「ごみ箱」から取り出すまで、ビューは検証できません。 |
Database Controlでは、データベースのホームページの「アラート」セクションにアラートが表示されて、スキーマ・オブジェクトが無効になったことを通知します。
検証が必要なスキーマ・オブジェクトを表示するには2つの方法があり、データベースのホームページのアラートに従うか、または適切なオブジェクト・ページ(ビュー・ページ、プロシージャ・ページなど)を表示してオブジェクトを検索します。
単一のアラートからスキーマ・オブジェクトを検証するには、次の手順を実行します。
データベースのホームページにアクセスし、SYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
「アラート」セクションで、次のメッセージを含むアラートを検索します。
n object(s) are invalid in the schema_name schema.
前述のようなメッセージの例は次のとおりです。
4 object(s) are invalid in the HR schema.
無効なオブジェクトを含む各スキーマに対する個別のメッセージがあります。
「メッセージ」列で、無効なオブジェクト・メッセージをクリックします。
所有者の無効オブジェクト数ページが表示されます。
「関連リンク」で、「無効オブジェクトの詳細」をクリックします。
無効オブジェクトの詳細ページが表示され、無効なオブジェクトのリストが表示されます。
1つ以上のオブジェクトを選択して、次に「再コンパイル」をクリックします。
確認メッセージが表示されたら、新しく検証されたオブジェクトをリストから削除します。
オブジェクト・ページからスキーマ・オブジェクトを検証するには、次の手順を実行します。
データベースのホームページにアクセスし、SYSTEM
ユーザーとしてログインします。
詳細は、「データベースのホームページのアクセス」を参照してください。
ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。
「データベース・オブジェクト」セクションで、検証するオブジェクト・タイプのリンクをクリックします。
たとえば、ビューを検証する場合、「ビュー」をクリックします。
オブジェクト・ページ(たとえばビュー・ページ)で、スキーマ名を入力、またはオプションでオブジェクト名またはオブジェクト名の一部を入力します。次に「実行」をクリックします。
スキーマ・オブジェクトが表示されます。
検証するスキーマ・オブジェクトを選択します。
「アクション」リストで「コンパイル」を選択し、次に「実行」をクリックします。
確認メッセージが表示されます。
関連項目:
|
次に示すような他のスキーマ・オブジェクトは、Oracle Enterprise Manager Database Control(Database Control)を使用して管理できます。
順序は、一意の整数を生成するデータベース・オブジェクトです。順序に問い合せるたびに、現在の値は増加し、結果の整数が返されます。問合せは複数ユーザーが同時に行うことができ、各ユーザーは常に一意の値を受け取ります。そのため、順序を使用した表内の主キーの値の指定は、表にデータを挿入するユーザーの数に関係なく、確実にキー値を一意にする簡単な方法です。
シノニムは、表やビューなどのスキーマ・オブジェクトの別名です。シノニムによって、基礎となるデータベース構造をアプリケーションやユーザーに対して簡単に非表示にできます。シノニムはプライベートまたはパブリックにできます。プライベート・シノニムを参照するユーザーがシノニム所有者ではない場合、パブリック・シノニムはスキーマ名で修飾する必要はありませんが、プライベート・シノニムは修飾する必要があります。たとえば、SELECT
オブジェクト権限をhr.employees
表に付与されたユーザーが発行した次の問合せについて考慮します。
SELECT employee_id, salary FROM hr.employees ORDER BY salary
hr.employees
表の別名として、personnel
という名前のパブリック・シノニムを作成し、hr.employees
表でPUBLIC
(すべてのデータベース・ユーザー)に対してSELECT
権限を付与すると想定します。指定されたパブリック・シノニムを使用して、すべてのユーザーがより簡単な次の問合せを発行できます。
SELECT employee_id, salary FROM personnel ORDER BY salary
この問合せを作成したユーザーは個人データを含むスキーマ名を確認する必要はありません。
注意: ユーザーがpersonnel という名前の表を所有している場合は、その表が問合せに使用されます。そのような表が存在しない場合は、データベースでパブリック・シノニムを解決し、hr.employees 表を使用します。 |
シノニムには、スキーマ名が異なる場合でも本番データベースと同じシノニムを開発データベースで使用できるという付加的なメリットがあります。この方法により、どちらの環境でもアプリケーション・コードを未修正の状態で実行できます。たとえば、dev1
スキーマを示す開発データベースでpersonnel
シノニムが定義されている場合、dev1
スキーマにemployees
表があるデータベース開発では問合せをエラーなしに実行できます。
シノニムは単なる別名であるため、データ・ディクショナリ内に定義以外の記憶域は必要ありません。問合せのシノニムを参照するには、示されているオブジェクトの権限が必要です。シノニム自体は保護できません。シノニムに対するオブジェクト権限をユーザーに付与すると、シノニムが指し示すオブジェクトに対する権限を付与することになります。
データベース・リンクは、他のOracle Databaseを示すスキーマ・オブジェクトです。データベース・リンクを使用すると、リモート・データベースのオブジェクトを問合せまたは更新できます。『Oracle Database管理者ガイド』で説明されているように、データベース・リンクは分散データベース環境で使用されます。
関連項目:
|
Oracle by Example(OBE)には、このマニュアルに関するシリーズが含まれています。このOBEでは、この章のタスクを段階的に説明し、注釈付きのスクリーンショットを使用します。
スキーマに関するOBEを参照するには、ご使用のブラウザで次のURLを指定します。
http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r2/2day_dba/schema/schema.htm