Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7314218
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: Oracle

2010-01-14 09:18:09

手工配置listener.ora【避免出现ORA-12514错误】

这次经历是由于在本机建立物理备用数据库时,需要对监听程序进行配置而来的.
环境为:winxp下oracle 10.2.0.1.0
监听程序的配置文件路径为%oracle_home%/network/admin/listener.ora
我的文件内容如下:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\ora10g)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = wolf.<域名>)(PORT = 1521))
    )
  )
因为域名涉及到其他公司的名称,在此不列出来,以<域名>代替,
<域名>的值可以在系统属性->计算机名 下,点击 更改 按钮,隶属于 域 下面获得.
由于要新增物理备用库的配置,所以需要在SID_LIST下添加SID_DESC的嵌套,来对物理备库进行监听.
SID_DESC:用来指明一个特定的数据库实例服务信息或者一个没有数据库的Oracle服务
SID_DESC 中允许使用如下参数:
1  ENVS
为监听程序指明一个环境变量来优先的执行一个专用服务器程序 或者以PROGRAM参数指定的执行          程序,需要注意的是 , Windows NT环境不支持envs这个参数
2  GLOBAL_DBNAME
用这个参数来识别数据库服务。
当处理一个客户端的连接请求时,监听程序尝试着将这个参数值与 SERVICE_NAME 参数匹配
如果客户端的连接符使用的是sid参数的值,那么监听程序不会试着去进行映射该值
这个参数的值在大多情况下都是由初始化文件中的DB_NAME与DB_DOMAIN参数组合而成,
但是也可以是任何有效的能够标识服务的其他值 。
3  ORACLE_HOME
用来指定oracle的产品目录
可以在命令行下用set | find /i "oracle_home"来获得该值
4  PROGRAM
指定服务运行程序名称
5  SID_NAME
指明实例的Oracle System Identifier (SID),可以从初始化参数中的INSTANCE_NAME获得

添加后的SID_DESC如下
(SID_DESC =
      (SID_NAME = phstandby)
      (ORACLE_HOME = d:\ora10g)
      (GLOBAL_DBNAME = phstandby)
    )
然后在%oracle_home%/network/admin/tnsnames.ora中添加
phstandby =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = wolf.<域名>(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = phstandby)
    )
  )
之后
lsnrctl    --监听程序命令
stop       --停止监听程序
start      --重新启动监听
exit       --退出监听
tnsping phstandby    --ok,
sqlplus /@phstandby as sysdba       --登录成功
抛砖引玉到此。
参考的文档是9i的,可见

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