1.专有链接
用户链接有专门的进程进行相应
user ----server process
2.共享链接 []
用户链接数据库时,没有服务进程相应,而将用户的信息放到调度里,而调度放到队列[队列]中
uesr ----dispater --[SAG] ----server ------data buffer ------|
3.监听程序工做原理
用户进程跟服务器能不能链接主要是去问咱们的监听
客户端程序------tnsnames.ora/本地命名解析文件
1.sqlplus sys/oracle@updb as sysdba //远程链接
b.去客户端验证用户名密码
c.经过服务器链接实例
2.sqlplus sys/oracle@ip:1521/service_names as sysdba
服务器端程序listener.ora
1.静态注册
将实例名/服务名写到了监听文件中
SID_DESC (实例名/服务名 oracle家目录 ....)
2.动态注册
由pmon 进程去动态注册 ,进程会每分钟扫描一次数据库的状态,有库打开就立马告诉监听该数据库须要被监听
alter system register; //手动注册,pmon也是去执行这条命令sql
lsnrctl status //查看监听状态
lsnrctl stop //停掉咱们的监听
ready : 动态注册
unknow: 静态注册
项目中通常使用静态监听,能够保证用户时时能够链接
一个数据库中只使用一个listener.ora
一个监听能够监听一个数据库,也可监听多个数据库
一个监听程序能够被多个实例监听 ----集群
监听的默认端口为:1521
4.如何配置监听
在grid 目录下面执行 netca 建立出来的为动态的监听 图形界面建立 ,监听文件会放到/opt/u01/grid/11g/nerwork/admin/listener.ora ,在哪一个文件下面执行就会建立到相应的文件目录下
add-->listener-->ipc--->1521--->no-->数据库
$netcavim
第一个选项是直接建一个服务器端的监听服务器
图形界面建好后,会在路径/opt/u01/oracle/11g/network/admin 下会生成一个listener.ora文件,记录咱们服务端的信息网络
vim listener.orasession
# listener.ora Network Configuration File: /opt/u01/oracle/11g/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER1 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = up12.up.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCPS)(HOST = up12.up.com)(PORT = 2484)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) ADR_BASE_LISTENER1 = /opt/u01/oracle ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER1=ON # line added by Agent
第二个选项是建一个客户到咱们要链接的服务器的解析,方便咱们链接远端的服务器oracle
也会在/opt/u01/oracle/11g/network/admin 路径下生成一个客户端的tnsnames.ora文件spa
vim tnsnames.ora //记录了咱们要访问的远端数据库的信息code
# tnsnames.ora Network Configuration File: /opt/u01/oracle/11g/network/admin/tnsnames.ora # Generated by Oracle configuration tools. ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.132)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl.wangzilong) ) )
netmgr 建立出来的为 静态的监听server
# listener.ora Network Configuration File: /opt/u01/oracle/11g/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = LISTENER)) ) ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER1 = ON SID_LIST_LISTENER1 = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = maxdb) (ORACLE_HOME = /opt/u01/oracle/11g) (SID_NAME = maxdb) ) ) ADR_BASE_LISTENER1 = /opt/u01/oracle
静态注册,监听两个库
lsnrctl
有参数的修改,必须重启监听
lsnrctl stop
lsnrctl start
tnsname.ora
5.监听程序的管理
11g之前 : lsnrtcl start
lsnrctl status
lsnrctl stop
lsnrctl reload
11g 之后---
srvctl start listener //只能启动监听名字为listener的监听
srvctl start listener -l listener1 //启动名字为listener1的监听
srvctl add listener -l listener1 //监听没有在grid文件里,加入到grid文件里进行管理
srvctl remove listener
lsnrctl start
show parameter service_name //查看服务名,若是为updba.com 通常走的专有链接
SQL> show parameter service_name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ service_names string maxdb.up.com
select service_name ,username,server from v$session //service 为dedicated 表示是专有链接
shared 是sys用户的共享链接,none是普通用户的共享链接
SQL> show parameter disp //dispatchers表示共享链接的服务用的是maxdbXDB NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cell_offload_plan_display string AUTO dispatchers string (PROTOCOL=TCP) (SERVICE=maxdbX DB) max_dispatchers integer SQL>
vim /opt/u01/oracle/11g/network/admin/tnsnames.ora //编辑客户端中存在的,数据库解析
增长server
查看网络是否通畅,用
tsping updb
tnsping updb