运行外部表报ORA-06512(权限问题)与实例
2011-12-06 17:42
357 查看
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04063: unable to open log file EXTAIKI_4981.log
OS error Permission denied
ORA-06512: at "SYS.ORACLE_LOADER", line 19
将目录的权限o+x(具有执行权限)
再次运行,ok!
---------------------------------------------------------//注意实例中去掉空行以及在create语句中的空格要去掉,否则报错;
外部表定义:结构被存放在数据字典,而表数据被放在OS文件中的表
作用:在数据库中查询OS文件的数据,还可以将OS文件数据装载到数据库中
与其它表的区别:在外部表上不能执行DML操作,也不能在外部表上建索引,只能执行select操用
二.建一个简单的外部表
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')
);
SQL> select * from exttable;
ID NAME I
---------- ---------- ----------
10 20 30
40 50 60
70 80 90
测试成功,可见在数据库中可以查询OS文件的数据
二. 使用外部表查看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;
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04063: unable to open log file EXTAIKI_4981.log
OS error Permission denied
ORA-06512: at "SYS.ORACLE_LOADER", line 19
将目录的权限o+x(具有执行权限)
再次运行,ok!
---------------------------------------------------------//注意实例中去掉空行以及在create语句中的空格要去掉,否则报错;
外部表定义:结构被存放在数据字典,而表数据被放在OS文件中的表
作用:在数据库中查询OS文件的数据,还可以将OS文件数据装载到数据库中
与其它表的区别:在外部表上不能执行DML操作,也不能在外部表上建索引,只能执行select操用
二.建一个简单的外部表
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')
);
SQL> select * from exttable;
ID NAME I
---------- ---------- ----------
10 20 30
40 50 60
70 80 90
测试成功,可见在数据库中可以查询OS文件的数据
二. 使用外部表查看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;
相关文章推荐
- 单实例使用ASM存储,DBCA建库时报权限问题ORA-01031
- 一次ORA-06512权限不足的问题
- Linux下Oracle-运行sqlplus问题(ORA-01031、ORA-12162、SP2-0667、SP2-0750、ORA-01034)及启动监听、实例和测试检索SELECT语句
- 解决:无法终止无法挂起BizTalk正在运行的服务实例的问题
- Oracle插入数据时出现ORA-01950:对象空间‘XXX’无权限问题
- elasticsearch运行后外部访问不到问题
- wpf C# wcf运行访问权限问题
- 最简单的0-1背包问题c++代码实例及运行结果
- 解决mysql的问题安装卸载以及配置外部访问权限的各种问题总结
- Android 6.0 运行权限的问题
- 彻底禁用UAC,解决“Windows 8/10 Administrator须以管理员身份运行才有权限”的问题
- Win7 运行PHPnow 权限问题
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- 解决android6.0以上不能读取外部存储权限的问题
- asp.net项目运行的权限问题
- 如何解决在运行 SQL Server 的服务器之间移动数据库时的权限问题
- 最大子数组问题-c++代码实现及运行实例结果
- windows eclipse运行mapreduce遇到权限问题该如何解决
- 搭建TensorFlow中碰到的一些问题(TensorBoard不是内部或外部指令也不是可运行的程序)~
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果