问题描述
在dataguard场景中,我们使用只读备用程序进行报告。
一个使用流水线表函数ptf的查询
自几个月以来,每天使用不同的参数成功调用几十次。
昨天,它突然重复地失败了,ORA-16000 “数据库打开,只供只读访问”。
sql-trace显示它试图发出一个
因此,作为一种解决方法,我们对主 (也启用了跟踪) 执行了相同的查询,并且可以看到该类型已被删除 (并与其他一些类型一起再次重新创建)。
之后,查询也在待机状态下再次成功-昨天再次成功了几十次。
直到今天早上。
同样的ORA-16000,同样的解决方法。
为什么它突然表现得像那样 (运行几个月后没有任何问题)?
更重要的是:
如何解决这个问题?
提前谢谢!
一个使用流水线表函数ptf的查询
select * from table(ptf(...))
自几个月以来,每天使用不同的参数成功调用几十次。
昨天,它突然重复地失败了,ORA-16000 “数据库打开,只供只读访问”。
sql-trace显示它试图发出一个
drop type "DP".SYS_PLSQL_6B4A54F6_DUMMY_1 force
因此,作为一种解决方法,我们对主 (也启用了跟踪) 执行了相同的查询,并且可以看到该类型已被删除 (并与其他一些类型一起再次重新创建)。
之后,查询也在待机状态下再次成功-昨天再次成功了几十次。
直到今天早上。
同样的ORA-16000,同样的解决方法。
为什么它突然表现得像那样 (运行几个月后没有任何问题)?
更重要的是:
如何解决这个问题?
提前谢谢!
专家解答
您是否可能使用此 (或其他) 包中定义的嵌套表/记录类型,而不是显式创建的类型对象?
通常会导致动态创建的类型来支持它。因此你对
-当它被创建时
-它叫什么名字
-当它被删除/标记为重新编译/等时
你不应该看到这个错误 (它很可能是一个错误),但我会显式创建一个类型并使用它-你不应该看到问题再次之后。
create package type my_type is table of ....
通常会导致动态创建的类型来支持它。因此你对
-当它被创建时
-它叫什么名字
-当它被删除/标记为重新编译/等时
你不应该看到这个错误 (它很可能是一个错误),但我会显式创建一个类型并使用它-你不应该看到问题再次之后。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




