网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  用sys执行全文索引的建立时出现权限不足     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:78次  录入:管理员--2008-03-17  
 

【赛迪网-it技术报道】在oracle中,sys用户是整个数据库的所有者,sys拥有数据库中几乎所有的权限。今天我们就来介绍一下使用sys执行全文索引的建立时,出现了权限不足的错误。

许多人刚刚接触oracle时,对于权限并不是很了解,如果有时候报错ora-1031缺少足够的权限,且找不到所需要的授权的权限时,就会尝试使用sys来执行这个错误。由于sys时整个数据库的所有者,因此不会出现缺少权限的问题。

下面我们来介绍一个错误案例:在测试一个全文索引例子的时候,由于忘记切换用户,使用了sys用户执行,结果出现ora-1031错误,数据库测试版本为9204:

sql> show user

user 为"sys"

sql> create table t (id number, name varchar2(60));

表已创建。

sql> insert into t values (1, 'a simple test for sys create context index');

已创建 1 行。

sql> create index ind_t_name on t(name) indextype is ctxsys.context;

create index ind_t_name on t(name) indextype is ctxsys.context

*

error 位于第 1 行:

ora-29855: 执行 odciindexcreate 例行程序时出错

ora-20000: oracle text 错误:

drg-50857: oracle error in drixtab.create_index_tables

ora-01031: 权限不足

ora-06512: 在"ctxsys.drue", line 157

ora-06512: 在"ctxsys.textindexmethods", line 204

注意:这个例子在普通用户下并不会报错:

sql> conn yangtk/yangtk@test1已连接。

sql> create table t (id number, name varchar2(60));

表已创建。

sql> insert into t values (1, 'a simple test for sys create context index');

已创建 1 行。

sql> create index ind_t_name on t(name) indextype is ctxsys.context;

索引已创建。

通过events 10046进行跟踪,发现在创建dr$ind_t_name$k表的时候报错,而这个表是一个索引组织表。

根据这些信息查询了metalink,发现bug no. 1366361对这个问题进行了比较清晰的阐述。缺少权限的不是sys用户,而是ctxsys所建立的存储过程没有权限。不过此处并没有解释清楚为什么普通表没有问题,而建立一个索引组织表报错。

下面给出了对应的解决方法,将数据库的o7_dictionary_accessibility设置为true,重起后,就不会报错了。

sql> conn /@test1 as sysdba已连接。

sql> show parameter o7

name type value

------------------------------------ ----------- --------------------------

o7_dictionary_accessibility boolean false

sql> alter system set o7_dictionary_accessibility = true scope = spfile;

系统已更改。

sql> shutdown immediate数据库已经关闭。已经卸载数据库。

oracle 例程已经关闭。

sql> startup

oracle 例程已经启动。

total system global area 110173900 bytes

fixed size 454348 bytes

variable size 83886080 bytes

database buffers 25165824 bytes

redo buffers 667648 bytes数据库装载完毕。数据库已经打开。

最后删除刚才建立索引失败留下的垃圾表,就可以重建索引了:

sql> drop index ind_t_name;

索引已丢弃。

sql> create index ind_t_name on t(name) indextype is ctxsys.context;

索引已创建。

 
 
上一篇: 实例讲解oracle中一些关于权限的数据字典    下一篇: 快速解决"oracle"数据库中的常见问题 (1)
  相关文档
在oracle数据库中移动数据文件的具体方法 08-04
怎样使用errorstack进行错误跟踪及诊断 11-15
深入研究Oracle数据库空间管理方法 04-11
数据库迁移的几种常用方式及优缺点比较 05-14
怎样使用sql server数据库的查询累计值 11-15
做Oracle的和作茶叶蛋的没有本质的区别 09-01
Oracle数据库如何查询记录时给记录加锁 06-10
Oracle Online Redo LogFile 09-29
如何使用exp以传输表空间的方式将其导出 08-12
oracle10g r2 emca常用命令及实例步骤 07-25
Oracle9i与SYBASE ASE12.5相比的几个不足 08-05
调用存储过程时注意要使用output做修饰符 04-09
教你删除oracle数据库中重复没用的数据 09-10
Oracle数据库不同版本间用exp来导数据 09-01
如何在高级的复制中切换主体定义站点 03-26
oracle利用传输表空间导出导入数据的步骤 (1) 03-19
如何才能保障存储过程嵌套调用的原子性 07-14
oracle数据库建表脚本当中使用默认值的实例 08-15
解析:如何正确的更改监听器日志文件名称 11-15
oracle 9i数据库的用户创建以及权限分配 05-07
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息