首页 > 解决方案 > 将 Oracle 分区和存储选项与 Redgate 模式比较一起使用失败

问题描述

我正在尝试为我们的项目引入新的审计表。在部署过程中,我们使用 redgate 的 Schema Compare for Oracle(版本 4.0.8.420)。

该表如下所示:

create table MY_SCHEMA.MY_TEST_AUDT (
    TEST_ID                        NUMBER(19),
    -- all sorts of business fields, omitted for clarity
    AUDT_CRT_DTM                   TIMESTAMP DEFAULT SYSTIMESTAMP,
    AUDT_ACTN_CODE                 VARCHAR2(1),
    AUDT_CRT_USR_NM                VARCHAR2(128) DEFAULT USER,
    AUDT_CLIENT_IDENTIFIER         VARCHAR2(256),
    AUDT_CLIENT_INFO               VARCHAR2(256)
)
TABLESPACE MY_TABLESPACE
PCTFREE 0
INITRANS 10
STORAGE (
    INITIAL          64K
    NEXT             1M
    MINEXTENTS       1
    MAXEXTENTS       UNLIMITED
    PCTINCREASE      0
    BUFFER_POOL      DEFAULT
)
COMPRESS FOR OLTP
NOCACHE
PARTITION BY RANGE (AUDT_CRT_DTM)
INTERVAL(interval '1' month)
(
    PARTITION P0 VALUES LESS THAN (date '2018-11-01')
    PCTFREE 0
    INITRANS 10
)
/

第一次运行它时,我收到有关存储条款的错误

解析失败并显示消息 SyntaxError。意外的令牌“K”

当我摆脱存储条款(因为我可以使用默认值)时,它开始抱怨分区条款,这就是我对软件不太满意的地方。

解析失败并显示消息 SyntaxError。意外的令牌“PARTITION”(第 35 行,第 1 列)符号 ID

我尝试打开和关闭所有存储选项,但没有任何效果。我尝试了最新的 5.2 版本,对文件进行了简单的比较,但它也不起作用。我试图在 redgate 论坛上发布它,但我的帖子已经被卡住了两天了。

我正在使用脚本文件夹比较,上面提到的源文件和目标文件,Oracle 11g 脚本。

我设法让它在没有分区的情况下工作。我不得不用分号替换斜线并将 8K 和 1M 切换到完整值。但我仍然无法创建分区。

create table MY_SCHEMA.MY_TEST_AUDT (
    TEST_ID                        NUMBER(19),
    -- all sorts of business fields, omitted for clarity
    AUDT_CRT_DTM                   TIMESTAMP DEFAULT SYSTIMESTAMP,
    AUDT_ACTN_CODE                 VARCHAR2(1),
    AUDT_CRT_USR_NM                VARCHAR2(128) DEFAULT USER,
    AUDT_CLIENT_IDENTIFIER         VARCHAR2(256),
    AUDT_CLIENT_INFO               VARCHAR2(256)
)
TABLESPACE MY_TABLESPACE
PCTFREE 0
INITRANS 10
STORAGE (
    INITIAL          65536
    NEXT             1048576
    MINEXTENTS       1
    MAXEXTENTS       UNLIMITED
    PCTINCREASE      0
    BUFFER_POOL      DEFAULT
)
COMPRESS FOR OLTP
NOCACHE;

很感谢任何形式的帮助。

阿兰

为了完整起见,这是我的 DatabaseInformation.xml 文件

<?xml version="1.0" encoding="utf-16" standalone="yes"?>
<ScriptsFolderInformation version="2" type="ScriptsFolderInformation">
  <DatabaseVersion>ElevenG</DatabaseVersion>
</ScriptsFolderInformation>

标签: oracleredgateschema-compare

解决方案


我问了redgate支持并得到了答复。

当您直接使用模式时,它似乎工作得很好(我自己没有尝试过)。仅当您将脚本文件夹与脚本文件夹进行比较时,才会出现此问题。

要使分区正常工作,您必须删除 NOCACHE 关键字。然后一切正常。

Redgate 现在有一个支持这些关键字的错误报告 (OC-1026)

这是有效的版本:

create table MY_SCHEMA.MY_TEST_AUDT (
    TEST_ID                        NUMBER(19),
    -- all sorts of business fields, omitted for clarity
    AUDT_CRT_DTM                   TIMESTAMP DEFAULT SYSTIMESTAMP,
    AUDT_ACTN_CODE                 VARCHAR2(1),
    AUDT_CRT_USR_NM                VARCHAR2(128) DEFAULT USER,
    AUDT_CLIENT_IDENTIFIER         VARCHAR2(256),
    AUDT_CLIENT_INFO               VARCHAR2(256)
)
TABLESPACE MY_TABLESPACE
PCTFREE 0
INITRANS 10
STORAGE (
    INITIAL          65536
    NEXT             1048576
    MINEXTENTS       1
    MAXEXTENTS       UNLIMITED
    PCTINCREASE      0
    BUFFER_POOL      DEFAULT
)
COMPRESS FOR OLTP;

推荐阅读