最近一套生产系统的rman备份软件报权限不足,导致备份失败,查看了下日志,报的是ORA-01031,这个备份脚本每天都在跑,也没有任何人动过system的权限啊。怎么可能报权限不足,回想了一下最近对机器做的操作,想到了前两天主备机进行过一次切换,而备份软件是用system从远程连接到db服务器上做rman备份的,我们都知道rman备份是需要sysdba权限的,想到了前两天复习的remote_login_passwordfile参数,会不会是password文件的问题?于是检查了下主备机的password文件,果然不一样:
原来主机password文件:
1 2 3 4 5 6 7 | Z[\] ORACLE Remote Password file INTERNAL A9204EF92C4A424F 0713746D8C0E71F8 SYSTEM E8B33401873762CE |
现在主机password文件:
1 2 3 4 5 | Z[\] ORACLE Remote Password file INTERNAL A9204EF92C4A424F 0713746D8C0E71F8 |
很清晰了现在主机的system用户没有sysdba权限。于是就会报权限不足错误,知道了原因,解决起来就简单了
可以直接授sysdba给system,最简单的办法是拷贝原来主机的password文件到现在主机。拷贝完成后:
1 2 3 4 5 6 | SQL> select * from v$pwfile_users; USERNAME SYSDB SYSOP ------------------------------ ----- ----- SYS TRUE TRUE SYSTEM TRUE FALSE |
这下再备份就没有问题了。
收获:这些看似很小的问题,其实还是平时工作的不注意,不细心,而等发生了,又往往不是很容易想到原因,所以平时要注意保持主备机的环境变量的一致,尤其是password文件,初始化参数文件,权限等等,以防切换的时候发生一些不该发生的错误。