create table agl_spell_gr7 as
select * from(
WITH cte1 AS (
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY Meter_id ORDER BY Realtimeclock) rn
FROM loadsurvey t
),
cte2 AS (
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY Meter_id ORDER BY Realtimeclock) rn
FROM loadsurvey t
WHERE I_R <> 0 and I_Y <> 0 and I_B <> 0
),
cte3 AS (
SELECT t1.*,
t1.rn - t2.rn AS diff
FROM cte1 t1
INNER JOIN cte2 t2
ON t1.Meter_id = t2.Meter_id AND t1.Realtimeclock = t2.Realtimeclock
)
SELECT
Meter_id,
MIN(Realtimeclock) AS start_time,
MAX(Realtimeclock) AS end_time,
COUNT(I_Y) AS I_Y,
COUNT(I_B) AS I_B,
COUNT(I_R) AS I_R, ROW_NUMBER() OVER (PARTITION BY Meter_id ORDER BY Meter_id ) AS Spell,
sum(KWH) as KWH,
sum(KWPH) as KWPH
FROM cte3
GROUP BY
Meter_id,
diff);
大家好
从上面的代码创建表时出现以下错误。
请指导我如何继续创建表格。 [错误]执行(28:6):ORA-00600:内部错误代码,参数:[rwoirw:检查ret val],[],[],[],[],[],[],[],[ ]、[]、[]、[]
ORA-00600 是 Oracle 未处理异常(即 bug)的错误号。 ORA-00600 错误的本质是它们通常是边缘情况,由针对特定操作系统平台上的特定数据库版本运行的某些代码结构引发。因此,它们通常需要补丁来修复。但是,由于您似乎使用过时的 Oracle 版本(10g 还有 11g??),我猜您不太可能为拥有支持合同和/或有兴趣将数据库保持在修补状态的组织工作。
在这种情况下,这可能并不重要。 Google 建议此内部错误 有时是由 CREATE TABLE AS SELECT 语句引发的。你有一个很棒的 CTAS 语句,带有一堆分析函数。因此,您只需使用独立的 CREATE TABLE 语句并使用单独的 INSERT 语句填充表即可解决此问题。
最近在使用 Create table abc as select a,b,a.... from xyz 时遇到了相同的错误 并尝试了谷歌搜索的各种解决方案,但没有任何效果。终于看到这个链接了 https://programmer.ink/think/oracle-11g-uses-rownum-to-perfect-ora-00600-internal-error-code.html
建议在脚本末尾添加一个 where 子句 “where rownum>-1”并且它有效。为我工作所以我想在这里分享它。
我从 11.2.0.3 升级到 11.2.0.4 后遇到了这个问题。这个命令为我解决了这个问题:
alter session set optimizer_features_enable = "11.2.0.3"