ヘッダーをスキップ
Oracle® Database 2日でデータベース管理者
11gリリース2(11.2)
B56320-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 スキーマ・オブジェクトの管理

この章では、スキーマ・オブジェクトの作成および管理について説明します。この章の内容は、次のとおりです。

スキーマ・オブジェクトについて

スキーマはデータベース・オブジェクトの集合です。スキーマはデータベース・ユーザーによって所有され、ユーザー名と同じ名前を共有します。スキーマ・オブジェクトは、ユーザーによって作成される論理構造です。表や索引などのいくつかのオブジェクトはデータを保持します。ビューやシノニムなどのその他のオブジェクトは定義のみで構成されます。


注意:

単一の表領域と単一のスキーマ間には関係性がまったくありません。同じスキーマ内のオブジェクトは異なる表領域の記憶域を使用でき、表領域は異なるスキーマからのデータを格納できます。

スキーマ・オブジェクトの命名

データベースのすべてのオブジェクトは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文を確認する必要があります。


関連項目:

  • スキーマ・オブジェクト、オブジェクト名およびデータ型の詳細は、『Oracle Database概要』を参照してください。


スキーマ・オブジェクト管理権限について

データベース管理者(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 一般的なデータ型

データ型 説明

VARCHAR2(size[BYTE|CHAR])

sizeは、バイト数または文字数での可変長の文字列の最大長を示します。たとえば、様々な国の郵便番号を保持する列は、VARCHAR2(12)のように定義され、12バイトに制限されます。

VARCHAR2(10 CHAR)などのCHAR修飾子を使用して、必要なバイト数に関係なく、文字の最大長を示すことができます。これは特にダブルバイトおよびトリプルバイト長の文字を使用する言語に有効です。BYTEおよびCHAR修飾子は、デフォルト値がバイト単位のNLS_LENGTH_SEMANTICSパラメータの設定を上書きします。最大サイズは4000バイトまたは4000文字です。最小サイズは1バイトまたは1文字です。VARCHAR2には、sizeを指定する必要があります。

詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

NUMBER (p,s)

精度p、位取りsを持つ数。精度は値の最大桁数を設定し、スケールは、小数点以下の桁数を定義します。たとえば、貨幣の値を保持するフィールドは、NUMBER(12,2)と定義され、基本通貨単位(ドル、ポンド、マルクなど)は10桁で表し、補助通貨単位(セント、ペニー、ペニッヒなど)は2桁で表します。精度pには1から38の値を指定できます。位取りsには-84から127の値を指定できます。

DATE

日付と時刻の両方含むコンポジット値です。各「DATE」値として、データベースには、世紀、年、月、日、時間、分および秒が格納されています。タイプ「DATE」の表列に日付を入力するとき、NLS_DATE_FORMAT初期化パラメータを指定した書式を使用する必要があります。NLS_TERRITORY初期化パラメータで、NLS_DATE_FORMATパラメータのデフォルト値を決定します。たとえば、アメリカでは、NLS_DATE_FORMATパラメータのデフォルトはDD-MON-RRです。したがって、「11-JAN-2006」の形式の日付を入力する必要があります。この形式に時刻は含まれていないため、時刻は午前0時(深夜)にデフォルト設定されます。また、文字列を日付に変換するTO_DATE機能を使用して、時刻を含めるか、他の形式に日付を入力します。有効な日付範囲は紀元前4712年1月1日から紀元9999年12月31日です。

CLOB

シングルバイト・キャラクタまたはマルチバイト・キャラクタを含むキャラクタ・ラージ・オブジェクト(CLOB)。固定幅および可変幅のキャラクタ・セットがサポートされ、両方ともデータベース・キャラクタ・セットで使用されます。最大サイズは(4GB - 1)*(データベース・ブロック・サイズ)です。たとえば、32Kのブロック・サイズの場合、最大CLOBサイズは128TBです。


NOT NULL列制約

制約により列の有効な値が決定します。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が含まれる必要があります。

制約が作成され、通常、異なるステータスで変更できます。オプションで有効または無効を選択すると、行が追加または変更されるときに制約をチェックするかどうかを決定できます。また、オプションで遅延、または即時を選択すると、制約の検証をトランザクションの最後に行うか、文の最後に行うかを決定できます。


関連項目:

  • 制約の詳細は、『Oracle Database概要』を参照してください。


その他の表作成の必要事項

この項では、表作成に関する追加情報を示します。この付録には、次の項があります。

ユーザー定義型およびラージ・オブジェクト(LOB)

新規の表には、ユーザー定義型で定義された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操作や一括ロードの実行にかかるオーバーヘッドは最小限で済みます。表の圧縮機能の構成は、表の作成ページの記憶域サブページで実行できます。


関連項目:

  • 異なる表タイプの設計および管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

  • 表と索引のパーティション化の詳細は、『Oracle Database概要』および『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

  • LOB、SecureFileおよびBasicFileの詳細は、『Oracle Database概要』を参照してください。

  • 「例: 表の作成」


表の表示

Database Controlを使用して、指定したスキーマ内にすべての表をリストでき、各表の定義を表示できます。

表を表示するには、次の手順を実行します。

  1. データベースのホームページにアクセスし、SYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「表」をクリックします。

    表ページが表示されます。

  4. 「スキーマ」フィールドでスキーマ名を入力します。または、「スキーマ」フィールドの横にある懐中電灯アイコンをクリックするとスキーマを検索します。

    SYSおよびhrを含むスキーマ名の例が表示されます。

  5. 「オブジェクト名」フィールドを空白のままにして、スキーマ内のすべての表を検索して表示します。または、オブジェクト名(またはオブジェクト名の一部)を入力し、検索を制限します。

    「オブジェクト名」フィールドに検索文字列を入力すると、名前の先頭とその検索文字列が一致するすべての表が表示されます。検索文字列の先頭にアスタリスク(*)を入力した場合、表名の一部に検索文字列を含むすべての表が表示されます。

  6. 「実行」をクリックします。

    指定したスキーマの表が表示されます。

    hr_tables.gifの説明が続きます。
    hr_tables.gifの説明

  7. 特定の表の定義を表示するには、表を選択し「表示」をクリックします。または表名をクリックします。

    表の表示ページが表示されます。


関連項目:


表データの表示

表名および表定義の表示以外にも、表に格納されたデータおよびデータを表示するために使用されるSQL文を表示できます。また、SQL文を変更し、結果セットを変更できます。

表データを表示するには、次の手順を実行します。

  1. 「表の表示」の説明に従って表を検索します。たとえば、hrスキーマの表を検索します。

  2. データが含まれている表を選択します。

    たとえば、employeesを選択します。

  3. 「アクション」リストで、「データの表示」を選択して「実行」をクリックします。

    表のデータの表示ページが表示されます。

    view_employees.gifの説明が続きます。
    view_employees.gifの説明

    「問合せ」フィールドは表のデータ表示を実行するSQL問合せを表示します。「結果」セクションは表のデータを表示します。すべての列を表示するにはページの下にある横スクロール・バーを使用する必要がある可能性があります。

  4. (オプション)列の名前をクリックして、列内の値ごとにデータをソートします。

  5. (オプション)「再問合せ」をクリックして、問合せを変更し、データを再度表示します。

    表の再問合せページが表示されます。このページでは表示する列を選択できます。また、結果を制限する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表を作成するには、次の手順を実行します。

  1. データベースのホームページで、ユーザーnickまたはSYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「表」をクリックします。

    表ページが表示されます。

  4. 「作成」をクリックします。

    表を作成: 表編成ページが表示されます。

  5. 「標準、ヒープ構成」を選択し、「続行」をクリックします。

    表の作成ページが表示されます。

  6. 「名前」フィールドに表の名前としてpurchase_ordersと入力し、「スキーマ」フィールドにnickと入力します。

    デフォルトの表領域は、「例: ユーザー・アカウントの作成」で、ユーザーnickを作成したときに指定しました。この表では、デフォルトの表領域の設定を使用します。

  7. 「列」セクションでpurchase_orders表の列情報をこのトピック上部の表で指定されたとおりに入力します。たとえば、purchase_orders表の最初の列では、名前をPO_NUMBER、データ型をNUMBERと入力し、「NOT NULL」チェック・ボックスを選択します。

    すべてのpurchase_orders列では、「スケール」および「デフォルト値」を空白のままにします。

    purchase_orders2.gifの説明が続きます。
    purchase_orders2.gifの説明


    注意:

    パーティション化された表を作成するには、この手順でページ上部の「パーティション」をクリックします。

  8. (オプション)次の手順を実行して、表のサイズの見積りを取得します。

    1. 「表サイズの見積り」をクリックします。

      表サイズの見積りページが表示されます。

    2. 「予測される行数」フィールドで400000を入力し、「表サイズの見積り」をクリックします。

      見積り結果は計算され表示されます。

    3. 「OK」をクリックし、表の作成ページに戻ります。

    表のサイズの見積りは、表の記憶域パラメータに指定する値を判断する際に役立ちます。

  9. 「接続タイプ」をクリックし、接続タイプ・サブページを表示します。ここで表の主キーを指定できます。

  10. 「制約」リストで「PRIMARY」を選択し、「追加」をクリックします。

    PRIMARY制約の追加ページが表示されます。

    primary_constraint.gifの説明が続きます。
    primary_constraint.gifの説明

  11. 「使用可能な列」リストで「PO_NUMBER」を選択し、「移動」をクリックします。


    注意:

    「PO_NUMBER」をダブルクリックすることもできます。

    po_number列は選択済列リストへ移動します。

  12. 「続行」をクリックし、表の作成ページの接続タイプ・サブページに戻ります。

  13. 「OK」をクリックします。

    表ページに戻り、確認メッセージが表示され、「表」リスト内の新規の表が表示されます。purchase_orders表が、主キーとしてpo_numberとともに作成されます。


関連項目:


表の属性の変更

Database Controlを使用して、表の列を追加および削除し、表制約を管理できます。この項の内容は次のとおりです。


関連項目:


例: 表に列を追加

この例では、「例: 表の作成」で作成したpurchase_orders表に列を追加します。新しい2つの列はpo_date_receivedおよびpo_requestor_nameという名前です。

PURCHASE_ORDERS表に列を追加するには、次の手順を実行します。

  1. データベースのホームページで、ユーザーnickまたはSYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「表」をクリックします。

    表ページが表示されます。

  4. 「スキーマ」フィールドでNICKと入力し、「実行」をクリックします。

    ユーザーnickが所有するすべての表が表示されます。

  5. PURCHASE_ORDERS表を選択し、「編集」をクリックします。

    表の編集ページが表示されます。

  6. 「列」セクションの最初に選択可能な行で、新しいpo_date_received列について次の情報を入力します。

    フィールド名
    名前 PO_DATE_RECEIVED
    データ型 DATE

    「サイズ」、「スケール」、「NOT NULL」および「デフォルト値」を空白のままにします。

  7. 次の使用可能な行で新しいpo_requestor_name列に関する情報を入力します。

    フィールド名
    名前 PO_REQUESTOR_NAME
    データ型 VARCHAR2
    サイズ 40

    「スケール」、「NOT NULL」および「デフォルト値」を空白のままにします。

  8. 「適用」をクリックします。

    表が正常に変更されたことを表す更新メッセージが表示されます。


関連項目:


例: 表の列の削除

この例では、「例: 表に列を追加」purchase_orders表に追加したpo_requestor_name列を削除します。

PO_REQUESTOR_NAME列を削除するには、次の手順を実行します。

  1. データベースのホームページで、ユーザーnickまたはSYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「表」をクリックします。

    表ページが表示されます。

  4. 「スキーマ」フィールドでnickと入力し、「実行」をクリックします。

    ユーザーnickが所有するすべての表が表示されます。

  5. PURCHASE_ORDERS表を選択し、「編集」をクリックします。

    表の編集ページが表示されます。

  6. 「列」セクションでPO_REQUESTOR_NAME列を選択し、「削除」をクリックします。

    削除された行の情報を含む列は、空白のままにします。

  7. 「適用」をクリックします。

    表が正常に変更されたことを表す更新メッセージが表示されます。


関連項目:


例: 新しい表制約の追加

この例では、「例: 表の作成」で作成したpurchase_orders表に表制約を追加します。po_date_received値がpo_dateの値と同じ日付かそれ以降であるというルールを実施するには、チェック制約を追加します。


注意:

「例: 表の作成」で説明されているように、表の作成時に制約を追加することもできます。例では主キー制約の追加が示されています。

PURCHASE_ORDERS表に表制約を追加するには、次の手順を実行します。

  1. データベースのホームページで、ユーザーnickまたはSYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「表」をクリックします。

    表ページが表示されます。

  4. 「スキーマ」フィールドでnickと入力し、「実行」をクリックします。

    ユーザーnickが所有するすべての表が表示されます。

  5. PURCHASE_ORDERS表を選択し、「編集」をクリックします。

    表の編集ページが表示されます。

  6. 「接続タイプ」をクリックし、接続タイプ・サブページを表示します。

    constraints.gifの説明が続きます。
    constraints.gifの説明

  7. 「追加」ボタンのすぐ横のリストでCHECKを選択し、「追加」をクリックします。

    CHECK制約の追加ページが表示されます。

  8. 「名前」フィールドにpo_check_rcvd_dateと入力し、システムに割り当てたデフォルト名を上書きします。

  9. 「チェック条件」フィールドに次を入力します。

    po_date_received >= po_date
    

    この式は、po_date_receivedpo_dateより大きいかまたは等しいということを示しています。日付列では、po_date_receivedpo_dateと同じ日付に、または遅い日付に開始されたのと同じことです。

  10. 「続行」をクリックします。

    接続タイプ・サブページに新しい制約が表示されます。

  11. 「適用」をクリックします。

    確認メッセージが表示されます。

例: 既存の表制約の変更

表制約を変更する方法はいくつかあります。たとえば、既存の表制約を有効な状態から無効な状態に変更できます。この例では、「例: 新しい表制約の追加」purchase_orders表に対して作成したチェック制約を無効にします。

PURCHASE_ORDERS表の制約を無効にするには、次の手順を実行します。

  1. データベースのホームページで、ユーザーnickまたはSYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「表」をクリックします。

    表ページが表示されます。

  4. 「スキーマ」フィールドでnickと入力し、「実行」をクリックします。

    ユーザーnickが所有するすべての表が表示されます。

  5. purchase_orders表を選択し、「編集」をクリックします。

    表の編集ページが表示されます。

  6. 「接続タイプ」をクリックし、接続タイプ・サブページを表示します。

  7. PO_CHECK_RCVD_DATEという名前の制約を選択し、「編集」をクリックします。

    CHECK制約の編集ページが表示されます。

  8. 「属性」セクションで「無効」を選択し、「続行」をクリックします。

  9. 「適用」をクリックします。

    確認メッセージが表示されます。無効化された列はチェック制約が無効化されたことを示します。

例: 表制約の削除

Database Controlを使用して、表から制約を削除できます。表制約を削除すると他の制約を削除してしまう可能性があります。たとえば、他の表(子表)の外部キー制約の参照元の表(親表)から主キー制約を削除した場合、カスケード削除メカニズムにより子表の外部キー制約も削除されます。

この例では、「例: 新しい表制約の追加」purchase_orders表で作成したチェック制約を削除します。

PURCHASE_ORDERS表から制約を削除するには、次の手順を実行します。

  1. データベースのホームページで、ユーザーnickまたはSYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「表」をクリックします。

    表ページが表示されます。

  4. 「スキーマ」フィールドでNICKと入力し、「実行」をクリックします。

    ユーザーNICKが所有するすべての表が表示されます。

  5. PURCHASE_ORDERS表を選択し、「編集」をクリックします。

    表の編集ページが表示されます。

  6. 「接続タイプ」をクリックし、接続タイプ・サブページを表示します。

  7. PO_CHECK_RCVD_DATEという名前の制約を選択し、「削除」をクリックします。

    チェック制約がリストから削除されます。

  8. 「適用」をクリックします。

    確認メッセージが表示されます。


関連項目:


例: 表へのデータのロード

Database Controlを使用して、データを表にロードできます。データは、ブラウザが実行中のローカル・コンピュータにあるソース・ファイルから、またはOracleインスタンスが実行中のデータベース・ホスト・コンピュータにあるソース・ファイルからロードできます。ではOracle SQL*Loaderユーティリティを起動してデータをロードするため、ソース・ファイル内のデータ形式は、SQL*Loaderでサポートされている任意の形式を使用できます。この例ではソース・ファイルとして、カンマ区切りテキスト・ファイルを使用します。SQL*Loader用語では、ソース・ファイルをデータファイルと呼びます。

SQL*Loaderでは、データファイルからのデータのロードの制御にも制御ファイルが使用されます。制御ファイルは、SQL*Loaderコマンド言語で記述された文が含まれるテキスト・ファイルです。これらの文により、検索するデータの場所、データの記述および解析の方法、データの挿入の場所などを指定されます。Database Controlには、SQL*Loaderを使用したデータ・ロード・ジョブの準備および実行の手順を示すデータのロード・ウィザードが含まれています。(ウィザードは、オンラインのガイド付きワークフローです。)データのロード・ウィザードは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_NUMBERPO_DESCRIPTIONPO_DATEPO_VENDORおよびPO_DATE_RECEIVEDPURCHASE_ORDERS表にこれらの列のすべてが含まれていない(または追加の列が含まれている)場合、テキスト・ファイルのデータを適宜変更してください。

PURCHASE_ORDERS表にデータをロードするには、次の手順を実行します。

  1. データベースのホームページにアクセスし、SYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「データ移動」をクリックします。

    データ移動サブページが表示されます。

  3. 「行データの移動」セクションで「ユーザー・ファイルからのデータのロード」をクリックします。

    データのロード: 制御ファイルの生成または既存の制御ファイルの使用ページが表示されます。

  4. 「制御ファイルの自動生成」を選択し、データベースのホスト・コンピュータにホスト資格証明(ユーザー名およびパスワード)を入力します。

  5. 「続行」をクリックします。

    データのロード・ウィザードの最初のページが表示されます。タイトルは「データのロード: データファイル」です。

  6. ウィザードの手順に従って、「次へ」をクリックして、新規の各手順に進みます。

    ウィザード・ページの使用の詳細は、各ウィザード・ページにある「ヘルプ」をクリックします。ウィザードの最後に、SQL*Loaderを実行したジョブを送信します。その後ジョブ・ステータス・ページが表示されます。必要に応じて、正常な終了(または失敗)のステータスが表示されるまでステータス・ページをリフレッシュします。

  7. ジョブに成功した場合、データが正常にロードされたことを次のいずれかで確認します。

    • 表データを表示します。

      詳細は、「表データの表示」を参照してください。

    • SQL*Loaderのログ・ファイルを確認します。このファイルは、ユーザーがSQL*Loaderのデータファイル用に指定したホスト・コンピュータ・ディレクトリに書き込まれます。


    注意:

    ジョブの成功は、Database ControlがSQL*Loaderユーティリティを実行できたことを意味します。SQL*Loaderがエラーなしに実行されたことを意味しているとはかぎりません。そのため、データが正常にロードされたことを確認する必要があります。

  8. ジョブに失敗した場合、SQL*Loaderログ・ファイルを確認し、エラーを修正して再度実行してください。


関連項目:

  • SQL*Loaderの詳細は、『Oracle Databaseユーティリティ』を参照してください。

  • 「表について」


表の削除

表が不要になった場合、Database Controlを使用して削除できます。表を削除すると、表のデータおよび依存オブジェクト(索引など)がデータベースにより削除されます。また、データ・ディクショナリから表が削除されます。

SYSTEM表領域ではないローカル管理表領域から表を削除すると、データベースは表に関連付ける領域をすぐに要求しません。かわりに、表と依存オブジェクトをごみ箱に配置します。それにより、必要な場合は、表とそのデータ、およびごみ箱から取り出した依存オブジェクトを回復できます。表ページの「ごみ箱」をクリックすると、ごみ箱の中身を表示できます。ごみ箱内に表示されるのは、ユーザーが所有する表のみです。表示方法、消去方法、所有者ではない場合のリカバリの方法などのごみ箱の詳細は、『Oracle Database管理者ガイド』を参照してください。

表を削除するには、次の手順を実行します。

  1. 「表の表示」で説明されているとおりに、削除する表を検索します。

  2. 表を選択し、「オプションを指定して削除」をクリックします。

    オプションを指定して削除ページが表示されます。

  3. 「表定義、そのすべてのデータおよび依存オブジェクトを削除します(DROP)」を選択します。

  4. 「すべての参照整合性制約を削除します(CASCADE CONTRAINTS)」を選択します。

  5. 「はい」をクリックします。

    表ページに戻り、確認メッセージが表示されます。


関連項目:


索引の管理

次の項では索引の作成および管理方法を説明します。

索引について

索引は、表に関連付けられたオプションのスキーマ・オブジェクトです。索引または表を作成して問合せのパフォーマンスを向上させることができます。ユーザーが特定の情報をすばやく見つけるのにこのドキュメントの索引が役立つのと同様、Oracle Databaseの索引でも表データへのアクセスがすばやくなります。

必要な数の索引を表に作成できます。表の1つ以上の列にそれぞれ索引を作成します。たとえば、発注表では、ベンダー番号列に索引を作成すると、実際に行をソートせずにベンダー番号の順で表の行に順次アクセスできます。さらに、表全体をスキャンすることなく特定のベンダー宛てに発行されたすべての発注に直接アクセスできます。

索引が作成されると、自動的にデータベースによって保守および使用されます。行の新規追加、更新、削除など、表のデータまたは構造の変更は、関連するすべての索引に自動的に組み込まれます。これは、ユーザーに対して透過的に行われます。

一部の索引は表の制約を反映して暗黙的に作成されます。たとえば、データベースにより主キー制約列または一意キー制約列に索引が自動的に作成されます。

次の各項では、索引のバックグラウンド情報について説明します。


関連項目:


索引およびパフォーマンス

通常、索引は単一または少数の既存の行で操作する問合せおよびDML文のパフォーマンスを向上させます。ただし、索引が多すぎると、行を追加、変更、または削除する文の処理のオーバーヘッドが増加します。

索引を追加するとアプリケーションのパフォーマンスが向上するかどうかを判断するには、Oracle Enterprise Manager Database Control(Database Control)でSQLアクセス・アドバイザを実行します。詳細は、「SQLアクセス・アドバイザの実行」を参照してください。

付加的な索引を追加する前に、データベースの問合せおよびDMLのパフォーマンスを確認する必要があります。新しい索引が追加された後にパフォーマンスを比較できます。


関連項目:

  • SQLパフォーマンス・アナライザを使用して、スキーマ・タイプまたはシステムの変更によるSQLパフォーマンスへの影響を分析する方法については、『Oracle Database Real Application Testingユーザーズ・ガイド』を参照してください。


索引属性

索引は、様々な索引属性の組合せを使用していくつかの方法で作成できます。1次索引属性は次のとおりです。

標準(Bツリー)およびビットマップ

標準、Bツリー索引には、値が格納されている行のディスク・アドレスとともに索引キーの各値のエントリが含まれます。Bツリー索引はデフォルトであり、Oracle Databaseのほとんどの索引で一般的なタイプです。

ビットマップ索引では値および潜在的な行アドレスをカプセル化するビット文字列が使用されます。これはBツリー索引よりも簡潔で、より効率のよい検索のタイプを実行できます。ただし、通常の使用ではビットマップ索引には表における行操作時により多くのオーバーヘッドが必要であり、Oracle Databaseデータ・ウェアハウス・ガイドの説明に従って、データ・ウェアハウス環境で主に使用します。

昇順および降順

索引のデフォルト検索は最低値から最高値の順で行われます。文字データはASCII値によってソートされています。数値データは最小値から最大値、日付は最も古い値から最新の値の順になっています。このデフォルトの検索メソッドは昇順索引として作成されたインデックスで実行されます。索引検索は降順オプションを使用した関連インデックスの作成により検索の順番を逆順にできます。

列およびファンクション

通常、索引エントリは表の単一または複数の列の、単一または複数の値に基づいています。これは列の索引です。または、表データから索引付けされた値が導出されるファンクション・ベースの索引を作成することもできます。たとえば、大/小文字が混在している可能性がある文字データを検索するには、UPPER()ファンクションに基づいたファンクションベースの索引を使用して、すべてが大文字であるかのように値を検索できます。

単一列および連結

単一の列に索引を作成する場合は単一列索引、複数列に作成する場合は、連結索引と呼びます。連結索引は、SQL文を頻繁に実行するWHERE句にほとんどすべての索引列が含まれている場合に役立ちます。

非パーティションおよびパーティション

表同様、索引をパーティションで区切ることができます。ほとんどの場合は、関連する表をパーティション化するときに索引をパーティション化し、表と同じパーティション化スキームを使用して索引をパーティション化すると便利です。(たとえば、表が売上日によってレンジ・パーティション化されている場合は、索引を売上日に作成して、表のパーティションと同じ範囲で索引をパーティション化します。)これはローカルのパーティション索引として知られるものです。ただし、索引は、その表と同じパーティション化スキームを使用してパーティション化する必要はありません。また、パーティション化されていない(グローバルな)索引を、パーティション化された表に作成することもできます。


関連項目:

  • 異なる索引タイプの設計および管理の詳細は、『Oracle Database概要』を参照してください。

  • 索引を作成する構文については、『Oracle Database SQL言語リファレンス』を参照してください。

  • パーティション化された表および索引の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。


索引の表示

Database Controlの索引ページを使用して、データベース内の索引を表示します。

索引を表示するには、次の手順を実行します。

  1. データベースのホームページにアクセスし、SYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「索引」をクリックします。

    索引ページが表示されます。

  4. 「検索条件」リストで、次のいずれかの操作を行います。

    • 「索引名」を選択して、名前で索引を検索します。

      すべての索引には、システムに割り当てられた名前またはユーザーに割り当てられた名前があります。

    • 「表名」を選択して、特定の表に属する索引を検索します。

  5. 「スキーマ」フィールドでスキーマ名を入力します。または、「スキーマ」フィールドの横にある懐中電灯アイコンをクリックするとスキーマを検索します。

  6. 次の操作を1つ実行します。

    • 索引名で検索する場合は、「オブジェクト名」フィールドを空白のままにし、スキーマ内のすべての索引を検索して表示します。または、索引名または索引名の一部を検索文字列として入力します。

      「オブジェクト名」フィールドに検索文字列を入力すると、名前の先頭とその検索文字列が一致するすべての索引が表示されます。検索文字列の先頭にアスタリスク(*)を入力した場合、索引名の一部に検索文字列を含むすべての索引が表示されます。

    • 表名で検索する場合は、表名または表名の一部を「オブジェクト名」フィールドに入力します。

      検索文字列として一部の表名を入力すると、検索文字列で始まる名前を持つすべての表の索引が表示されます。検索文字列の先頭にアスタリスク(*)を入力した場合、表名の一部に検索文字列を含むすべての表の索引が表示されます。

  7. 「実行」をクリックします。

    特定スキーマでの索引が表示されます。

  8. 特定の索引の定義を表示するには、索引を選択し、次に「表示」をクリックします。または索引名をダブルクリックします。

    索引の表示ページが表示されます。このページには、索引のステータス、索引が構築される表および列、索引により消費される領域、定義に使用されるオプション、および索引の統計情報などの索引に関する基本情報が含まれます。


関連項目:


例: 索引の作成

索引を作成するときは、索引付けする1つ以上の表の列および作成する索引のタイプを指定します。

この例では、SH.PRODUCTS表のSUPPLIER_ID列に標準のBツリー索引を作成します。(SHスキーマはサンプル・スキーマの一部です。)

SH.PRODUCTS表でサプライヤ索引を作成するには、次の手順を実行します。

  1. 「表の表示」の説明に従って、SHスキーマ内の表を表示します。

  2. PRODUCTS表を選択します。

  3. 「アクション」リストで、「索引の作成」を選択して「実行」をクリックします。

    索引の作成ページが表示されます。

    create_index.gifの説明が続きます。
    create_index.gifの説明

  4. 次の情報を入力します。

    • 「名前」フィールドに、PRODUCTS_SUPPLIER_IDXと入力します。

    • 「表領域」フィールドでは、デフォルト値を使用します。

    • 「索引タイプ」では、「標準 - Bツリー」を選択します。

    • 順序列に1を入力して、「表の列」リストからSUPPLIER_ID列を選択します。

      索引が複数の列で構成されている場合(連結索引)、含める次の列に2を入力し、さらに次の列にも同様に入力します。これらの数字は、左から順に、またはソート順序で最も重要な列から順に連結している順序を示します。

    • 「ソート順」では、デフォルトの「ASC」を使用します(昇順)。

  5. 「OK」をクリックして索引を作成します。

    索引ページに戻り、確認メッセージが表示されます。新規の索引が索引の表にリストされます。


関連項目:


例: 索引の削除

不要になった索引は、Database Controlを使用して削除できます。

この例では、「例: 索引の作成」SH.PRODUCTS表に作成したPRODUCTS_SUPPLIER_IDX索引を削除します。


注意:

制約の実施に現在使用されている索引の削除はできません。まず制約を無効にするか削除する必要があります。その結果、索引が削除されなければ、索引を削除してください。

SH.PRODUCTS表でサプライヤ索引を削除するには、次の手順を実行します。

  1. データベースのホームページにアクセスし、SYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「索引」をクリックします。

    索引ページが表示されます。

  4. 「検索条件」リストで、「表名」を選択します。

  5. 「スキーマ」フィールドにSHと入力します。

  6. 「オブジェクト名」フィールドに、PRODと入力します。

    表名の最初の数文字のみが入力できます。

  7. 「実行」をクリックします。

    PRODUCTS表のすべての索引が表示されます。

  8. PRODUCTS_SUPPLIER_IDX索引を選択して、次に「削除」をクリックします。

    確認ページが表示されます。

  9. 「はい」をクリックし、索引を削除します。

    索引ページに戻り、確認メッセージが表示されます。


関連項目:


ビューの管理

次の項ではビューの作成および管理方法を説明します。

ビューについて

ビューは、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)を使用して、指定したスキーマにビューをリストできます。ビュー定義を表示することもできます。

