Oracle University 講師が ORACLE MASTER 取得を目指している方に向けて試験トピックを解説するブログ連載講座。「ORACLE MASTER Silver SQL 2019」資格取得に向けた試験トピックについて解説します。

————————————————-

今回はORACLE MASTER Silver SQLの試験トピック「DDLによる表とその関係の管理 – 外部表の作成と使用 -」に関連する問題をご紹介いたします。ORACLE MASTER Silver SQL(Exam Number: 1Z0-071-JPN)の詳細につきましては以下URLをご参考ください。

Oracle Database SQL Exam Number: 1Z0-071

URL: https://education.oracle.com/ja/oracle-database-sql/pexam_1Z0-071

————————————————-

今回は、外部表に関する内容に挑戦しましょう。外部表というのは、Oracleデータベース内に表の構造のみが存在しており、実際のデータはOS上にあるというのが特徴ですよね。OS上にデータが存在していますがSQL文を使用して、あたかもデータベース内にデータがあるかのようにアクセスすることが可能です。そんな外部表に関する問題をやっていきましょう。

(解説)

それでは外部表について解説していきます。

先に述べたとおり、外部表とは、OSファイルシステム上にあるデータをあたかもOracleデータベース内の表に存在しているかのように扱える機能になります。

OS上にあるデータへのアクセスを可能にするため、専用のアクセス・ドライバが用意されており、外部表作成時にドライバのTYPE句で指定することができます。主なアクセス・ドライバについて2つを以下にまとめておきましょう。


文章だけだと内容が難しいと思いますので簡単にイメージ図も載せておきますね。

外部表のイメージができましたら実際に作成して動作させてみましょう!

(サンプル定義は最後に掲載してあります)

外部表作成時にはいくつか必須パラメータがありますのでそれらは赤字にしておきました。正常に外部表が作成できるとデータベース外にあるOSファイルの内容をSELECT文で取得することが可能になります。

CREATE TABLE AS SELECTを使用して外部ファイルにアンロードすることもできるORACLE_DATAPUMPアクセス・ドライバを使用した例も載せておきます。

尚、各種アクセス・パラメータの詳細については以下のマニュアルを参考にするとよいでしょう。

「Oracle Database ユーティリティ 第Ⅲ部 外部表」

その他、外部表について重要な内容を箇条書きでまとめておきます。

  • 外部表とはメタデータ(定義)のみをデータベース内に作成する読取り専用の表である
  • 実際のデータ自体はデータベース外に配置し、配置先はディレクトリ・オブジェクトで指定する
  • 外部に配置したデータはORACLE_LOADERやORACLE_DATAPUMPといったアクセス・ドライバでアクセスが可能である
  • 読取り専用の表になるため、データ操作言語(DML)の操作はできない
  • 索引を作成することはできない

外部表についてここまで学習ができれば問題の選択肢を解くことができます。早速確認していきましょう。

選択肢1は誤りです。外部表に索引を作成することはできません。尚、Oracle 12cR2以降より外部表にパーティションを使用することができるようになっていますのでパフォーマンスを考慮して必要に応じて使用するとよいと思います。

選択肢2は正解です。読取り専用の表となるためDML文の実行はできません。

選択肢3も正解ですね。外部表の構文の内容になりますが必須のオプションについてはしっかり押さえておきましょう。

選択肢4は誤りです。TYPE句は省略することができ、省略した場合はORACLE_LOADERが選択されることになります。

選択肢5は正解ですね。ORACLE_DATAPUMPを使用した実行例も参考にしてください。

選択肢6は誤りです。PL/SQLプログラムを使用しなくても通常のSELECT文で外部表にはアクセスが可能です。

以上の結果から、正解の選択肢は2と3と5になります。

(サンプル定義)

— ORACLE_LOADERを使用した外部表アクセス —
DROP TABLE ext_emp_table;

CREATE OR REPLACE DIRECTORY ext_dir AS ‘/home/oracle/work’;
CREATE TABLE ext_emp_table
  (emp_num number(6),
   emp_name varchar2(20),
   emp_sal  number )
ORGANIZATION EXTERNAL
  (TYPE ORACLE_LOADER
   DEFAULT DIRECTORY ext_dir
   ACCESS PARAMETERS
   (RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ‘,’
   )
   LOCATION (’emp_info.dat’)
  );

— OS上のファイルの内容 —
7900,JAMES,2000
7902,FORD,5000
7934,MILLER,3000

— ORACLE_DATAPUMPを使用したアンロード —
DROP TABLE ext_emp_table2;

CREATE TABLE ext_emp_table2
  (emp_num, emp_name, emp_sal)
ORGANIZATION EXTERNAL
  (TYPE ORACLE_DATAPUMP
   DEFAULT DIRECTORY ext_dir
   LOCATION (’emp_info2.dat’)
  ) AS SELECT empno, ename, sal from scott.emp;

外部表の構文は、やや複雑な部分もありますので実際に作成する場合はマニュアルのサンプル例を使用するとよいでしょう。まずは簡単な定義からぜひ挑戦してみてください!

それでは今回の講義は以上とします。それではまた。

————————————————-

ORACLE MASTER Silver SQL 2019 のご紹介

ORACLE MASTER Silver SQL 2019 試験記事トピック一覧

————————————————-

その他の ORACLE MASTER 試験トピック解説講座シリーズ:

【Oracle University講師によるORACLE MASTER Gold DBA 2019 試験トピック解説講座】トピック一覧

————————————————-