对于一台Oracle服务器下,安装了多个实例,当执行sqlplus / as sysdba时,连接的是哪个实例呢?
其实,当执行sqlplus / as sysdba时,此时用户名和密码是可以随便输入的,也可以如现在这样为空,不输入。本质上在于此时验证的根本不是密码文件,而是通过操作系统进来的,这时候连接的数据库的SID由操作系统环境变量$ORACLE_SID决定,查看方式为echo V$ORACLE_SID.此SID的验证,可以在sqlplus / as sysdba进去后,执行数据库命令查看:select t.instance_name from v$instance t.
对于此SID对应的数据库的更详细的环境信息, 可以在$ORACLE_HOME/network/admin/tnsnames.ora里进行查看。
当Oracle数据库的sys用户密码忘记的时候,可以通过操作系方式:sqlplus / as sysdba进入数据库,然后执行alter user sys identified by xxx来修改sys用户密码。
对于执行sqlplus / as sysdba,,如oracle用户可以执行此命令,而其他普通用户执行此命令时,会报权限不足的错误。
对于$ORACLE_SID值的修改,bash shell模式下,在.bash_profile文件里,加上export ORACLE_SID=xxx,然后使得修改生效:source .bash_profile即可。这样sqlplus / as sysdba,连接的就是.bash_profile文件里配置的$ORACLE_SID的值。
相关阅读:
rlwrap - 解决Linux下SQLPLUS退格、上翻键乱码问题
SQLPLUS spool 到动态日志文件名
Oracle SQLPLUS提示符设置
通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度