Oracle数据库允许对外部表中的数据进行只读访问。外部表定义为不驻留在数据库中的表,并且可以是为其提供访问驱动程序的任何格式。通过为数据库提供描述外部表的元数据,数据库能够公开外部表中的数据,就好像它是驻留在常规数据库表中的数据一样。可以使用SQL直接和并行查询外部数据。
例如,可以SELECT,JOIN或ORDER外部表数据。还可以为外部表创建视图和同义词。但是,在外部表上不能进行DML操作(UPDATE,INSERT或DELETE),也不能创建索引。外部表还提供了一个框架,用于将任意SELECT语句的结果卸载为可由Oracle Data Pump使用的独立于平台的Oracle专有格式。
DBMS_STATS包可用于收集外部表的统计信息。收集外部表的统计信息不支持ANALYZE语句。
为外部表定义元数据的方法是通过CREATE TABLE ... ORGANIZATION EXTERNAL语句。可以将此外部表定义视为允许对外部数据运行任何SQL查询而无需首先将外部数据加载到数据库中的视图。访问驱动程序是用于读取表中外部数据的实际机制。使用外部表卸载数据时,将根据SELECT语句中的数据类型自动创建元数据(有时称为查询的形状)。
Oracle数据库为外部表提供了两个访问驱动程序。默认访问驱动程序是ORACLE_LOADER,它允许使用Oracle加载程序技术从外部文件读取数据。 ORACLE_LOADER访问驱动程序提供数据映射功能,这些功能是SQL * Loader实用程序的控制文件语法的子集。第二个访问驱动程序ORACLE_DATAPUMP允许您卸载数据 - 即从数据库读取数据并将其插入由一个或多个外部文件表示的外部表中 - 然后将其重新加载到Oracle数据库中。
Oracle数据库外部表功能为执行数据仓库常用的基本提取,转换和加载(ETL)任务提供了有价值的方法。
以下部分讨论外部表支持的DDL语句。仅支持所讨论的DDL语句,并且不支持这些语句的所有子句。
参考资料
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables013.htm#ADMIN01507
http://blog.itpub.net/31397003/viewspace-2126621/
https://www.cnblogs.com/pekkle/p/6568733.html