首页 > 编程知识 正文

oracle赋予sysdba权限,oracle登录用户名或密码无效

时间:2023-05-04 03:01:34 阅读:26613 作者:2655

密码文件(password file )是一个可选文件,允许远程SYSDBA或管理员访问数据库。

启动Oracle时,没有可用于验证密码的数据库。 在“本地”系统上启动Oracle时,Oracle将使用操作系统执行此验证。 这意味着从数据库实例所在的计算机启动Oracle,而不是从网络启动。

安装Oracle时,系统会提示完成安装的人指定管理员“组”。 在UNIX/Linux上,此组通常默认为DBA,在Windows上默认为OSDBA。 但是,它可以是平台上的任何合法组名。 此组是“特殊”,因为您可以以SYSDBA身份连接到Oracle,而无需指定用户名或密码。 例如,安装Oracle10g发行版1时指定了ora10g组。 ora10g组中的用户无需用户名/密码即可连接。

这是可能的。 我成功连接到了Oracle。 现在,您可以启动、关闭此数据库,并完成所需的管理任务。 但是,如果想从另一台机器通过网络进行这些操作呢? 在这种情况下,您试图使用@tns-connect-string进行连接。 但这将失败:

在网络上,对SYSDBA的操作系统验证不再起作用。 将非常不安全的REMOTE_ OS_AUTHENT参数设置为TRUE也不例外。 因此,操作系统认证是不可能的。 如上所述,如果您想启动并装载实例并打开数据库,则无法从中查找验证详细信息,因为根据定义,连接的另一端实际上是“还没有数据库”。 这是鸡生蛋还是蛋生鸡的问题。 因此,密码文件“诞生”。 密码文件包含与可以通过网络远程验证为SYSDBA的用户相对应的用户名和密码列表。 Oracle需要使用此文件对用户进行身份验证,而不是数据库中存储的常规密码列表。

修正这种情况。 首先,在本地启动数据库并设置REMOTE_LOGIN_PASSWORDFILE。 默认值为NONE,表示没有密码文件,没有远程SYSDBA登录。 此参数还有两种设置:“SHARED多个数据库可以使用相同的密码文件”和“只能使用EXCLUSIVE两个数据库指定的密码文件”。 在此设定为EXCLUSIVE。 这是因为此密码文件仅用于一个数据库(这也是常见的用法)。

在实例启动和运行时,不能动态更改此设置,因此必须重新启动该实例才能生效。 以下过程使用UNIX和Windows平台上的命令行工具orapwd创建并填写此初始密码文件。

在此:

file——密码文件名(必填)。

password——SYS密码(必填)。

entries——DBA和操作符的最大数量(可选)。

force——是否复盖现有文件(可选)。

等号(=)两侧没有空格。

我们使用的命令如下

对我来说,这将创建一个名为orapwora10g的密码文件。 (我的ORACLE_SID是ora10g。

这是大多数UNIX平台上密码文件的命名约定。 有关在$ORACLE_HOME/dbs目录中的每个平台上命名密码文件的信息,请参阅《安装/操作系统管理员指南》。 在Windows上,文件名为PW%ORACLE_SID%.ora,位于%ORACLE_HOME%database目录中。

此文件中当前只有一个用户SYS。 数据库中有其他SYSDBA帐户,但在密码文件中没有。 但是,基于上述设置,我们可以首次以SYSDBA身份通过网络连接到Oracle。

我们通过了认证,所以登录成功了。 现在可以使用SYSDBA帐户成功启动、关闭和远程管理此数据库。 接下来,我们来看看另一个用户OPS$TKYTE。 这已经是SYSDBA帐户,但已授予SYSDBA。 远程连接还不行。

因为OPS$TKYTE还不在密码文件中。 要将OPS$TKYTE放入密码文件中,必须重新授予帐户SYSDBA。

在密码文件中创建了一个条目,Oracle现在可以保持密码的“同步”。 如果OPS$TKYTE更改密码,则原始密码无法完成远程SYSDBA连接,并且无法使用新密码启动SYSDBA连接。

对密码文件中没有的其他SYSDBA用户重复同样的步骤。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。