一、Oracle11g至少启动的服务
1、如果通过网络访问数据库服务器,至少要启动OracleOraDb11g_home1TNSListener和OracleServiceORCL服务。
2、如果本地访问数据库服务器,至少要启动OracleServiceORCL服务。
二、网络配置:
1、服务器端监听控制:lsnrctl start|stop| status
2、图形界面配置监听:netca
3、编辑文件方式配置监听:编辑$ORACLE_HOME\NETWORK\ADMIN\listener.ora文件。
三、oracle 服务网络配置文件:
1、sqlnet.ora
<1>SQLNET.AUTHENTICATION_SERVICES(sys本地登录的区别)
(1)当用户登录到操作系统后,如果进而允许此用户登录数据库系统(sqlplus / as sysdba以sys权限登录,可以不用输入密码),则需要在sqlnet.ora中设置SQLNET.AUTHENTICATION_SERVICES= (NTS);
(2)如果设置为SQLNET.AUTHENTICATION_SERVICES= (NONE),则不允许登录到数据库系统中(执行sqlplus / as sysdba以sys权限登录,必须输入密码)
注:在11g新版本11.2版本中,sqlnet.ora在默认位置($ORACLE_HOME\NETWORK\ADMIN)已经没有了,可以从$ORACLE_HOME\NETWORK\ADMIN\samples取过来,设置SQLNET.AUTHENTICATION_SERVICES参数的值即可生效
<2>NAMES.DIRECTORY_PATH=(TNSNAMES,hostname) 客户端连接影响。客户端连接服务器的简单连接方式,带IP地址,就可以直接访问oracle服务端
(1)简单连接方式:EZCONNECT或hostname(类似sqlplus scott/scott@172.18.1.110:1521/orcl的连接方式,不需要客户端进行任何配置。)
此处的orcl代表的是实例名,
如果删除上面的hostname或ezcoonect(版本不同,参数不同),则无法使用这种简单方式连接外部的oracle服务
(2)TNSNAME,这个参数,表示必须要在客户端配置tnsnames.ora才可以进行访问
在此种方式下,需要配置tnsnames.ora才可以连接。
2、listener.ora
一个服务可以有多个监听,1521,1522,1523等。
# listener.ora Network Configuration File: /data/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) #用于监听tcp/ip过来的请求
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) #ORACLE调用C/C++/JAVA等提供的外部过程、函数
)
)
ADR_BASE_LISTENER = /data/u01/app/oracle
3、tnsnames.ora
tnsnames.ora的配置
使用客户端连接方式:上述的orcl和test都是自定义的服务代表名称,此处@后面的orcl或test,代表的是自定义服务名称
如果把tnsnames.ora中自定义服务orcl名称改为orcl33,如果在用orcl登录,就不可以登录了,如下图
更换orcl为orcl33,可以正常登录
四、Oracle 11g的服务名的含义:
1、服务名,
(1) 服务名:服务名就是连接字符串,可以通过它访问远程数据库,可以通过NETCA配置,配置时要指明远程数据库的主机名,网络协议用TCP/IP,配置完成后可以用如 下方式登陆:
(2)(以服务名orcl33为例) sqlplus username/password@orcl33,也就是:是对数据库的一个标识,通过服务名可访问数据库 。
(3)测试服务能否连接上:tnsping <服务名>; tnsping是Oracle提供的一个工具
(4)服务名和数据库,SID都是不一样的,它只是一个连接字符串
五、静态注册和动态注册
1、注册
注册就是将数据库作为一个服务注册到监听程序,在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务 。
2、静态注册
在listener.ora中,如果有类似如下的配置,就是静态注册。实现静态注册,需要使用netmgr进行,或手动在listener中添加。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = Orcl)
(ORACLE_HOME = D:\app\Administrator\product\11.1.0\db_1)
(SID_NAME = ORCL)
)
)
3、动态注册
在listener.ora中,如果有类似如下配置,就是动态注册。
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = a84p1l1x02meo8p)(PORT = 1521))
)
)
动态注册的一个特点就是不需要LISTENER.ORA文件。默认情况PMON 向LSNRCTL 注册TCP/IP协议,PORT 为1521。
也就是说,如果删除了listener.ora,oracle在启动监听时,也可以自动进行动态注册,不需要listener.ora
在使用netca创建监听时,会自动创建listener.ora,但没什么实际用处,其实也并非无用,如下
(1)如果只使用动态注册,listener.ora可以不用
(2)如果只使用静态注册,listener.ora必须要有
(3)如果考虑使用静态注册和静态注册同时存在,listener.ora必须要有,并且里面包含动态注册和静态注册的配置。
4、静态注册与动态注册最直接简单的判定
(1)使用lsnrctl status查看某个服务是静态注册、还是动态注册;
如果是UNKNOWN,表示静态注册;
如果是READY,表示动态注册。
(2)READY的服务是由PMON进程动态的注册到监听器,因此PMON进程所在的数据库一定处于打开状态,所以说这些服务名所对应的实例已经准备好(READY)接受用户的连接请求。
(3)UNKNOWN的服务是通过编辑listener.ora而静态注册的服务名,监听器并不知道该服务名对应的实例是否打开了,所以用UNKNOWN表示。
5、动态注册与静态注册的转换
方法一:直接编辑listener.ora文件,将静态注册的配置和动态注册的配置进行更换即可。如下图,我让静态和动态同时存在
启动监听效果:
6、动态注册与静态注册的使用场景
大部分情况下,动态注册和静态注册没什么区别,都可以使用。唯一不同场景是,oracle进行DataGuaid或ADG时,主机和备机需要进行静态注册,以便保持主机和备机的监听信息一致
六、Net Configuration Assistant(netca)和net manager(netmgr)的区别
1、netca 可以创建listener.ora、tnsnames.ora、sqlnet.ora
创建listener.ora,创建是动态注册的文件,但是动态注册用不到这个文件,所以这个功能没有任何意义。
创建sqlnet.ora
创建tnsnames.ora
2、netmanager
执行命令:[oracle@localhost admin]$ netmgr
netca
无法配置静态监听,可以配置listener.ora、tnsname.ora、sqlnet.ora
listener configuration:修改的是listener.ora文件
listener configuration有4个选项add\reconfigure\delete\rename
listener configuration(add\reconfigure):只能对监听配置HOST、PORT,静态注册的监听需要的ORACLE_HOME、SID_NAME无法配置,可以简单理解为无法配置静态监听
listener configuration(reconfigure\delete\rename),当前监听正在运行,会提示需要关闭监听,配置完成后(reconfigure\rename),监听会自动启动,(delete)则不会再启动
naming methods configuration:修改的是sqlnet.ora文件
naming methods configuration没有其他选项,只能修改sqlnet.ora文件的NAMES.DIRECTORY_PATH值
local net service name configuration:修改的是tnsname.ora文件
local net service name configuration有5个选项add\reconfigure\delete\rename\test
local net service name configuration(add\reconfigure):只能对tns配置SERVICE_NAME、HOST、PORT
netmgr
可以配置静态监听,可以配置listener.ora、tnsname.ora、sqlnet.ora
profile修改的是sqlnet.ora文件
naming可以修改NAMES.DIRECTORY_PATH值
general可以配置ADR_BASE路径、各种超时时间、允许或受限IP登录
oracle advanced security可以配置各种高级登录认证权限比如SQLNET.AUTHENTICATION_SERVICES值
service naming修改的是tnsname.ora文件
可以add、delete、reconfigure、rename
reconfigure可以配置SERVICE_NAME、HOST、PORT、INSTANCE_NAME、SERVER(SHARED or DEDICATED)、SID、GLOBAL_NAME、HS、LOAD_BALANCE、FAILOVER
listeners修改的是listener.ora文件
general parameters配置的是ADR_BASE_LISTENERNAME
listening location配置的是address如(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
database services配置的是静态监听信息,如SID_LIST_LISTENERNAME,只包含GLOBAL_DBNAME、ORACLE_HOME、SID_NAME
other services配置的也是静态监听信息,如SID_LIST_LISTENERNAME,还包含PROGRAM、ARGV0、ARGS、ENV
总结:
1、listener.ora 在动态注册中,是没有用的;在静态注册中需要增加配置
2、tnsnames.ora中,是本机连接外部连接时的配置文件,
(1)服务器本地,通过sqlplus / as sysdba或 sqlplus system/oracle登录,都是登录的本地,通过sqlnet.ora的简单连接NAMES.DIRECTORY_PATH=(TNSNAME,EZCONNECT)设置即可
(2)服务器通过tnsnames.ora登录,那么就需要:sqlplus system/oralce@test或sqlplus system/oralce@127.0.0.1/test或sqlplus system/oralce@10.110.48.11/test。其中test是自定义连接服务名,而不是SID。
test =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = kssyorclprd)
)
)
3、通过下列位置,可以跟踪tns监听信息:
$ORACLE_BASE/diag/tnslsnr/localhost/listener/alert/log.xml
4、如果本地服务,全局服务为orcl,SID为kssyorclprd,如果在服务器本地使用tnsnames连接,自定义连接名只能为orcl
sqlplus mesprd/Mes1qaz#EDC@127.0.0.1/orcl可以连接
但是
sqlplus
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = kssyorclprd)
)
)
文章评论