首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle catldr.sql多重错误

Oracle catldr.sql多重错误
EN

Stack Overflow用户
提问于 2015-03-10 11:22:17
回答 2查看 971关注 0票数 0

我正在为“直接”SQL*Loader操作准备新的Oracle 11g安装。根据这里的文件:

modes.htm#i1007669

要为直接路径加载准备数据库,必须运行安装脚本catldr.sql来创建必要的视图。对于计划直接加载的每个数据库,只需运行此脚本一次。

因此,我执行以下sql脚本:

代码语言:javascript
复制
$ORACLE_HOME/rdbms/admin/catldr.sql

问题是,当我运行这个脚本时,会得到多个错误。例如(还有更多关于循环同义词的内容):

代码语言:javascript
复制
grant select on gv_$loadistat to public
                *
ERROR at line 1:
ORA-04063: view "SUKLTI.GV_$LOADISTAT" has errors


create or replace view v_$loadpstat as select * from v$loadpstat
                       *
ERROR at line 1:
ORA-01731: circular view definition encountered



Synonym created.

grant select on v_$loadpstat to public
                *
ERROR at line 1:
ORA-04063: view "SUKLTI.V_$LOADPSTAT" has errors


create or replace view v_$loadistat as select * from v$loadistat
                       *
ERROR at line 1:
ORA-01731: circular view definition encountered



Synonym created.

grant select on v_$loadistat to public
                *
ERROR at line 1:
ORA-04063: view "SUKLTI.V_$LOADISTAT" has errors


                                   from x$kzsro
                                        *
ERROR at line 15:
ORA-00942: table or view does not exist

然后,当我尝试使用"direct=true“运行SQL*Loader时,会收到以下错误:

代码语言:javascript
复制
ORA-26014: unexpected error on column SYS_NTEOzTt73hE9LgU+XYHax0tQ==.DUMMYCOL NAME
 while retrieving virtual column status
ORA-01775: looping chain of synonyms

注意,这是一个干净的Oracle安装,注册了一些XML模式(8),并在模式背面生成了表。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-10 13:30:10

catldr.sql脚本说:

代码语言:javascript
复制
Rem NAME
Rem    catldr.sql
Rem  FUNCTION
Rem    Views for the direct path of the loader
Rem  NOTES
Rem    This script must be run while connected as SYS or INTERNAL.

从错误消息来看,您似乎是以普通用户SUKLTI而不是SYS的身份运行它。您所链接的文档还指出,应该在每个数据库中运行一次,而不是每个最终用户运行一次。

无论如何,它应该在数据库创建期间通过catalog.sql脚本运行,所以我很惊讶您需要手动运行它;一些错误表明它创建的对象已经存在。通过重新运行它,因为SYS看起来并没有真正的伤害。

通过查询可以看到创建了哪些对象:

代码语言:javascript
复制
select object_type, object_name
from all_objects
where created > time_just_before_you_ran_the_script

您可能需要将公共同义词与all_synonyms视图交叉引用,以检查表所有者,并删除从SUKLTI模式创建的任何对象以及那些新的公共同义词。(但不要丢弃SYS模式中的任何内容.)

然后,您可能需要以SYS的形式重新运行SYS来重新创建指向正确的SYS对象的同义词。

票数 1
EN

Stack Overflow用户

发布于 2015-03-10 16:16:11

@AlexPoole

你是完全正确的。脚本必须以SYS的形式运行。

因为这是一个"test db“,所以我们在DB重新创建时将它作为SYS运行。

一切都正常了!

谢谢你的答复

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28962405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档