2014-05-08 40 views
2

我们有应用程序,所有的逻辑在oracle数据库中使用pl/sql实现。Oracle数据库,移动数据库之间的变化

我们有不同的oracle数据库用于开发和生产。

当开发人员在测试后对开发数据库进行更改时,我们使用toad的模式比较工具将开发数据库中的更改移至生产数据库。这里的问题是开发人员必须拥有生产数据库的密码。我们只需要管理员知道这个密码。

有人能告诉我更好的数据库之间移动更改的方式,而不需要生产数据库密码,对此最佳实践是什么?

我在oracle OTN论坛上发布了这个问题,并在那里得到了一些建议。也许这对某个人会很有趣。 她是link

+6

执行差异操作是部署更改的一种非常糟糕的方式。所有PL/SQL代码应该存储在版本控制系统(Subversion,Git,...)中,并通过使用这些脚本应用于目标数据库。然后,管理员只需要应用版本控制系统中的(最新)脚本。 –

回答

1

我不建议使用比较工具来生成数据库迁移脚本。 开发和生产数据库(以及测试数据库)必须完全相同,除了开发人员在开发数据库中进行的当前更改。一般来说,这种断言是不正确的,因为开发和生产数据库之间存在多种差异,例如,分区对象,用于审计的其他对象(触发器,表),基于复制的对象(快照),不同的表空间等。 每个开发人员都必须知道他做了哪些更改并应用于开发数据库。 如果开发人员能够更改开发人员数据库中的架构和数据,则他/她必须能够为这些DDL和DML更改创建程序。

委托相同的开发人员在生产数据库上运行这些迁移程序的能力是一个坏主意。但是,如果您没有更好的数据库迁移方法,则可以使用以下其中一种方法:

1. Configure Oracle authentication by OS. OS authentication allows Oracle to pass 
    control of user authentication to the operating system. 

2. TOAD can save passwords without disclose them. DBA will insert required password 
    to local TOAD installation at developer PC (if developers use PC).