在Oracle 11.2的数据库中建表时遇到 RESULT_CACHE (MODE DEFAULT) ORA-00922: missing or invalid option

Posted phlsheji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Oracle 11.2的数据库中建表时遇到 RESULT_CACHE (MODE DEFAULT) ORA-00922: missing or invalid option相关的知识,希望对你有一定的参考价值。


在Oracle 11.2的数据库中建表时遇到 RESULT_CACHE (MODE DEFAULT)  ORA-00922: missing or invalid option

hostdr:[/home/oracle]$sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Thu Jul 9 12:52:11 2015

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>
SQL> CREATE TABLE USERA."TABLE_NAME_AA"
  2  (
  3    C1           CHAR(8 BYTE)              DEFAULT ' ',
  4    C2           CHAR(2 BYTE)              DEFAULT ' ',
  5    C3           NUMBER(12)                DEFAULT 0,
  6    C4           NUMBER(16)                DEFAULT 0,
  7    C5           NUMBER(16)                DEFAULT 0,
  8    C6           NUMBER(12)                DEFAULT 0,
  9    C7           NUMBER(16)                DEFAULT 0,
 10    C8           NUMBER(16)                DEFAULT 0,
 11    C9           NUMBER(12)                DEFAULT 0,
 12    C10          NUMBER(16)                DEFAULT 0,
 13    C11          NUMBER(16)                DEFAULT 0
 14  )
 15  TABLESPACE USERS
 16  RESULT_CACHE (MODE DEFAULT)
 17  PCTUSED    0
 18  PCTFREE    10
 19  INITRANS   1
 20  MAXTRANS   255
 21  STORAGE    (
 22              INITIAL          64K
 23              NEXT             1M
 24              MINEXTENTS       1
 25              MAXEXTENTS       UNLIMITED
 26              PCTINCREASE      0
 27              BUFFER_POOL      DEFAULT
 28              FLASH_CACHE      DEFAULT
 29              CELL_FLASH_CACHE DEFAULT
 30             )
 31  LOGGING
 32  NOCOMPRESS
 33  NOCACHE
 34  NOPARALLEL
 35  MONITORING
 36  /
RESULT_CACHE (MODE DEFAULT)
*
ERROR at line 16:
ORA-00922: missing or invalid option


SQL>


 

背景介绍:
此db是11.2.0.3.8的linux下的单机。是OGG的备库,OGG的主库是11.2.0.3.8下的linux下的rac。这两个db通过OGG进行灾备。

最初发现“ORA-00922: missing or invalid option”错误,就是由于OGG备端上的rep进程abend。abend时的rpt(report)例如以下:

2015-05-18 10:14:14  INFO    OGG-01407  Setting current schema for DDL operation to [USERA].

2015-05-18 10:14:15  INFO    OGG-01408  Restoring current schema for DDL operation to [goldengate].

2015-05-18 10:15:30  INFO    OGG-01407  Setting current schema for DDL operation to [USERA].

Source Context :
  SourceModule            : [ggapp.ddl]
  SourceID                : [/scratch/mmar/view_storage/mmar_20199012/oggcore/OpenSys/src/gglib/ggapp/ddlrep.c]
  SourceFunction          : [DDLREP_handleDDLError(const UString &, const UString &, const UString &, UString &, int, RepConfig_t *, const UString &, const UString &, const UStr
ing &, CDBObjName<7> &, CDBObjName<1> &, long *)]
  SourceLine              : [684]

2015-05-18 10:15:30  ERROR   OGG-00519  Fatal error executing DDL replication: error 
[Error code [922], ORA-00922: ^Z^Z^Z^Z^Z^Z^Z SQL CREATE TABLE USERA."TABLE_NAME_AA"
(
  C1           CHAR(8 BYTE)              DEFAULT ' ',
  C2           CHAR(2 BYTE)              DEFAULT ' ',
  C3           NUMBER(12)                DEFAULT 0,
  C4           NUMBER(16)                DEFAULT 0,
  C5           NUMBER(16)                DEFAULT 0,
  C6           NUMBER(12)                DEFAULT 0,
  C7           NUMBER(16)                DEFAULT 0,
  C8           NUMBER(16)                DEFAULT 0,
  C9           NUMBER(12)                DEFAULT 0,
  C10          NUMBER(16)                DEFAULT 0,
  C11          NUMBER(16)                DEFAULT 0
)
TABLESPACE USERS
RESULT_CACHE (MODE DEFAULT)
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
            FLASH_CACHE      DEFAULT
            CELL_FLASH_CACHE DEFAULT
           )
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING   /* GOLDENGATE_DDL_REPLICATION */], no error handler present.

***********************************************************************
*                   ** Run Time Statistics **                         *
***********************************************************************


 

下面的报错忽略。

看到OGG的rep进程报错,一開始还以为是ogg的问题,后来就从上面单独截取出create 脚本,放在sqlplus里边跑,结果还是报错(就是本文一開始能够看到的),那就能够说是Oracle database 的问题了。不是OGG的问题。


后来细致想了想ogg主库和ogg备库的差异,ogg主库是dbca新创建的。ogg备库是从10.2.0.5升级升上来的。想到这里,有经验的DBA就会马上去检查OGG备库的compatible參数,检查的结果是compatible參数值为10.2.0.5.于是就要求改动该參数,改动为11.2.0.0.0(跟主库一样)。当然。改动此參数有几个注意点:
1. 改动compatible參数是重新启动数据库生效。
2. 一旦改动完毕此參数后(指重新启动数据库后),就不能减少此參数到原来的值。否则实例到mount状态时会报例如以下的错误:

ORA-00201: control file version 11.2.0.0.0 incompatible with ORACLE version 10.2.0.5
ORA-00202: control file: 'D:\IM\CONTROLFILE\CONTROL01.CTL'

本案例的知识点:

1. 查看db是dbca新建的还是upgrade上来的方法:

SQL> set pages 100 lines 120
SQL> col action format a16
SQL> col namespace format a10
SQL> col version format a10
SQL> col comments format a26
SQL> col action_time format a30
SQL> col bundle_series format a15
SQL> set line 200
SQL> alter session set nls_timestamp_format = 'yyyy-mm-dd hh24:mi:ss.ff';
SQL> select * from dba_registry_history;

ACTION_TIME                    ACTION           NAMESPACE  VERSION            ID BUNDLE_SERIES   COMMENTS
------------------------------ ---------------- ---------- ---------- ---------- --------------- --------------------------
2015-01-03 12:15:56.136897     VIEW INVALIDATE                           8289601                 view invalidation
2015-01-03 12:16:30.178980     UPGRADE          SERVER     11.2.0.3.0                            Upgraded from 10.2.0.5.0
2015-01-03 12:16:39.788907     APPLY            SERVER     11.2.0.3            8 PSU             PSU 11.2.0.3.8

SQL> 


 

以上是关于在Oracle 11.2的数据库中建表时遇到 RESULT_CACHE (MODE DEFAULT) ORA-00922: missing or invalid option的主要内容,如果未能解决你的问题,请参考以下文章

在sql中建表时如何查看字段的长度

mysql中建表时形容大小的数据用啥数据类型

oracle数据库区分大小写吗?

MySQLMySQL中建表时变量名需要加反引号

在oracle数据库中建表

在oracle数据库中建表