我正试图为我们的项目引入新的审计表。在部署过程中,我们使用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">
当我去掉storage子句(因为我可以使用默认值)时,它开始抱怨分区子句,这就是我对软件不太满意的地方。
解析失败,返回消息SyntaxError。意外的标记"PARTITION"(第35行,第1列)符号Id
我试着打开和关闭所有存储选项,但都没有成功。我尝试了最新的5.2版本,对文件进行了简单的比较,但也不起作用。我试着把它发布在红门论坛上,但我的帖子已经被搁置了两天。
我使用的是脚本文件夹比较,上面提到的文件是源文件,没有文件是目标文件,Oracle11g脚本。
我设法使它在没有分区的情况下工作。我不得不用分号替换斜线,并将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;