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

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

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

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

ノート:

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

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

データベースのすべてのオブジェクトは1つのスキーマに属し、スキーマ内に一意の名前を持っています。異なるスキーマにある場合、複数のデータベース・オブジェクトは同じ名前を共有できます。スキーマ名を使用して、確実にオブジェクトを参照できます。たとえば、hr.employeesは、hrスキーマでemployeesという名前の表を参照します。(employees表はhrによって所有されます。)データベース・オブジェクトおよびスキーマ・オブジェクトという用語は同じ意味で使用されます。

データベース・オブジェクトを作成するときには、必ず任意のスキーマ内に作成する必要があります。その1つの方法として、スキーマを所有するユーザーとしてデータベースにログインしてからオブジェクトを作成します。通常、1つのアプリケーションに属するすべてのオブジェクトは、同一スキーマ内に配置できます。

スキーマ・オブジェクト名は特定のルールに従っている必要があります。スキーマ内で一意であるのみでなく、スキーマ・オブジェクト名が30バイト以下で先頭が文字で始まる必要があります。これらのルールのいずれかに違反する名前のオブジェクトの作成を試みると、データベースでエラーが発生します。

「DDL」タブ

SQLまたはSQL Developerを使用して、スキーマ・オブジェクトを作成および操作できます。

SQL Developerを使用してスキーマ・オブジェクトを作成する際、「DDL」タブをクリックすると、指定したスキーマ・オブジェクトのプロパティに相当するSQL文が、グラフィカル・ユーザー・インタフェースによって表示されます。SQL Developerは、このSQL文を送信して、スキーマ・オブジェクトを作成します。このオプションを選択すると不完全な文も表示されるので、スキーマ・オブジェクトのすべての仕様を入力して、SQL Developerが送信する完全なSQL文を確認する必要があります。

関連項目:

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

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

データベース管理者(DBA)として、所有するスキーマおよびその他のスキーマでスキーマ・オブジェクトを作成、変更および削除できます。この目的のために、データベース管理者はDBAロールを付与されているユーザーとして定義されます。これにはSYSおよびSYSTEMユーザーがデフォルトで含まれます。DBAロールは、管理タイプ・アクセスを必要とするユーザーのみに付与することをお薦めします。

他のユーザーに、DBA権限を付与することなくスキーマ・オブジェクトを管理させることができます。たとえば、通常は、アプリケーション開発者がスキーマ・オブジェクトを作成、変更、削除できます。そのため、RESOURCEロールをアプリケーション開発者に付与します。

8.3 SQL Developerについて

Oracle SQL Developerは、SQL*Plusのグラフィカル・バージョンで、データベース管理者がスキーマ・オブジェクトを含む基本的なタスクを実行する場合に便利です。たとえば、データベース・スキーマ・オブジェクトを参照、作成、編集および削除できます。また、SQL文およびスクリプトの実行、表データのインポートとエクスポート、無効なスキーマ・オブジェクトの検索、およびレポートの表示を行うことができます。

ノート:

マルチテナント・コンテナ・データベースは、Oracle Database 20 cでサポートされる唯一のアーキテクチャです。ドキュメントが改訂されている間は、従来の用語が残っている可能性があります。ほとんどの場合、「データベース」と「非CDB」は、コンテキストに応じてCDBまたはPDBを指します。アップグレードなど、一部のコンテキストでは、「非CDB」が以前のリリースの非CDBを指している場合もあります。

標準のOracle Database認証を使用して、任意のターゲットOracle Databaseスキーマに接続できます。接続後、スキーマ・オブジェクトに対して操作を実行できます。

次のトピックでは、SQL Developerの効果的な使用を開始するのに必要な基本情報を提供します。

関連項目:

また、SQL Developerを使用して、ユニット・テスト、移行およびデータ・モデリングなどの他のデータベースのテストを実行することもできます。

SQL Developerのその他の機能の詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。

8.3.1 SQL Developerのインストールおよび起動

SQL Developerをインストールして起動するには、ZIPファイルをダウンロードして任意の親ディレクトリまたは親フォルダに解凍し、コマンドを入力するか、またはファイル名をダブルクリックします。

関連項目:

SQL Developerのインストールおよび起動の手順の詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。

8.3.2 SQL Developerユーザー・インタフェースの理解

SQL Developerを起動すると、SQL Developerウィンドウが表示されます。

SQL Developerウィンドウでは、基本的に、左側はオブジェクトを検索して選択するためのナビゲーション、右側は選択したオブジェクトに関する情報の表示に使用されます。

ページの上部のメニューには、標準的なエントリの他に、SQL Developer固有の機能のエントリも含まれています。

SQL Developerウィンドウの左側には、「接続」ナビゲータと「レポート」ナビゲータのタブとペイン、アクションを実行するためのアイコン、および選択中のナビゲータの階層ツリーが表示されます。

図では、「接続」ナビゲータにHRデータベース接続が表示され、メタデータ・ツリーにHRスキーマのスキーマ・オブジェクトが表示されています。

「接続」ナビゲータのメタデータ・ツリーには、定義済の接続でアクセス可能なすべてのオブジェクトが(オブジェクトのタイプごとに分類されて)表示されます。オブジェクトを選択するには、適切なツリー・ノードを開いてオブジェクトをクリックします。

SQL Developerウィンドウの右側には、選択したオブジェクトまたは開いたオブジェクト用のタブとペインが表示されます。たとえば、この図のオブジェクト・ペインには、EMPLOYEESという表に関する情報が表示されています。(マウス・ポインタをタブのラベル(この図では「EMPLOYEES」)の上に置くと、ツールチップに、オブジェクトの所有者とデータベース接続が表示されます。)