ビューを表示するには、次の手順を実行します。

  1. データベースのホームページにアクセスし、SYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「ビュー」をクリックします。

    ビュー・ページが表示されます。

  4. 「スキーマ」フィールドでスキーマ名を入力します。または、「スキーマ」フィールドの横にある懐中電灯アイコンをクリックするとスキーマを検索します。

    SYSおよびhrを含むスキーマ名の例が表示されます。

  5. 「オブジェクト名」フィールドを空白のままにして、スキーマ内のすべてのビューを検索して表示します。または、ビュー名(またはビュー名の一部)を入力して検索を制限します。

    「オブジェクト名」フィールドに検索文字列を入力すると、名前の先頭とその検索文字列が一致するすべてのビューが表示されます。検索文字列の先頭にアスタリスク(*)を入力した場合、ビュー名の一部に検索文字列を含むすべてのビューが表示されます。

  6. 「実行」をクリックします。

    特定スキーマでのビューが表示されます。

  7. 特定のビューの定義を表示するには、ビューを選択し、次に「表示」をクリックします。またはビュー名をダブルクリックします。

    表示ページが表示されます。

例: ビューの作成

この例では、hr.employees表を実表として使用するking_viewというビューを作成します。(hrスキーマはサンプル・スキーマの一部です。)このビューによって表データがフィルタ処理され、従業員IDが100であるKingマネージャに直接レポートする従業員のみが問合せで戻されます。アプリケーション・シナリオでは、このビューによってhr.employees表のセキュリティ・レベルが追加され、Kingマネージャ関連情報の適切なプレゼンテーションが提供されます。

