原文链接
修改remote_login_passwordfile=NONE导致数据库不能启动。
SQL> alter system set remote_login_passwordfile=NONE scope=spfile;
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORA-01031: insufficient privileges
ORA-01031: insufficient privileges
--在sqlnet.ora文件中有一项:SQLNET.AUTHENTICATION_SERVICES=(NTS),我将这一行注释掉了。这个选项在WINDOWS和UNIX下作用是不同的。在WINDOWS下注释这个选项表示用ORACLE认证的方式连接数据库(用到了密码文件),不注释这个选项表示用OS认证的方式连接数据库。UNIX(AIX)下则相反。参数remote_login_passwordfile和SQLNET.AUTHENTICATION_SERVICES选项是紧密联系的。将remote_login_passwordfile设置为NONE且将SQLNET.AUTHENTICATION_SERVICES=(NTS)注释,数据库变为不可连接。启动实例的时候报没权限的错误。如果将SQLNET.AUTHENTICATION_SERVICES=(NTS)去掉注释变为OS认证的连接即使remote_login_passwordfile=NONE数据库还是可以进行远程连接的。
SQL> create pfile from spfile; --获得服务器参数文件的文本文件,然后修改回参数值。这个操作可以在数据库关闭的情况下进行。
SQL> create spfile from pfile;
create spfile from pfile
*
ERROR 位于第 1 行:
ORA-32002: cannot create SPFILE already being used by the instance
create spfile from pfile
*
ERROR 位于第 1 行:
ORA-32002: cannot create SPFILE already being used by the instance
--默认是由SPFILE启动,所以报错。用PFILE启动数据库再创建SPFILE文件。
SQL> startup pfile=C:\oracle\ora92\database\INIToracsjh.ORA
ORACLE 例程已经启动。
ORACLE 例程已经启动。
Total System Global Area 143727516 bytes
Fixed Size 453532 bytes
Variable Size 117440512 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> create spfile from pfile;
Fixed Size 453532 bytes
Variable Size 117440512 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> create spfile from pfile;
文件已创建。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 143727516 bytes
Fixed Size 453532 bytes
Variable Size 117440512 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
Fixed Size 453532 bytes
Variable Size 117440512 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string %ORACLE_HOME%\DATABASE\SPFILE%
ORACLE_SID%.ORA
------------------------------------ ----------- ------------------------------
spfile string %ORACLE_HOME%\DATABASE\SPFILE%
ORACLE_SID%.ORA
--用SPFILE正常的启动数据库。
错误的修改了SPFILE文件参数导致数据库不能启动,怎样更正这样的误操作?网络上介绍的方法是编写一个PFILE文件,文件的内容指向SPFILE文件,然后把正确的参数值写在后面。这样后来写上去的参数值可以覆盖SPFILE里面的同名参数。其实用我上面的方法也是可以的。直接在DB不OPEN的情况下获得SPFILE的文本内容,然后将改错的参数修改过来,用PFILE启动数据库然后再次创建SPFILE文件。