--6、过滤特定表上的特定行 --现在表tb_emp上HIREDATE为日期型,需要按日期进行过滤 scott@CNMMBO> desc tb_emp Name Null? Type ----------------------------------------- -------- ---------------------------- EMPNO NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE VARCHAR2(10) SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) scott@CNMMBO> select empno,ename,hiredate from tb_emp; EMPNO ENAME HIREDATE ---------- ---------- ---------- 9999 Ro.Ch 7369 SMITH 19801217 7499 ALLEN 19810220 7521 WARD 19810222 7566 JONES 19810402 7654 MARTIN 19810928 7698 BLAKE 19810501 7782 CLARK 19810609 7788 SCOTT 19870419 7839 KING 19811117 7844 TURNER 19810908 7876 ADAMS 19870523 7900 JAMES 19811203 7902 FORD 19811203 7934 MILLER 19820123 15 rows selected. scott@CNMMBO> select count(*) from tb_emp where hiredate>='19810311'; COUNT(*) ---------- 11 DECLARE l_dp_handle NUMBER; BEGIN l_dp_handle := DBMS_DATAPUMP.open (operation => 'EXPORT', job_mode => 'TABLE'); dbms_datapump. add_file (handle => l_dp_handle , filename => 'scott_tb_emp.dmp' , directory => 'DB_DUMP_DIR' , filetype => DBMS_DATAPUMP.KU$file_type_dump_file); dbms_datapump. add_file (handle => l_dp_handle , filename => 'scott_tb_emp.log' , directory => 'DB_DUMP_DIR' , filetype => DBMS_DATAPUMP.KU$file_type_log_file); DBMS_DATAPUMP.metadata_filter (handle => l_dp_handle , name => 'NAME_EXPR' , VALUE => ' =''TB_EMP'' ' , object_type => 'TABLE'); DBMS_DATAPUMP.data_filter( handle => l_dp_handle , name => 'SUBQUERY' , VALUE => 'WHERE HIREDATE >=''19810311''' , table_name => 'TB_EMP' ); DBMS_DATAPUMP.start_job (l_dp_handle); DBMS_DATAPUMP.detach (l_dp_handle); END; / /* oracle@SZDB:/u02/database/CNMMBO/BNR/dump> more scott_tb_emp.log Starting "SCOTT"."SYS_EXPORT_TABLE_01": Estimate in progress using BLOCKS method... Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 64 KB Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS . . exported "SCOTT"."TB_EMP" 7.695 KB 11 rows Master table "SCOTT"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SCOTT.SYS_EXPORT_TABLE_01 is: /u02/database/CNMMBO/BNR/dump/scott_tb_emp.dmp Job "SCOTT"."SYS_EXPORT_TABLE_01" successfully completed at 17:33:23 */ --7、批量过滤特定表上的特定行 --将下面的代码包含在PL/SQL块中,使用游标循环来传递需要过滤的表的名字从而生成多个过滤条件 --下面的PL/SQL块中所有包含ARC字符的表上的特定日期v_split_date的记录才能被导出 FOR tab_cur IN (SELECT table_name, num_rows FROM dba_tables WHERE table_name LIKE '%ARC%' AND owner='GOEX_ADMIN') LOOP dbms_datapump. data_filter ( handle => hand, name => 'SUBQUERY', VALUE => 'WHERE BUSINESS_DATE >= ''' || v_split_date || '''', table_name => '' || tab_cur.table_name || ''); END LOOP; --8、错误处理 --如果定义了job_name则经常会碰到下列错误,如果未指定job_name则有系统自动生成job_name,并由系统自动管理job_name DECLARE * ERROR at line 1: ORA-31634: job already exists ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79 ORA-06512: at "SYS.DBMS_DATAPUMP", line 911 ORA-06512: at "SYS.DBMS_DATAPUMP", line 4354 ORA-06512: at line 7 scott@CNMMBO> ho oerr ora 31634 /* 31634, 00000, "job already exists" // *Cause: Job creation or restart failed because a job having the selected // name is currently executing. This also generally indicates that // a Master Table with that job name exists in the user schema. Refer // to any following error messages for clarification. // *Action: Select a different job name, or stop the currently executing job // and re-try the operation (may require a DROP on the Master Table). */ scott@CNMMBO> select table_name from user_tables where table_name like 'JOB%'; TABLE_NAME ------------------------------ JOB_EXP scott@CNMMBO> drop table job_exp; drop table job_exp * ERROR at line 1: ORA-00054: resource busy and acquire with NOWAIT specified scott@CNMMBO> SELECT DISTINCT object_name 2 || ' ' 3 || locked_mode 4 || ' ' 5 || ctime 6 || ' ' 7 || c.SID 8 || ' ' 9 || serial# 10 FROM v$locked_object a, dba_objects b, v$lock c, v$session d 11 WHERE a.object_id = b.object_id 12 AND c.SID = a.session_id 13 AND c.SID = d.SID; OBJECT_NAME||''||LOCKED_MODE||''||CTIME||''||C.SID||''||SERIAL# ----------------------------------------------------------------------- JOB_EXP 3 552 1075 799 scott@CNMMBO> alter system kill session '1075,799'; System altered. scott@CNMMBO> drop table job_exp purge; -->删除表之后再次进行导出 Table dropped. 9、使用视图监控datapump状态 scott@CNMMBO> col owner_name format a15 scott@CNMMBO> col operation format a15 scott@CNMMBO> col state format a20 scott@CNMMBO> select owner_name,job_name,operation,job_mode,state,degree from dba_datapump_jobs; OWNER_NAME JOB_NAME OPERATION JOB_MODE STATE DEGREE --------------- --------------- --------------- ---------- -------------------- ---------- SCOTT JOB_EXP1 EXPORT SCHEMA EXECUTING 1 10、使用下面的过程设定并行度 DBMS_DATAPUMP.set_parallel (hand, 1); 11、上述操作所在的演示环境 scott@CNMMBO> select * from v$version where rownum<2; BANNER ---------------------------------------------------------------- Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
本页地址 http://www.jybase.net/wangzhanbiancheng/20120118754.html
【百度搜索更多】
【谷歌搜索更多】
当今社会,互联网已经逐渐融入现代化生活的各 个角落,对于当代...
摘要:通过实例对表单验证程序进行详细讲解,实例中基本包括...
HTML 和CSS 时出现频度较高的160 个单词 A absolute 绝对的 active 活动...