oracle里登录权限,ora-01031问题登陆权限

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

启动Oracle时,还没有数据库可以用来验证密码。在“本地”系统上启动Oracle时(也就是说,不在网络上,而是从数据库实例所在的机器启动),Oracle会利用操作系统来执行这种认证。

安装Oracle时,会要求完成安装的人指定管理员“组”。在UNIX/Linux上,这个组一般默认为DBA,在Windows上则默认为OSDBA。不过,也可以是平台上任何合法的组名。这个组很“特殊”,因为这个组中的任何用户都可以作为SYSDBA连接Oracle ,而无需指定用户名或密码。例如,在安装Oracle 10g Release 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用户,再重复同样的过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值