SQL Developerでは、パラレル・スレッドを使用して、キャッシュ・グループまたはキャッシュ表を作成することなく、OracleデータベースからTimesTenデータベースにデータをロードできます。
注意: SQL Developerでは、ttLoadFromOracle 組込みプロシージャのファンクションを使用してOracleデータベースからTimesTenデータベースにデータをロードします。ttLoadFromOracle ユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の「ttLoadFromOracle」を参照してください。 |
この章では、OracleデータベースからTimesTen表へのデータのロードについて説明します。
内容は次のとおりです。
OracleデータベースからTimesTenデータベースにデータをロードする前に次を確認します。
Oracle TimesTen In-Memory Databaseリリース11.2.2.4 (以上)を使用していること。
TimesTen SQL developer接続に対しOracleデータベース接続情報(Oracle DatabaseパスワードおよびOracle Net Service名)を指定していること。TimesTenデータベース接続の定義の詳細は、「TimesTenデータベースの名前付きの接続の定義」を参照してください。
OracleデータベースからTimesTenデータベースにデータをロードするには、SQL Developerのメイン・ページを開き、TimesTen接続が展開されていることを確認します。
「表」オプションを右クリックして、Oracleデータベース表からのロードを選択します。
「Oracleデータベース表からのロード」ダイアログが表示されます。「Oracleデータベース表からのロード」ダイアログの左のナビゲーション・ツリーでOracleデータベース・スキーマ名を確認します。
モードを選択します。
モードを選択したら、「次>」をクリックします。
拡張モードを使用すると、TimesTenデータ型へのOracleデータベース・データ型のマッピングを選択し、圧縮分析によるデータ圧縮の推奨を取得できます。拡張モードを使用する前に、「Oracleデータベース表からデータをロード」のステップがすべて完了していることを確認してください。
注意: この項で設定したデータ型マッピングおよび圧縮設定は、Oracleデータベースからロードするすべての表に適用されます。 |
注意: 工場出荷時のデフォルトのリセット・ボタンをクリックして、すべての構成値を工場出荷時のデフォルトに設定できます。 |
「タイプ・マッピングと圧縮」タブの「タイプ・マッピング」セクションで、次のデータ型のデータ型マッピングを選択します。
NUMBER: NUMBER
データ型のデータ型マッピング。次のデータ型マッピングを選択できます。
マッピングなし: データ型NUMBER
の列は分析されず、Oracleデータベース表と同じデータ型でインポートされます。
標準マッピング: 精度がゼロのデータ型NUMBER
の列は、適切なTimesTenネイティブ整数データ型にマップされます。ネイティブ整数データ型の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』の数値データ型に関する項を参照してください。
積極的マッピング: データ型NUMBER
の列はすべて、Oracleデータベース表で使用される最大精度およびスケールを持つデータ型NUMBER
の列としてTimesTenデータベースにマップされます。
VARCHAR2: VARCHAR2
およびNVARCHAR2
データ型のデータ型マッピング。次のデータ型マッピングを選択できます。
マッピングなし: データ型VARCHAR2
およびNVARCHAR2の列は分析されず、Oracleデータベース表と同じデータ型でインポートされます。
積極的マッピング: データ型VARCHAR2
およびNVARCHAR2の列はすべて、Oracleデータベース表で使用される最大精度およびスケールを持つ列としてTimesTenデータベースにマップされます。
TIMESTAMP with TIME ZONE: TIMESTAMP WITH TIMEZONE
データ型のデータ型マッピング。次のデータ・マッピング・タイプを選択できます。
サポートされていない型として処理: データ型TIMESTAMP WITH TIMEZONE
の列は、サポートされていないデータ型として処理されます。「分析パラメータ」として不正な型の検出次第停止を選択した場合、TIMESTAMP WITH TIMEZONE
データ型列が検出されると、データ型マッピング分析が停止します。「分析パラメータ」に他のオプションを選択した場合、データ型マッピング分析が続行され、表のロード中にTIMESTAMP WITH TIMEZONE
データ型列は無視されます。
TIMESTAMPにマップ: データ型TIMESTAMP WITH TIMEZONE
の列は、TimesTenデータベースでTIMESTAMP
データ型列としてマップされます。ただし、TIMESTAMP
データ型ではタイムゾーン情報がサポートされていないため、すべてのタイムゾーン情報が失われます。
LOBデータ型: 任意のLOBデータ型のデータ型マッピング。次のデータ・マッピング・タイプを選択できます。
VAR*にマップ: OracleデータベースからTimesTenデータベース内のVARデータ型にLOBデータ型の列をマップします。
VARBINARY(4194304)
としてBLOB
VARCHAR2(4194304)
としてCLOB
NVARCHAR2(2097152)
としてNCLOB
RAWデータ型: 任意のRAWデータ型のデータ型マッピング。次のデータ・マッピング・タイプを選択できます。
サポートされていない型として処理: RAWデータ型の列は、サポートされていないデータ型として処理されます。「分析パラメータ」として不正な型の検出次第停止を選択した場合、RAWデータ型列が検出されると、データ型マッピング分析が停止します。「分析パラメータ」に他のオプションを選択した場合、データ型マッピング分析が続行され、表のロード中にRAWデータ型列は無視されます。
VAR*にマップ: OracleデータベースからTimesTenデータベース内のVARデータ型にLOBデータ型の列をマップします。
VARBINARY(
n
)
としてRAW(
n
)
。n
には4194304
の最大値を指定可能。
VARCHAR2(4194304)
としてLONG
VARCHAR2(4194304)
としてLONG RAW
インライン列サイズ制限: インライン列の最大サイズ制限。これは整数値となり、0
から32768
の間の値が有効です。
パディング・ファクタ: NUMBER
およびVARCHAR2
データ型マッピングに対して積極的マッピングが選択されている場合に分析によって決定される精度および長さの決定最大値のパーセント増加。これは整数値となり、0
から1000
の間の値が有効です。50
のパディング・ファクタは、50%の増加を示します。
「圧縮」セクションに移動します。
「圧縮」セクションで、次の圧縮パラメータを設定します。
圧縮のタイプ: 次の圧縮タイプを選択できます。
圧縮なし: ソースOracleデータベース表は圧縮用に分析されません。このオプションを選択すると、すべての圧縮パラメータが無効になります。
個別値の最大数の使用: ソースOracleデータベース表は、各列の最大ディクショナリ・ポインタ・サイズを使用して圧縮用に分析されます。
個別値の最適数の使用: ソースOracleデータベース表は、列内の個別値の実際の数に基づいて調整されるディクショナリ・ポインタ・サイズを使用して圧縮用に分析されます。
パディング・ファクタ: 分析によって決定される表の個別値の決定最大値のパーセント増加。これは整数値となり、0
から1000
の間の値が有効です。50
のパディング・ファクタは、COMPRESS
文のMAXVALUES
パラメータの50%の増加を示します。MAXVALUES
パラメータの詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』のCREATE TABLEに関する項を参照してください。
最小圧縮率: 列または表に対して圧縮で考慮される必要がある最小圧縮係数。この値は、列または表の圧縮されたサイズと圧縮されていないサイズの間のパーセンテージ比率となります。値が小さいほど、圧縮が大きくなります。これは整数値となり、1
から100
の間の値が有効です。
最小行数: 圧縮対象となる表の最小行数。これは整数値となり、0
を超える値が有効です。
「分析パラメータ」セクションに移動します。
「分析パラメータ」の値を選択します。
表の列に対してサポートされていないデータ型が検出された場合に実行するアクションを選択します。次の2つのオプションがあります。
不正な型の検出次第停止: データ型マッピング分析は、不正なデータ型が検出されると停止します。不正なデータ型が検出された場合は、分析結果にエラー・メッセージを表示できます。
不正な型を含む列をスキップ: データ型マッピング分析では、不正なデータ型を含む列をスキップしますが、分析は停止しません。
「タイプ・マッピングと圧縮」タブのすべてのパラメータを設定した後、「ロード・オプション」タブに移動します。
「ロード・オプション」タブをクリックします。
「ロード・オプション」タブが表示されます。複合データ・マッピング・セクションを見つけます。
「ロード・オプション」タブの「オプション構成のロード」セクションで、次のオプションを指定します。
注意: これらのオプションは、TimesTen 18.1以上のみでサポートされています。 |
インサータ・スレッド: TimesTen表にデータを挿入するスレッドの数。
フェッチャ・スレッド: Oracleデータベース表からデータを取り出すスレッドの数。
エラーのしきい値: 許容されるエラーの最大数のしきい値。
再開対象SCN: ロードは、このSCNからOracleデータベースを問い合せます。この値はオプションで、指定されていない場合は最新のSCNが使用されます。
重複の無視: このオプションでは、重複データは無視されます。TimesTen表に一意性制約がある場合にのみ機能します。すべての一意性制約違反が無視されます。
ダイレクト・ロード: このオプションでは、コミット・ポイント中にデータを表に直接ロードしますが、ダイレクト・ロードを使用しない場合、データは標準的なINSERT
SQL文でロードされます。ダイレクト・ロードでは、大量のデータのパフォーマンスとスケーラビリティが高くなります。
「詳細」タブで「その他のパラメータ」セクションを見つけます。
「索引作成」セクションで、索引作成ポリシーを指定します。
ポリシー: 次のいずれかの索引作成ポリシーを指定します。
ピアOracleデータベース表からすべての索引をコピーする
ピアOracleデータベース表から一意の索引のみコピーする
ピアOracleデータベース表から索引をコピーしない
索引が作成されるのは、表がエラーなしでロードされた場合のみです: このオプションは、表がエラーなしでロードされた後に索引が作成されるかどうかを決定します。
「次>」ボタンを探します。
「次>」をクリックします。
「Oracleデータベース表からのロード: 選択された表のロード」ダイアログが表示されます。このステップを進めるために、「簡易」のステップから実行できるようになりました。ステップは、拡張モードと簡易モードで同じです。
簡易モードでは、Oracleデータベース・データ型のTimesTenへのマッピングを選択せずに、Oracleデータベースからデータをロードできます。ただし、拡張モードを使用している場合は、データ型と圧縮のマッピングを指定した後に、これらの指示に従うことができます。
拡張モードを使用している場合は、「拡張」のステップがすべて完了していることを確認してください。
簡易モードを使用している場合は、「Oracleデータベース表からデータをロード」のステップがすべて完了していることを確認してください。
このダイアログでは、Oracleデータベースからデータをロードする表を選択する必要があります。デフォルトでは、ダイアログにはOracleデータベース・スキーマの表が表示されます。オプションで、他のデータベース・スキーマから表を選択できるように、次の操作を実行できます。
他のデータベース・スキーマから表を選択しない場合は、表のロード手順に直接移動できます。
別のOracleデータベース・スキーマから表を追加するには、次のステップを実行します。
Oracleデータベース・スキーマ・ナビゲーション・ツリーの上の「+」をクリックします。
「スキーマの選択」ダイアログが表示されます。接続ユーザーがアクセス可能なOracleデータベース・スキーマのみが表示されます。
「スキーマ名」ドロップダウン・リストからOracleデータベース・スキーマを選択します。
Oracleデータベース・スキーマを追加する準備ができました。
「OK」をクリックします。
Oracleデータベース・スキーマが正常に追加されました。Oracleデータベース・スキーマの表からデータをロードするには、「ロードする表の選択」を参照してください。
Oracleデータベース・スキーマを削除するには、次のステップを実行します。この手順では、Oracleデータベース・スキーマは、「Oracleからロード」データベース機能で使用可能な状態から削除されるだけです。接続ユーザーのOracleデータベース・スキーマを削除することはできません。
スキーマ・ナビゲーション・ツリーで、削除するOracleデータベース・スキーマを選択します。
Oracleデータベース・スキーマ・ナビゲーション・ツリーの上の「-」をクリックします。
Oracleデータベース・スキーマが正常に削除されました。Oracleデータベース・スキーマの表からデータをロードするには、「ロードする表の選択」を参照してください。
Oracleデータベース・スキーマ表にフィルタを適用するには、次のステップを実行します。
フィルタを適用するOracleデータベース・スキーマの名前を右クリックして、「フィルタの適用」を選択します。
「フィルタ」ダイアログが表示されます。
「表名」ドロップダウン・リストからフィルタ条件を選択します。
=: 指定されたパターンと等しい結果を返します。
<>: 指定されたパターンと等しくない結果を返します。
LIKE: 指定されたパターンと一致する結果を返します。
次の相似でない: 指定されたパターンと一致しない結果を返します。
「表名」ドロップダウン・リストの隣のテキスト・フィールドを確認します。
「表名」ドロップダウン・リストの隣のテキスト・フィールドに、フィルタ条件のパターンを指定します。フィルタにはワイルドカードを使用できます。
_
: 1文字の代替。たとえば、Sm_th
は、Sm
で始まりth
で終わる5文字の表すべてを表します。
%
: 0以上の文字数の代替。たとえば、EMP%
は、EMP
という文字で始まるすべての表を表します。
「OK」をクリックします。
Oracleデータベース・スキーマ表にフィルタが正常に適用されました。Oracleデータベース・スキーマの表からデータをロードするには、「ロードする表の選択」を参照してください。
Oracleデータベース・スキーマにカスタム問合せ結果をロードするには、次のステップを実行します。
「スキーマ」オプションを右クリックして、「カスタム問合せ結果のロード」を選択します。
「カスタム問合せ」ダイアログが表示されます。カスタムOracle問合せの情報を入力するよう求められます。最初のプロパティは「スキーマ名」です。このプロパティは編集できませんが、デフォルト値は接続ユーザーです。
「TimesTenユーザー名」テキスト・フィールドにTimesTen表の所有者を入力します。指定する表の所有者がTimesTenに存在し、この所有者の所有する表の作成または所有する既存の表に挿入を行う権限を、TimesTen接続ユーザーが持っていることを確認します。
「TimesTen表名」テキスト・フィールドにTimesTen表の名前を入力します。
「選択問合せ」テキスト・フィールドに、目的の結果セットを生成するためにOracleデータベースで実行するSQL問合せを入力します。有効なOracle Database SQL問合せの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
「パラレル・スレッド件数」テキスト・フィールドに、Oracleデータベース表をTimesTenデータベースにロードするために使用されるパラレル・スレッド数を入力します。値は、4をお薦めします。
「OK」をクリックします。
カスタムOracleデータベース問合せが正常にロードされました。カスタム問合せは、「Oracleから表をロード」ダイアログの右ペインにロードされます。Oracleデータベース・スキーマの表からデータをロードするには、「ロードする表の選択」を参照してください。
OracleデータベースからTimestenデータベースにロードする表を選択します。
Oracleデータベース・スキーマ名の隣の「+」をクリックして、Oracleデータベース表のリストを展開します。
Oracleデータベース・スキーマが展開して、使用可能なOracleデータベース表が表示されます。TimesTenデータベースにロードするOracleデータベース表を確認します。
TimesTenデータベースにロードするOracleデータベース表の名前を右クリックして、「ロード」を選択します。このステップを繰返して、同一のOracleデータベース表に複数のOracleデータベース表をロードできます。
すべてのOracleデータベース表をロードするには、Oracleデータベース・スキーマ名を右クリックして、「すべてロード」を選択します。「TimesTenユーザー名」ダイアログが表示されます。表を作成するTimesTenユーザーを入力して、「OK」をクリックします。
選択した表は右ペインに追加され、表の形式で表示されます。
Oracleデータベース表をレビューして、必要に応じてフィールドを編集します。フィールドを編集するにはダブルクリックします。各列の説明は次のとおりです。
「TimesTenユーザー名」
作成するTimesTen表の所有者。デフォルトでは、TimesTen接続ユーザーです。この列は編集できます。指定した表の所有者が存在しない場合、または、TimesTen接続ユーザーに指定した表の所有者にアクセスする権限がない場合は、エラー・メッセージが表示されます。
「TimesTen表名」
作成するTimesTen表の名前。デフォルトでは、Oracleデータベース表と同じ名前です。この列は編集できます。
Oracle Databaseで実行する問合せ
Oracleデータベースで目的の結果セットを生成するために実行されるSQL問合せ。デフォルトでは、SELECT * FROM
oracledb_tbl
問合せで、oracledb_tbl
はデータのロード元のOracleデータベース表です。この列は編集できます。有効なOracle Database SQL問合せの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
Oracle表の行数
TimesTenがOracleデータベース表からロードする行数。「Oracleデータベースで実行する問合せ」フィールドの結果セットの行カウントです。デフォルトでは、この値はカウントされません。
特定のOracleデータベース表の「行カウント」に移入するには、表の「行カウント」フィールドを右クリックして「件数」を選択します。
選択したすべてのOracleデータベース表の「行カウント」にフィールドに移入するには、いずれかの表の「行カウント」フィールドを右クリックして「すべてカウント」を選択します。確認ダイアログが表示されます。「Yes」をクリックして、前に選択したすべてのOracleデータベース表の行カウントに進みます。
表の作成のみ
このオプションを使用すると、表を作成するのみで、データはロードしないことを選択できます。
「Create Table文」
Oracleデータベースのデータをロードする表の作成に使用するSQL文。この列は編集できません。CREATE TABLE
文をレビューするには、「Create Table文」フィールドをダブルクリックします。
同名のTimesTen表がすでにTimesTenデータベースに存在する場合は、そのOracleデータベース表のデータが既存のTimesTen表に追加されます。Oracleデータベース表の表制約は、TimesTenにロードされません。同名で表構造の異なるTimesTen表がすでにTimesTenデータベースに存在する場合は、エラー・ダイアログが表示されます。
配布スキーム
この列は、TimesTen Scaleoutデータベースを使用している場合にのみ表示されます。
この表の分散スキームを選択するには、この列の「表示/編集」ボタンをクリックします。
「配布方法」ドロップダウン・リストから、表の分散方法を選択します。
ハッシュによる配布: 主キーのハッシュまたはユーザー指定の一連の列に基づいてデータを分散する分散スキーム。詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のハッシュに関する項を参照してください。
「ハッシュによる配布」を選択した場合は、分散列に含める列を選択します。
分散列に含める列を選択するには、「使用可能な列」リストで列名をダブルクリックします。
分散列から列を削除するには、「選択済の列」リストで列名をダブルクリックします。
参照による配布: 外部キー制約の対応する親行の位置に基づいて、子表のデータを分散する分散スキーム。この分散スキームを使用するには、表に少なくとも1つの外部キーが必要です。詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の参照に関する項を参照してください。
「参照による配布」を選択した場合は、「外部キー」ドロップダウン・リストから、表のデータを分散するための外部キーを選択します。
複製: 表のデータの完全に同一のコピーをデータベースのすべての要素に分散する分散スキーム。詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の複製に関する項を参照してください。
「複製」を選択した場合、「表の作成」ダイアログの「配布」タブで追加フィールドを指定する必要はありません。
すべてのフィールドを編集したら、ダイアログの下部にある「次>」ボタンを見つけます。
「次>」をクリックします。
「Oracleデータベース表からのロード」進捗ダイアログが表示されます。表のロードが終了すると、進捗ダイアログが閉じ、「ロード・サマリー」結果が表示されます。エラーがある場合は、エラーをトラブルシューティングします。「終了」ボタンを探します。
「終了」をクリックします。
ロード操作にエラーがある場合は、ロード・プロファイルを保存するかどうかを尋ねられます。このロード・プロファイルは、発生したエラーを修正した後、ロード操作を再開するためのものです。ロード操作を再開する方法の詳細は、「Oracleデータベース表からのデータのロードの再開」を参照してください。
「ロード・サマリー」ダイアログが閉じます。
データが、OracleデータベースからTimesTenデータベースに正常にロードされました。
Oracleデータベース表から既存のTimesTen表にデータをロードするには、次のステップを実行してください。SQL Developerのメイン・ページを開き、TimesTen接続が展開されていることを確認します。
「表」の隣の「+」をクリックして、TimesTen表のリストを展開します。
TimesTen表のリストが展開します。
表の名前を右クリックして「表」オプションを選択し、「Oracleデータベース表からのロード」オプションを選択します。
「Oracleデータベース表からのロード」ダイアログが表示されます。「スキーマ名」、「TimesTenユーザー名」および「TimesTen表名」のフィールドは自動で入力され、編集できません。次に、SQL問合せおよびパラレル・スレッド件数を入力します。
「選択問合せ」フィールドに、Oracleデータベースで実行するSQL問合せを入力します。SQL問合せの結果は、TimesTen表にロードされます。有効なOracle Database SQL問合せの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
「ロード・オプション」セクションで、次のオプションを指定します。
注意: これらのオプションは、TimesTen 18.1以上のみでサポートされています。 |
インサータ・スレッド: TimesTen表にデータを挿入するスレッドの数。
フェッチャ・スレッド: Oracleデータベース表からデータを取り出すスレッドの数。
エラーのしきい値: 許容されるエラーの最大数のしきい値。
再開対象SCN: ロードは、このSCNからOracleデータベースを問い合せます。この値はオプションで、指定されていない場合は最新のSCNが使用されます。
重複の無視: このオプションでは、重複データは無視されます。TimesTen表に一意性制約がある場合にのみ機能します。すべての一意性制約違反が無視されます。
ダイレクト・ロード: このオプションでは、コミット・ポイント中にデータを表に直接ロードしますが、ダイレクト・ロードを使用しない場合、データは標準的なINSERT
SQL文でロードされます。ダイレクト・ロードでは、大量のデータのパフォーマンスとスケーラビリティが高くなります。
「ロード」ボタンを探します。
「ロード」をクリックします。
進捗ダイアログが表示されます。Oracleデータベース表からTimesTenにデータがロードされると、進捗ダイアログが閉じます。エラーがある場合は、エラーをトラブルシューティングします。小さなOracleデータベース表で問合せを実行すると、進捗ダイアログはほぼ瞬時に閉じます。
Oracleデータベース表からデータをロードする場合、複数のエラーが発生して一部のデータがOracleデータベース表からロードされないことがあります。ロード操作が失敗した後にロード・プロファイルを保存した場合は、ロード・プロファイルを使用してロード操作を再開できます。
Oracleデータベース表からのデータのロードを再開するには、ロード・プロファイルを保存し、SQL Developerのメイン・ページを開き、TimesTen接続が展開されていることを確認します。
「表」オプションを右クリックして、「Oracleデータベース表からのロードの再開」オプションを選択します。
「Oracleデータベース表からのロードの再開」ダイアログが表示されます。「参照」ボタンを探します。
「参照」をクリックします。
「開く」ダイアログが表示されます。ロード・プロファイル・ファイルを探します。
ロード・プロファイル・ファイルを見つけたら、「開く」をクリックします。
「開く」ダイアログが閉じます。
注意: ロード・プロファイルの保存に使用されたものとは異なるデータベース接続を使用している場合、SQL Developerによって警告メッセージが表示されます。 |
「ロードの再開」および「ロード・オプション」タブで、ロードされた情報を確認します。
「ロードの再開」タブには、Oracleデータベース表からTimesTen表にロードできる表に関する情報が表示されます。
「ロード・オプション」タブには、TimesTen表にOracleデータベース表をロードするために使用するロード・オプションに関する情報が表示されます。これらのオプションは編集できません。
ロード情報を確認したら、「ロードの再開」をクリックします。
進捗ダイアログが表示されます。すべての表がロードされると、進捗ダイアログが閉じます。SQL Developerでエラー・メッセージが表示された場合は、エラーをトラブルシューティングします。
「閉じる」ボタンを探します。
「閉じる」をクリックします。
「Oracleデータベース表からのロードの再開」ダイアログが閉じます。
Oracleデータベース表からのデータのロードを正常に再開しました。