继昨天手动创建一个数据库之后,今天想在这个数据库上做东西。在windows上远程连接服务器conn sys/*** as sysdba,报如下错误:
ORA-01031: insufficient privileges
打开控制台,连接OEM,以sys登录,显示用户名密码错误。以其他几个用户名访问,比如sysman,system,常规方式登录,可以进去。唯一的问题就是sys登录,而用户名密码完全正确,在本机上以oracle用户登录conn sys/*** 也可以正常登录。
仔细回想这个问题,为什么显示没权限,在远程和本机上竟然有如此差别,突然就想到了文件口令验证,select * from v$pwfile_users;结果返回空,这说明sys用户没有加进口令文件里,我在手动创建数据库时并没有创建。。。毕竟初学,很多都不知道。
于是上网查这个问题,果然有人也遇到这个问题,解决如下:
1.在oracle用户下用orapwd命令重建一个口令文件:$ orapwd file=@oraclehome/db_2/dbs/orapwmydemo password=*** entries=5 (password就是 sys的密码)
2.然后重启数据库:startup
3.select * from v$pwfile_users;
结果如下:
SQL> select * from v$pwfile_users; USERNAME SYSDB SYSOP ------------------------------ ----- ----- SYS TRUE TRUE
现在在OEM上,以及在windows下远程访问,都运行正常了。花了好一段时间才搞定,虽然挺累的,但是还是很高兴。