Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5701445
  • 博文数量: 745
  • 博客积分: 10075
  • 博客等级: 上将
  • 技术积分: 7716
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-29 12:09
文章分类

全部博文(745)

文章存档

2019年(1)

2016年(1)

2010年(31)

2009年(88)

2008年(129)

2007年(155)

2006年(197)

2005年(143)

分类: Oracle

2009-09-14 23:45:03

前面那篇文章提到了在启动静态监听、将数据库启动到mount模式下以网络方式注册数据库,是比较顺利的一种情况,之前还遇到了一个比较困惑的问题,下面就来讨论一下这种情况。
 
之前在成功配置监听文件、TNS文件,也将数据库启动到了mount状态下,但死活就是无法通过网络方式注册到数据库,出现下面这个报错信息:
ORA-01031: insufficient privileges
提示没有足够的权限,有没有搞错?我是以sys用户登陆,sys不就具有最高权限么?而且密码并没有输入错误。仔细检查了listener.ora以及tnsnames.ora文件,确认没有任何问题。因为在另一个环境就是这样设置的。尝试查看一下拥有SYSDBA权限的用户:
SQL> select * from v$pwfile_users;
USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
no rows selected.
 
看到这里,问题比较明朗了,密码文件没有起到作用。因为通过网络注册数据库,是要读取密码文件的,而SYS是默认具有SYSDBA权限的,这里显示不出来,说明密码文件没有被成功读取,自然也就无法注册到数据库了。打个简单的比喻,小明在一次语文期末考试之前想要作弊,作弊的方式是通过花点银子去买一份答案,结果买到一份假答案,那考试自然是过不了关的了。此情此景,殊途同归。
 
回忆一下系统建库之后,默认生成了一个正确的密码文件,但是我手贱,把这个文件给删除了,重新创建了一个,并且命名为orapw10gstandby.ora。这个命名犯下两个错误,这两个错误也让我重新审视对密码文件规范化的认知程度。首先,密码文件是没有.ora后缀的;其次,后缀之前应该以标准的“orapwSID”方式命名。这样一来,我删除了这个错误命名的密码文件,重新建立密码文件:
orapwd file=/home/db/oracle/10g/dbs/orapwora password=oracle entries=10
 
重新在数据库中查询拥有SYSDBA的用户:
SQL> select * from v$pwfile_users;
USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE  TRUE
这不,又重新回来了,再检验通过网络注册数据库,一切正常,于是这个问题也算告一段落了。
之所以写这么长一篇,还是为了强调密码文件的重要性,往往我们忽视掉的地方恰恰是最值得重视的。
阅读(1688) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~