概述
netca的功能是配置网络相关服务,其中最重要的就是监听和网络服务名称配置(tnsnames.ora)
数据库安装完成后,发现没有配置listener。
$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 06-SEP-2019 06:10:41
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
虽然不影响OS认证,但网络登录就不行了。例如:
# OS authentication OK
$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Fri Sep 6 06:11:29 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
# easy connect FAILED
$ sqlplus sys/Welcome1@127.0.0.1:1521/orcl as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Fri Sep 6 06:12:04 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-12541: TNS:no listener
Enter user-name:
监听(listener)的配置
图形方式
以下用netca GUI配置:
默认名称为LISTENER:
协议为TCP:
默认端口为1521:
在上面这步,如果报端口已使用,有可能是主机解析配置不正确:
例如以下是主机解析文件,出错时的配置被注释了,改为最后那行就通过了:
$ cat /etc/hosts
#127.0.0.1 ol7-vagrant ol7-vagrant
10.0.2.15 ol7-vagrant
完成:
以下为安装日志:
[oracle@ol7-vagrant admin]$ netca
Oracle Net Services Configuration:
Configuring Listener:LISTENER
Listener configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/u01/app/oracle/product/12.2.0.1/dbhome_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Oracle Net Services configuration successful. The exit code is 0
配置完后监听自动启动:
$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 06-SEP-2019 06:30:20
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol7-vagrant)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 06-SEP-2019 06:26:03
Uptime 0 days 0 hr. 4 min. 16 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/ol7-vagrant/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol7-vagrant)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "91dd388726f468cde0530100007f7576" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclpdb" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
配置文件如下:
$ cd $ORACLE_HOME/network/admin
$ ls
listener.ora samples shrept.lst
[oracle@ol7-vagrant admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ol7-vagrant)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
此时easy connect成功了:
sqlplus sys/Welcome1@127.0.0.1:1521/orcl as sysdba
静默方式
$ netca -help
Usage: netca [-silent] {<command> <options>}
Perform network configuration by specifying the following arguments:
[-silent]
-responsefile <Response file name>]
[-local {Perform configuration on only local node}]
-instype <typical|custom>
[-listener <Listener name (only for custom install)>]
[-lisport <TCP/IP port number>]
[-lps <Starting TCP/IP port number (only for typical install)>]
[-lpe <Ending TCP/IP port number (only for typical install)>]
[-netnum <Network resource number (only for RAC)>]
[-nostartlsnr {Do not start listener}]
[-crsupgrade {Upgrade default listener from lower version database home to Grid Infrastructure home (only for RAC)}]
[-inscomp <Comma separated list of installed components>]
[-insprtcl <Comma separated list of installed protocols>]
[-orahome <Oracle home>]
[-orahnam <Oracle home name>]
[-log <Log file name>]
[-h|-help {Print usage}]
[-listenerparameters {Comma separated list of the form parameter=value to specify the desired parameters for the selected listener}]
首先用netca GUI删除之前建立的监听。
$ netca
Oracle Net Services Configuration:
Stopping Oracle Net Listener:
Running Listener Control:
/u01/app/oracle/product/12.2.0.1/dbhome_1/bin/lsnrctl stop LISTENER
Listener Control complete.
Listener stopped successfully.
Deleted listener: LISTENER
Oracle Net Services configuration successful. The exit code is 0
然后找一个示例响应文件:
$ cd $ORACLE_HOME
$ find . -name *.rsp
./install/response/db_2019-09-05_05-26-52AM.rsp
./inventory/response/oracle.server_EE.rsp
./inventory/response/db_install.rsp
./assistants/dbca/dbca.rsp
./assistants/netca/netca.rsp
./network/install/netca_typ.rsp
./network/install/netca_clt.rsp
./rdbms/admin/cdb_cloud/rsp/netca.rsp
./rdbms/admin/cdb_cloud/rsp/db.rsp
静默方式安装:
$ netca -silent -responsefile $ORACLE_HOME/network/install/netca_typ.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /u01/app/oracle/product/12.2.0.1/dbhome_1/network/install/netca_typ.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/u01/app/oracle/product/12.2.0.1/dbhome_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
监听启动后,需稍微一等,数据库就会注册上来,然后就可以sqlplus连接了。
网络服务名配置(tnsnames.ora)
netca还可以配置网络服务名,是用于客户端的解析,为listener.ora是用于服务器端的。
实际就是配置tnsnames.ora中的条目,就不赘述了。
以下为生成的配置文件:
$ cd $ORACLE_HOME/network/admin
$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0.1/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ol7-vagrant)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
定义了网络服务后。连接串可以简化:
# 之前
$ sqlplus sys/Welcome1@127.0.0.1:1521/orcl as sysdba
# 之后
$ sqlplus sys/Welcome1@orcl as sysdba
参考
- https://oracle-base.com/articles/misc/oracle-network-configuration
- https://sort.veritas.com/public/documents/ccser/5.2/windowsandunix/productguides/html/ccer_install/ch03s06.htm