一、摘要
ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件。
因此,建立外部表时不会产生段、区、数据块等存储结构,只有与表相关的定义放在数据字典中。
外部表,顾名思义,存储在数据库外面的表。
当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT、UPDATE、DELETE操作)。
不能对外部表建立索引。因为创建索引就意味着要存在对应的索引记录。而外部表其实在没有存储在数据库中。
故在外部是无法建立索引的,如果硬要建立的话,则系统会提示“操作在外部组织表上不受支持”的错误提示。
1. 外部表特征
- 位于文件系统之中(一定要在数据库服务器中,而不是其它网络路径),按一定格式分割, 例如@#$等,文本文件或者其他类型的文件可以作为外部表。
- 对外部表的访问可以通过SQL语句来完成,而不需要先将外部表中的数据装载进数据库中。
- 外部数据表都是只读的,因此在外部表不能够执行DML操作,也不能创建索引。
- ANALYZE语句不支持采集外部表的统计数据,应该使用DMBS_STATS包来采集外部表的统计数据。
- 可以查询操作和连接。也可以并行操作。
- 数据在数据库的外部组织,是操作系统文件。
- 操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。
2. 外部表限制
- 只能对表进行SELECT,不能进行DELETE、UPDATE、INSERT这些DML操作。
- 因为外部表需要在ORACLE数据库“服务端”创建目录,OS文件必须放在这些目录中。即这些文件只能放在数据库服务端。如果数据文件不位于服务器,则无法使用外部表。
- 外部表上不能创建索引。但可以建立视图。
- 外部表不支持LOB对象。如果要使用LOB类型,则不能使用外部表。