監聽分爲動態註冊和靜態註冊
動態註冊:
oracle實例啓動之後通過pmon進程實時的把實例狀態和參數傳遞給listener,動態註冊可以不需要listener.ora文件和tnsnames.ora文件,數據庫一定在開啓的狀態
啓動數據庫:
[oracle@up admin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Oct 30 20:30:14 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 409194496 bytes
Fixed Size 2213856 bytes
Variable Size 293603360 bytes
Database Buffers 104857600 bytes
Redo Buffers 8519680 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@up admin]$
查看監聽配置文件所在的目錄,沒有listener和tnsnames文件
[oracle@up admin]$ pwd
/u01/app/oracle/product/11.2.0/network/admin
[oracle@up admin]$ ls
listener.ora.old samples shrept.lst sqlnet.ora tnsnames.ora.old
啓動監聽:
[oracle@up admin]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 30-OCT-2015 20:32:41
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /u01/app/oracle/product/11.2.0/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Log messages written to /u01/app/oracle/diag/tnslsnr/up/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=up.oracle.com)(PORT=1521)))
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 30-OCT-2015 20:32:42
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/diag/tnslsnr/up/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=up.oracle.com)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@up admin]$
然後在客戶端登錄
[oracle@up admin]$ sqlplus scott/[email protected]/orcl
SQL*Plus: Release 11.2.0.1.0 Production on Fri Oct 30 21:21:29 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
登錄成功。
靜態註冊
靜態註冊listener不知道數據庫的狀態,根據listener文件裏的配置來設置監聽
listener.ora文件內容如下:
[oracle@up admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/network/admin/listener.ora
# Generated by Oracle configuration tools.
#LISTENER =
# (DESCRIPTION_LIST =
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
# (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.231.3)(PORT = 1521))
# )
# )
#ADR_BASE_LISTENER = /u01/app/oracle
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = oracle)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0)
(SID_NAME = oracle)
)
(SID_DESC =
(GLOBAL_DBNAME = ora11g)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0)
(SID_NAME = oracle)
)
)
listener文件中
global_dbname表示對外提供的服務名,需和tnsnames.ora文件中SERVICE_NAME的值一樣
ORACLE_HOME表示數據庫所在的位置
SID_NAME表示數據庫的SID
我的listener文件中sid爲orcl的數據庫向外提供了兩個服務名,oracle和ora11g
客戶端登錄時可以用oracle,也可以用ora11g
tnsnames.ora文件內容如下:
[oracle@up admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.231.3)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle)
)
)
ORA11G =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.231.3)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora11g)
)
)
tnsname文件中
HOST表示數據庫服務器的IP地址,或者數據庫服務器的主機名
端口號可以自己設定,但需要在數據庫中修改數據庫裏的參數,默認爲1521
SERVICE_NAME的值必須和listener文件裏GLOBAL_DBNAME的值一致
啓動監聽
[oracle@up admin]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 30-OCT-2015 22:46:30
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /u01/app/oracle/product/11.2.0/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/up/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=up.oracle.com)(PORT=1521)))
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 30-OCT-2015 22:46:30
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/up/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=up.oracle.com)(PORT=1521)))
Services Summary...
Service "ora11g" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "oracle" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
出現有“Services ‘ora11g’ has 1 instance(s)......"這個信息時,表示監聽程序已經啓動成功了
使用客戶端登錄:
[oracle@up ~]$ sqlplus scott/[email protected]/oracle
SQL*Plus: Release 11.2.0.1.0 Production on Fri Oct 30 23:36:58 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
這是使用oracle登錄,然後使用ora11g登錄
[oracle@up ~]$ sqlplus scott/[email protected]/ora11g
SQL*Plus: Release 11.2.0.1.0 Production on Fri Oct 30 23:37:44 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
使用ora11g也登錄成功