oracle 學習筆記 (ORACLE NET )
CHAPTER 1 Networking Overview
1. 網路結構
BS結構
CS結構
架構
Client -à Server 2層
Client -à Middle tier -à Server 3層
特點
客戶端和伺服器端使用相同的網路協議
客戶端可以為瘦客戶端或PC
中間層實現負載均衡,一臺可面對多臺伺服器。作用是在client和server中起到一個翻譯的作用,比如兩端的網路協議不同等
伺服器端儲存真實資料
舉例
ie -à iis(web server) -à database server
2. oracle網路方案 --- connectivity連線
oracle net services特點:
a. 使得client和server的連線與網路協議無關,oracle net services使用API針對不同協議提供不同的介面卡,因此只要物理上可以連通,那麼oracle實現連線不存在問題。
b. 使得client和server的連線與所在平臺無關
c. 提高了GUI圖形使用者介面工具簡化管理且有多種配置選項 (tnsnames.ora)
d. 提供了跟蹤和診斷工具,且有最基本的安全保證
oracle的連線還可使用IIOP/HTTP協議實現,比如使用isqlplus 在web上直接連oracle server。因此在使用isqlplus時,需要輸入的連線串名不是tnsnames.ora中配置的name servers而是指定伺服器上監聽到的instance name
HTTP:HYPERTEXT TRANSFER PROTOCOL
IIOP:INTERNET INTER-ORB PROTOCOL
3. oracle網路方案 --- Directory Services
Directory naming 目錄命名:是使支援足LDAP協議的目錄伺服器來為網路命名的一種方法。它要求伺服器端有相容LDAP的目錄伺服器,客戶端也要有LDAP的相關配置。
目錄服務:就是OID(oracle internet directory).是相容了LDAP的目錄服務。整合在oracle9i,簡化了網路管理,且提供了安全可依賴的目錄結構
LDAP:Lightweight Directory Access Protocol 輕量級目錄訪問協議
4. oracle網路方案 --- scalability可量測性
法一:使用oracle shared server,以前稱為:MTS多執行緒伺服器。這個是針對系統資源有限仍可支援過多使用者訪問的方法,即多個使用者共享同一個伺服器程式,多個連線被一個介面卡路由,提高了資源的利用率,降低了使用者的使用效果
法二:使用CM(connection manager),就是所謂的中間伺服器,oracle預設是不安裝的,若要使用需要增加額外的元件。CM的優點是:a.多功,即多個使用者連線轉化為一個連線訪問資料庫
b.使得client和server可以跨協議連線,即連線與協議無關
c.可以設定網路限制,控制可以訪問資料庫的使用者有哪些
在1成功連線CM產生到server的2後,client產生的所有對 server的訪問,透過CM的全部使用2。有效的降低了資料庫的連線數
5. oracle網路方案 --- Advanced Security
條件:
在client和server端都要安裝 Advanced Security元件
特點:
A.加密傳輸資料:client -à data -à 加密 -à network transfer -à 解密 -à 伺服器
B.授權使用者訪問:透過第三方的裝置和SSL(Secure Sockets Layer)確定使用者的訪問許可權
C.資料完整性:在網路傳輸過程保證資料的完整性
Oracle的普通安全保證來自於:oracle net and firewalls。放火牆有2種,一種是基於供應商的防火牆,條件是需要使用CM(connect manager),另外一種是stateful packet的防火牆
6. oracle網路方案 --- accessibility
不同資料庫系統間的訪問:使用透明閘道器,實現在不同資料庫系統下,使用者可以無縫透明的相互訪問
外部程式的訪問:
A. oracle的監聽器可以監聽外部程式的呼叫,在listen.ora檔案中,”KEY = EXTPROC”來實現oracle服務
器對外部程式呼叫的監聽。如果客戶端需要呼叫外部程式,也需要開啟監聽
B. PLSQL可以呼叫外部程式3GL(第三代程式語言),比如JAVA等
知識點:
Oracle net services / IIOP and HTTP connectivity / oracle internet directory
oracle shared server / connection manager / oracle advanced security
heterogeneous services
CHAPTER 2 Basic Oracle Net Architecture
1. oracle的連線型別有2種:
client-server application:可使用任意網路協議
web application connection:使用TCP/IP協議
2. Client-Server Application Connection:No Middle-Tier
Forms/sqlplus 發出命令,用OCI(oracle呼叫介面)傳給TTC
TTC(two tasks command)完成字符集和資料型別的轉換,傳到oracle net
Oracle net對剛才的命令打成邏輯包,傳到OPS
OPS為協議介面卡,將剛才的邏輯包轉化為物理包,透過網路協議船給server
上面圖執行的順序是個U型,由client到server,再由server到client
3. Web Application Connections有2種實現方法:
A. 使用web server作為中間層與JDBC oracle call interface驅動或瘦JDBC配置
B. 直接連線database server,透過IIOP或HTTP協議。比如isqlplus等
4. Web Application Connection:
JAVA Application Client
JAVA Applet Client
這個與client-server application connection幾乎一樣,只是把SQLPLUS工具改為了JAVA工具放在中間層,而使用者使用是從WEB上調JAVA。而在JAVA與資料庫連線中需要一個JDBC介面
相對於oracle server而言,middle-tier為一個client端,因此連線方式很多,比如TCP/IP等。中間層的作用就是:翻譯,負載均衡,閘道器
5. Web Application Connection:No Middle-Tier
使用該類連線方式的條件是:伺服器端必須支援HTTP和IIOP。即在資料庫上啟動相應的服務
該類連線典型的例子就是:isqlplus
使用isqlplus
在Windows上:啟動ORACLE的HTTP服務
在Linux上:啟動isqlplus服務,即敲入:[oracle@sating bin]$isqlplusctl start
然後在web browser上敲入地址:http://資料庫伺服器IP:isqlplus的埠號/isqlplus
eg.
注:isqlplus的埠號可以在$ORACLE_HOME/install/portlist.ini中檢視到,該檔案是oracle提供的所有預設埠號的列表,isqlplus預設是:5560
CHAPTER 3 Basic Oracle Net Server-Side Configuration
1. sqlnet.ora:網路配置概要檔案,在伺服器端和客戶端都有
tnsnames.ora:以local name本地命名方式實現資料庫連線時,在客戶端存在的用來解析service_name的檔案
listener.ora:是個耳朵的功能,監聽客戶端的連線請求,在伺服器端存在的,記錄 server端登記的service_name
2. 監聽的實現方式
當client端發出一個連線請求,且client傳送的service_name和server端登記的service_name匹配時,listener會根據情況實現2種監聽方式:
A. 啟動一個獨佔伺服器程式process “Bequeath Session”
B. 把該連線重定向到一個已經啟動了的process,(該process在DB啟動時啟動),常用於MTS
“Redirect Session”
A,B兩種方式的第1步和client端配置的命名方法有關,常用的都是服務名service_name解析,。A類從第4步開始通訊,B類從第5步開始通訊。
3. 配置listerner:靜態配置法 或 動態配置法
static service configuration
Dynamic service configuration
特點
A. 應用與8和更早的版本
B. 需要伺服器端有listener.ora檔案
C. 需要OEM和其他一些oracle提供的配置工具
A. 不需要伺服器端有listener.ora檔案
B. 該類監聽使用PMON程式監控程式,
C. 引數instance_name和service_name必須指定
4. 靜態配置法的listener.ora檔案
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = sating)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = BOSS)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = BOSS)
)
)
---LISTENER為oracle預設的監聽名稱
–--HOST為主機名,如果使用的是TCP/IP協議,也可寫伺服器IP地址
---PORT=1521是oracle預設分配的標準監聽器的埠號,也可使用別的埠號
---SID_LIST_LISTENER代表名為LISTENER的監聽器所服務的DB,可同時服務多個DB
---GLOBAL_DBNAME的值可以任意定,因為它是作為別名存在的,代表伺服器端的service_name,只要client端在配置tnsnames.ora中service_name的值是這個listener上的global_name的值,連通就沒問題。一般寫 SID.DOMAINNAME。但ORACLE_HOME和ORACLE_SID必須寫準確資訊
---ORACLE_HOME就是ORACLE_SID指定DB的$ORACLE_HOME引數值
5. 動態配置listener
步驟一:輸入lsnrctl,檢視輸出的預設監聽名。(如果要檢視非預設監聽器的狀況命令是:lsnrctl+監聽器名)
STATUS of the LISTENER
------------------------
Alias LISTENER
步驟二:A. 如果預設的監聽器名為:LISTENER,則確定引數service_name和instance_name設定了正確的值
B. 如果預設的監聽器名不為:LISTENER,則不但要確定引數service_name和instance_name設定了正確的值,還要指定local_listener引數。如果當前是共享伺服器,還需要指定引數dispatchers
步驟三:重起資料庫即可
注意:
A. 此時沒有listener.ora檔案,也沒有手動輸入lsnrctl start,因為oracle在啟動時透過PMON直接啟動監聽器,可使用lsnrctl status檢視監聽器的狀況
B. 在client端配置相應的tnsnames.ora,此時service_name為server端指定的引數service_name的值
C. service_name和instance_name可以任意指定,但必須這2個引數的值相同。在連線時tnsnames.ora,中service_name給相應值即可
D. 無論動態註冊還是靜態註冊,client端都需要有相應的內容記錄在tnsnames.ora中
E. 動態註冊,在資料庫啟動後每一分鐘註冊一次
6. listener的注意事項
A. listener只在發出連線時有用,一旦連線上了,就不再起任何作用,此時client-server的連線只和伺服器分配的process有關。
B. 一個listener可以服務多個DB。多個listener也可以服務一個DB,此時起到負載均衡的作用當一個listener忙的時候可使用另外一個
C. 在oracle網路這一塊,有2個別名,可任意給值。一個就是listener.ora中的global_name,只要與tnsnames.ora中的service_name值相同即可。另外一個就是tnsnames.ora中指定的連線串的串名,只要在連線資料庫時@後寫該串名即可(eg.sqlplus )。
D. listener.ora檔案只在啟動listener時有用,一旦啟動後,刪除該檔案也不影響oracle的連線,但無法重起listener
E. 靜態配置監聽器需要在資料庫啟動後,手工啟動監聽器,資料庫關閉時,手動關閉監聽器
動態配置監聽器,在資料庫啟動時自動啟動監聽器,資料庫關閉時自動關閉監聽器
7. JVM:JAVA的虛擬機器
8. LSNRCTL命令
LSNRCTL>help
LSNRCTL>show + 引數名
LSNRCTL>set + 引數名 + 值
總結:
監聽的實現方式有2種,一個是有監聽啟動獨立程式,另一種是有監聽使用共享程式
監聽的配置方法有2種,一個是有動態配置,使用引數service_name和instance_name來解析服務名,使用PMON
程式管理監聽程式。另一個是靜態配置,使用listener.ora檔案配置監聽,其中的global_name來用於解析服
務名,需要DBA手動開啟和關閉監聽程式
CHAPTER 4 Basic Oracle Net Client-Side Configuration
1. 客戶端的網路配置有很多方法,常見的有2種配置方法:host naming 和 local service name(tnsnames)。當前客戶端可使用的方法,定義在sqlnet.ora中 ”name.directory_path = (HOSTNAME,TNSNAMES)”
Host naming
Local service name(tnsnames)
區別
主機名解析法,在server端實現解析
本地伺服器名解析法,在client端實現解析
實現條件
A.client端和server端的連線協議為TCP/IP,且埠號為1521
B.主機名是透過DNS或者是客戶端上/etc/hosts檔案中記錄的伺服器IP地址來解析的
C.不可使用CM和一些oracle的高階安全設定
無
連線
conn s/s@”主機名”
Conn s/s@在tnsnames.ora中配的串名
要求
A. 在客戶端和伺服器端的sqlnet.ora中指明解析方法為name.directory_path = (HOSTNAME)
B. client端不需要tnsnames.ora檔案,但需要在/etc/hosts檔案中寫請IP和主機名的對應關係
C. server端的listner.ora檔案中,必須指明主機名 (global_dbname = 主機名)
A. 在客戶端和伺服器端的sqlnet.ora中指明解析方法為name.directory_path = (TNSNAMES)
B. client端需要tnsnames.ora檔案,該檔案中service_name需要與server端的listener.ora中的global_name相對應,因為是根據這個名字進行的解析。而連線串名可自己定義
C. 補充,在oracle 8前,tnsnames.ora中的service_name為DB_SID
D. Tnsname.ora中配置的埠需要與server端的listener.ora中一致
總結:
oracle的網路配置策略需要從3個方面進行定義,首先確定監聽是靜態的還是動態的,其次確定命名的解析方法是主機名解析方法還是本地解析方法,如果是本地解析方法需要再去配置本地解析的命名檔案(tnsnames.ora)
CHAPTER 5 Usage And Configuration Of The Oracle Shared Server
1. oracle shared server在9I前被叫做MTS,多執行緒伺服器。作用是在同等的資源下,支援更多的併發訪問
2. 獨佔伺服器模式 與 共享伺服器模式比較
共享伺服器模式 shared server
獨佔伺服器模式 dedicated server
連線方式
User process -à dispatcher
-à shared server process
-à SGA + background process
Oracle伺服器透過dispatcher調配器為使用者程式分配一個共享的伺服器程式
User process -à server process
-à SGA + background process
Oracle伺服器為每個使用者連線分配一個專用的伺服器程式
SGA
shared pool and other memory structure
+ user session data
+ cursor state
shared pool and other memory structure
使用者連線的資料儲存在PGA中
PGA
statck space
使用者連線的資料儲存在SGA中,因此該模式需要更大的SGA記憶體
statck space
+ user session data
+ cursor state
3. 共享伺服器模式優點:
減低訪問instance的程式數量,增加使用者的併發數,使資料庫伺服器負載均衡,減少空間的伺服器程式,減少記憶體的消耗和系統負擔
4. connecting
1發出connect連線請求到listener,listener確定連線是否合法
2listener返回關於dispatcher的資訊,指明那個dispatcher是可使用的
3連線dispatcher,只有再由dispatcher分配shared server process
注意:若listener為配置為共享伺服器模式,但沒有啟動dispatcher,則連線失敗。
5. Processing a request
1連線到空閒的dispatcher
2由dispatcher把command放到請求佇列裡,等待空閒的server process
3command被空閒的server process 接受並處理
4把處理結果傳給響應佇列
5響應佇列再傳給空閒的dispatcher
6dispatcher把結果返回給使用者
注意:請求佇列對於server process是共享的
響應佇列對於server process是獨佔的
6. 配置共享伺服器
伺服器端:定義dispatchers和shared_servers引數
SQL>alter system set
dispatchers=’(PROTOCOL=TCP)(SERVICE=SS)(PROTOCOL=TCP)(DISPATCHERS=2)’;
為service_name=’SS’的監聽服務啟動2個可以使用TCP/IP協議連線的dispatchers
SQL>alter system set dispatchers=’(PROTOCOL=TCP)(DISPATCHERS=2)’;
為所有監聽服務啟動2個可以使用TCP/IP協議連線的dispatchers
SQL>alter system set shared_server=6;
為共享伺服器分配6個shared server processes
客戶端:修改tnsnames.ora的連線解析方式
當使用者使用SS連線串連線時,使用的是共享伺服器程式
當使用者使用SATING連線串連線時,使用的是獨佔伺服器程式
這樣,一個service_name,根據tnsnames.ora中的解析方式不同,所使用的伺服器使用方式也不一樣
SS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.8.177)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = ss)
)
)
SATING =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.8.177)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ss)
)
)
7. server端還有一些其他的引數可以設定
max_dispatchers:最多的dispatchers數量,上面dispatchers引數設定的是啟動了多少dispatchers,如果max_dispatchers為5,那麼最多可啟動4個,若試圖啟動5個則報錯ORA-00112
max_shared_server
circuits:內路和外路可使用的網路連線的總共虛擬路線的條數
shared_server_sessions:作為共享伺服器方式連線上的session的最大數,
引數sessions - 引數shared_sever_sessions = 可以獨佔方式登陸的總session數
相關的一些引數:
large_pool_size:在共享伺服器中,獨立分配出的一塊記憶體區域
session:控制可用獨佔方式登陸的session數量
8. 檢視登記到listeners的dispatchers的情況:lsnrctl service
9. 可檢視的資料字典
v$circuuit
有幾個共享伺服器的連線,該view就有幾條記錄
v$shared_server
v$dispatcher
v$shared_server_monitor
v$queue
v$queue
v$session
4. 注意:
A.共享伺服器模式和獨佔伺服器模式是可以同時存在的
B.在使用as sysdba選項連線資料庫伺服器時,只能使用獨佔伺服器模式登陸
C.S001,S002… … 代表shared server processes。 D001,D002… … 代表著dispatchers
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/yefengmeander/archive/2009/04/25/4122078.aspx
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3907/viewspace-1024479/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle學習筆記Oracle筆記
- oracle學習筆記《一》Oracle筆記
- Oracle學習筆記2Oracle筆記
- Oracle學習筆記1Oracle筆記
- ORACLE dataguard學習筆記Oracle筆記
- Oracle FlashBack 學習筆記Oracle筆記
- ORACLE學習筆記(zt)Oracle筆記
- Oracle學習筆記-1Oracle筆記
- CUUG筆記 ORACLE索引學習筆記筆記Oracle索引
- oracle學習筆記--oracle常用的命令Oracle筆記
- Oracle DBA學習日記筆記Oracle筆記
- Oracle Scheduler學習筆記分享Oracle筆記
- oracle之awr學習筆記Oracle筆記
- Oracle基礎學習筆記Oracle筆記
- Oracle學習筆記之二Oracle筆記
- oracle 原理學習筆記(一)Oracle筆記
- Oracle學習筆記(一)---oracle安裝和配置Oracle筆記
- Oracle學習筆記(6)——函式Oracle筆記函式
- oracle學習筆記-常用的命令Oracle筆記
- oracle學習筆記——檢視、索引Oracle筆記索引
- oracle9i學習筆記Oracle筆記
- oracle 學習筆記---效能優化學習(1)Oracle筆記優化
- Oracle體系結構學習筆記Oracle筆記
- oracle學習筆記8: 分析函式Oracle筆記函式
- oracle學習筆記零碎(三)Oracle筆記
- oracle學習筆記零碎(二)Oracle筆記
- oracle學習筆記零碎(一)Oracle筆記
- ORACLE學習筆記--效能優化FAQ。Oracle筆記優化
- oracle 學習筆記---效能優化(1)Oracle筆記優化
- oracle 學習筆記---效能優化(2)Oracle筆記優化
- oracle 學習筆記---效能優化(3)Oracle筆記優化
- oracle 學習筆記---效能優化(4)Oracle筆記優化
- oracle 學習筆記---效能優化(5)Oracle筆記優化
- oracle 學習筆記---效能優化(6)Oracle筆記優化
- oracle 學習筆記---效能優化(7)Oracle筆記優化
- (轉載)ORACLE MODEL子句學習筆記Oracle筆記
- oracle學習筆記(十一) 高階查詢Oracle筆記
- Oracle學習筆記整理之遊標篇Oracle筆記