成为MySQL DBA后,再看ORACLE数据库(二、监听与连接)
一、监听器的启动
ORACLE启动完成后,可以通过sqlplus / as sysdba连接数据库,但是这个只是本地连接,无法通过tcp/ip远程访问数据库,这时候就要启动ORAClE的监听器。启动监听器的命令是lsnrctl start,启动成功后,可以观察到1521端口也随之监听,这时候就能通过ip加端口远程访问数据库了。在MySQL中没有监听器这个概念,本地和远程的连接主要通过用户来区分,root@localhost代表的是通过本地socket方式连接,root@ip代表的是通过tcp/ip连接。
二、两个配置文件
1. 客户端的tnsnames.ora文件
tnsnames.ora文件是在客户端配置的网络服务名文件,用于客户端连接oracle数据库,在$ORACLE_HOME/network/admin目录下。通过该文件中定义的service_name,就可以通过sqlplus或其他客户端工具通过服务名进行远程访问数据库。
2. 服务端的listener.ora文件
listener.ora文件是在数据库服务端配置的监听器配置文件,我配置的listener.ora文件中,主要有LISTENER信息,包含了监听的协议、地址以及端口等信息。这里,我们用的是动态注册,所谓动态注册是指当实例启动之后,由后台进程PMON在监听器中注册数据库服务信息。在动态注册机制下,将不再需要在listener.ora文件中定义服务名信息。使用动态注册,是由数据库实例主动向监听器注册,因此监听器可以知道数据库实例的状态,在RAC环境下,某个实例出现故障时,动态服务注册功能可以快速自动的failover客户端请求到其他实例。使用lsnrctl status可以查看监听器的状态,动态注册的服务名,由于监听器确切地知道实例的状态,所以正常状态通常显示为READY,而对于静态注册的服务名,则状态显示为UNKNOW。
三、Easy Connect方式
使用Easy Connect方式连接数据库,不需要配置tnsnames.ora文件,可以直接使用ip+端口+服务名连接数据库。而开启Easy Connect方式,需要在sqlnet.ora文件中设置NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT),这个是默认设置的。Easy Connect方式连接数据库简单方便,类似mysql -u -h -p这种连接串的形式。
四、监听器日志
监听器日志位于$ORACLE_BASE/diag/tnslsnr/host/listener/trace目录下,在ORACLE中遇到客户端与数据库连接异常时,除了需要检查客户端配置,数据库和监听器的状态,还需要排查监听器日志有无异常。