Oracle9i Oracle 実践研修 1 ユーティリティ活用 2006.10.4 1
自己紹介 コミュニケーションテクノロジーズ株式会社エージェントシステム開発部畠山基裕連絡先 :hata@comtec.co.jp [Oracle の経験 ] Oracle Applications( 現 E-business Suite) を約 4 年 販売系 2 つ 生産系 3 つ セットアップ 機能評価 Extension 設計 / テスト チューニング 運用支援 その他 システム開発 2
この講座について プロ講師ではない 独自テキスト 1 から 10 まですべて書いているわけではない 実務経験 + マニュアル + ネット情報 マニュアル ネットから情報を得て自分で解決することが重要 OTN の講座やフォーラム その他 3
ユーティリティ位置付け Oracle9i データベース管理者ラーニング パス データのロードと再編成 EXPORT/IMPORT ダイレクト パス インサート SQL*Loader ( 例 ) パーティション表 連鎖行 エクステント バッファ キャッシュ 4
アンケート 業務での Oracle データベース SQL*Plus を使っているか 担当分野 : 設計 / 実装 / 運用管理 最もよく使う 最も新しい 古いバージョン (10g/9i/8i/8/7) 最もよく使うエディション (EE SE 他 ) OEM は利用するか パーティション表は利用するか 特に現在の業務で困っていること OTN 知っているか / 登録しているか / 活用しているか 5
実習環境 インスタンス名 :smpl ユーザー / パスワード :scott/tiger :oe/oe ORACLE_HOM E Oracle ディレクトリ :system/system :c:\oracle\ora91 実習ディレクトリ :c:\oracle\jisshu 6
データを表に格納する方法 [ 本日の内容 ] エクスポート / インポート SQL*Loader ODBC+Access/ Excel なども.. ダイレクト パス インサート [ 本日の目的 ] 上記ユーティリティを実習し 慣れ 業務で活用できる 7
概要 (1) エクスポート / インポート 表 1 表 2 Oracle A 索引 1 表 1 表 2 同じOracle 内でもできる Oracle B 索引 1 オブジェクトはあってもなくてもよい エクスポート インポート データは Insert される バイナリファイル 8
概要 (2) SQL*Loader メインフレーム /Excel 等の他システム データ 表 1 Oracle 索引 1 オブジェクトはあらかじめ用意しておく 出力 Load 固定長テキストファイル / CSV ファイル 取り込み方法指定可能 APPEND/ REPLACE/ TRUNCATE 9
概要 (3) ダイレクト パス インサート 表 1 Oracle 表 2 Insert 文で直接 Insert できるが それに対して従来型とダイレクト型がある コピー先のテーブルがあってもなくてもよいがダイレクト型かどうかは無関係 10
エクスポート / インポートの特徴 表定義やデータ( オブジェクト ) をOS ファイル ( バイナリ形式 ) へ保存し ( エクスポート ) それを取り込める( インポート ) ハードウェア間や異なったバージョン のデータベース間でオブジェクトの移 動ができる コマンドラインで exp imp を実行 11
エクスポート / インポートの活用例 バックアップ / リカバリー 運用 / テスト データの移動 本社データベースから支社データベースへ データベースの移行 Oracle8 を Oracle9i へ オブジェクトの再構成 (??) 表 索引の断片化解消 8iからローカル管理表領域がサポートされており 断片化が問題になりにくくなっている 自動セグメント領域管理など また他にも方法あり 12
( 参考 ) 移行行と連鎖行 移行行 最初は 1 つのデータ ブロックに収まっていた行が更新されて行の長さが増え ブロック空き領域が満杯になった場合 行全体が新しいブロックに収まるよう 行全体のデータが別のデータ ブロックに移行される 移行行の元の行断片は 移行された行が含まれる新規のブロックをポイントするように保存され 移行された行の行 ID は変化しない 連鎖行 行が最初の挿入時に大きすぎて 1 データ ブロックに収まらない場合 その行のデータが 複数の鎖状のデータ ブロックに格納される データ型 LONG または LONGRAW の列が含まれるような長い行を処理する場合に 頻繁に発生 問題点 その行の情報を取り出すために複数のデータ ブロックのスキャンが必要になるため I/Oパフォーマンスが低下する 13
( 参考 )delete による断片化 行を delete したら? レコード 1 レコード 9 レコード 1 レコード 2 レコード 10 レコード 3 レコード 3 レコード 11 レコード 5 レコード4 レコード5 レコード12 レコード13 exp imp レコード7 レコード10 レコード 6 レコード 14 レコード 12 レコード 7 レコード 15 レコード 14 レコード 8 レコード 16 レコード 16 ブロック A ブロック B ブロック A 詳細は 実践研修 2 領域 +インデックス で 14
エクスポートのパラメータ ( 括弧内はデフォルト ) USERID BUFFER FILE LOG GRANTS INDEXES ROWS CONSTRAINTS DIRECT TABLES OWNER FULL TABLESPACES PARFILE ユーザー名 / パスワード データ バッファ サイズ 出力ファイル (EXPDAT.DMP) ログファイル 権限の EXPORT(Y) 索引の EXPORT(Y) 表データのEXPORT(Y) 同時表データに対する制約のEXPORT(Y) 使用ダイレクトパス (N) 不可指定した表名に関わるオブジェクトをエクスポート ユーザー単位でエクスポート 全てをエクスポート (N);EXP_FULL_DATABASE 権限 表領域単位でエクスポート ;9i 新機能 パラメータファイル名 15
エクスポートの実習 (1) 1. コマンドプロンプトを起動し実習ディレクトリへ移動 >cd c:\oracle\jisshu 2. 環境変数設定 >set ORACLE_SID=smpl 3. ヘルプを表示 >exp help=y 4. 補助資料を参考にいくつかの処理 ( 次頁 ) を実行 Oracle9i データベース ユーティリティ J06265-01.pdf OTN から DL 可能 ( 必要部分を配布します ) 例 )exp userid=scott/tiger tables=emp file=emp.dmp log=emp.log 16
エクスポートの実習 (2) scott/tiger で emp 表を export(userid と tables のみ指定 ) ( 続き ) ログファイル 出力ファイルを指定する ( 続き ) パラメータファイルで実行する (userid もこの中に入れられる ) oe/oe で product_descriptions と inventories を export する ( 続き ) パターン一致 ( %s ) でテーブルを export する ( 続き ) feedback=100 をつけて実行してみる ユーザー oe で oe のすべてのオブジェクトを export する ( 続き ) file_format=exp%s filesize=1m を試す ( 続き ) direct=y を試す system/system で scott の全オブジェクトを export する 17
エクスポートその他 (1) QUERY 句 select~where A='a' and B>100 なら QUERY='where A=''a'' and B^>100' オブジェクトの再構成つ compress=y 複数 Extentが1つにまとまる 読み取り一貫性 ;consist=y ソート ;query 句に order by を入れる シングルコーテーション 2 パフォーマンスチューニング buffer を設定 ( デフォルトは 4096) 配列 ( フェッチ ) 行数 行の最大バイト数 18
エクスポートその他 (2) ダイレクトパス ;direct=y 高速処理される 従来型パス エクスポート SQL の SELECT 文によって 表からデータが抽出される データはディスクからバッファ キャッシュに読み込まれ 評価バッファに転送される 式の評価が終了すると データはエクスポート クライアントへ転送され エクスポート ファイルに書き込まれる ダイレクト パス エクスポート 制限 データがディスクからバッファ キャッシュに読み込まれ 行がエクスポート クライアントに直接転送されるため 従来型に比べて非常に高速 評価バッファはバイパスする データは すでにエクスポート ユーティリティが要求する形式になっているため 不要なデータ変換をする必要がない データはエクスポート クライアントに転送され ファイルに書き込まれる BUFFER(RECORDLENGTH で代替 ) QUERY は使用不可 LOB カラム 19
エクスポートその他 (3) Disk Size の確認 - 出力に十分な容量 - SELECT SUM(BYTES) FROM USER_SEGMENTS WHERE SEGMENT_TYPE='TABLE'; ダイレクトパスのパフォーマンス (RECORDELENGTH) - DB_BLOCK_SIZE I/O ブロックサイズの倍数 - DB と出力先のディスク ドライブ 20
エクスポートその他 (4) トランスポータブル表領域 - 同一 OS の別システム間で表領域 ( データファイル ) をコピー - EXP TRANSPORT_TABLESPACE=y TABLESPACES=(sales_1,sales_2) - メタデータの exp/imp+ データファイルのコピー 21
インポートの順序 1. 型定義 2. 表定義 (create table) 3. 表データ (insert) 4. 表索引 (create index) 5. 整合性制約 ビュー プロシージャおよびトリガー 6. ビットマップ索引 ファンクション索引およびドメイン索引 22
インポートのパラメータ ( 括弧内はデフォルト ) USERID BUFFER FILE LOG SHOW IGNORE GRANTS INDEXES ROWS FULL FROMUSER TOUSER TABLES TABLESPACES ユーザー名 / パスワード データ バッファ サイズ 入力ファイル (EXPDAT.DMP) ログファイル EXPORT ファイルの内容表示 (N) 作成時エラー無視 (N); 既存表に import する場合 権限の IMPORT(Y) 索引の IMPORT(Y) 表データの IMPORT(Y) 全インポートモード (N);IMP_FULL_DATABASE 権限 所有するユーザー IMPORT 先のユーザー 表名 表領域 imp では direct なし 23
インポートに必要な権限 CREATE TABLE CREATE SEQUENCE CREATE TRIGGER など 上記の権限は RESOURCE ロールに全て含まれている SQL> select * from user_role_privs; USERNAME GRANTED_ROLE ADM DEF OS_ ------------------------------ ------------------------------ --- --- --- SCOTT CONNECT NO YES NO SCOTT RESOURCE NO YES NO 24
インポートの実習 (1) 1. コマンドプロンプトを起動し実習ディレクトリへ移動 >cd c:\oracle\jisshu 2. 環境変数設定 >set ORACLE_SID=smpl 3. ヘルプを表示 >imp help=y 4. 次のいくつかの処理を実行する 例 )imp userid=scott/tiger tables=emp 25
インポートの実習 (2) scott/tiger で emp を export scott/tiger で emp を import ignore=n で実行する ( エラー発生 ) ignore=y で実行する ( 一意制約でエラー ) sql*plus を起動し scott/tiger でログイン後 emp のレコードを削除し ignore=y で import レコード確認 テーブルを drop し ignore=n で import レコード確認 scott/tiger の emp を oe に import(userid=oe/oe constraints=y fromuser=scott touser=oe) 外部制約作成エラー (dept がないため ) が出るがレコードは import される sql*plus で確認 (oe/oe) emp を drop する constraints=n で実行 sql*plus で確認 emp を drop 26
データベース全体の断片化の解消 1. データベース全体のバックアップを取るために 全データベース エクスポート (FULL=y) を実行 2. すべてのユーザーがログオフしてから Oracle データベース サーバーを停止 3. データベースを削除 4. CREATE DATABASE 文を使用して データベースを再作成 5. データベース全体をリストアするために 全データベース インポート (FULL=y) を実行 sysユーザのトリガーはexpされないのでimp 後手動作 27 成が必要 いろいろな制約に注意!!
表の断片化の解消 1. 表をエクスポート 2. 表を削除 3. 表をインポート ただし 表の生成パラメータに問題がある場合 ( 連鎖行が多いなど ) は 問題を解消できるパラメータで表を再作成し レコードのみをロードする 28
インポートその他 エクスポートした内容すべてをインポートする場合は FULL=Y を指定 (TABLES=(A,B,C,D) としてエクスポートした場合 同じ指定でインポートしてもよいが FULL=Y ですべてが対象 ) エクスポートした内容の中から 特定の表のみインポート可 インポートするときは参照整合性違反に注意する 既存の表では手動で使用禁止にするとよい ALTER TABLE "SCOTT"."EMP" DISABLE CONSTRAINT "FK_DEPTNO" 通常 参照制約はすべての表の後にインポート 実習の例 (scott から oe へ ) では emp とともに dept もエクスポート / インポートすればよい 29
Export/Import による運用バックアップ 全体エクスポート 累積エクスポート 増分エクスポートを利用して 1 ヶ月のバックアップスケジュールを作成する 日月火水木金土 5 増分 12 増分 19 増分 26 増分 6 増分 13 増分 20 増分 27 増分 7 増分 14 増分 21 増分 28 増分 1 全体 8 増分 15 増分 22 増分 29 増分 2 増分 9 増分 16 増分 23 増分 30 増分 3 増分 10 増分 17 増分 24 増分 4 累積 11 累積 8iまでの機能 (INCTYPE) 31 増分 18 累積 25 累積 月初に全体エクスポートをする 週末に増分エクスポートをする その他の日は増分のエクスポートをする バックアップは他のツー ル (RMAN 等 ) で行う! 30
Export/Import による運用バックアップ 21 日に障害が発生した場合の回復手順 日 月 火 水 木 金 土 1 全体 2 増分 3 増分 4 累積 5 増分 6 増分 7 増分 8 増分 9 増分 10 増分 11 累積 12 増分 13 増分 14 増分 15 増分 16 増分 17 増分 18 累積 19 増分 20 増分 21 1. エクスポートファイルの情報をロードするために最新のファイルをインポートする Imp system/manager INCTYPE=SYSTEM FULL=Y FILE=DAY_19.DMP 2. 全体エクスポートファイルをインポートする 8iまでの機能 (INCTYPE) Imp system/manager INCTYPE=RESTORE FULL=Y FILE=DAY_1.DMP 3. 累積エクスポートファイルを全てインポートする Imp system/manager INCTYPE=RESTORE FULL=Y FILE=DAY_4.DMP Imp system/manager INCTYPE=RESTORE FULL=Y FILE=DAY_11.DMP Imp system/manager INCTYPE=RESTORE FULL=Y FILE=DAY_18.DMP 4. 増分エクスポートファイルを全てインポートする Imp system/manager INCTYPE=RESTORE FULL=Y FILE=DAY_19.DMP Imp system/manager INCTYPE=RESTORE FULL=Y FILE=DAY_20.DMP 31
SQL*Loader の特徴 外部で作成したデータを ORACLE のデー タベースに取り込むことができる 32
入出力ファイルの種類 入力ファイル データファイル : ロードされるデータ ( 固定長 /CSV など ) 制御ファイル : ロードされる表 入力データ フィールド仕様など パラメーター : コマンド行パラメータ 出力ファイル ログファイル : データロードした結果の詳細 廃棄ファイル : ロードの対象とならないデータ (WHEN 句の対象外のデータ ) 不良ファイル : エラーが発生してロードされなかったデータ 33
データファイルの例 (1) 固定長データ 7369SMITH CLERK 79021980/12/17 800.00 20 7499ALLEN SALESMAN 76981981/02/20 1600.00 300.0030 7521WARD SALESMAN 76981981/02/22 1250.00 500.0030 7566JONES MANAGER 78391981/04/02 2975.00 20 7654MARTIN SALESMAN 76981981/09/28 1250.00 1400.0030 7698BLAKE MANAGER 78391981/05/01 2850.00 30 7782CLARK MANAGER 78391981/06/09 2450.00 10 7788SCOTT ANALYST 75661982/12/09 3000.00 20 7839KING PRESIDENT 1981/11/17 5000.00 10 7844TURNER SALESMAN 76981981/09/08 1500.00 0.0030 7876ADAMS CLERK 77881983/01/12 1100.00 20 7900JAMES CLERK 76981981/12/03 950.00 30 7902FORD ANALYST 75661981/12/03 3000.00 20 7934MILLER CLERK 77821982/01/23 1300.00 10 34
制御ファイルの構文 固定長データの場合 LOAD DATA INFILE ' データファイル名 ' モード指定 INTO TABLE テーブル名 ( フィールド名 POSITION( データ位置 ) データ型, フィールド名 POSITION( データ位置 ) データ型, フィールド名 POSITION( データ位置 ) データ型 ) 35
制御ファイルの構文 (2) モード指定について APPEND 表にデータを追加する REPLACE 表のデータを削除 (delete) して 新規にデータを挿入する ;delete トリガーは実行される TRUNCATE 表のデータを削除 (truncate) して 新規にデータを挿入する ; 参照整合性が使用禁止になっている必要あり 36
制御ファイルの例 固定長データ用制御ファイルの例 LOAD DATA INFILE 'emp.dat' APPEND INTO TABLE emp ( empno POSITION(01:04) INTEGER EXTERNAL, ename POSITION(05:14) CHAR, job POSITION(15:23) CHAR, mgr POSITION(24:27) INTEGER EXTERNAL, hiredate POSITION(28:37) DATE "YYYY/MM/DD", sal POSITION(38:45) DECIMAL EXTERNAL, comm POSITION(46:53) DECIMAL EXTERNAL, deptno POSITION(54:55) CHAR ) 文字型の数値 = 通常のテキストファイルでは必ず指定 37
データファイルの例 (2) 可変長データ 7369,SMITH,CLERK,7902,1980/12/17,800,,20 7499,ALLEN,SALESMAN,7698,1981/02/20,1600,300,30 7521,WARD,SALESMAN,7698,1981/02/22,1250,500,30 7566,JONES,MANAGER,7839,1981/04/02,2975,,20 7654,MARTIN,SALESMAN,7698,1981/09/28,1250,1400,30 7698,BLAKE,MANAGER,7839,1981/05/01,2850,,30 7782,CLARK,MANAGER,7839,1981/06/09,2450,,10 7788,SCOTT,ANALYST,7566,1982/12/09,3000,,20 7839,KING,PRESIDENT,,1981/11/17,5000,,10 7844,TURNER,SALESMAN,7698,1981/09/08,1500,0,30 7876,ADAMS,CLERK,7788,1983/01/12,1100,,20 7900,JAMES,CLERK,7698,1981/12/03,950,,30 7902,FORD,ANALYST,7566,1981/12/03,3000,,20 7934,MILLER,CLERK,7782,1982/01/23,1300,,10 38
制御ファイルの構文 可変長データの場合 LOAD DATA INFILE ' データファイル名 ' モード指定 INTO TABLE テーブル名 FIELDS TERMINATED BY ' 区切り文字 ' OPTIONALLY ENCLOSED BY ' 囲み文字 ' TRAILING NULLCOLS ( フィールド名, フィールド名, フィールド名 指定列がない場合 NULL が入る 39
制御ファイルの例 可変長データ用制御ファイルの例 LOAD DATA INFILE 'emp.dat' APPEND INTO TABLE emp FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( empno, ename, job, mgr, hiredate DATE "YYYY/MM/DD", sal, comm, deptno ) 40
SQL*Loader のパラメータ USERID データベースに接続するユーザー名 / パスワード CONTROL 制御ファイル名 DATA データファイル名 (* 制御ファイル内に指定可 ) PARFILE パラメータファイル名 LOG ログファイル名 BAD 不良ファイル名 (*) DISCARD 廃棄ファイル名 (*) ERRORS 最大不良レコード数 DIRECT ダイレクトパスロード指定 PARALLEL パラレルダイレクトパスロード指定 41
従来型パス ロードとダイレクト パス ロードの特徴 従来型 表に対して insert 文が実行される トリガーも起動される ダイレクト Oracle データ ブロックをフォーマットし データ ブロックを直接データ ファイルに書き込むので高速 Insertトリガーは処理前に使用不可となるが処理後使用可に戻る ただし適用はされない emp 表と dept 表の deptno 制限列を同じブロックに格納 表がクラスタ化されていないこと ロードする表に未処理のアクティブ トランザクションがないこと VARRAY のロード 親表を子表とともにロード BFILE 列のロードはできない 参照整合性制約は処理前に使用不可となるので後で戻すこと 42
従来型パス ロードとダイレクト パス ロードの特徴 補足 クラスタ化された表 43
従来型パス ロードとダイレクト パス ロードの特徴 補足 VARRAY BFILE オブジェクト データ型の配列 CREATE TYPE prices AS VARRAY(10) OF NUMBER(12,2); prices 型の VARRAY で 最大 10 個までの要素を入れることができ 各要素のデータ型は NUMBER(12,2) LOB( ラージオブジェクト ) データ型 構造化されていないバイナリ データを データベースの外にあるオペレーティング システムのファイルに格納 BFILE 列または属性は データが含まれる外部ファイルを参照するファイル ロケータを格納する 44
SQL*Loader の実行 ( 従来型 ) sqlldr userid=scott/tiger control=emp.ctl log=emp.log bad=emp.bad 45
SQL*Loader の実行 ( ダイレクト ) sqlldr userid=scott/tiger control=emp.ctl log=emp.log bad=emp.bad direct=true 46
どちらを利用するか? ダイレクト パス 短時間で大量のデータをロードする必要があるとき 既に存在しているデータに比べてかなり大量なデータをロードするとき 従来型パス ロードと同時に 索引付の表へのアクセス (select も ) や 索引なし表への挿入 更新が必要なとき 巨大な索引付きの表に対する少量のロードを行うとき トリガーや参照整合性を実行させたいとき 削除による空き領域が多い表へのロードを行うとき 47
特殊な制御ファイルの例 (1) SQL 関数を利用した例 LOAD DATA INFILE 'emp.dat' APPEND INTO TABLE emp FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( empno, ename, job, mgr, hiredate DATE "YYYY/MM/DD", sal, comm "NVL(:comm,0)", deptno ) comm が Null なら 0 にする 他にも to_date to_char substr decode rtrim ltrim などが使える 48
特殊な制御ファイルの例 (2) 制御ファイルにロードするデータを記入する例 LOAD DATA INFILE * APPEND INTO TABLE dept FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( deptno, dname, loc ) BEGINDATA 10,"ACCOUNTING","NEW YORK" 20,"RESEARCH","DALLAS" 30,"SALES","CHICAGO" 40,"OPERATIONS","BOSTON" 49
特殊な制御ファイルの例 (3) 1 50 Manufacturing DEPT record 2 1119 Smith 50 EMP record 2 1120 Snyder 50 1 60 Shipping レコード ID フィールドで区別される INTO TABLE dept WHEN recid = 1 (recid FILLER POSITION(1:1) INTEGER EXTERNAL, deptno POSITION(3:4) INTEGER EXTERNAL, dname POSITION(8:21) CHAR) INTO TABLE emp WHEN recid <> 1 (recid FILLER POSITION(1:1) INTEGER EXTERNAL, empno POSITION(3:6) INTEGER EXTERNAL, ename POSITION(8:17) CHAR, deptno POSITION(19:20) INTEGER EXTERNAL) 50
特殊な制御ファイルの例 (4) 1 行に 2 レコード 1119 Smith 1120 Yvonne 1121 Albert 1130 Thomas INTO TABLE emp (empno POSITION(1:4) INTEGER EXTERNAL, ename POSITION(6:15) CHAR) INTO TABLE emp (empno POSITION(17:20) INTEGER EXTERNAL, ename POSITION(21:30) CHAR) 51
SQL*Loader のためのデータ抽出方法 emp 表データ抽出用 SQL の例 set pages 0 set lines 60 select empno ',' ename ',' job ',' mgr ',' to_char(hiredate, 'yyyy/mm/dd') ',' sal ',' comm ',' deptno from emp ; exit 52
SQL*Loader 実習 sql*plus に scott/tiger でログインし emp 表からテキストデータを作る 制御ファイルを作る emp 表のレコードを delete する SQL*Loader でロードし 内容を確認する emp 表のレコードから empno=7521 以外を削除する SQL*Loder で再びロードする ログが重要!! emp 表のレコードから empno=7521 以外を削除する into table emp when empno!= '7521' でロード 53
SQL*Loader 実習 ( 余裕があれば ) バイナリデータのロード - テーブル作成 (navis1_tbl_create.sql) - ロード (jpgload.ctl) 54
ダイレクト パス インサート 表のコピーをする際に バッファキャッシュ (SGA の一部 ) を経由せずに直接データファイルへ書き込みを行い 処理を高速化する手法 ただし 表には排他ロックがかかるため その表を他の処理で使用できない 従来の方法は 空領域を再利用するが ダイレクトの場合は再利用せず既存データの後ろに挿入する SQL*Loader のダイレクトも同じ 55
ダイレクトパスインサートの構文 構文 シリアルモードの場合 ~EnterpriseEdition でない場合は必ずシリアル insert /*+APPEND */ into 表名 select 文 ; 例 ) SQL> insert /*+append */ into new_dept select * from dept; 56
ダイレクトパスインサートの補足 EnterpriseEdition - シリアルモード / パラレルモード EnterpriseEdition でパラレルモードにする場合 パラレルモードは 1 つの SQL を複数のプロセスに分割して実行する ALTER SESSION ENABLE PARALLEL DML; パラレルモードではダイレクトパスがデフォルトになる ( 通常パスにするにはNOAPPENDを指定 ) ターゲット表にパラレル属性が指定されていることがダイレクトの条件 (APPENDをつければ可 ) 57 シリアルにするにはDISABLE PARALLEL DMLとする
ダイレクトパスインサートの実習 SQL*Plus に oe/oe でログインする create table orders_test1 as select * from orders; orders_test1 のレコードを削除 append ヒントを使ってダイレクトパスインサートにより orders の内容を orders_test1 にコピーする commit 前後に select してみる orders_test1 のレコードを削除 create table orders_test2 as select * from orders; orders_test2 のレコードを削除 セッションをパラレルモードに変更する append ヒントを使わずに orders の内容を orders_test2 にコピー orders_test2 のレコードを削除 58
GUI でのエクスポート / インポート Enterprise Manager から実行できる EM 管理者でなければ駄目 セットアップが必要 EM の Repository サービス (ManagementServer Agent) ノードの構成 紹介のみ 時間があれば ODBC も紹介 59
参考情報 OTN(Oracle Technology Network) http://otn.oracle.co.jp/ 登録すればマニュアル (pdf) がダウンロードできる Oracle 東北支社の無料セミナー http://www.oracle.co.jp/corp/tohoku/events/in dex.html 60