【发布时间】:2014-01-04 16:32:03
【问题描述】:
我们在不同的数据库下有许多模式。我没有 DBA 权限。我确实有权登录模式和更改密码。我们会在六个月内更改密码。目前,这是一个手动且耗时的过程。即登录到数据库下的每个模式并使用“密码”命令更改密码。当我更改密码时,我有两个文件 - 当前密码和新密码。
我登录到每个 schema@database 并发出以下命令 –
alter user schema_name identified by new_password replace old_password;
记住我没有 DBA 权限;我只能使用用户名和密码登录到架构。
我考虑过创建 shell 脚本并使用 shell 脚本中的“expect”。虽然首先试图找出是否有更简单的方法。我想知道是否有从 SQL*Plus 或 PL/SQL 执行此操作的简单方法?
【问题讨论】:
-
让具有 DBA 权限的人执行此任务或授予您必要的权限。这是他们的工作,强迫其他人在没有必要特权的情况下这样做是荒谬的。是的,你可以用代码做一些事情,脚本语言可能比 PL/SQL 更简单,但是当有一个更简单的解决方案时,你为什么要付出所有努力呢?
-
您可以使用命令
sqlplus schema/password@database。在 SQLplus 中,您可以使用conn schema/password@database。也许这会有所帮助。 -
感谢 Wernfried。 DBA 表示,更改密码是各个模式所有者的责任。我确实有权更改可以登录的模式的密码。我必须使用“由 new_password 识别的更改用户 schema_name 替换 old_password;”命令。这很耗时,因为我必须为 60 多个模式执行此操作,并且每一行都放置适当的旧密码和新密码。此外,每个模式的密码也不同,因此它变得非常劳动密集型工作,并且必须对旧/新密码进行大量剪切和粘贴。