Chinaunix首页 | 论坛 | 博客
  • 博客访问: 599274
  • 博文数量: 248
  • 博客积分: 52
  • 博客等级: 民兵
  • 技术积分: 1028
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-23 12:05
文章分类

全部博文(248)

文章存档

2016年(7)

2013年(241)

分类: LINUX

2013-04-09 04:43:50

    这个问题从我当时来公司、开始学习HA的时候就碰到过,oracle的mon-agent总是说监控失败,当时记得问题处在tnsname里面,所以用netca配了一下“local net server name”搞定了。为什么搞定,当时也没有太清楚,只知道里面需要将原来的本机名改为浮动ip,大概是说“只有改成浮动ip才能两侧都正常”。
    后来随着多次遇到oracle问题,所以请教了,才彻底明白listener和tnsnames的区别。
    listener(侦听):数据库启动之后,1521端口没有开,只有用“lsnrctl start”启动侦听之后,1521端口才打开,从外面才可以使用oracle。这样解释比较明了吧?listener使用的配置文件是$ORACLE_HOME/network/admin/listener.ora,这里面有侦听的ip地址(或主机名)。默认是本机的主机名,做双机的时候,要改成浮动ip。
    tnsnames(local net server name):这是针对客户端来说的,tnsname.ora里面主要是定义了一个tnsname,默认是orcl,可以自己修改,这个选项后面跟着oracle数据库的IP地址或者主机名。这样又形成了一个链。HAoramon里面用-d置顶了orcl就是tnsname.ora文件中的rocl,这是对应的。客户端是否能够连上数据库可以sqlplus system/abc123@orcl这样来判断是否tnsname设置正确。@后面这个orcl也是道tnsname.ora里面找orcl字段,然后从此字段后面的IP地址链接到数据库。

    终于彻底闹明白怎么回事了。但是后来实施HA监控oracle的时候再没有出现过问题(当然都是我去了之后,数据库已经装好了,可能经过了配置吧)。但是昨天在方正奥德却又遇到了oracle的问题。
    HA的agent监控oracle报错

ORA-12514: TNS:listener does not currently know of service requested in connect


    这个问题,让我很是郁闷,不过我有印象以前碰到过,而且知道怎么解决。下面是以前的一篇文章提到的:

    以为好了,结果又报错,ORA-12514:TNS:listener does not currently know of server requested in connect descrīptor,后来修改listener.ora解决了。此文件里面添加的内容见下面粗体。

# listener.ora Network Configuration File: /data/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /data/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /data/app/oracle/product/10.2.0/db_1)
(SID_NAME = orcl)
)
)

LISTENER =
(DEscrīptION_LIST =
(DEscrīptION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 222.184.79.11)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)


    添加了红色加粗的部分,其中global_dbname、oracle_home、sid_name根据实际情况而定。我修改完之后,一切正常了。我就纳闷了,以前在陕西、新疆的时候,我感觉他们应该没有修改过这些东西啊?为什么他们那里配置HA就正常呢?另外添加的部分为什么这么添加呢?
    今天找到了答案,当然是在一个测试环境里面,昨天的现象重现了。这也说明一个问题:其他时候实施HA监控oracle正常,肯定是有人修改了listener.ora文件了。
    oracle用户执行netmgr打开如下窗口,点击“LISTENER”──“Database Services”,默认空,需要点击“Add Database”添加一个新的“Database1”,里面输入的内容如下图所示,其中蓝色的三个,是上面listener.ora文件中对应的global_dbname、oracle_home、sid_name,这是必须的。添加完毕之后,会在$ORACLE_HOME/network/admin/listener.ora文件中生成那三行,这样,就可以实现侦听侦听orcl这个sid的数据库了。



阅读(349) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~