HR.EMPLOYEES表にKING_VIEWビューを作成するには、次の手順を実行します。

  1. データベースのホームページにアクセスし、ユーザーhrまたはSYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「ビュー」をクリックします。

    ビュー・ページが表示されます。

  4. 「作成」をクリックします。

    ビューの作成ページが表示されます。

  5. 次の情報を入力します。

    • 「名前」フィールドに、king_viewと入力します。

    • 「スキーマ」フィールドに、hrと入力します。

    • 「問合せテキスト」フィールドに、次のSQL文を入力します。

      SELECT * FROM hr.employees
      WHERE manager_id = 100
      
  6. 「OK」をクリックします。

    ビュー・ページに戻り、確認メッセージが表示されます。ビュー・リスト内に新しいビューが表示されます。

KING_VIEWビューをテストするには、次の手順を実行します。

  1. ビュー・ページで、king_viewを選択し、「アクション」リストから「データの表示」を選択します。

  2. 「実行」をクリックします。

    表示ページの「データの表示」が表示されます。ビューによって選択されたデータが「結果」セクションに表示されます。

  3. (オプション)SQL*PlusまたはSQL Developerで次のSQL文を発行することで、ビューをテストすることもできます。

    SELECT * FROM king_view
    

例: ビューの削除

不要になったビューは、Database Controlを使用してを削除できます。