関連項目:

SQL Developerのユーザー・インタフェースの詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。

8.3.3 SQL Developerを使用したデータベース接続の作成

データベース接続は、特定のデータベースの特定のユーザーとしてそのデータベースに接続するために必要な情報を指定するSQL Developerオブジェクトです。SQL Developerを使用するには、1つ以上の(既存の、作成済の、またはインポート済の)データベース接続が必要です。

データベース接続を作成するには:

  1. SQL Developerの「接続」ナビゲータで「接続」ノードを右クリックし、「新規接続」を選択します。

    「Oracle」タブを含む「データベース接続の作成/選択」ダイアログ・ボックスが表示されます。

  2. 次の情報を入力します。
    • 「接続名」フィールドに、このデータベース接続に使用する名前を入力します。

    • 「ユーザー名」フィールドに、このデータベース接続を作成する対象となるユーザーの名前を入力します。

    • 「パスワード」フィールドに、ユーザーのパスワードを入力します。

    • 「接続タイプ」フィールドで、データベース接続タイプを選択します。

      接続タイプには次のものがあります。

      • 基本

      • TNS

      • LDAP

      • 拡張

      • ローカル/Bequeath

      接続タイプを選択すると、次のフィールドは、選択した接続タイプに合わせて変更されます。この例では、「基本」接続タイプのフィールドについて説明します。

    • 「ロール」フィールドで、ユーザーに割り当てられたロールに基づいて、「デフォルト」または「sysdba」を選択します。

    • 「ホスト名」フィールドに、データベースが置かれているホストの名前を入力します。

    • 「ポート」フィールドに、データベースのポートを入力します。

    • 「SID」フィールドで、データベースのSIDを入力します(データベース接続の対象が非CDBユーザーまたはマルチテナント・コンテナ・データベース(CDB)ユーザーである場合)。

      非CDBまたはCDBへのデータベース接続が管理ユーザー(SYSなど)に対して作成される場合、その接続の「ロール」フィールドには通常SYSDBAが指定されます。

    • 「サービス名」フィールドで、ドメイン名を含むプラガブル・データベース(PDB)のサービス名を入力します(データベース接続の対象がPDBユーザーである場合)。

      PDBへのデータベース接続が管理ユーザー(SYSなど)に対して作成される場合、その接続の「ロール」フィールドには通常SYSDBAが指定されます。

  3. オプションで、「テスト」をクリックして、指定したデータで指定したユーザーがデータベースに接続できることをテストします。
  4. 終了したら、「接続」をクリックして、データベース接続を使用して接続するか、「保存」をクリックして、データベース作成を保存します。

関連項目:

  • データベース接続の作成、編集、エクスポートおよびインポートの詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。

  • Oracle Database 12cで導入されたマルチテナント・アーキテクチャ(これを使用すると、ユーザーが作成したゼロ(0)個以上のプラガブル・データベース(PDB)を含むマルチテナント・コンテナ・データベース(CDB)としてOracleデータベースを機能させることが可能)の概要は、『Oracle Multitenant管理者ガイド』を参照してください。非CDBは、PDBを含めることができない従来のOracleデータベースです。Oracle Database 12cより前のOracle Databaseはすべて非CDBでした。

  • CDBの作成と構成の詳細は、『Oracle Multitenant管理者ガイド』を参照してください。

8.4 表の管理

この項では、データベース表を紹介し、SQL Developerを使用した様々な表の操作の実行方法を説明します。

この項の内容は次のとおりです。

8.4.1 表について

表は、Oracle Databaseのデータ記憶域の基本的な単位です。すべてのユーザーがアクセスできるデータがここに含まれています。各表は列と行で構成されています。たとえば、employees表には、last_nameおよびemployee_idと呼ばれる列があります。この表の各行は異なる従業員を表し、last_nameおよびemployee_idの値が収められています。

表を作成するときには、表のタイプを指定し、列と制約を定義します。制約とは、データの整合性を保持するためのルールです。

この項では、次の項目について説明します。

8.4.1.1 表タイプについて
Oracle Databaseで最も一般的な表の種類はemployees表のような単純な列で構成されているリレーショナル表です。他の2つの表のタイプとして、オブジェクト表およびXMLType表がサポートされています。この3つのタイプの表は、どれも永続または一時として定義できます。一時表はトランザクションまたはセッション中にのみ存在するセッションのプライベート・データを保持します。結果セットは複数の操作により構築されるため、結果セットを一時的にメモリーに保持する必要があるアプリケーションで役立ちます。

ヒープ構造または索引構成構造のいずれかでリレーショナル表を構築できます。ヒープ構造では、行を格納する順序は特に決まっていません。索引構成表では行の順序は選択されたいずれかの列の値によって決定されます。一部のアプリケーションでは、索引構成表を使用してパフォーマンスおよびディスク領域の使用効率を向上させることができます。

この項では永続のヒープ構成表について説明します。その他の表のタイプおよび使用する場合の詳細は、『Oracle Database管理者ガイド』および『Oracle Database概要』を参照してください。SQLによる表の作成に必要な構文は、『Oracle Database SQL言語リファレンス』を参照してください。

8.4.1.2 表の列の属性について
データを保持するために表の列を定義します。列を作成するときに、次の属性を指定します。
8.4.1.2.1 データ型

データ型の属性は、列に格納されるデータの種類を定義します。表を作成する場合、各列のデータ型を指定する必要があります。

データ型は各列に含むことができる値のドメインを定義します。たとえば、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です。

