【问题标题】:As a non-DBA user, how can I pass on scripts to other users that work in their own Schema?作为非 DBA 用户,我如何将脚本传递给在他们自己的 Schema 中工作的其他用户?
【发布时间】:2018-02-22 14:58:34
【问题描述】:

这是我的情况。我是 Oracle 数据库中的非 DBA 用户。因此,我只有自己的 Schema 的 DDL 和 DML 权限,所以我只能对自己的 Schema 中的表进行创建、删除、更新等操作。

假设我编写了一个脚本,在我自己的架构中创建和更新表(我们将架构称为 USER1)。当我离开公司并需要将此脚本传递给我的替代者(假设是 USER2)时,如果该脚本仅适用于 USER1,我该怎么做? USER2 真的必须通过我的脚本并将 USER1 的所有引用替换为 USER2 吗?

我真的希望我的脚本能够运行,无论用户运行它,而不必修改它。

【问题讨论】:

  • 为什么要在脚本中添加模式名称?删除它,脚本将在登录用户的上下文中运行。
  • 感谢您的帮助。我明白你在说什么。那么在脚本中省略架构将始终使用用户的架构(又名登录架构)?我的理解是它使用了用户设置为默认的模式,这可能不一定是他们的登录模式。
  • My understanding was that it used the Schema that the user had set as their default - 是的,你是对的。只需告诉用户不要切换架构。告诉他,如果他切换架构,脚本将会中断并且将无法工作。就是这样。
  • 这是有道理的,这就是我要做的。谢谢大家的帮助。

标签: oracle ddl dml


【解决方案1】:

首先,如果它是一个为应用程序创建表并操作其数据的生产脚本,它可能不应该由您自己的用户运行,而应该由某个专门的生产用户运行。

无论如何,如果您在自己的架构中运行脚本,则不需要显式引用它。只需删除对架构的引用,所有对象都将在运行它的用户下创建,这意味着任何用户都可以从自己的帐户运行它(假设它具有脚本所需的基本 DML/DDL 权限)。

【讨论】:

  • 我打算输入几乎完全相同的内容。 :)
  • 这是一个很好的答案,我已经接受了,谢谢。我看到没有指定架构的唯一潜在问题是它似乎使用默认架构,这不一定是登录架构。例如,我已将我的默认架构更改为我自己的 USER1 架构以外的其他内容,如果我没有在我的脚本中指定 USER1 架构,那么该脚本将不起作用(因为它看起来是我不使用的默认架构具有 DDL/DML 权限)。或者,至少,这就是 Toad for Oracle 中正在发生的事情。
猜你喜欢
  • 2019-10-02
  • 2019-06-30
  • 1970-01-01
  • 2017-07-24
  • 2019-01-21
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 2019-02-12
相关资源
最近更新 更多