この例では、以前に「例: ビューの作成」で作成したhr.king_viewビューを削除します。

HR.KING_VIEWビューを削除するには、次の手順を実行します。

  1. データベースのホームページにアクセスし、SYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで「ビュー」をクリックします。

    ビュー・ページが表示されます。

  4. 「スキーマ」フィールドに、hrと入力します。

  5. 「オブジェクト名」フィールドに、kingと入力します。

    ビュー名の最初の数文字のみを入力できます。

  6. 「実行」をクリックします。

    ビューのリストにKING_VIEWが表示されます。

  7. KING_VIEWを選択して、次に「削除」をクリックします。

    確認ページが表示されます。

  8. 「はい」をクリックし、ビューを削除します。

    ビュー・ページに戻り、確認メッセージが表示されます。

データベースに格納されたプログラム・コードの管理

この項では、データベースに格納されているプログラム・コードに関するデータベース管理者(DBA)としての機能を説明します。この付録には、次の項があります。

データベースに格納されたプログラム・コードについて

Oracle Databaseでは、データベースにプログラム・コードを格納できます。開発者はPL/SQLまたはJavaでプログラム・コードを書き込み、そのコードをスキーマ・オブジェクトに格納します。DBAとして、Oracle Enterprise Manager Database Control(Database Control)を使用して、次のようなプログラム・コード・オブジェクトを管理できます。

  • PL/SQLパッケージ、プロシージャ、ファンクションおよびトリガー

  • Javaソース・コード(Javaソース)およびコンパイルされたJavaクラス

