Oracle catldr.sql 多个错误
Oracle catldr.sql multiple errors
我正在为 "Direct" SQL*Loader 操作准备新的 Oracle 11g 安装。根据此处的文档:
http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_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
然后当我尝试 运行 SQL*Loader 和 "direct=true" 时,我收到以下错误:
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) 并且在模式后面生成了表。
有什么想法吗?
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
您可能需要将 public 同义词与 all_synonyms
视图交叉引用以检查 table 所有者,并删除它从 SUKLTI
模式创建的任何对象以及那些新的 public 同义词。 (但不要从 SYS
架构中删除任何内容...)
然后您可能需要重新运行 catldr.sql
为 SYS
以重新创建指向正确 SYS
对象的同义词。
@AlexPoole
你完全正确。脚本必须是 运行 作为 SYS。
因为这是 "test db" 我们将其拆解并 运行 在数据库重新创建时将脚本作为 SYS。
一切正常!
感谢回复
我正在为 "Direct" SQL*Loader 操作准备新的 Oracle 11g 安装。根据此处的文档:
http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_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
然后当我尝试 运行 SQL*Loader 和 "direct=true" 时,我收到以下错误:
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) 并且在模式后面生成了表。
有什么想法吗?
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
您可能需要将 public 同义词与 all_synonyms
视图交叉引用以检查 table 所有者,并删除它从 SUKLTI
模式创建的任何对象以及那些新的 public 同义词。 (但不要从 SYS
架构中删除任何内容...)
然后您可能需要重新运行 catldr.sql
为 SYS
以重新创建指向正确 SYS
对象的同义词。
@AlexPoole
你完全正确。脚本必须是 运行 作为 SYS。
因为这是 "test db" 我们将其拆解并 运行 在数据库重新创建时将脚本作为 SYS。
一切正常!
感谢回复