解决10g上 非本机SQLPLUS conn as sysdba出现ORA-01031: insufficient privileges问题
解决10g上 非本机SQLPLUS conn as sysdba出现ORA-01031: insufficient privileges问题
这个多半是密码文件的问题
本机可以通过验证但是非本机就不行,是因为本地的话,不会check密码文件,而安全性对异地登录的(通过SID)登录要验证密码文件
首先查看
select * from v$pwfile_user;
---应该没有记录,说明还没有SYS的密码文件。
使用密码文件orapwd 命令
orapwd -c file=”$ORACLE_HOME/dbs/orapwd$ORACLE_SID” entity=5 password=changeoninstall
再次查看 v$pwfile_user 这时候有一条记录了
grant sysdba to system.
在查看v$pwfile_user system的记录也进去了
现在可以以sys和system在异地用sysdba登录了,
本人问题分析
由于自己通过手动修改过sid所以sid修改,没有同步修改原来的orapw$Oracle_SID文件名到新的SID,所以出现问题,重新生成orapw文件就解决。
备注:
1 sqlplus /nolog,conn /as sysdba 之所以能够登录,在于oracle登录时的身份认证方式。可以试一下这个:sqlplus /nolog,conn abcd/sss as sysdba,你发现也能够登录成功。
2 oracle在登录时,有三种身份认证方式:操作系统身份认证、密码文件认证、数据库认证。而conn /as sysdba是属于操作系统认证。
为什么这样说呢?你当前电脑开机时登录的用户,也就是进入操作系统的用户,例如是gooooal,它在你电脑的ora_dba组中。
可以在“我的电脑”单击右键,找到“管理”,选择“本地用户和组”,发现有一个组叫“ora_dba”,双击它,看到成员列表中有“gooooal”。
也就是在conn /as sysdba,oracle会进行操作系统验证,发现你当前登录的用户就属于ora_dba组,因此才可以登录成功。
你可以把ora_dba组中的“gooooal”用户删除,再conn /as sysdba,就发现进不去了。
3 密码文件验证可以查阅相关资料,百度oracle的身份验证方式,就可以查到相关资料。
4 其实在linux或unix环境下,安装oracle是要设置很多东西的,比如用户和用户组的设置等,不像在windows下,安装傻瓜化了。
5 关于安全性,如果将oracle安装在本地,其实你本地就是oracle服务器,所以权限高一些。你用哪个用户来启动oracle实例?哪个用户来mount数据库?哪个用户来打开数据库?从而才能进行之后的select等sql操作?
在oracle实例等还没有启动的时候,oracle数据库里面建的用户肯定是不能使用的。所以才会有操作系统身份验证。用这个用户,来启动oracle实例
、转载数据库等。之后才能做oracle表的增删改查。