実行できるアクションには、これらのコード・オブジェクトの作成、コンパイル、シノニムの作成、権限の付与および依存性の表示が含まれます。スキーマ・サブページの「プログラム」セクションにあるリンクをクリックして、これらのオブジェクトの管理ページにアクセスします。

プログラム・コード・オブジェクトの作成および管理は主にアプリケーション開発者に責任があることに注意してください。ただし、DBAとしてこれらのオブジェクトの管理のサポートを要求される可能性もあります。プログラム・コード・オブジェクトが依存するスキーマ・オブジェクトが変更または削除されるとプログラム・コード・オブジェクトが無効になる可能性があるため、プログラム・コード・オブジェクトに関する最も頻度の高いタスクは、プログラム・コード・オブジェクトを再検証(コンパイル)することになります。


注意:

プログラム・コード・オブジェクト以外のタイプのスキーマ・オブジェクトは無効になります。たとえば、表を削除すると、その表を参照するビューが無効になります。


関連項目:

  • サーバー側のプログラミングに使用するPL/SQLとJavaの概要は、『Oracle Database概要』を参照してください。

  • JavaソースおよびJavaクラスの詳細は、『Oracle Database 2日でJava開発者ガイド』を参照してください。

  • PL/SQLコードの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

  • オブジェクトの無効化の詳細は、『Oracle Database管理者ガイド』を参照してください。


