練習 4-1 配置Oracle Net
在本練習中, 將使用圖形化工具和命令行工具來建立一個完整的Oracle Net 環境. 由此, 讀者可看出在Windows 和 Linux 系統中的區別.
1. 創建Oracle Net配置文件使用的目錄, 並設置指向此位置的TNS_ADMIN變量. 目錄的位置無關緊要, 只要Oracle 用戶有權執行創建、讀取和寫入即可。
在Linux系統中:
mkdir /u01/oracle/net
export TNS_ADMIN=/u01/oracle/net
確保從現在開始,都從設置了變量的繪畫中執行所有工作.
在Windows系統中:
mkdir d:\oracle\net
創建注冊表項TNS_ADMIN, 並將其設置為Oracle Home分支的注冊表中的字符串變量. 這通常是: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1
2. 通過從操作系統提示符中運行TNSPING命令來檢查是否讀取了變量:
tnsping orcl
由於TNS_ADMIN目錄中不存在任何文件, 因此將返回錯誤"TNS-03505:Failed to resolve name". 在Windows系統中, 需要啟動一個新命令提示符,從注冊表找到TNS_ADMIN新值.
3. 啟動Net Manager. 在Linux系統中, 從操作系統提示符中運行netmgr. 在Windows系統中, 從"開始"菜單啟動它. Net Manager 窗口最上面的行將顯示Oracle Net 文件的位置. 如果這不是新目錄, 則TNS_ADMIN變量設置的不正確.
4. 創建新偵聽器:戰卡導航樹的Local分支, 突出顯示Listeners項,然後單擊"+"圖標.
5. 輸入偵聽器名"NEWLIST",然後單擊OK按鈕.
6. 單擊Add Address 按鈕.
7. 對於Address 1, 選擇"TCP/IP" 作為協議, 並輸入"127.0.0.1" 作為主機, "2521" 作為端口. 圖4-11 顯示了結果.
8. 創建信服務名: 突出顯示導航樹中的Service Naming項, 然後單擊"+"圖標.
9. 輸入"NEW" 作為新服務名, 然後單擊Next按鈕.
10. 選擇"TCP/IP"作為協議, 然後單擊Next按鈕.
11. 輸入"127.0.0.1"作為主機名, "2521"作為端口, 然後單擊Next按鈕.
12. 輸入"SERV1" 作為服務名,然後單擊Next按鈕.
13. 單擊Finish按鈕, 如果嘗試進行測試,此時將失敗, 圖4-12顯示了結果.
14. 通過單擊File 和Save Network Configuration 菜單項保存配置. 這將在TNS_ADMIN目錄中創建listener.ora文件和tnsnames.ora文件.
15. 使用編輯器檢查這兩個文件.
LISTENER.ORA文件如下:
NEWlIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=2521))
)
TNSNAMES.ora文件如下:
NEW =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=2521))
)
(CONNECT_DATA=
(SERVICE_NAME=SERV1)
)
)
16. 從操作系統提示符中使用 lsnrctl start newlist
17. 在操作系統提示符中使用tnsping new 測試連接字符串.
18. 使用sqlplus / as sysdba, 經操作系統身份驗證連接到數據庫, 忽略任何偵聽器.
19. 為正在運行的實例設置service_names參數和local_listener參數(僅限於內存, 不在參數文件中設置), 冰箱新偵聽器注冊新服務名:
alter system set service_names=serv1 scope-memory;
alter system set local_listener=new scope=memory;
alter system register;
20. 在操作系統提示符下, 使用lsnrctl service newlist, 確認已向新偵聽器注冊了新服務.
21. 通過使用以下代碼登錄,確認新網絡環境已生效:
sqlplus system/oracle@new
練習 4-2 設置共享的服務器環境
本練習是 練習[4-1]中步驟21的延續,用戶需要配置共享服務器, 並證實其可以運行.
1. 設置dispatchers參數和shared_servers參數,並注冊到偵聽器, 命令如下.
alter system set dispatchers='(protocol=tcp)(dispatchers=2)' scope=memory;
alter system set shared_servers=4 scope=memory;
alter system register;
2. 通過查詢視圖V$PROCESS,確認調度程序和共享服務器已經啟動. 查找名為 S000,S001,S002,S003,D000和D001的進程.
select program from v$process order by program;
3. 在操作系統提示符窗口,確認調度程序已經注冊到偵聽器.
lsnrctl services newlist
4. 通過偵聽器進行連接, 並確認通過共享服務器機制執行了連接.
connect system/oracle@new ;
select d.name,s.name from v$dispatcher d, v$shared_server s , v$circuit c
where d.paddr= c.dispatcher and s.paddr=c.server;
此查詢將顯示會話連接到的調度程序, 以及執行查詢的共享服務器進程.
5. 還原到最初的配置以清理環境
alter system set local_listener='' scope=memory;
alter system set service_names='' scope=memory;
alter system set dispatchers='' scope=memory;
alter system set shared_servers=0 scope=memory;
alter system register;
在操作系統提示符窗口, 使用 lsnrctl stop newlist 停止偵聽器.
取消設置TNS_ADMIN變量, 在Linux系統中,采用 export TNS_ADMIN=''; 在Windows系統中,刪除TNS_ADMIN注冊表項.