由remote_login_passwordfile参数引发的问题

来源:互联网 发布:java实训学校 编辑:程序博客网 时间:2024/06/17 18:23
原文链接
 
修改remote_login_passwordfile=NONE导致数据库不能启动。
SQL> alter system set remote_login_passwordfile=NONE scope=spfile;
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
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
 
--默认是由SPFILE启动,所以报错。用PFILE启动数据库再创建SPFILE文件。
 
SQL> startup pfile=C:\oracle\ora92\database\INIToracsjh.ORA
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;
文件已创建。
 
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
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
数据库装载完毕。
数据库已经打开。
SQL> show parameter spfile;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      %ORACLE_HOME%\DATABASE\SPFILE%
                                                 ORACLE_SID%.ORA
 
--用SPFILE正常的启动数据库。
 
错误的修改了SPFILE文件参数导致数据库不能启动,怎样更正这样的误操作?网络上介绍的方法是编写一个PFILE文件,文件的内容指向SPFILE文件,然后把正确的参数值写在后面。这样后来写上去的参数值可以覆盖SPFILE里面的同名参数。其实用我上面的方法也是可以的。直接在DB不OPEN的情况下获得SPFILE的文本内容,然后将改错的参数修改过来,用PFILE启动数据库然后再次创建SPFILE文件。
0 0
原创粉丝点击