如果我禁用所有 Oracle 管理员帐户(sys、sysman..)并使用新的管理员帐户,是否会产生不良影响?我担心 Oracle 本身可能会使用此类默认管理员帐户进行处理?
谢谢。
答案1
您无法锁定/禁用 SYSDBA 帐户(例如 SYS),因为它们无法以相同的方式对数据库进行身份验证。下面是我针对授予 SYSDBA 权限的普通用户运行的一个小测试,然后锁定了该帐户。用户仍然可以以 SYSDBA 身份登录,只是不能以普通用户身份登录:
C:\>sqlplus test@testdb as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 26 10:14:42 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
C:\>sqlplus test@testdb
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 26 10:23:43 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password:
ERROR:
ORA-28000: the account is locked
Enter user-name:
C:\>
当然,如果我可以以 SYSDBA 用户身份进入,那么我就可以解锁我的帐户并再次以普通用户身份进入。
我不确定你为什么真的想这么做。这似乎不是一个好主意。如果你可以实际上锁定 SYSDBA 帐户,可能会导致数据库无法访问。除了 SYS 和 SYSTEM 之外,Oracle 在创建数据库时创建的所有帐户都默认被锁定。你想实现什么?
编辑:
这是 SYSDBA 可能被锁定的唯一场景:
- 删除实例的密码文件(通常是 pwd.ora
- 使您的 SQLNET.AUTHENTICATION_SERVICES= (NONE)(要求 SYSDBA 密码访问)
- 忘记你的 oracle DBA OS 账户密码,因此无法重新创建 pwd.ora 文件
- 忘记您的操作系统管理员密码,那么您就无法解锁或创建新的 DBA 帐户。
这种情况意味着你无论如何都完蛋了。它还假设你无法修改定义authentication_services参数的sqlnet.ora文件,否则你可以将其设置回NTS以允许OS身份验证(假设是Windows)。
答案2
您可以通过将 REMOTE_LOGIN_PASSWORDFILE 设置为 none 来阻止 sysdba 帐户远程登录。sysdba 用户只能在登录到运行数据库的计算机时使用“connect / as sysdba”进行身份验证。
但你还是得回答为什么要这么做。以及你所说的不良影响是什么意思。