oracle包含
1、软件
2、数据库
3、实例
4、监听(listener)
监听的特点
可以独立启动,就是说,数据库没有启动,监听可以启动;数据库启动,监听也可以不启动;数据库启动,监听也启动
监听和数据库是独立分开的
数据库的整个网络结构
图解:
1、数据库有数据库的名字:dbname;实例有实例的名字:instancename;对整个数据库来说,还有一个名字:servername(跟后面的负载均衡有关);默认情况下,这三个名字是一样的,前两个的名字不能改,但是servername是可以改的
2、数据库启动,监听也启动了,这时候,pmonitor进程会做一件事:就是把实例的名字和servername自动告诉(自动注册)监听,这个是oracle自动完成的,
3、用户连接上数据库的时候,监听会启动一个端口号:1521,用户连接之后,监听会返回来问用户要连接哪个servername,然后根据servername就可以找到instancename,之后,实例就会起一个server process,同时把server process的地址告诉监听,然后监听把server process的地址告诉用户,用户直接通过server process连接实例,这时候实例会跟用户要用户名和密码,然后跟实例的用户名和密码进行对比,正确的话,连接就正式建立了,也就是客户端和实例之间就正式建立了一个连接,也就是建立了一个会话,客户端就可以访问数据库实例了
4、连接建立以后,这时候如果把监听关了,连接也在,连接也不会断开
监听只是负责用户(客户端)连接上数据库实例的,连接上之后,监听就没有意义
监听:
1、默认:1521端口启动以后配监听的时候,必须确认这个监听在哪个ip地址上,端口号是多少
2、监听是独立的
3、用于连接建立的
4、监听和实例之间有一个关系1、ip和端口2、连接哪个servername3、server process4、username/password5、用户发送SQL、PLSQL
使用sqlplus客户端连接数据库(网络连接):
sqlplus sysdb/oracle@192.168.56.1:1521/orcl --orcl:servername
手工配置监听
监听可能存在这么一个问题:pmonitor可能没有把instancename和servername那么好的注册到监听里,就导致用户连接数据库失败了,这时候,我们可以手工配置手工配置(静态注册)有这么一个特点:监听启动以后,监听里面就有了servername和instancename,就算实例没有启动,也会认为监听里面有servername和instancename当pmonitor自动注册不稳定的时候,我们可以手工配置一下servername和instancename
用户(客户端)连接数据库时候需要注意的几个点:
1、监听有没有启动了(监听在不在,就是ip和端口号在不在)
2、判断监听下面有没有servername和instancename,同时判断监听里面的servername和客户端要连接的servername是不是一致的
3、判断实例是否启动了
4、确认用户名和密码是否正确