1、启动例程时,系统会从初始化参数文件中读取有关监听程序的初始化参数,PMON 通过该文件向监听程序注册信息。如果例程启动时监听程序尚未运行(即最好是先启监听,再启数据库),PMON将不向监听程序注册信息。PMON 将继续尝试与监听程序建立联系(即数据库启动后,再启动监听的话,PMON进程还是会在后来自动注册到监听器上。
2、 Oracle系统进程注册上去的,某些系统进程会注册一个特别的service name到listener上,用于进程之间相互的通讯之用,比如上面的orcl_XPT.mycompany
3、 当监听中的端口为1521,但实例没有启动起来,在监听的文件中没有任何实例的信息,这时在启动实例,实例的服务会动态的注册在监听中
当实例启动后,
这时客户端得tnsnames文件中的端口也为1521,可以连接。
2、当实例先启动,但监听中没有实例的信息,实例的端口号为1521,这时实例是关闭状态,然后启动监听服务,一开始没有实例的信息
等几十秒后,实例的信息出现,为动态信息,pmon
3、 当监听文件中设置了global_dbname,端口号为1521,先启动监听器,然后启动实例
然后可以连接,实例设置的tnsnames中的端口为1521
4、 实例先启动,监听后启动(实例1521,监听中有global_dbname,端口也为1521),在启动监听的时,静态启动了对应的实例
5、动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),
如果listener的端口为1522,并且监听中没有global_dbname,那么实例无论是先启动,还是后启动,是不会动态注册到监听器的,如果此时连接是没有监听的
6、 当客户端得为1522端口,listener.ora中实例也为1522端口,并且有有设置的global_dbname,设置,先启动实例,然后启动监听,监听器启动时,静态注册了实例。
7、 Listener中没有global_name,但监听中有两个端口,1511,1522,客户端为1522
先启动实例,再启动监听
两个端口都启动
一会后,
实例动态注册到了1521,连接
连接成功。
8、 当客户端为1522,监听的listener的端口为1522,1521 ,监听器没有global_dbname,先启动实例再启动监听,动态注册,但可以连接(有疑问,动态监听端口为1521,怎么1522也能连接呢)