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