当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle认证考试辅导:Oracle 10g新特性:利用外部表卸载数据
发布时间:2010/3/24 20:05:53 来源:城市学习网 编辑:admin

  Oracle 10g新特性:利用外部表卸载数据
  今天在看Oracle的CONCEPT文档时发现,Oracle的外部表也可以用来卸载数据了。
  从10.2中开始,Oracle增加了外部表的一个新的访问驱动:ORACLE_DATAPUMP。而再次之前,只有一个默认的驱动ORACLE_LOADER。
  使用ORACLE_DATAPUMP驱动,带来的一个优点是,可以利用外部表将数据库中的数据卸载到磁盘文件中,而这是10.1及以前版本所无法做到的。
  下面看一个最简单的例子:
  SQLCREATETABLET_EXTERNAL 2( 3ID, 4NAME 5) 6ORGANIZATIONEXTERNAL 7( 8TYPEORACLE_DATAPUMP 9DEFAULTDIRECTORYD_OUTPUT 10LOCATION(‘TEST.DMP‘) 11) 12ASSELECTROWNUMRN,TNAME 13FROMTAB;
  表已创建。 在这张外部表创建的同时,在D_OUTPUT所指向的操作系统目录下,生成了一个TEST.DMP二进制文件。 显示这个二进制文件中的可显示字符:
  $stringsTEST.DMP IBMPC/WIN_NT-8.1.0 ZHS16GBK LBBEMBGHCJWDSDEBEWMFDDGJGSJHSRHJGKCLEGMBJMRAPRLPRPKRPARMSMRSJLSCETHLT 10.02.00.01.00 T 1 0 3 0 ZHS16GBK AL16UTF16 +00:00 YANGTK T_EXTERNAL 1 0 ID 2 22 0 -127 0 0 0 2 0 NAME 1 30 0 0 852 1 30 T_LOG< TEST_LOB< T_COMPRESS< T_TEMP2< T_RECORD< T_SESSION_STAT< T_TEMP< T_NO_EXISTS_BEFORE< T_CHAR< SYS_EXPORT_SCHEMA_01< T_EXTERNAL< T_LOAD_SPACE< T_LEVEL< T_LEVEL1< CHAINED_ROWS< T_TREE
  这个二进制文件可以用于在其他数据库中创建外部表:
  SQLCREATETABLET_EXTERNAL 2( 3IDNUMBER, 4NAMEVARCHAR2(30) 5) 6ORGANIZATIONEXTERNAL 7( 8TYPEORACLE_DATAPUMP 9DEFAULTDIRECTORYD_OUTPUT 10LOCATION(‘TEST.DMP‘) 11);
  表已创建。
  SQLSELECT*FROMT_EXTERNAL; IDNAME ---------------------------------------- 1T_LOG 2TEST_LOB 3T_COMPRESS 4T_TEMP2 5T_RECORD 6T_SESSION_STAT 7T_TEMP 8T 9T_NO_EXISTS_BEFORE 10T_CHAR 11SYS_EXPORT_SCHEMA_01 12T_EXTERNAL 13T_LOAD_SPACE 14T_LEVEL 15T_LEVEL1 16CHAINED_ROWS 17T_TREE
  已选择17行。
  唯一可惜的是Oracle只能将数据写为二进制格式,因此可以考虑使用这种方法进行数据迁移或发布。不过想利用这种方法来生成文本报表也是行不通的。
  最后提一下,外部表是只读表,可以利用外部表卸载数据,不过必须在建表时完成,一旦表建立成功,外部表就变成不可修改了。
  SQLINSERTINTOT_EXTERNALVALUES(100,‘A‘); INSERTINTOT_EXTERNALVALUES(100,‘A‘)
  *第 1 行出现错误:
  ORA-30657: 操作在外部组织表上不受支持
  SQL DROP TABLE T_EXTERNAL;
  表已删除。
  SQLCREATETABLET_EXTERNAL 2( 3IDNUMBER, 4NAMEVARCHAR2(30) 5) 6ORGANIZATIONEXTERNAL 7( 8TYPEORACLE_DATAPUMP 9DEFAULTDIRECTORYD_OUTPUT 10LOCATION(‘TEST1.DMP‘) 11);
  表已创建。
  SQLINSERTINTOT_EXTERNALVALUES(1,‘A‘); INSERTINTOT_EXTERNALVALUES(1,‘A‘)
  *第 1 行出现错误:
  ORA-30657: 操作在外部组织表上不受支持

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved