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

时间:2019-01-10 15:12:32

标签: oracle redgate schema-compare

我正在尝试为我们的项目引入新的审核表。在部署过程中,我们使用redgate的Schema比较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论坛上,但我的帖子已按原样保留了两天。

我正在使用scripts文件夹比较,上面提到的文件是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>

1 个答案:

答案 0 :(得分:1)

我请求redgate支持并得到答复。

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

要使分区正常工作,必须删除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;