我正在为“直接”SQL*Loader操作准备新的Oracle 11g安装。根据这里的文件:
modes.htm#i1007669
要为直接路径加载准备数据库,必须运行安装脚本catldr.sql来创建必要的视图。对于计划直接加载的每个数据库,只需运行此脚本一次。
因此,我执行以下sql脚本:
$ORACLE_HOME/rdbms/admin/catldr.sql问题是,当我运行这个脚本时,会得到多个错误。例如(还有更多关于循环同义词的内容):
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时,会收到以下错误:
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),并在模式背面生成了表。
有什么想法吗?
发布于 2015-03-10 13:30:10
catldr.sql脚本说:
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看起来并没有真正的伤害。
通过查询可以看到创建了哪些对象:
select object_type, object_name
from all_objects
where created > time_just_before_you_ran_the_script您可能需要将公共同义词与all_synonyms视图交叉引用,以检查表所有者,并删除从SUKLTI模式创建的任何对象以及那些新的公共同义词。(但不要丢弃SYS模式中的任何内容.)
然后,您可能需要以SYS的形式重新运行SYS来重新创建指向正确的SYS对象的同义词。
发布于 2015-03-10 16:16:11
@AlexPoole
你是完全正确的。脚本必须以SYS的形式运行。
因为这是一个"test db“,所以我们在DB重新创建时将它作为SYS运行。
一切都正常了!
谢谢你的答复
https://stackoverflow.com/questions/28962405
复制相似问题