我创建了许多表、函数、视图和过程脚本来支持报告。由于环境复杂,迁移脚本(开发-->测试)可能是一件苦差事。
DBA 不允许开发人员使用主表空间('VENDOR'),也不允许使用任何主模式('UTIL'、'REPORTING')。UTIL 模式用于函数和过程;REPORTING 用于表和视图。
因为开发服务器经常为了其他目的而重新调试,所以开发是在测试服务器上完成的,使用开发表空间 ('DEVL') 和每个开发人员的模式(例如,'CRAIG')。
因此,表的脚本必须转换为:
DROP TABLE CRAIG.X_TABLE;
CREATE TABLE CRAIG.X_TABLE;
...
TABLESPACE "DEVL";
到:
DROP TABLE REPORTING.X_TABLE;
CREATE TABLE REPORTING.X_TABLE;
...
TABLESPACE "VENDOR";
视图的脚本必须更改为:
CREATE OR REPLACE VIEW CRAIG.X_VIEW
...
;
到:
CREATE OR REPLACE VIEW REPORTING.X_VIEW
...
;
必须将过程的脚本更改为:
CREATE OR REPLACE PROCEDURE CRAIG.X_PROCEDURE
...
INSERT INTO CRAIG.X_PROCEDURE
SELECT ...
-- reference a table in REPORTING schema
FROM REPORTING.ANOTHER_TABLE
;
到:
CREATE OR REPLACE PROCEDURE UTIL.X_PROCEDURE
...
INSERT INTO REPORTING.X_PROCEDURE
SELECT ...
FROM REPORTING.ANOTHER_TABLE
;
如您所见,表格和过程脚本需要最多的干预。
如果有所作为,我使用 SQL Developer、TextMate 和 Sublime Text 2 进行编码,并使用 Cornerstone 与我们组织的 Subversion (SVN) 存储库进行交互。
当我将逻辑从开发环境迁移到测试环境时,有没有办法简化(即自动化)我需要对每种类型的脚本进行的更改?