【问题标题】:Why do I get an ORA-00922 when trying to create a partitioned table in Oracle?尝试在 Oracle 中创建分区表时,为什么会收到 ORA-00922?
【发布时间】:2017-03-14 09:03:15
【问题描述】:

我正在尝试在 oracle 表上创建分区但收到 ORA-00922 错误。

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

CREATE TABLE "RATE_REQUEST_BKP_PARIATIONED"
  (
    "RATE_REQUEST_ID"     NUMBER(10,0),
    "PRODUCT_CUSTOMER_ID" NUMBER(10,0),
    "DESTINATION_ID"      NUMBER(10,0),
    "CREATED_DT"          DATE,
    "CREATED_BY"          NUMBER(10,0),
    "MODIFIED_DT"         DATE,
    "MODIFIED_BY"         NUMBER(10,0),
    "RATE_STATUS_ID"      NUMBER(10,0)
  )
  PARTITION BY RANGE
  (
    CREATED_DT
  )
  INTERVAL
  (
    NUMTOYMINTERVAL(1, 'MONTH')
  )
  (
    PARTITION p0 VALUES LESS THAN (TO_DATE('1-3-2017', 'DD-MM-YYYY')),
    PARTITION p1 VALUES LESS THAN (TO_DATE('1-4-2017', 'DD-MM-YYYY')),
    PARTITION p2 VALUES LESS THAN (TO_DATE('1-5-2017', 'DD-MM-YYYY'))
  )

错误报告-

SQL Error: ORA-00922: missing or invalid option
00922. 00000 -  "missing or invalid option"
*Cause:    
*Action:
Table "RATE_REQUEST_BKP_PARIATIONED" dropped.

Commit complete.

请帮我找出查询的问题。

【问题讨论】:

  • 错误报告说的不一样。如果 DDL 有错误,则不会创建表。并且 DROP 也应该因无效的表名而失败。也许,您的 DDL 脚本中的其他内容是错误的。
  • 您发布的代码会创建一个表格。因此,无论您遇到什么错误,它都不是来自 CREATE TABLE 语句。
  • 你有哪个版本的oracle? 10? 11 点?
  • @ArkadiuszŁukasiewicz 有一个很好的观点。 INTERVAL 语法是在 11g 中引入的。但是,该帖子包含 Table "RATE_REQUEST_BKP_PARIATIONED" dropped. 行,这表明该表之前已成功创建。
  • 请发布您的完整脚本,因为如果不是来自发布的声明,它看起来像错误。

标签: oracle ddl database-partitioning


【解决方案1】:

希望对您有所帮助 如果在定义存储子句或列时指定了无效选项,将抛出 ORA-00922。 ORA-00922 提到要指定该列不能包含任何 NULL 值,指定列时的有效选项是 NOT NULL,并且只有约束可以遵循数据类型。

对 ORA-00922 还值得注意的是,它也可能导致引发此错误,即在 LOG 或 DATE 数据类型上指定最大长度。

更正 ORA-00992 包括更正规范中的语法,注意从列规范的存储中取出错误的选项或长度规范

从这个链接得到答案 http://www.dba-oracle.com/t_ora_00922_missing_or_invalid_option.htm

【讨论】:

    猜你喜欢
    • 2021-07-27
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2021-11-02
    • 2019-10-16
    • 2023-03-10
    相关资源
    最近更新 更多