2. サービス・インスタンスのセットアップ
2.8 利用者データの移出入
2.8.3 SQL*Loader の使用方法
SQL*Loader は、Oracle クライアントまたは API から使用します。Oracle クライアントと API から使用する方法では以下の 違いがあります。必要に応じて使い分けてください。
実行方法 説明
API から実行 事前に FTP でサービス・インスタンスにデータを配置します。SQL*Loader 実行時には、事前に配置 したデータがロードされます。ネットワークを介さずロードを行うためロード時間の短縮が見込めます。
Oracle クライアント から実行
SQL*Loader 実行時に Oracle クライアントからネットワークを介してデータを転送し、ロードします。
ネットワークを介してロードを行うため、API で実行する場合と比較してロードに時間がかかります。
Oracle クライアントから使用する場合は、事前に DB_LISTENER のアクセスルールを有効にしておく必要があります。設定方 法は「2.4 アクセスルールの設定」を参照ください。
ここでは、API または Oracle クライアントから SQL*Loader を行う方法を説明します。/u03 のローカル・ストレージの容量圧 迫防止のために、アーカイブ・ログ・ファイルの出力を抑止する方法も合わせて説明します。アーカイブ・ログ・ファイルの出力抑止は、
インポートするデータ量や/u03 の空きサイズに応じて行ってください。
注意:アーカイブ・ログの出力抑止中に、該当の表に対して行った処理はリカバリ時に復元されません。
そのため処理完了後にバックアップを取得するようにしてください。
(1)データファイル、制御ファイルの準備
SQL*Loader の実行に必要なデータファイル(CSV)と SQL*Loader の制御ファイルを準備します。
アーカイブ・ログ・ファイルの出力を抑止する場合は、制御ファイルに UNRECOVERABLE 句を指定してください。
UNRECOVERABLE 句の指定方法は、以下のマニュアルを参照ください。
Oracle Database ユーティリティ 11gリリース 2 (11.2)
「SQL*Loader の UNRECOVERABLE 句の指定」
https://docs.oracle.com/cd/E16338_01/server.112/b56303/ldr_modes.htm#sthref1177
Oracle Database ユーティリティ 12c リリース 1 (12.1.0.2)
「SQL*Loader の UNRECOVERABLE 句の指定」
https://docs.oracle.com/cd/E57425_01/121/SUTIL/GUID-4F224723-D836-4713-9BEE-E7B88424 EB8A.htm#GUID-75EE26ED-6B2F-4A44-AC72-2AF0D326131B
61
Copyright 2017-2019 FUJITSU LIMITED Oracle Database ユーティリティ 12c リリース 2 (12.2)
「SQL*Loader の UNRECOVERABLE 句の指定」
https://docs.oracle.com/cd/E82638_01/sutil/oracle-sql-loader-conventional-and-direct-loads.html
#GUID-75EE26ED-6B2F-4A44-AC72-2AF0D326131B
Oracle Database データベース・ユーティリティ 18c
「SQL*Loader の UNRECOVERABLE 句の指定」
https://docs.oracle.com/cd/E96517_01/sutil/oracle-sql-loader-conventional-and-direct-loads.html
#GUID-75EE26ED-6B2F-4A44-AC72-2AF0D326131B
(2)データファイル、制御ファイルの格納
API で実行する場合と Oracle クライアントから実行する場合で格納先が異なります。それぞれの場合について説明します。
[API で実行する場合]
「2.8.1 FTP サービスの使用方法」を参照し、データファイル(CSV)と制御ファイルを SQL_LOADER ディレクトリに格納しま す。データファイルと制御ファイルを zip 形式で圧縮している場合は「ファイル圧縮/伸張」API で伸張してください。詳細は FUJITSU Cloud Service K5 DB powered by Oracle○R Cloud API リファレンスを参照ください。
[Oracle クライアントから実行する場合]
SQL*Loader を実行する Oracle クライアント環境の任意のディレクトリにデータファイル(CSV)と制御ファイルを格納します。
(3)データベースの FORCE_LOGGING モードを解除(アーカイブ・ログ・ファイルの出力を抑止する場合のみ)
Oracle11gR2 の場合はデータベース・インスタンスに SYS ユーザーで接続します。Oracle 12c/18c の場合は CDB$ROOT に SYS ユーザーで接続します。次に以下の SQL を実行します。これによりデータベース全体での FORCE_LOGGING モードが解除されます。データベースの接続方法は「2.5 データベースへの接続」を参照ください。
SQL> ALTER DATABASE NO FORCE LOGGING;
以下の SQL を実行し、FORCE_LOGGING が NO になっているを確認します。
SQL>SELECT FORCE_LOGGING FROM V$DATABASE;
FORCE_LOGGING
--- NO
62
Copyright 2017-2019 FUJITSU LIMITED (4)SQL*Loader の実行
API または Oracle クライアントから実行します。以下にそれぞれの方法を説明します。
[API から実行する場合]
「SQL*Loader」の API を実行します。API は HTTP クライアントまたはサービス・コンソールから実行します。サービス・コンソ ールから実行する場合は、「7.1 サービス・コンソールからの API 実行方法」を参照ください。
API 実行時、Request Body の loadDataName には制御ファイル名(拡張子を除く)を指定してください。例えば、制御 ファイル名が sampl1.ctl の場合は、loadDataName に sampl1 と指定します。
アーカイブ・ログ・ファイルの出力を抑止する場合は direct パラメータに true を指定してください。
API 実行後、SQL_LOADER ディレクトリに loadDataName を含む名前のログファイルが生成されます。
詳細は、FUJITSU Cloud Service K5 DB powered by Oracle○R Cloud API リファレンスを参照ください。
[Oracle クライアントから実行する場合]
以下は Oracle クライアント環境からサービス・インスタンスの pdb に接続し、データをロードする場合のコマンド例です。
>sqlldr user_name/password@pdb_name CONTROL=test1.ctl DATA=test_data.dat LOG=test_data.log
sqlldr コマンドのパラメータについては、以下のマニュアルを参照ください。
Oracle Database ユーティリティ 11gリリース 2 (11.2)
「8 SQL*Loader コマンドライン・リファレンス」
https://docs.oracle.com/cd/E16338_01/server.112/b56303/ldr_params.htm#i1005543
Oracle Database ユーティリティ 12c リリース 1 (12.1)
「8 SQL*Loader コマンドライン・リファレンス」
https://docs.oracle.com/cd/E57425_01/121/SUTIL/GUID-CD662CD8-DAA7-4A30-BC84-546E4C4 0DB31.htm
Oracle Database ユーティリティ 12c リリース 2 (12.2)
「8 SQL*Loader コマンドライン・リファレンス」
https://docs.oracle.com/cd/E82638_01/sutil/oracle-sql-loader-commands.html#GUID-CD662CD8 -DAA7-4A30-BC84-546E4C40DB31
Oracle Database データベース・ユーティリティ 18c
「8 SQL*Loader コマンドライン・リファレンス」
https://docs.oracle.com/cd/E96517_01/sutil/oracle-sql-loader-commands.html#GUID-CD662CD8 -DAA7-4A30-BC84-546E4C40DB31
63
Copyright 2017-2019 FUJITSU LIMITED (5)データベースの FORCE_LOGGING モードの設定(アーカイブ・ログ・ファイルの出力を抑止していた場合のみ)
(3)と同様にデータベース・インスタンス、または CDB$ROOT に SYS ユーザーで接続後、以下の SQL を実行します。
データベースは FORCE_LOGGING モードになり、変更後の操作は、アーカイブ・ログ・ファイルに出力されるようになります。
SQL> ALTER DATABASE FORCE LOGGING;
以下の SQL を実行し、FORCE_LOGGING が YES になっているを確認します。
SQL> SELECT FORCE_LOGGING FROM V$DATABASE;
FORCE_LOGGING
--- YES
(6)実行ログの確認
API または Oracle クライアントから確認します。以下にそれぞれの方法を説明します。
[API から確認する場合]
「SQL*Loader ログ参照」の API を実行します。
詳細は、FUJITSU Cloud Service K5 DB powered by Oracle○R Cloud API リファレンスを参照ください。
注意:SQL_LOADER ディレクトリのファイルやログは削除しない限り残ります。
ftps クライアントアプリケーションから SQL_LOADER ディレクトリにアクセスし、不要なファイルを削除してください。
[Oracle クライアントから確認する場合]
(4)で log パラメータに指定した実行ログを確認してください。
64
Copyright 2017-2019 FUJITSU LIMITED