【发布时间】:2016-12-10 19:26:06
【问题描述】:
我正在尝试将我们的 Oracle 数据库创建脚本转换为使用 Flyway,以便数据库上的分布式开发变得更加容易。这些脚本主要由 sql 命令组成,几乎不需要更改,所以没问题。我正在对 Oracle 11.2 Express 数据库使用 Flyway(4.0.3) 的命令行版本。
但是,有一个脚本我遇到了一些问题,即在创建架构、角色和授予这些架构/角色权限时。
以下是 sql 迁移文件的示例:
alter user SAMPLEDB identified by ${schemaPassword};
alter user LOCDB identified by ${schemaPassword};
grant create session,create view,resource to SAMPLEDB;
grant create session,create view,resource to LOCDB;
connect sys/PASSWORD@xe as sysdba;
grant EXECUTE ON SYS.DBMS_PIPE to SAMPLEDB;
文件当然要大得多,但这应该足以大致了解它的外观。
因此,当我在这些 sql 命令上运行 flyway migrate 时,我收到以下错误消息:
SQL State : 42000
Error Code : 900
Message : ORA-00900: invalid SQL statement
Statement : connect sys/PASSWORD@xe as sysdba
如果我删除 connect sys/PASSWORD@xe as sysdba 行,则会收到此错误:
SQL State : 42000
Error Code : 1031
Message : ORA-01031: insufficient privileges
Statement : grant EXECUTE ON SYS.DBMS_PIPE to SAMPLEDB
我正在使用在 flyway.conf 配置文件中配置的 Oracle“系统”用户。
所以问题是,我可以在 sql 文件中以某种方式将用户更改为 sysdba 用户,还是应该在运行 flyway migrate 命令之前创建模式用户/角色并手动授予他们权限?
只有在创建不应该经常发生的新数据库时才会执行此任务。
希望你能帮我解决这个问题:)
【问题讨论】:
标签: oracle command-line flyway