8.4.1.2.2 NOT NULL列制約
制約により列の有効な値が決定します。SQL Developerでは、「表の作成」ダイアログ・ボックス・ページの列レベルで定義できる制約は、行が挿入または更新されるたびに列に値があることを要求するNOT NULL制約のみです。表レベルの制約についてで説明されている、列定義の一部または表定義の一部として定義できるその他の制約とは異なり、NOT NULL制約は列定義の一部として定義する必要があります。

データベースの整合性のため列にデータを指定する必要がある場合は、NOT NULL制約を使用します。たとえば、すべての従業員が特定の部門に所属する必要がある場合、部門の識別子を含む列はNOT NULL制約を付けて定義される必要があります。ただし、行が追加または変更される際にデータが不明または存在しない可能性があるときは、NOT NULLとして列を定義しないでください。NOT NULL制約を使用しない列の例として、メール・アドレス内の2番目のオプション行があります。

データベースは列または表の主キーを含む列にNOT NULL制限を自動的に追加します。

8.4.1.2.3 デフォルト値
列に値が入力されないまま新しい行が挿入されると、この値が列に自動的に格納されます。デフォルト値はリテラルに、または式として指定できます。ただし、式を作成する方法には制限があります。詳細は、Oracle Database SQ言語Lリファレンスを参照してください。
8.4.1.2.4 暗号化
列データの自動暗号化が可能です。詳細は、『Oracle Database 2日でセキュリティ・ガイド』の透過的データ暗号化の説明を参照してください。
8.4.1.3 表レベルの制約について
Oracle Databaseでは、データの整合性を確保するためのルールを適用できます。たとえば、従業員のデータを含む表では、従業員名列の値としてNULLは受け入れられません。同様に、この表では同一のIDを持つ従業員が2人存在することはできません。

Oracle Databaseでは、表レベルおよび列レベルの両方で制約と呼ばれるデータの整合性規則を適用できます。制約に違反する行を挿入または更新を試行するSQL文はエラーになり、ロールバックされます。同様に、データが入力されている表に新しく制約を適用すると、既存の行が新しい制約に違反する場合、エラーになります。

表レベルで適用できる制約のタイプは次のとおりです。

  • 主キー: 列(列の組合せ)は行の一意の識別子である必要があります。主キー列にNULL値は指定できません。

  • 一意キー: 2つの行が指定された列または列の組合せにおいて重複値を持たない場合必要になります。列のセットは一意キーになります。

  • チェック: 1つの列(または複数の列の組合せ)が表のすべての行の条件を満たすことを要求します。チェック制約はブール式である必要があります。行が挿入または更新されるたびに評価されます。チェック制約の例はSALARY > 0です。

  • 外部キー: 特定の列(または列の組合せ)では、子表にあるすべての列の値が親表に存在する必要があります。外部キーを含む表は依存表または表と呼ばれます。外部キーを参照する表は表と呼ばれます。外部キー制約の例として、従業員表の部門列には、親の部門表に存在する部門IDが含まれる必要があります。

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

関連項目:

8.4.1.4 その他の表作成の必要事項
この項では、表作成に関する追加情報を示します。次の項目が含まれます。
8.4.1.4.1 ユーザー定義型およびラージ・オブジェクト(LOB)
新規の表には、ユーザー定義型で定義された1つ以上の列が含まれます。ユーザー定義型により、単一列は単一行内に複数の値を含むことができます。注文書のような実在するエンティティを示すオブジェクト・タイプの場合、配列、ネストされた表、またはオブジェクトなどが複数の値として表示されます。(注文書型の列の値を取得すると、注文書番号、顧客番号、数量などが含まれたレコードを戻すことができます)。ユーザー定義型はCREATE TYPE文を使用して作成します。詳細は、Oracle Database SQL言語リファレンスを参照してください。

ラージ・オブジェクト(LOB)列は、テキストやストリーミング・ビデオなどの非構造化データの格納に使用され、情報をTB単位まで保持できます。

SQL Developerを使用してLOB列を作成するには、表の作成時に「拡張」チェック・ボックスをクリックします。次に、「LOBパラメータ」をクリックすると、LOB列の作成時に使用可能なオプションが表示されます。LOB列の作成の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

8.4.1.4.2 パーティション表とパーティション索引
表および索引をパーティション化できます。大規模な表と索引をサポートするため、アドレス・キーをパーティション化して、表と索引をパーティションと呼ばれる小規模で管理しやすいピースに分割できます。パーティション化された表と索引にアクセスする際に、SQL問合せおよびDML文を変更する必要はありません。パーティション化はアプリケーションに対して透過的です。

パーティションが定義された後、特定の操作の効率が非常に向上されます。たとえば、一部の問合せではデータベースが表のすべてではなくパーティションのサブセットのみにアクセスして問合せ結果が生成されます。この技術(パーティション・プルーニングと呼ばれます)により向上したパフォーマンスを概算できます。また、データ管理操作はすべての表ではなくパーティション・レベルで発生します。これによりデータ・ロード、索引作成および再ビルド、バックアップおよびリカバリなどの操作の時間が大幅に削減されます。

各パーティションはその他のパーティションから独立した固有の表領域に格納されます。異なる表領域は異なるディスクに配置できるため、可用性およびパフォーマンスのためにより適切にチューニングできる表構造が提供されます。頻繁にアクセスされるデータはパフォーマンスの高いディスクに配置され、取得される頻度の低いデータはより低コストの記憶域に配置されるため、異なる表領域のパーティションを別々のディスクに保存することにより、使用可能な記憶域使用量を最適化できます。

パーティション化は、様々なタイプの大量のデータを管理するアプリケーションで役立ちます。オンライン・トランザクション処理(OLTP)システムでは、多くの場合、管理性および可用性が向上し、データ・ウェアハウス・システムではパフォーマンスと管理性が向上します。

