上午的时候抽时间做了一个测试,并再一次证明service_name,instance_name以及db_domain在我们参数文件中的重要性,由于实验步骤较多,没有一一记录下来,下面总结一段文字用于备忘:
init.ora 中的instance_name是可以设置的,这个大家都知道是没有错误的,但是这个和我们ORACLE_SID又有什么区别呢?其实还是有一些区别的,ORACLE_SID就是系统表示符,这个环境变量就是要告诉OS,我要读取那个init.ora文件或者spfile来启动我的Oracle instance,比如set ORACLE_SID=mylife,这个时候当我连入Oracle后,运行startup,那么Oracle就会寻找spfilemylife.ora或者initmylife.ora这样的参数文件,并启动我的instance,在数据库成功open后,我们可以通过select instance_name from v$instance来观察这个已经记录的SID,这个时候我们也可以show parameter instance_name来观察这个值,没错都是mylife,一般来讲,我们启动instance所加载的pfile或者spfile中也记录了一个instance_name这个参数,但是这个参数一般没有显示的列出,因此我们可以手动的去加上这个参数或者修改这个参数,把这个参数的值改为和mylife不相同的一个值mylove,这个时候再重新启动数据库,会发现show parameter和select instance_name from v$instance的方式有两个不同的值分别是mylove和mylife,如果我们的tnsnames.ora中的文件是以sid方式来寻找服务,那么这个sid 的值就不是mylife了,而要改为mylove.恩,大体上就是这个意思。还没有深入研究太多,对于大多数用户来讲,理解这些就足够了。
再说一下service_name,如果我们的参数文件中记录了db_domain比如是cn.ibm.com,那么service_name默认就是db_name+db_domain,但是我们完全可以修改这个值,原先数据库的service_name=icmnlsdb.cn.ibm.com,现在比如我在pfile中显示的指定service_names=abc,重启database后,这个service_name就变为了abc,而不是先前的icmnlsdb.cn.ibm.com了,那么在tnsnames.ora中的service_name列,我就要指定这个值为abc+db_domain.注意不是service_name+db_domain,因为我的service_name在修改后是不带domain标识的,那么如果db_domain为空的话,tnsnames.ora文件中的service_name就直接可以写为abc了。大体就是这个意思,解释的有点饶,但是总算可以从这条路中走出来了。
最后一点,lsnrctl status我们随时观察一下listener的状态,看看他到底有什么变化。很有意思的。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12361284/viewspace-141152/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12361284/viewspace-141152/