将 Oracle 分区和存储选项与 Redgate Schema Compare 结合使用失败

Using Oracle partition and storage options with Redgate Schema Compare fails

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

table 看起来像这样:

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
)
/

我第一次 运行 遇到有关存储子句的错误

Parsing failed with message SyntaxError. Unexpected token 'K'

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

Parsing failed with message SyntaxError. Unexpected token 'PARTITION' (Line 35, Col 1) symbol Id

我尝试打开和关闭所有存储选项,但没有任何效果。我通过简单的文件比较尝试了最新版本 5.2,但它也没有用。我试图在 redgate 论坛上 post 它,但我的 post 已经卡住了两天了。

我正在使用脚本文件夹比较,上面提到的源文件没有目标文件,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>

我问了 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;