【发布时间】:2015-08-21 19:14:32
【问题描述】:
我们在 Oracle 生产环境中有一个计划任务,它运行一个存储过程来在 dev 和 prod 中的相同模式之间复制数据。 (在我们的开发人员有时间妥善解决之前,这是解决业务问题的权宜之计。)
我们通过从 prod 复制清理过的数据定期刷新我们的开发和测试环境。该副本包括任务和存储过程。如果存储过程在生产环境之外的任何服务器上运行,我们就有损坏数据的风险,所以我必须记得告诉 DBA 在开发和测试中禁用该任务。
有没有办法(通过 pl/sql?)防止存储过程在我们的生产环境之外运行?
作为故障安全,该过程使用未在 dev 或 test 中定义的别名,我希望避免生成的错误。
【问题讨论】:
-
为什么不像检查模式名称以查看它是否是 prod 那样简单,如果不是则抛出异常?
-
答案可能就这么简单!我可以使用 SQL,但远非专家。
-
您可以查询 v$database 并检查 instance_name(或主机名)——我认为 Prod 和 Dev db SID 会有所不同。
标签: oracle stored-procedures plsql