SQL Developerを使用してパーティション化オプションを指定するには、表の作成時に「拡張」チェック・ボックスをクリックします。次に、「パーティション化」をクリックすると、使用可能なパーティション化オプションが表示されます。パーティション化の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

8.4.1.4.3 物理記憶域属性
表について複数の記憶域属性を指定できます。たとえば、ディスク上の表の初期サイズを指定できます。表の記憶域属性設定の詳細は、『Oracle Database管理者ガイド』および『Oracle Database SQL言語リファレンス』を参照してください。

SQL Developerを使用して表の記憶域属性を指定するには、表の作成時に「拡張」チェック・ボックスをクリックし、「表のプロパティ」をクリックしてから「記憶域オプション」をクリックします。

8.4.1.4.4 圧縮表
表の圧縮機能は、OLTPアプリケーションとデータ・ウェアハウス・アプリケーションのどちらにも適しています。表を圧縮すると、必要なディスク記憶域を節約でき、入出力やバッファ・キャッシュの要件が低くなるため、問合せのパフォーマンスがよくなります。圧縮はアプリケーションに対して透過的に行われるため、INSERT、UPDATEまたはDELETEなどの標準DML操作や一括ロードの実行にかかるオーバーヘッドは最小限で済みます。

SQL Developerを使用して表圧縮を構成するには、表の作成時に「拡張」チェック・ボックスをクリックします。次に、「表のプロパティ」をクリックし、「圧縮」オプションを有効にします。

関連項目:

8.4.2 表の表示

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

表を表示するには:

  1. SQL Developerの「接続」ナビゲータで、表示する表を含むスキーマの「表」ノードに移動します。

    ビューが独自のスキーマ内にある場合、スキーマの「表」ノードに移動します。

    表示する表が別のユーザーのスキーマ内にある場合は、「他のユーザー」ノードに移動して開き、表が存在するスキーマの名前を検索して、「表」ノードに移動します。

    SYSおよびHRを含むスキーマ名の例。

    ノート:

    他のスキーマおよびそれらのスキーマ内のオブジェクトを参照するために必要な権限を持っている必要があります。

  2. 「表」ノードを開きます。

    スキーマにある表のリストが表示されます。

  3. 表示する表の名前をクリックします。

    表名を含むタブがオブジェクト・ペインに表示され、「列」サブタブも表示されます。このタブに表定義を表示できます。

8.4.3 表データの表示

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

表データを表示するには:

  1. SQL Developerで、表の表示の説明に従って表を検索します。たとえば、HRスキーマの表を検索します。
  2. データが含まれている表を選択します。

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

    表名を含むタブがオブジェクト・ペインに表示され、「列」サブタブも表示されます。

  3. オブジェクト・ペインで「データ」サブタブをクリックします。

    「データ」サブタブに表のデータが表示されます。

  4. (オプション)列の名前をクリックして、列内の値ごとにデータをソートします。
  5. (オプション)「SQL」サブタブをクリックすると、表を定義するSQL文が表示されます。

表のコンテンツを参照するために、独自のSQL SELECT文を記述して送信することもできます。SQL DeveloperでSQLワークシート・セッションを開始して、SQL文を実行できます。これを行うには、「ツール」メニューから「SQLワークシート」を選択します。

SELECT文の詳細な説明はOracle Database SQL言語リファレンスにあります。

関連項目:

表について

8.4.4 例: 表の作成

SQL Developerを使用して、表を作成できます。

次の例では、HRスキーマでpurchase_ordersという名前の表を作成します。この表には次の列が含まれます。

列名 データ型 サイズ Null以外 主キー

PO_NUMBER

NUMBER

あり

あり

PO_DESCRIPTION

VARCHAR2

200

いいえ

PO_DATE

DATE

あり

PO_VENDOR

NUMBER

あり

HRスキーマにPURCHASE_ORDERS表を作成するには:

  1. SQL Developerで、表の表示の説明に従って、新規表を作成するスキーマの「表」ノードに移動します。
  2. 「表」ノードを右クリックして「新規の表」を選択します。

    「表」タブを含む「表の作成」ダイアログ・ボックスが表示されます。

    「表」タブのデフォルト・オプションのみを使用して、単純な表を迅速に作成できます。より高度な表を作成する場合は、より多くの表作成オプションが用意されている「拡張」チェック・ボックスを選択します。「表」タブのデフォルト・オプションに戻るには、「拡張」チェック・ボックスの選択を解除します。

  3. 「スキーマ」フィールドでHRを選択します。
  4. 「名前」フィールドにPURCHASE_ORDERSと入力します。
  5. 「列」セクションで、PURCHASE_ORDERS表の各列の列情報をこのトピック上部の表で指定されたとおりに入力します。たとえば、PURCHASE_ORDERS表の最初の列には、名前にPO_NUMBER、データ型にNUMBERと入力し、「NOT NULL」チェック・ボックスを選択し、「PK」列をクリックしてPO_NUMBERが表の主キーであることを示します。その後、緑のプラス記号アイコンをクリックして、次の列の情報を追加します。すべての列の情報がPURCHASE_ORDERSに追加されるまで、この手順を繰り返します。
  6. 「OK」をクリックします。

    PURCHASE_ORDERS表が、「接続」ナビゲータの「表」ノードの下に表示されます。

関連項目:

表について

8.4.5 表の属性の変更

SQL Developerを使用して、表の列を追加および削除し、表制約を管理できます。この項では、次の項目について説明します。

関連項目:

表について

8.4.5.1 例: 表に列を追加
この例では、SQL Developerを使用して表に列を追加します。特に、po_date_receivedおよびpo_requestor_nameという2つの新しい列を、例: 表の作成で先に作成したpurchase_orders表に追加します。

