标签:des cWeb style blog http color os io 使用
2014-08-25 BaoXinjian
一、摘要
ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件。
因此,建立外部表时不会产生段、区、数据块等存储结构,只有与表相关的定义放在数据字典中。
外部表,顾名思义,存储在数据库外面的表。
当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT、UPDATE、DELETE操作)。
不能对外部表建立索引。因为创建索引就意味着要存在对应的索引记录。而外部表其实在没有存储在数据库中。
故在外部是无法建立索引的,如果硬要建立的话,则系统会提示“操作在外部组织表上不受支持”的错误提示。
1. 外部表特征
2. 外部表限制
3. 外部表优势
如果要谈外部表的优势,一般会和SQLLDR来对比,外部表很多语法跟SQLLDR控制文件确实有很多类似的地方,下面谈谈自己的理解和"Oracel 9i&10g编程艺术"里面的一些对比
二、案例 - 创建外部表,并进行增删改查操作
案例:创建外部表,并导入测试数据,进行测试
1. 创建目录
CREATE DIRECTORY extertable as ‘/home/oracle/extertable‘;
2. 创建测试的数据文件,并测试
3. 创建外部表
CREATE TABLE exter_test_table ( ID NUMBER (5), NAME VARCHAR (12), SEX VARCHAR (8), AGE NUMBER (3), GRADE NUMBER (5) ) ORGANIZATION EXTERNAL ( TYPE oracle_loader DEFAULT DIRECTORY extertable ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ‘,‘ ) LOCATION (‘student.data‘ ) ); ALTER TABLE exter_test_table REJECT LIMIT UNLIMITED;
4. 创建表后,可直接查询出在数据文件中的资料
5. 外部表只能进行select,无法进行delete / update, 如需进行DML操作只能在数据文件本身中
6. 进行操作时,会在数据文件目录中产生log文件,记录数据导入和导出的情况
7. 查询数据库中外部表的情况 dba_external_locations / dba_external_tables
三、案例 - 删除外部表
删除外部表SQL语法跟普通表一样,但是不同之处在于有可能还要删除与之对应的目录对象。
当外部表不用时,需要及时删除外部表或者与之对应的目录对象。
不过在删除这些内容时会有一些限制。这些限制主要是管理上的限制,而不是技术上的限制。
也就是说,Oracle数据库系统没有对其进行强制的限制。
但是如果 数据库管理员不遵守这些限制的话,可能会出现一些问题。
如要先删除外部表,然后再删除目录对象。有时候一个目录对象中可能会包含多个外部表。
此时必须要确 认所有的外部表都不用了,都已经删除干净了,然后才能够删除目录对象。
在创建外部表时,操作系统会判断一下,与之对应的目录对象是否已经创建。
但是在删除 对象时,系统不会去判断跟这个目录对象关联的外部表是否已经全部删除。
如果目录对象删除了,但是还有外部表存在。
此时查询这个外部表的时候,系统就会提示 “对象不存在”的错误信息。所以这个删除目录对象时,数据库系统缺乏一种检查,此 时只有数据库管理员在删除目录对象时,先手工确认一下这个目录对象是否存在其他的外部表
********************作者: 鲍新建********************
参考:潇湘隐者大神 http://www.cnblogs.com/kerrycode/p/3894260.html
PLSQL_Oracle外部表的概念和使用(案例)(通过外部表直接查询数据文件以节数据库表空间)
标签:des cWeb style blog http color os io 使用
原文地址:http://www.cnblogs.com/eastsea/p/3935555.html