概述

Centos6.5 有两个数据库实例 orcl1 和 orcl2

需要都起来

关键:操作每个数据库实例之前设置ORACLE_SID变量

export ORACLE_SID=数据库实例

启动orcl1

使用oracle用户登录主机

[root@entel2 ~]# su - oracle
oracle@entel2:[/oracle]$export ORACLE_SID=orcl1
oracle@entel2:[/oracle]$sqlplus sys/system as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Sep 28 07:23:47 2016

Copyright (c) 1982, 2013, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>startup

无误即可。

启动orcl2

使用oracle用户登录主机

[root@entel2 ~]# su - oracle
oracle@entel2:[/oracle]$export ORACLE_SID=orcl2
oracle@entel2:[/oracle]$sqlplus sys/system as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Sep 28 07:23:47 2016

Copyright (c) 1982, 2013, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> startup
ORACLE instance started.

Total System Global Area 801701888 bytes
Fixed Size 2232640 bytes
Variable Size 318770880 bytes
Database Buffers 473956352 bytes
Redo Buffers 6742016 bytes
Database mounted.
Database opened.

Database opened.


监听启动

切到oracle用户

[root@entel2 ~]# su - oracle

查看监听状态

oracle@entel2:[/oracle]$lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 28-SEP-2016 07:25:02

Copyright (c) 1991, 2013, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.45.7.198)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 28-SEP-2016 06:06:16
Uptime 0 days 1 hr. 18 min. 46 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/product/112/network/admin/listener.ora
Listener Log File /oracle/diag/tnslsnr/entel2/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.45.7.198)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.123.1)(PORT=1521)))
Services Summary...
Service "orcl1" has 2 instance(s).
Instance "orcl1", status UNKNOWN, has 1 handler(s) for this service...
Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "orcl2" has 2 instance(s).
Instance "orcl2", status UNKNOWN, has 1 handler(s) for this service...
Instance "orcl2", status READY, has 1 handler(s) for this service...
The command completed successfully

启动/停止

lsnrctl start/stop

监听 UNKNOWN状态解释

实例状态为UNKNOWN值时表明此服务是静态注册的设置。这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,它才检查该实例是否存在。

动态注册的数据库通过状态信息中的状态READY或状态BLOCKED(对于一个备用数据库)来指明。不管关闭何时数据库,动态注册的数据库都会动态地从 监听器注销,而与之相关的信息将从状态列表中消失。这样,不管数据库是在运行还是已经关闭,监听器总是知道它的状态。该信息将被用于连接请求的回退(fallback)和负载平衡。

既然有动态监听为什么还要静态监听呢?原因如下:

  1.监听器不是最早启动,oracle实例先启动

  2.监听器重启

  3.oracle实例没有open

更加详细的解释请看Dave的博文 ​​Oracle Listener 动态注册 与 静态注册​