PURCHASE_ORDERS表に列を追加するには:

  1. SQL Developerで、表の表示の説明に従って、HRスキーマの「表」ノードに移動します。
  2. 「表」ノードを開きます。

    スキーマにある表のリストが表示されます。

  3. PURCHASE_ORDERS表を右クリックして「編集」を選択します。

    「表の編集」ダイアログ・ボックスが表示されます。

  4. 「列」セクションの右上にある緑のプラス記号アイコンをクリックします。

    列のリストの末尾に新しい空白列が表示されます。

  5. 「列」セクションで、新しいpo_date_received列について次の情報を入力します。
    フィールド名

    Name

    PO_DATE_RECEIVED

    Type

    DATE

  6. 「列」セクションの右上にある緑のプラス記号アイコンを再度クリックします。

    列のリストの末尾に新しい空白列が表示されます。

  7. 「列プロパティ」セクションで、新しいpo_requestor_name列について次の情報を入力します。
    フィールド名

    Name

    PO_REQUESTOR_NAME

    Type

    VARCHAR2

    Size

    40

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

    PURCHASE_ORDERS表が、「接続」ナビゲータの「表」ノードの下に表示されます。

  9. 新しい列を表示するには、「接続」ナビゲータでPURCHASE_ORDERSをクリックします。次に、オブジェクト・ペインのPURCHASE_ORDERSタブで、「列」サブタブをクリックすると、新しい列が表示されます。

関連項目:

表について

8.4.5.2 例: 表の列の削除
この例では、SQL Developerを使用して表の列を削除します。特に、例: 表に列を追加purchase_orders表に追加したpo_requestor_name列を削除します。

PO_REQUESTOR_NAME列を削除するには:

  1. SQL Developerで、表の表示の説明に従って、HRスキーマのPURCHASE_ORDERS表に移動します。
  2. PURCHASE_ORDERS表を右クリックして「編集」を選択します。

    「表の編集」ダイアログ・ボックスが表示されます。

  3. 「列」セクションでPO_REQUESTOR_NAME列をクリックしてから、赤色のXアイコンをクリックします。

    PO_REQUESTOR_NAME列が列のリストから削除されます。

  4. 「OK」をクリックします。
  5. オブジェクト・ペインのPURCHASE_ORDERS表タブで、「列」サブタブをクリックすると、表内の列のリストが表示されます。

関連項目:

表について

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

ノート:

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

PURCHASE_ORDERS表に表制約を追加するには:

  1. 表の表示の説明に従って、HRスキーマのPURCHASE_ORDERS表に移動します。
  2. PURCHASE_ORDERS表を右クリックして「編集」を選択します。

    「表の編集」ダイアログ・ボックスが表示されます。

  3. 「検索」ボックスで、「制約」をクリックします。
  4. 「制約」セクションの右側にある緑のプラス記号アイコンをクリックして、新規チェック制約を選択します。

    「制約」セクションで、制約リストの最後に新しい行が表示されます。

  5. 新しい制約の「名前」フィールドに、PO_CHECK_RCVD_DATEと入力します。
  6. 「有効」列のチェック・マークはそのままにし、「遅延不可」を維持します。
  7. 「チェック条件」セクションで、この制約の次の条件を入力します。

    PO_DATE_RECEIVED >= PO_DATE

    この式は、PO_DATE_RECEIVEDPO_DATEより大きいかまたは等しいということを示しています。日付列では、PO_DATE_RECEIVEDPO_DATEと同じ日付またはそれより遅い日付である必要があることと同じ意味です。

  8. 「OK」をクリックします。
  9. オブジェクト・ペインのPURCHASE_ORDERSタブで、「制約」サブタブをクリックすると、表内の現在の制約が表示されます。
8.4.5.4 例: 既存の表制約の変更
表制約を変更する方法はいくつかあります。たとえば、既存の表制約を有効な状態から無効な状態に変更できます。この例では、SQL Developerを使用して、例: 新しい表制約の追加purchase_orders表に対して作成したチェック制約を無効にします。

PURCHASE_ORDERS表の制約を無効にするには:

  1. SQL Developerで、表の表示の説明に従って、HRスキーマのPURCHASE_ORDERS表に移動します。
  2. PURCHASE_ORDERS表を右クリックして「制約」を選択してから、「1つを無効化」を選択します。

    「1つを無効化」ダイアログ・ボックスが表示されます。

  3. 「制約」フィールドでPO_CHECK_RCVD_DATEを選択します。
  4. 「適用」をクリックします。

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

  5. オブジェクト・ペインのPURCHASE_ORDERSタブで、「制約」サブタブをクリックすると、PO_CHECK_RCVD_DATE制約が表示されます。この制約の「ステータス」列では、値DISABLEDが示されています。
8.4.5.5 例: 表制約の削除
SQL Developerを使用して、表から制約を削除できます。表制約を削除すると他の制約を削除してしまう可能性があります。たとえば、他の表(子表)の外部キー制約の参照元の表(親表)から主キー制約を削除した場合、カスケード削除メカニズムにより子表の外部キー制約も削除されます。

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

PURCHASE_ORDERS表から制約を削除するには:

  1. SQL Developerで、表の表示の説明に従って、HRスキーマのPURCHASE_ORDERS表に移動します。
  2. PURCHASE_ORDERS表を右クリックして「制約」を選択してから、「削除」を選択します。

    「削除」ダイアログ・ボックスが表示されます。

  3. 「制約」フィールドでPO_CHECK_RCVD_DATEを選択します。
  4. 「適用」をクリックします。

    制約が削除されたことを示す確認メッセージが表示されます。

  5. オブジェクト・ペインのPURCHASE_ORDERSタブで、「制約」サブタブをクリックします。PO_CHECK_RCVD_DATE制約はこの表に表示されなくなります。

