sqlplus /as sysdba 连补上,ora-01031的解决方法:
(1)检查sqlnet.ora是否包含这句话:SQLNET.AUTHENTICATION_SERVICES=(NTS),没有加上。
(2)检查登录的windows用户(administrator或安装oracle时候使用的用户)是不是包含在ORA_DBA组中,域用户没有连上服务器时就可能出现这种现象。
(3)要保证remote_login_passwordfile 参数=EXCLUSIVE.
(4)看看是否需要使用orapassw生成口令文件.
0.select instance_name from v$instance;查看oracle实例名
1.检查系统参数 SQL>show parameter password (alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile)
2.select * from v$pwfile_users; 返会为空则无dba权限
3.grant sysdba to sys.
4.建立password文件 (以PWD+SID,区分大小写) (orapwd file="$ORACLE_HOME/database/PWDorcl.ora" password=sys entries=10)
原理: 之所以采用密码认证文件的方式来存放sys用户的口令,是因为sys用户要负责建库、启动数据库、关闭数据库等特殊任务,把以sys用户的中令单独存放于口令文件中,这样数据库末打开时也能进行口令验证。
基于这样的原理,我们可以在忘记SYS密码的情况下通过重建PWD文件重新设置SYS密码。
我采用如下步骤:
1.确定原有PWD+SID.ora的密码文件和路径,找到并删除。
2.在路径下新建一个PWD+SID.ora的密码文件
3.进入CMD,输入 orapwd file=%oracle_home%/database/PWD+sid.ora password=sys 重新设置SYS密码为sys ,此外可以跟参数entries来指定数据库拥用DBA权限的用户的个数,
如:orapwd file=%oracle_home%/database/PWD+sid.ora password=sys entries=2则指定拥有DBA 权限的用户数为2,还有一个参数force定义了是否覆盖当前文件。重建密码文件会清除系统内除了sys用户以外所有sysdba用户的密码