首先了解什么是外部表与其它表的区别建立一个简单的外部表(主要看操作过程)最后我们用外部表查看Oracle报警日志
一了解oracle外部表
外部表定义结构被存放在数据字典而表数据被放在OS文件中的表
作用在数据库中查询OS文件的数据还可以将OS文件数据装载到数据库中
与其它表的区别在外部表上不能执行DML操作也不能在外部表上建索引只能执行select操用
二建一个简单的外部表
建一个OS上的文件
因为外部表主要是查看OS上的文件首先在OS上建一个文件
mkdirp/oracle/ext
vi/oracle/ext/extdat
授予用户权限并建立目录对象
在此我们先建一个新用户
createusertestidentifiedbydefaulttablespacetestquotaunlimitedontest;
用户授权
SQL>grantcreateanydirectorytotest;
建立目录对象
SQL>conntest/
Connected
SQL>createdirectoryextas/oracle/ext;
Directorycreated
建立外部表
SQL>createtableexttable(
idnumbernamevarchar()inumber
)organizationexternal
(typeoracle_loader
defaultdirectoryext
Accessparameters
(recordsdelimitedbynewline
fieldsterminatedby
)location(extdat)
);
测试
SQL>select*fromexttable;
IDNAMEI
测试成功可见在数据库中可以查询OS文件的数据
二 使用外部表查看oracle报警日志
由于在上面实验中已建立了一个用户并赋相应的权限而且也有了OS文件(即报警文件alert_SIDlog)所以在此直接建立目录对象并建立外部表就可以了
建立目录对象
SQL>conntest/
Connected
SQL>createdirectorybdumpas/oracle/u/app/oracle/admin/DB/bdump;
Directorycreated
建立外部表
SQL>createtablealert_log(
textvarchar()
)organizationexternal
(typeoracle_loader
defaultdirectorybdump
accessparameters
(recordsdelimitedbynewline
)location(alert_dblog)
);
测试
首先查看能否查到alert_dblog的内容
SQL>select*fromalert_logwhererownum<;
TEXT
ThuJun::
StartingORACLEinstance(normal)
Cannotdeterminealldependentdynamiclibrariesfor/proc/self/exe
Unabletofinddynamiclibrarylibocrsoinsearchpaths
RPATH=/ade/aime_build/oracle/has/lib/:/ade/aime_build/oracle/lib/:/a
de/aime_build/oracle/has/lib/:
LD_LIBRARY_PATHisnotset!
Thedefaultlibrarydirectoriesare/liband/usr/lib
Unabletofinddynamiclibrarylibocrbsoinsearchpaths
Unabletofinddynamiclibrarylibocrutlsoinsearchpaths
rowsselected
测试成功
然后我们测试查报警信息ORA%
SQL>select*fromalert_logwheretextlikeORA%;
TEXT
ORA:controlfile:/oracle/u/app/oracle/product//db/dbs/cntrldb
dbf
ORA:unabletoobtainfilestatus
ORAsignalledduring:ALTERDATABASEMOUNT
ORA:errorinaddinglogfile/home/oracle/oracle/oradata/testdb/redol
ogfilecannotbecreated
ORA:filecreateerror
ORAsignalledduring:CREATEDATABASEdb
ORA:controlfilecouldnotbecreated
TEXT
ORA:controlfile:/oracle/u/app/oracle/product//db/dbs/cntrldb
dbf
ORA:createdfilealreadyexists
ORAsignalledduring:CREATEDATABASEdb
ORA:controlfilecouldnotbecreated
ORA:controlfile:/oracle/u/app/oracle/product//db/dbs/cntrldb
dbf
ORA:createdfilealreadyexists
ORAsignalledduring:CREATEDATABASEdb
测试成功
可见我们可以使用外部表来方便的查看ORACLE的报警信息