関連項目:

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

SQL Developerを使用して、データを表にロードできます。データは.xlsファイルまたは.csvファイルから表にロードできます。

この例では、例: 表の作成で作成したPURCHASE_ORDERS表にデータをロードします。簡略化のために、この例では3行のみロードします。

この例のために、データベースのホスト・コンピュータまたはローカル・コンピュータのファイル・システム上にload.csvという名前のテキスト・ファイルを作成する必要があります。ファイルの内容は次のとおりです。

1,Office Equipment,25-MAY-2012,1201,13-JUN-2012
2,Computer System,18-JUN-2012,1201,27-JUN-2012
3,Travel Expense,26-JUN-2012,1340,11-JUL-2012

ノート:

この例では、PURCHASE_ORDERS表内の列が次のとおりであると想定します。PO_NUMBERPO_DESCRIPTIONPO_DATEPO_VENDORおよびPO_DATE_RECEIVEDPURCHASE_ORDERS表にこれらの列のすべてが含まれていない(または追加の列が含まれている)場合、テキスト・ファイルのデータを適宜変更してください。

PURCHASE_ORDERS表にデータをロードするには:

  1. SQL Developerで、表の表示の説明に従って、HRスキーマのPURCHASE_ORDERS表に移動します。
  2. PURCHASE_ORDERS表を右クリックして「データのインポート」を選択します。

    「開く」ダイアログ・ボックスが表示されます。

  3. 表にインポートするデータを含むload.csvファイルに移動して選択し、「開く」をクリックします。

    「データのインポート・ウィザード」が表示され、データ・プレビュー・ページが表示されます。

  4. 「ヘッダー」が選択解除されていること、「フォーマット」「csv」に、「行の終了文字」「環境のデフォルト」に、「左囲み」および「右囲み」「なし」に設定されていることを確認します。「次へ」をクリックします。

    インポート方法ページが表示されます。

  5. このページで、次のように選択します。
    • 「インポート方法」フィールドでInsert

    • 「表名」フィールドでPURCHASE_ORDERS

    • .csvファイルの行数より大きい「インポートする行数の上限」フィールドの値。

  6. 「次へ」をクリックします。

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

  7. 「選択された列」リストにインポートする列を移動し、それらの順序を指定します。
  8. 「次へ」をクリックします。

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

  9. .csvファイルのソース・データを既存の表にマップします。左の各ソース・データ列について、このデータのインポート先となる右の列を選択します。

    たとえば、左の「ソース・データの列」表で最初の列を選択し、右の「ターゲット表の列」表の「名前」フィールドで、そのデータを格納するデータベース表内の列の名前を選択します。「ソース・データの列」表の各列のデータを、「ターゲット表の列」表の適切な列にマップします。

    図では、「ターゲット表の列」表の最後の列(PO_DATE_RECEIVED)にマップされる「ソース・データの列」表の最後の列のデータが示されています。この時点で、「ソース表列」表の前の4つの列は、「ターゲット表の列」表の適切な列にすでにマップされています。
  10. 「次へ」をクリックします。

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

  11. 「終了」をクリックします。

    データが表にインポートされます。

関連項目:

表について

8.4.7 表の削除

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

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

表を削除するには:

  1. SQL Developerで、表の表示の説明に従って、HRスキーマのPURCHASE_ORDERS表に移動します。
  2. PURCHASE_ORDERS表を右クリックして「表」を選択してから、「削除」を選択します。

    「削除」ダイアログ・ボックスが表示されます。

  3. 「カスケード制約」および 「パージ」を選択します。
  4. 「適用」をクリックします。

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

関連項目:

表について

8.5 索引の管理

この項では、SQL Developerを使用した索引の作成および管理方法を説明します。次に例を示します。

8.5.1 索引について

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

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

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

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

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

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

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

関連項目:

あらゆる種類のスキーマまたはシステム変更のSQLパフォーマンスの影響を分析するためのSQLパフォーマンス・アナライザの使用方法の詳細は、『Oracle Database Testingガイド』を参照してください

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

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

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

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

昇順および降順

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

列およびファンクション

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

単一列および連結

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

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

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

関連項目:

8.5.2 索引の表示

SQL Developerを使用して、データベース内の索引を表示します。

索引を表示するには:

  1. SQL Developerの「接続」ナビゲータで、表示する索引を含むスキーマの「索引」ノードに移動します。

    索引が独自のスキーマ内にある場合、スキーマの「索引」ノードに移動します。

    表示する索引が別のユーザーのスキーマ内にある場合は、「他のユーザー」ノードに移動して開き、索引が存在するスキーマの名前を検索して、「索引」ノードに移動します。

    SYSおよびHRを含むスキーマ名の例。

    ノート:

    他のスキーマおよびそれらのスキーマ内のオブジェクトを参照するために必要な権限を持っている必要があります。

  2. 「索引」ノードを開きます。

    選択したスキーマ内の索引の名前が「索引」ノードの下に表示されます。

  3. 表示する索引の名前をクリックします。

    索引名を含むタブがオブジェクト・ペインに表示され、「列」サブタブも表示されます。このタブに索引定義を表示できます。

関連項目:

索引について

8.5.3 例: 索引の作成

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

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

