数据库环境变量和监听配置一例

1 问题背景
今天想打开数据库的归档模式,shutdown之后,sqlplus就连接不上数据库了。
使用 sqlplus sys/syspassword@orcl as sysdba 连接,一直报错TNS无法识别对应的标识符;使用 sqlplus / as sysdba 连接,一直弹出提示输入用户名,密码。
数据库是本地的,由于本地装了两个oracle,一个10G客户端,一个11G的DB,path中一直设置的是10G的 $ORACLE_HOMEBIN 路径,OS 平台是 Win7。
 
2 解决过程
2.1 换 sqlplus
既然使用10G的 sqlplus 连接不能使用 sqlplus / as sysdba 直接连接默认的数据库,那么我换成11G的DB自带的 sqlplus 来连,不是就可以了吗?想到这里我把环境变量中的 path 修改指向 11G的 sqlplus 位置,同时设置了 ORACLE_HOME / ORACLE_SID /ORACLE_BASE / TNS_ADMIN 这几个环境变量,具体如下:(TNS还是用10G的)
ORACLE_BASE=D:appusername
ORACLE_SID=orcl
ORACLE_HOME=D:appusernameproduct11.2.0dbhome_1
path=D:appusernameproduct11.2.0dbhome_1BIN
TNS_ADMIN=D:oracleproduct10.2.0client_1NETRORKADMIN
配置好之后,进入 cmd 界面,set 一下,查看都设置好了。sqlplus / as sysdba 正常进入。
 
2.2 配置静态监听
那么还有别的方法吗?把环境变量还原,尝试换一种方法。
一般本机的数据库可以直接使用 sqlplus / as sysdba 直接以通过 OS 认证,以 DBA 身份登录数据库。但是这里不行,因为这里的环境中有两个 oracle 软件,一个是 10G 的客户端,sqlplus 用的这个下面的,另一个是 11G 的数据库,本机建立的数据库在这个下面。别问我为什么有这种环境,我也不记得当初为什么这么装了。
既然走监听,那就按照远程启动数据库的情形来配置。
进入到10G下面的监听文件,配置一个静态监听进去,记得写好 oracle_sid,global_dbname。这里因为用10G下的监听文件,所以有一个 envs 指向11G下面的文件中。
数据库环境变量和监听配置一例
然后检查 10G的TNS 文件,有时候 service_name 后面有.oracle或者其他域名后缀,去掉一下。
监听文件和TNS文件中注意格式,个人机器上都有,这里我就不贴具体文件内容了。
数据库环境变量和监听配置一例
都配置好了之后,我们重启一下监听。然后查看监听状态。里面有一个 orcl 的库,状态 unknow,这个就是我们刚才配置的静态监听了。
再次使用 sqlplus sys/syspassword@orcl as sysdba ,正常进入了。
 
3 其他参考
在处理过程中,查到一些比较有意思的文章,附在下面。如果希望对监听有更多的了解,可以看一下: