数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle10g新特性:利用外部表卸载数据


发布日期:2022年02月19日
 
Oracle10g新特性:利用外部表卸载数据

今天在看Oracle的CONCEPT文档时发现Oracle的外部表也可以用来卸载数据了

中开始Oracle增加了外部表的一个新的访问驱动ORACLE_DATAPUMP而再次之前只有一个默认的驱动ORACLE_LOADER

使用ORACLE_DATAPUMP驱动带来的一个优点是可以利用外部表将数据库中的数据卸载到磁盘文件中而这是及以前版本所无法做到的

下面看一个最简单的例子

SQL>CREATETABLET_EXTERNAL

(

ID

NAME

)

ORGANIZATIONEXTERNAL

(

TYPEORACLE_DATAPUMP

DEFAULTDIRECTORYD_OUTPUT

LOCATION(TESTDMP)

)

ASSELECTROWNUMRNTNAME

FROMTAB;

表已创建

在这张外部表创建的同时在D_OUTPUT所指向的操作系统目录下生成了一个TESTDMP二进制文件

显示这个二进制文件中的可显示字符

$stringsTESTDMP

IBMPC/WIN_NT

ZHSGBK

LBBEMBGHCJWDSDEBEWMFDDGJGSJHSRHJGKCLEGMBJMRAPRLPRPKRPARMSMRSJLSCETHLT

T

ZHSGBK

ALUTF

+:

YANGTK

T_EXTERNAL

ID

NAME

T_LOG<

TEST_LOB<

T_COMPRESS<

T_TEMP<

T_RECORD<

T_SESSION_STAT<

T_TEMP<

T_NO_EXISTS_BEFORE<

T_CHAR<

SYS_EXPORT_SCHEMA_<

T_EXTERNAL<

T_LOAD_SPACE<

T_LEVEL<

T_LEVEL<

CHAINED_ROWS<

T_TREE

这个二进制文件可以用于在其他数据库中创建外部表

SQL>CREATETABLET_EXTERNAL

(

IDNUMBER

NAMEVARCHAR()

)

ORGANIZATIONEXTERNAL

(

TYPEORACLE_DATAPUMP

DEFAULTDIRECTORYD_OUTPUT

LOCATION(TESTDMP)

);

表已创建

SQL>SELECT*FROMT_EXTERNAL;

IDNAME

T_LOG

TEST_LOB

T_COMPRESS

T_TEMP

T_RECORD

T_SESSION_STAT

T_TEMP

T

T_NO_EXISTS_BEFORE

T_CHAR

SYS_EXPORT_SCHEMA_

T_EXTERNAL

T_LOAD_SPACE

T_LEVEL

T_LEVEL

CHAINED_ROWS

T_TREE

已选择

唯一可惜的是Oracle只能将数据写为二进制格式因此可以考虑使用这种方法进行数据迁移或发布不过想利用这种方法来生成文本报表也是行不通的

最后提一下外部表是只读表可以利用外部表卸载数据不过必须在建表时完成一旦表建立成功外部表就变成不可修改了

SQL>INSERTINTOT_EXTERNALVALUES(A);

INSERTINTOT_EXTERNALVALUES(A)

*第 行出现错误:

ORA: 操作在外部组织表上不受支持

SQL> DROP TABLE T_EXTERNAL;

表已删除

SQL>CREATETABLET_EXTERNAL

(

IDNUMBER

NAMEVARCHAR()

)

ORGANIZATIONEXTERNAL

(

TYPEORACLE_DATAPUMP

DEFAULTDIRECTORYD_OUTPUT

LOCATION(TESTDMP)

);

表已创建

SQL>INSERTINTOT_EXTERNALVALUES(A);

INSERTINTOT_EXTERNALVALUES(A)

*第 行出现错误:

ORA: 操作在外部组织表上不受支持

上一篇:TIP 如何为表加唯一约束(保存或者删除冗余的数据)

下一篇:2012O年racle认证:oraclerowid的解析