SH.PRODUCTS表で説明索引を作成するには:

  1. SQL Developerで、表の表示の説明に従って、SHスキーマ内の表を表示します。
  2. PRODUCTS表を右クリックして「索引」を選択してから、「索引の作成」を選択します。

    「定義」タブを含む「索引の作成」ダイアログ・ボックスが表示されます。

  3. ダイアログ・ボックスの上部で、「スキーマ」フィールドにSHが、「名前」フィールドにPROD_DESC_IDXがそれぞれ表示されることを確認します。
  4. 定義タブ:
    • 「表のスキーマ」フィールドに、SHと入力します。

    • 「表」フィールドでPRODUCTSを選択します。

    • 「索引タイプ」フィールドでNon-Uniqueを選択します。

    • 「式」セクションで緑のチェック・マークをクリックし、表示された行の「式」列にPROD_DESCを、「順序」列に<Not Specified>をそれぞれ入力します。

      索引が複数の列で構成されている場合(連結索引)、「式」セクションに2番目の列を追加し、その列を「索引」リスト内の列のリストに追加します。次に、上矢印および下矢印アイコンを使用して、索引列の順序を指定します。

      索引に複数の列が含まれている場合は、「順序」フィールドで「ASC」(昇順)または「DESC」(降順)のいずれかを選択します。選択した値によって索引に使用するソート順列が決まります。

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

関連項目:

索引について

8.5.4 例: 索引の削除

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

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

ノート:

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

SH.PRODUCTS表で説明索引を削除するには:

  1. SQL Developerで、表の表示の説明に従って、SHスキーマ内の表を表示します。
  2. PRODUCTS表を右クリックして「索引」を選択してから、「削除」を選択します。

    「プロンプト」タブを含む「削除」ダイアログ・ボックスが表示されます。

  3. 「索引の削除」フィールドでPROD_DESC_IDXを選択します。
  4. 「適用」をクリックします。

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

関連項目:

索引について

8.6 ビューの管理

この項では、SQL Developerを使用したビューの作成および管理方法を説明します。次に例を示します。

8.6.1 ビューについて

ビューは、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_ビューの列は通常ほぼ同一です。通常、USER_ビューにはOWNER列がありません。

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

動的パフォーマンス・ビューでは、実行中のデータベース・アクティビティを監視します。管理者のみ使用可能です。動的パフォーマンス・ビューの名前はV$で始まります。そのため、これらのビューは多くの場合V$ビューとして参照されます。

V$ビューの例は、V$SGAで、システム・グローバル領域(SGA)のメモリー・コンポーネントの現行のサイズを戻します。

8.6.2 ビューの表示

SQL Developerを使用して、指定したスキーマにビューをリストできます。ビュー定義を表示することもできます。

ビューを表示するには:

  1. SQL Developerの「接続」ナビゲータで、表示するビューを含むスキーマの「ビュー」ノードに移動します。

    ビューが独自のスキーマ内にある場合、スキーマの「ビュー」ノードに移動します。

    表示するビューが別のユーザーのスキーマ内にある場合は、「他のユーザー」ノードに移動して開き、ビューが存在するスキーマの名前を検索して、「ビュー」ノードに移動します。

    SYSおよびHRを含むスキーマ名の例。

    ノート:

    他のスキーマおよびそれらのスキーマ内のオブジェクトを参照するために必要な権限を持っている必要があります。

  2. 「ビュー」ノードを開きます。

    スキーマにあるビューのリストが表示されます。

  3. 表示するビューの名前をクリックします。

    ビュー名を含むタブがオブジェクト・ペインに表示され、「列」サブタブも表示されます。このタブにビュー定義を表示できます。

関連項目:

ビューについて

8.6.3 例: ビューの作成

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

HR.EMPLOYEES表にKING_VIEWビューを作成するには:

  1. 表の表示の説明に従って、SQL Developerの「接続」ナビゲータで、HRスキーマの「ビュー」ノードに移動します。

  2. 「ビュー」ノードを右クリックして「新規ビュー」を選択します。

    「SQL問合せ」タブを含む「ビューの作成」ダイアログ・ボックスが表示されます。

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

    • 「スキーマ」フィールドでHRを選択します。

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

    • 「SQL問合せ」フィールドに、KING_VIEWの作成で使用する次のSQL文を入力します。

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

    KING_VIEWが作成され、HRスキーマのビューのリストに表示されます。

KING_VIEWビューをテストするには:

  1. 表の表示の説明に従って、SQL Developerの「接続」ナビゲータで、HRスキーマの「ビュー」ノードに移動し、KING_VIEWを検索します。
  2. KING_VIEWをクリックします。

    ビュー名を含むタブがオブジェクト・ペインに表示され、「列」サブタブも表示されます。

  3. オブジェクト・ペインで「データ」サブタブをクリックします。

    ビューで選択されたデータが表示されます。

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

関連項目:

ビューについて

8.6.4 例: ビューの削除

ビューが不要になった場合、SQL Developerを使用して削除できます。

この例では、例: ビューの作成で前に作成したHR.KING_VIEWビューを削除します。

HR.KING_VIEWビューを削除するには:

  1. 表の表示の説明に従って、SQL Developerの「接続」ナビゲータで、HRスキーマの「ビュー」ノードに移動し、KING_VIEWを検索します。
  2. KING_VIEWを右クリックして、「削除」を選択します。

    「削除」ダイアログ・ボックスが表示されます。

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

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

関連項目:

ビューについて

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

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

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

Oracle Databaseでは、データベースにプログラム・コードを格納できます。開発者はPL/SQLまたはJavaでプログラム・コードを書き込み、そのコードをスキーマ・オブジェクトに格納します。DBAとして、SQL Developerを使用して、次のようなプログラム・コード・オブジェクトを管理できます。
  • PL/SQLパッケージ、プロシージャ、ファンクションおよびトリガー

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

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

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

