0

一世,

我在一台服务器上有一个由 DB link 创建的物化视图。该 Mview 上正在运行一项作业。(之前使用 dbms_refresh.make 进行创建)。

现在我在原始表中创建了 3 个新字段。

Mview 上正在运行作业,我放弃了 DBMS_refresh.destroy 的作业。然后删除了 Mview(我忘了在视图中删除索引)

现在,当我尝试使用之前提取的 SQL 创建 Mview 时,它给出的错误为:-

从命令的第 1 行开始的错误:

CREATE MATERIALIZED VIEW TTMU_LAVORAZIONE_TT
  TABLESPACE "TTSTAT_DATA"
  LOGGING 
  PCTFREE 10
  PCTUSED 40
  INITRANS 1
  MAXTRANS 255
  STORAGE
  (
    INITIAL 5M
    NEXT 5M
    MINEXTENTS 1
    MAXEXTENTS 2147483645
    PCTINCREASE 0
    FREELISTS 1
    FREELIST GROUPS 1
    BUFFER_POOL DEFAULT
  )
NOCACHE NOPARALLEL BUILD IMMEDIATE
USING INDEX
REFRESH ON DEMAND FAST 
WITH ROWID 
DISABLE QUERY REWRITE  AS
SELECT T288.C1,C2,C3,C4,C5,C6,C7,C8,C536870915,C536870916,C536870917,
       C536870918,C536870919,C536870920,C536870921,C536870922,C536870927,
       C536870928,C536870929,C536870930,C536870931,C536870932,C536870933,
       C536870937,C536870939,C536870940,C536870941,C536870942,C536870945,
       C536870951,C536870952,C536870953,C536870954,C536870955,C536870956,
       C536870957,C536870959,C536870961,C536870962,C536870965,C536871100
  FROM T288@STAT2TTM.WORLD

命令行错误:1 列:0 错误报告:

SQL Error: ORA-00600: internal error code, arguments: [17113], [0x000000000],
                      [], [], [], [], [], []
00600. 00000 -  "internal error code, arguments: [%s], [%s], [%s], [%s],
                [%s], [%s], [%s], [%s]"
*Cause:    This is the generic internal error number for Oracle program
           exceptions. This indicates that a process has encountered an
           exceptional condition.
*Action:   Report as a bug - the first argument is the internal error number

从命令中的第 26 行开始出错:

CREATE UNIQUE INDEX I_SNAP$_TTMU_LAVORAZIONE_T 
  ON TTMU_LAVORAZIONE_TT (M_ROW$$ ASC)
  TABLESPACE "TTSTAT_DATA"
  LOGGING 
  PCTFREE 10
  INITRANS 2
  MAXTRANS 255
  STORAGE
  (
    INITIAL 5M
    NEXT 5M
    MINEXTENTS 1
    MAXEXTENTS 2147483645
    PCTINCREASE 0
    FREELISTS 1
    FREELIST GROUPS 1
    BUFFER_POOL DEFAULT
  )

命令行错误:26 列:0 错误报告:SQL 错误:已关闭连接

4

3 回答 3

3

动作很清楚:

*行动:报告为错误 - 第一个参数是内部错误号

这是一个内部错误。按照注释 [ID 153788.1] 中的说明使用Oracle 支持站点的错误查找工具排除 ORA-600 或 ORA-7445 错误

于 2010-11-19T10:16:02.147 回答
0

您必须: - 删除快照/mview - 删除主表上的快照日志 - 在主表上创建新的快照日志 - 重新创建 mview 并将创建语句简化为以下内容:

CREATE MATERIALIZED VIEW TTMU_LAVORAZIONE_TT
  TABLESPACE "TTSTAT_DATA"
REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 5/1440
WITH ROWID 
AS
SELECT T288.C1,C2,C3,C4,C5,C6,C7,C8,C536870915,C536870916,C536870917,
       C536870918,C536870919,C536870920,C536870921,C536870922,C536870927,
       C536870928,C536870929,C536870930,C536870931,C536870932,C536870933,
       C536870937,C536870939,C536870940,C536870941,C536870942,C536870945,
       C536870951,C536870952,C536870953,C536870954,C536870955,C536870956,
       C536870957,C536870959,C536870961,C536870962,C536870965,C536871100
  FROM T288@STAT2TTM.WORLD;

上面将添加一个刷新 dbms_job,每 5 分钟更新一次表。您可以更改它以满足您的要求。

创建它后,您必须运行:

exec dbms_snapshot.refresh("TTMU_LAVORAZIONE_TT",'C');
exec dbms_snapshot.refresh("TTMU_LAVORAZIONE_TT",'F');

那应该照顾它。如果表很大,您将需要使用另一种方法。我不知道尺寸,所以我假设不会太大。

于 2010-11-19T14:01:59.033 回答
0

检查数据库的警报日志以获取有关数据库中可能发生的情况的线索。这可能会将您指向一个或多个跟踪文件,在其中可以找到有关问题的更多信息。有时您可以自己解决问题。

于 2010-11-19T16:01:35.903 回答