1 解决办法
1.1 ORADIM方法
1. 确认控制面板的服务OracleStart<sid>已经启动。确认服务的login tab中的登陆用户名和密码正确。
2. 检查数据库启动选项,在DOS下执行:
ORADIM -H
3. 如果数据库启动选项选项不正确,修改相关参数,执行:
ORADIM -EDIT -SID <SID> -INTPWD <PASSWORD> -STARTMODE AUTO -PFILE <path\initSID.ora>
4. 正常关闭数据库:
set oracle_sid=SID
svrmgrxx
connect internal/<password>
shutdown immediate
5. 执行以下命令文件:
oracle_home\database\strt<sid>.cmd
6. 执行完毕后,检查 $ORACLE_HOME\database下的oradim.log
日志文件显示数据库正常启动,使用sqlplus等测试连接访问,如果访问成功说明问题已经解决。
7. 如果没有成功请重建strt<sid>.cmd,方法如下。
oradim80 -delete -sid SID
oradim80 -new -sid SID -intpwd <password> -startmode auto -pfile <path\initSID.ora>
1.2 注册表参数修改方法
在注册表hkey_local_machine/software/oracle/homexx (xx=home number) 下设置:
ORA_SID_AUTOSTART为true
ORA_SID_PFILE为pfile的全路径;
注意:以上参数中的SID要替换成实际使用数据库的SID,例如:数据库的SID为ORCL, 参数为ORA_ORCL_AUTOSTART
1.3 修改SQLNET.AUTHENTICATION_SERVICES
修改$ORACLE_HOME/network/admin/sqlnet.ora文件
将原有的:SQLNET.AUTHENTICATION_SERVICES= (NTS)
改为:SQLNET.AUTHENTICATION_SERVICES= (NONE)
或者直接注释:#SQLNET.AUTHENTICATION_SERVICES= (NTS)
这是一个解决办法,但也存在一些问题。
SQLNET.AUTHENTICATION_SERVICES设为NONE或者注释后,ORACLE不再使用操作系统认证,不再向域管理器确认登陆者的身份。当使用connect internal or connect / as sysdba登录时,可能会出现例如ORA-3113等问题。