無効なスキーマ・オブジェクトの検証(コンパイル)

データベース管理者(DBA)として、無効になったスキーマ・オブジェクトの再検証を要求される場合があります。依存しているオブジェクトが変更されると、スキーマ・オブジェクト(トリガー、プロシージャ、ビューなど)は無効になる可能性があります。たとえば、PL/SQLプロシージャに表の問合せが含まれている場合に、問合せで参照される表の列を変更すると、PL/SQLプロシージャが無効になります。コンパイルしてスキーマ・オブジェクトを再検証します。


注意:

プログラム・コードを格納しているスキーマ・オブジェクトをコンパイルするのみで必ず再検証できるとはかぎりません。改善処置がまず必要である場合があります。たとえば、参照している表が削除されてビューが無効になった場合に、ビューをコンパイルすると、表が存在していないことを示すエラー・メッセージが生成されます。表を再作成するか、「ごみ箱」から取り出すまで、ビューは検証できません。

Database Controlでは、データベースのホームページの「アラート」セクションにアラートが表示されて、スキーマ・オブジェクトが無効になったことを通知します。

検証が必要なスキーマ・オブジェクトを表示するには2つの方法があり、データベースのホームページのアラートに従うか、または適切なオブジェクト・ページ(ビュー・ページ、プロシージャ・ページなど)を表示してオブジェクトを検索します。

