oracle - 将 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>
解决方案
我问了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;
推荐阅读
- python - AWS Python3 内核在启动时立即死亡
- node.js - 通过 Angular 将用户数据存储在 localStorage 中是否安全?
- python - 如何在python中使用字符而不是空格来分隔
- javascript - interact.js SVG rect 捕捉到带边距的 div
- angular - 有没有人在同一个 UIX 中使用 Leaflet 和 DataTables?
- java - 如何从 java 中的不同类访问变量?
- javascript - 用鼠标悬停显示信息
- c# - 接收方无法验证签名的 XML 消息
- windows - 校验和文件比较工具
- ruby - 谁能建议如何使用 ruby selenium 截取整个网页的屏幕截图?