oracle - 如何使用 liquibase 在线创建索引?

标签 oracle migration liquibase

我有一个迁移将在我们的 Oracle 数据库的表中创建一个索引。 DBA 希望联机创建索引。 (类似于 CREATE INDEX ..... ONLINE;)我可以在下面的标签中添加什么来完成我想要的或者我是否需要将 SQL 写入迁移?

<createIndex tableName="USER" indexName="IX_USER_TX_ID">
     <column name="TX_ID" />
</createIndex>

最佳答案

没有标准标签将其指定为 ONLINE。在线创建它的 3 个选项是:

  1. 回退到您指定所需的确切 SQL 的标记
  2. 使用modifySql tag附加到生成的 SQL。
  3. 创建一个 extension到总是在 SQL 末尾生成 ONLINE 的 createIndex,或者向 createIndex 添加一个参数,允许您控制是否添加它。

选项 #2 可能是简单而灵活的最佳组合,看起来像这样:

<changeSet id="1" author="nvoxland">
    <createIndex tableName="USER" indexName="IX_USER_TX_ID">
        <column name="TX_ID" />
    </createIndex>
    <modifySql dbms="oracle">
         <append value=" ONLINE"/>
    </modifySql>
</changeSet>

注意值标签中的空格。 Append 执行非常简单的文本追加,没有内置逻辑。

关于oracle - 如何使用 liquibase 在线创建索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313660/

相关文章:

mysql - 从 3 个表中选择所有信息

ruby-on-rails - 设计 gem : add module after initial install

mysql - liquibase 没有创建无符号列

Azure Synapse Analytics 版本控制

c# - 在 C# 中的存储过程中使用全局临时表

sql - 删除时触发以避免悬空引用

java - 通过 JDBC 查询 Oracle DB 给出 null,而直接查询给出输出

java - tomcat中的 session 迁移/复制

c++ - 无法在 VS2015 下启动 64 位应用程序

mysql - 运行 Liquibase : Unknown Reason 时出现意外错误