十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在“oracle安装路径\product\oracle版本\admin\实例名称\bdump”路径下。
在黄石等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站建设、成都网站制作 网站设计制作按需开发网站,公司网站建设,企业网站建设,品牌网站制作,成都全网营销推广,成都外贸网站建设,黄石网站建设费用合理。
备注:根据文件修改的时间,找到启动日志“.trc”文件,即可看到错误信息。
首先了解什么是外部表,与其它表的区别,建立一个简单的外部表(主要看操作过程),最后我们用外部表查看ORACLE报警日志
1.了解oracle外部表
外部表定义:结构被存放在数据字典,而表数据被放在OS文件中的表
作用:在数据库中查询OS文件的数据,还可以将OS文件数据装载到数据库中
与其它表的区别:在外部表上不能执行DML操作,也不能在外部表上建索引,只能执行select操用
2.建一个简单的外部表1.建一个OS上的文件
因为外部表主要是查看OS上的文件,首先在OS上建一个文件
mkdir -p /oracle/ext
vi /oracle/ext/ext.dat
10,20,30
40,50,60
70,80,90
2.授予用户权限,并建立目录对象
在此我们先建一个新用户
create user test identified by “123” default tablespace test quota unlimited on test;
用户授权
SQL grant create any directory to test;
建立目录对象
SQL conn test / 123
Connected.
SQL create directory ext as '/oracle/ext';
Directory created.
3.建立外部表
SQL create table exttable(
id number,name varchar2(10),i number
)organization external
(type oracle_loader
default directory ext
access parameters
(records delimited by newline
fields terminated by ','
)location('ext.dat')
);
4.测试
SQL select * from exttable;
ID NAMEI
---------- ---------- ----------
10 20 30
40 50 60
70 80 90
测试成功,可见在数据库中可以查询OS文件的数据
2. 使用外部表查看oracle报警日志
由于在上面实验中已建立了一个用户,并赋相应的权限,而且也有了OS文件(即报警文件alert_SID.log),所以在此直接建立目录对象并建立外部表就可以了。
1.建立目录对象
SQL conn test / 123
Connected.
SQL create directory bdump as '/oracle/u01/app/oracle/admin/db2/bdump';
Directory created.
2.建立外部表
SQL create table alert_log(
text varchar2(400)
)organization external
(type oracle_loader
default directory bdump
access parameters
(records delimited by newline
)location('alert_db2.log')
);
3.测试
首先查看能否查到alert_db2.log的内容
SQL select * from alert_log where rownum 10;
TEXT
--------------------------------------------------------------------------------
Thu Jun 11 00:51:46 2009
Starting ORACLE instance (normal)
Cannot determine all dependent dynamic libraries for /proc/self/exe
Unable to find dynamic library libocr10.so in search paths
RPATH = /ade/aime1_build2101/oracle/has/lib/:/ade/aime1_build2101/oracle/lib/:/a
de/aime1_build2101/oracle/has/lib/:
LD_LIBRARY_PATH is not set!
The default library directories are /lib and /usr/lib
Unable to find dynamic library libocrb10.so in search paths
Unable to find dynamic library libocrutl10.so in search paths
9 rows selected.
测试成功
然后我们测试查报警信息’ORA-%’
SQL select * from alert_log where text like 'ORA-%';
TEXT
--------------------------------------------------------------------------------
ORA-00202: control file: '/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2
.dbf'
ORA-27037: unable to obtain file status
ORA-205 signalled during: ALTER DATABASE MOUNT…
ORA-00301: error in adding log file '/home/oracle/oracle/oradata/testdb/redo01.l
og' - file cannot be created
ORA-27040: file create error
ORA-1501 signalled during: CREATE DATABASE db2
ORA-00200: control file could not be created
TEXT
--------------------------------------------------------------------------------
ORA-00202: control file: '/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2
.dbf'
ORA-27038: created file already exists
ORA-1501 signalled during: CREATE DATABASE db2
ORA-00200: control file could not be created
ORA-00202: control file: '/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2
.dbf'
ORA-27038: created file already exists
ORA-1501 signalled during: CREATE DATABASE db2
测试成功,
可见我们可以使用外部表来方便的查看ORACLE的报警信息
1、直接运行sqlplus,然后要求输入用户名和密码。如果你是管理员的身份,应该在用户名后加as
sysdba(以下例子使用sysdba身份).
2、运行如下语句直接进入:Sqlplus用户名/密码 as
sysdba
3、运行sqlplus
/nolog,此语句只是进入了sqlplus编辑器,而没有连接到数据库。所以还需要使用connect 语句来连接到数据库。
再看看别人怎么说的。
在oracle的安装目录下,找NETWORK\ADMIN目录,比如C:\app\xxxx\product\11.2.0\dbhome_1\NETWORK\ADMIN
在这个目录下找tnsnames.ora,用一般的文本编辑程序都可以打开
或者直接在电脑中用搜索功能,搜索文件tnsnames.ora
可用第三方工具检查错误。
如以下存储过程:
其中第六行故意少写了一个分号。
然后执行后,会提示完成,这时可以去左边的树中找到这个存储过程,显示是有个红叉的。
这时,可以右键,选择编辑。
然后打开页面的最下方会显示如下信息。
此时鼠标双击信息的那一行,会在上方存储过程中以特殊颜色显示,这就说明,有特殊颜色的位置有错误,可以根据ORA-00933的错误号查询错误原因,并加以修改。
现在,如果可以后边的逗号补上,点执行,然后,下边会显示成功编译且左边的树红叉消除。