我有一个oracle DB,它位于W28MSWIN1252并使用Oracle DMU(Unicode的数据迁移助手工具)我正在尝试将编码转换为ALT32UTF8。我成功通过了扫描,但下一步 - 实际的数据库转换,在此操作上停止(表和列名称发生了变化):
update /*+ PARALLEL(A,4)*/ "MYSCHEMA"."MYTABLE1" A set A."COL1" = SYS_OP_CSCONV(A."COL1", 'AL32UTF8'), A."COL2" = SYS_OP_CSCONV(A."COL2", 'AL32UTF8'), A."COL3" = SYS_OP_CSCONV(A."COL3", 'AL32UTF8'), A."COL4" = SYS_OP_CSCONV(A."COL4", 'AL32UTF8') WHERE A.ROWID IN (SELECT ROW_ID FROM SYSTEM.DUM$EXCEPTIONS WHERE OBJ# = 93203)
出现此错误:
603 - ORA-00603: ORACLE server session terminated by fatal error ORA-00600: Internal error code, arguments:[4882], [0x7FF7A52EEDB8],[0x7FF7A5A6D6B8], [0x7FF7C05ABB8],[],[],[]..
我发现了有关错误的更多信息 C:\应用\ Oracle12 \诊断\ RDBMS ... \跟踪\ alert_ax12web.log:
Refresh failed due to missing on - commit privilege for "MYSCHEMA"."MYTABLE2"
On commit
MV "MYSCHEMA"."MYTABLE2" was not refreshed successfully.
Number of MV refresh failures : 1.
Errors in file C:\app\Oracle12\diag\rdbms\...\trace\ax12web_ora_6672.trc(incident = 12425) :
ORA - 00600 : internal error code, arguments : [4882], [0x7FF7B71BA8B8], [0x7FF7A5A6D6B8], [0x7FF7BFFA1D48], [], [], [], [], [], [], [], []
...
似乎真正的问题是:由于缺少on-commit特权而刷新失败。不幸的是,通过以下方式向该桌上的所有人授予所有权限:
grant ALL on "MYSCHEMA"."MYTABLE1" to public;
无济于事。我仍然得到这个错误。
P.S。我没有oracle的额外支持:(。
任何想法?
提前致谢,
卡林
答案 0 :(得分:1)
ORA-00600表示这是一个内部错误。您需要检查数据库alert.log或Oracle Support以获取更多信息。
答案 1 :(得分:1)
尝试使用较小的更改重新运行查询。 ORA-600错误通常只会影响一种运行查询的特定方式,通常还有一种解决方法。以下是一些想法:
alter system set parallel_max_servers=0;
来获得相同的结果。(SELECT ROW_ID FROM SYSTEM.DUM$EXCEPTIONS WHERE OBJ# = 93203)
并将结果硬编码到查询中。对于ORA-600错误,有一个查找代码的特殊工具。在support.oracle.com上,搜索“ora-600工具”。在该网站上,输入第一个参数。它返回一个结果, ORA-600 [4882]“已经保留时锁定行缓存对象X”(文档ID 41840.1)。
我无法在此处打印整个文档,您需要获得许可才能获取所有信息。但在这种情况下它并不重要,因为没有有用的信息。您的选择是提交服务请求并经历这个痛苦的过程或尝试上面建议的一些重写。
答案 2 :(得分:0)
好几天阅读日志和猜测后,我想我发现了问题:
DROP MATERIALIZED VIEW MYTABLE2;
之后错误消失。当然,在迁移之后我不得不重新创建该视图。显然这是Oracle中的一个错误。但令我厌恶的是Oracle的Price模型。他们有一个错误,但您必须付费才能修复它或获得解决方法。
...我不知道这与权限如何相关