ノート:

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

関連項目:

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

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

ノート:

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

SQL Developerを使用して、無効なスキーマ・オブジェクトを検索するレポートを実行できます。

無効なスキーマ・オブジェクトを検索するには:

  1. SQL Developerで「レポート」ナビゲータが表示されない場合は、「表示」メニューから「レポート」オプションを選択して「レポート」ナビゲータを表示します。

    「レポート」ナビゲータが表示されます。

  2. 「レポート」ナビゲータで、「すべてのレポート」ノードを展開した後に「データ・ディクショナリ・レポート」ノードを展開し、次に「すべてのオブジェクト」ノードを展開して、「無効オブジェクト」をクリックします。

    「接続の選択」ダイアログ・ボックスが表示されます。

  3. 「接続の選択」ダイアログ・ボックスで、使用する接続を選択するか、新しい接続を作成します。

    無効なオブジェクト・レポートに自身のスキーマの無効なオブジェクトのみに関する情報を含める場合は、自身のスキーマの接続を使用します。

    無効なオブジェクト・レポートにデータベース全体の無効なオブジェクトに関する情報を含める場合は、SYSなどの特権ユーザーの接続を使用します。この例では、SYSユーザーに対する接続が選択されています。

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

    「バインド値の入力」ダイアログ・ボックスが表示されます。

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

    オブジェクト・ペインに「無効なオブジェクト」タブが表示されます。このタブには、(「接続の選択」ダイアログ・ボックスで指定した接続に応じて、)スキーマ内またはデータベース内の無効なオブジェクトがリストされます。

  6. 「無効なオブジェクト」タブで特定の無効なオブジェクトの行を右クリックすると、「コンパイル」オプションが表示されます。そのオプションを選択して、無効なオブジェクトを再コンパイルします。

    再コンパイルすることによって、常にオブジェクトを有効にできるとは限らないことに注意してください。この項の先頭のノートを参照してください。

関連項目:

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

SQL Developerを使用して表、索引、ビューおよびプログラム・コードを管理する以外にも、SQL Developerを使用して他のスキーマ・オブジェクトを管理できます。次に例を示します。
  • 順序

    順序は、一意の整数を生成するデータベース・オブジェクトです。順序に問い合せるたびに、現在の値は増加し、結果の整数が返されます。問合せは複数ユーザーが同時に行うことができ、各ユーザーは常に一意の値を受け取ります。そのため、順序を使用した表内の主キーの値の指定は、表にデータを挿入するユーザーの数に関係なく、確実にキー値を一意にする簡単な方法です。

  • シノニム

    シノニムは、表やビューなどのスキーマ・オブジェクトの別名です。シノニムによって、基礎となるデータベース構造をアプリケーションやユーザーに対して簡単に非表示にできます。シノニムはプライベートまたはパブリックにできます。プライベート・シノニムを参照するユーザーがシノニム所有者ではない場合、パブリック・シノニムはスキーマ名で修飾する必要はありませんが、プライベート・シノニムは修飾する必要があります。たとえば、READオブジェクト権限をHR.EMPLOYEES表に付与されたユーザーが発行した次の問合せについて考慮します。

    SELECT   employee_id, salary
    FROM     hr.employees
    ORDER BY salary
    

    HR.EMPLOYEES表の別名として、PERSONNELという名前のパブリック・シノニムを作成し、 HR.EMPLOYEES表でPUBLIC(すべてのデータベース・ユーザー)に対してREAD権限を付与すると想定します。指定されたパブリック・シノニムを使用して、すべてのユーザーがより簡単な次の問合せを発行できます。

    SELECT   employee_id, salary
    FROM     personnel
    ORDER BY salary
    

    この問合せを作成したユーザーは個人データを含むスキーマ名を確認する必要はありません。

    ノート:

    ユーザーがpersonnelという名前の表を所有している場合は、その表が問合せに使用されます。そのような表が存在しない場合は、データベースでパブリック・シノニムを解決し、HR.EMPLOYEES表を使用します。

    シノニムには、スキーマ名が異なる場合でも本番データベースと同じシノニムを開発データベースで使用できるという付加的なメリットがあります。この方法により、どちらの環境でもアプリケーション・コードを未修正の状態で実行できます。たとえば、DEV1スキーマを示す開発データベースでPERSONNELシノニムが定義されている場合、DEV1スキーマにEMPLOYEES表があるデータベース開発では問合せをエラーなしに実行できます。

    シノニムは単なる別名であるため、データ・ディクショナリ内に定義以外の記憶域は必要ありません。問合せのシノニムを参照するには、示されているオブジェクトの権限が必要です。シノニム自体は保護できません。シノニムに対するオブジェクト権限をユーザーに付与すると、シノニムが指し示すオブジェクトに対する権限を付与することになります。

  • データベース・リンク

    データベース・リンクは、他のOracle Databaseを示すスキーマ・オブジェクトです。データベース・リンクを使用すると、リモート・データベースのオブジェクトを問合せまたは更新できます。Oracle Database管理者ガイドで説明しているように、データベース・リンクは分散データベース環境で使用されます。

8.9 スキーマ・オブジェクトの管理: Oracle by Example Series

Oracle by Example(OBE)には、『Oracle Database 2日でデータベース管理者』に関するシリーズが含まれています。このOBEシリーズでは、この章のタスクを段階的に説明し、注釈付きのスクリーンショットを使用します。

シリーズは次のチュートリアルで構成されます。
  1. SQL Developerを使用したデータベース接続の作成

  2. SQL Developerを使用した表の管理

  3. 索引およびビューの管理

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

前述のチュートリアルには2つの方法でアクセスできます。