単一のアラートからスキーマ・オブジェクトを検証するには、次の手順を実行します。

  1. データベースのホームページにアクセスし、SYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. 「アラート」セクションで、次のメッセージを含むアラートを検索します。

    n object(s) are invalid in the schema_name schema.
    

    前述のようなメッセージの例は次のとおりです。

    4 object(s) are invalid in the HR schema.
    

    無効なオブジェクトを含む各スキーマに対する個別のメッセージがあります。

    invalid_object_alerts.gifの説明が続きます。
    invalid_object_alerts.gifの説明

  3. 「メッセージ」列で、無効なオブジェクト・メッセージをクリックします。

    所有者の無効オブジェクト数ページが表示されます。

  4. 「関連リンク」で、「無効オブジェクトの詳細」をクリックします。

    無効オブジェクトの詳細ページが表示され、無効なオブジェクトのリストが表示されます。

    invalid_object_details.gifの説明が続きます。
    invalid_object_details.gifの説明

  5. 1つ以上のオブジェクトを選択して、次に「再コンパイル」をクリックします。

    確認メッセージが表示されたら、新しく検証されたオブジェクトをリストから削除します。

オブジェクト・ページからスキーマ・オブジェクトを検証するには、次の手順を実行します。

  1. データベースのホームページにアクセスし、SYSTEMユーザーとしてログインします。

    詳細は、「データベースのホームページのアクセス」を参照してください。

  2. ページ上部の「スキーマ」をクリックし、スキーマ・サブページを表示します。

  3. 「データベース・オブジェクト」セクションで、検証するオブジェクト・タイプのリンクをクリックします。

    たとえば、ビューを検証する場合、「ビュー」をクリックします。

  4. オブジェクト・ページ(たとえばビュー・ページ)で、スキーマ名を入力、またはオプションでオブジェクト名またはオブジェクト名の一部を入力します。次に「実行」をクリックします。

    スキーマ・オブジェクトが表示されます。

  5. 検証するスキーマ・オブジェクトを選択します。

  6. 「アクション」リストで「コンパイル」を選択し、次に「実行」をクリックします。

    確認メッセージが表示されます。


関連項目:

  • スキーマ・オブジェクトの依存性の詳細は、『Oracle Database概要』を参照してください。

  • オブジェクト依存性の管理の詳細は、『Oracle Database管理者ガイド』を参照してください。


その他のスキーマ・オブジェクトの使用

次に示すような他のスキーマ・オブジェクトは、Oracle Enterprise Manager Database Control(Database Control)を使用して管理できます。


関連項目:

  • 『Oracle Database 2日で開発者ガイド』

  • 『Oracle Database SQL言語リファレンス』


スキーマ: Oracle by Example Series

Oracle by Example(OBE)には、このマニュアルに関するシリーズが含まれています。このOBEでは、この章のタスクを段階的に説明し、注釈付きのスクリーンショットを使用します。

スキーマに関するOBEを参照するには、ご使用のブラウザで次のURLを指定します。

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r2/2day_dba/schema/schema.htm