附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
安裝並設定 Oracle 連線管理程式
簡介
「Oracle 連線管理程式 (CMAN)」是一個 Oracle 公用程式,它可以作為代理主機伺服器,將從屬端的連線要求轉送至資料庫。它會在階段作業層次上運作,而且通常安裝在個別的伺服器上。
CMAN 使用案例
-
案例 1:存取控制
使用以規則為基礎的配置來拒絕或接受特定的用戶端要求,例如,根據用戶端 IP 位址。
在下圖中,如果用戶端是從機器 IP
192.168.0.74
連線來連線,則 ACCEPTED 將會連線到資料庫,但是如果任何用戶端將嘗試從機器192.168.0.75
連線進行連線,則被拒絕。同樣地,我們可以指定允許和拒絕的 IP 位址範圍。 -
案例 2:在途製程
從屬端無法直接存取一或多個資料庫,CMAN 會將從屬端的連線重新導向至對應的資料庫。
-
案例 3:不同的連接埠
目標資料庫使用不同的連接埠,例如
1521
和1522
,但從屬端不會開啟這些連接埠。將 CMAN 設定為使用不同的連接埠,例如1999
。 -
狀況 4:不同的 IP 協定
用戶端和資料庫使用不同的 IP 通訊協定,例如,用戶端使用 IPv6,但資料庫使用 IPv4。CMAN 是 IPv6 與 IPv4 之間的網路橋接器。在本教學課程中,CMAN 必須在至少設定一個 IPv6 和至少一個 IPv4 介面的雙堆疊主機上執行。
目標
- 設定「Oracle 連線管理程式 (CMAN)」以限制或允許連線資料庫。
必要條件
-
佈建 OCI 環境,例如區間、虛擬雲端網路 (VCN)、子網路等等。
-
佈建 Oracle Base Database Service 資料庫。例如,目標。
-
佈建 Oracle Cloud Infrastructure (OCI) Compute VM (CMAN 主機)。
-
從屬端虛擬機器 (VM) 主機運算。例如,來源。
作業 1:Oracle Connection Manager 安裝的初始設定
在本教學課程中,我們將使用下列 IP 位址。
- OCI Compute VM 名稱為
client
、IP =192.168.0.74
且 IP =192.168.0.75
。 - OCI Compute VM 名稱為
cman
,IP =192.168.0.199
。 - Oracle Base Database Service VM 名稱為
dbcs01
,IP =192.168.0.48
。
開啟防火牆連線
連接埠應在 1999 年從從屬端 VM 開啟至 CMAN VM,以及在 1521 從 CMAN VM 開啟至資料庫伺服器。
-
第 1 個連線,從 CMAN 到資料庫伺服器:
[oracle@cman ~]$ curl -sv telnet://192.168.0.48:1521 * Rebuilt URL to: telnet://192.168.0.48:1521/ * Trying 192.168.0.48... * TCP_NODELAY set * Connected to 192.168.0.48 (192.168.0.48) port 1521 (#0)
-
第二個連線,從從屬端 VM 到 CMAN VM:
我們會將連接埠 1999 用於 CMAN。連接埠 1999 預設未開啟,因此必須開啟此連接埠。
以 CMAN 主機的 root 身分執行下列命令,以開啟 1999 連接埠。
$firewall-cmd --permanent --add-port=1999/tcp $firewall-cmd –reload [oracle@client1 ~]$ curl -sv telnet://192.168.0.199:1999 * Rebuilt URL to: telnet://192.168.0.199:1999/ * Trying 192.168.0.199... * TCP_NODELAY set * Connected to 192.168.0.199 (192.168.0.199) port 1999 (#0)
作業 2:在 Oracle 連線管理程式虛擬機器上安裝 Oracle 連線管理程式
-
準備 CMAN VM 進行安裝。執行下列命令以建立 Oracle 使用者、安裝套裝軟體、變更核心參數等等。
$sudo su - root $yum install oracle-database-preinstall-21c.x86_64
-
執行
mkdir -p $HOME/stage
指令以建立目錄。 -
從 Oracle Database 21c 下載 Oracle Client
21.3.0
,使用winscp
或$HOME/stage
下的任何其他檔案傳輸公用程式在 CMAN VM 上複製。如果您無法使用 SSH,請在瀏覽器中開啟 Oracle Database 21c 從屬端下載頁面,然後按一下以下載 Linux 的
LINUX.X64_213000_client.zip
檔案。開啟瀏覽器,在下載中的檔案上按一下滑鼠右鍵,然後選取複製下載連結,如下所示。每次按一下下載連結時,AuthParam URL 參數都會有所不同。在您的 Linux 機器上,瀏覽至所需的目錄 (例如
$HOME/stage
),然後輸入下列命令:$ wget "https://download.oracle.com/otn/linux/oracle21c/LINUX.X64_213000_client.zip?AuthParam=1631008911_576110421cdef54a2d47d9562bee0e5a" -O LINUX.X64_213000_client.zip
-
以 Oracle 使用者身分解壓縮從屬端軟體。將會建立名為 client 的目錄。
[oracle@cman stage]$ ls -ltr /home/oracle/stage drwxr-xr-x. 5 oracle oinstall 90 Jul 27 2021 client -rwxr-xr-x. 1 oracle oinstall 1075931428 Sep 1 10:40 LINUX.X64_213000_client.zip
-
現在,安裝 CMAN 和 SQL*Plus。
執行下列命令來建立新 Oracle 使用者 (
oracle
)、基礎目錄和本位目錄,以執行 CMAN (安裝最新版本 Oracle Database 的預先安裝程式庫,以在 Linux 中設定 Oracle 使用者)。$ sudo su - root $ yum install oracle-database-preinstall-21c.x86_64 $ mkdir /u01 $ chown oracle:oinstall /u01 $ su - oracle $ mkdir -p /u01/app/oracle/product/cman2130
-
準備用於安裝 CMAN 和 SQL*Plus 的回應檔。
$ cat <<EOF > $HOME/client21.rsp oracle.install.responseFileVersion=/oracle/install/rspfmt_clientinstall_response_schema_v21.0.0 ORACLE_HOSTNAME=$(hostname) UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory SELECTED_LANGUAGES=en ORACLE_HOME=/u01/app/oracle/product/cman2130 ORACLE_BASE=/u01/app/oracle oracle.install.client.installType=Custom oracle.install.client.customComponents="oracle.sqlplus:21.0.0.0.0","oracle.network.client:21.0.0.0.0","oracle.network.cman:21.0.0.0.0","oracle.network.listener:21.0.0.0.0" EOF
-
執行下列命令以安裝 CMAN。
$HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp ORACLE_HOME_NAME=cman2130
-
以 root 使用者身分完成安裝。以 root 使用者身分執行以完成安裝。
$ /u01/app/oraInventory/orainstRoot.sh $ /u01/app/oracle/product/cman2130/root.sh
-
只要您以 Oracle 使用者身分登入,在
.bash_profile
檔案 ($HOME/.bash_profile
) 中附加下列各行,即可輕鬆存取cmctl
和 SQL*Plus 公用程式。export ORACLE_HOME=/u01/app/oracle/product/cman2130 export LD_LIBRARY_PATH=/u01/app/oracle/product/cman2130/lib export PATH=/u01/app/oracle/product/cman2130/bin:$PATH:$HOME export TNS_ADMIN=/u01/app/oracle/product/cman2130/network/admin/
-
執行下列命令以確保 SQL*Plus 和 CMAN 都在執行中。
[oracle@cman ~]$ sqlplus /nolog SQL*Plus: Release 21.0.0.0.0 - Production on Wed Sep 11 05:37:26 2024 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. SQL> exit [oracle@cman ~]$ cmctl CMCTL for Linux: Version 21.0.0.0.0 - Production on 11-SEP-2024 05:37:30 Copyright (c) 1996, 2021, Oracle. All rights reserved. Welcome to CMCTL, type "help" for information. CMCTL>
工作 3:設定 Oracle 連線管理程式
在此任務中,我們將設定 CMAN。首先,開啟 CMAN 監聽器應該在 CMAN VM 上使用的連接埠。在此範例中,我們使用連接埠 1999 來示範它不一定是 1521,並且可以和資料庫監聽器連接埠分開。以 root 身分:
$firewall-cmd --permanent --add-port=1999/tcp
$firewall-cmd –reload
-
一般 CMAN 組態。
以 Oracle 使用者身分,使用下列內容在
$TNS_ADMIN
底下建立 CMAN 組態檔cman.ora
。注意:將主機 IP 位址變更為您的 CMAN VM IP!
$cat $TNS_ADMIN/cman.ora cman = (configuration= (address=(protocol=tcp)(host=192.168.0.199)(port=1999)) (parameter_list = (aso_authentication_filter=off) (connection_statistics=yes) (log_directory=/u01/app/oracle/product/cman2130/network/log) (log_level=support) (max_connections=256) (idle_timeout=0) (inbound_connect_timeout=0) (session_timeout=0) (outbound_connect_timeout=0) (max_gateway_processes=16) (min_gateway_processes=2) (remote_admin=on) (trace_directory=/u01/app/oracle/product/cman2130/network/trace) (trace_level=support) (trace_timestamp=off) (trace_filelen=1000) (trace_fileno=1) (max_cmctl_sessions=4) (event_group=init_and_term,memory_ops) (registration_invited_nodes = *) (service_affinity=off) ) (rule_list= (rule= (src=*)(dst=*)(srv=*)(act=accept) (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) ) ) ) ) VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
-
以規則為基礎的 CMAN 組態。
如果您返回並檢查
cman.ora
檔案中的規則,您會找到下列內容。(src=*)(dst=*)(srv=*)(act=accept)
因此,我們允許從任何來源、任何目標及任何服務的連線。您可以使用規則清單來定義自己的規則,以允許或拒絕來自特定從屬端、特定目標或特定服務的連線。舉例而言:
$cat cman.ora cman = (configuration= (address=(protocol=tcp)(host=192.168.0.199)(port=1999)) (parameter_list = (aso_authentication_filter=off) (connection_statistics=yes) (log_directory=/u01/app/oracle/product/cman2130/network/log) (log_level=support) (max_connections=256) (idle_timeout=0) (inbound_connect_timeout=0) (session_timeout=0) (outbound_connect_timeout=0) (max_gateway_processes=16) (min_gateway_processes=2) (remote_admin=on) (trace_directory=/u01/app/oracle/product/cman2130/network/trace) (trace_level=support) (trace_timestamp=off) (trace_filelen=1000) (trace_fileno=1) (max_cmctl_sessions=4) (event_group=init_and_term,memory_ops) (registration_invited_nodes = 192.168.0.48) (service_affinity=off) ) (rule_list= (rule= (src=cman)(dst=127.0.0.1)(srv=cmon)(act=accept) (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) ) (rule= (src=192.168.0.74)(dst=192.168.0.48)(srv=GGC1_SJ.sub02090543360.vcnsj.oraclevcn.com)(act=accept) (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) ) (rule= (src=192.168.0.75)(dst=192.168.0.48)(srv=GGC1_SJ.sub02090543360.vcnsj.oraclevcn.com)(act=Reject) (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) ) ) ) VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
CMAN 是一個強大的工具。這只是範例和簡單組態。請查看 Oracle 文件以瞭解更多組態詳細資訊,特別是與安全有關的資訊。
作業 4:啟動 Oracle 連線管理程式服務
使用公事包連線至來源和目標容器資料庫,並且使用 Oracle Data Guard 命令行介面 (DGMGRL) 建立組態。這與一般 Oracle Data Guard 組態的相同。只有不同的是,我們必須針對兩個容器資料庫執行此操作,因為這兩個資料庫都是主要資料庫。
cmctl
CMCTL for Linux: Version 21.0.0.0.0 - Production on 04-SEP-2024 08:59:37
Copyright (c) 1996, 2021, Oracle. All rights reserved.
Welcome to CMCTL, type "help" for information.
CMCTL> admin cman
Current instance cman is not yet started
Connections refer to (DESCRIPTION=(address=(protocol=tcp)(host=192.168.0.199)(port=1999))).
The command completed successfully.
CMCTL:cman> startup
Starting Oracle Connection Manager instance cman. Please wait...
CMAN for Linux: Version 21.0.0.0.0 - Production
Status of the Instance
----------------------
Instance name cman
Version CMAN for Linux: Version 21.0.0.0.0 - Production
Start date 04-SEP-2024 08:59:43
Uptime 0 days 0 hr. 0 min. 9 sec
Num of gateways started 2
Average Load level 0
Log Level SUPPORT
Trace Level SUPPORT
Instance Config file /u01/app/oracle/product/cman2130/network/admin/cman.ora
Instance Log directory /u01/app/oracle/diag/netcman/cman/cman/alert
Instance Trace directory /u01/app/oracle/diag/netcman/cman/cman/trace
The command completed successfully.
執行下列指令以檢查狀態與服務。
CMCTL:cman> show status
CMCTL:cman> show services
作業 5:透過「Oracle 連線管理程式」連線至資料庫
方法 1:使用目標資料庫參數
若要讓 CMAN 轉送內送連線至資料庫,CMAN 必須知道這些資料庫。為了達到此目的,我們需要在目標資料庫上設定 REMOTE_LISTENER
。此外,請在 cman.ora
檔案中設定 VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
以順利註冊。
目標資料庫:
alter system set REMOTE_LISTENER='10.0.0.8:1999' scope=both sid='*';
alter system register;
在 cman.ora
檔案中新增下列行。
VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
執行下列命令以重新啟動 CMAN,並檢查是否已在 CMAN 監聽器註冊資料庫。
CMCTL:cman> show services
驗證連線:
使用 CMAN IP 和連接埠從從屬端 VM 連線至資料庫。在從屬端 VM 的 tnsnames.ora
檔案中建立新的 TNS 別名。
GGC1_CM=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=192.168.0.199)(PORT=1999)) -- CMAN IP and Port
(CONNECT_DATA=
(SERVICE_NAME=GGC1_SJ.sub0209xxxx0543360.vcnsj.oraclevcn.com)))
必須在 CMAN> show services
輸出中顯示上述服務名稱。
$sqlplus system/MyPasswd__48@GGC1_CM
檢查 CMAN 追蹤檔。
/home/oracle/base/diag/netcman/cman/cman/trace/cman.log
/u01/app/oracle/diag/netcman/cman/cman_test/trace/ log.xml
方法 2:使用躍點
如果無法在目標資料庫變更 REMOTE_LISTENER
資料庫參數,我們必須在 cman.ora
檔案或從屬端 TNS 檔案中使用 hop。
選項 1:在 cman.ora
檔案中新增躍點
$cat cman.ora
cman =
(configuration=
(address=(protocol=tcp)(host=192.168.0.199)(port=1999))
(parameter_list =
(aso_authentication_filter=off)
……
(service_affinity=off)
)
(next_hop=(description=(address=(protocol=tcp)(port=1521)(host=192.168.0.48))))
(rule_list=
(rule=
(src=cman)(dst=127.0.0.1)(srv=cmon)(act=accept)
(action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on))
)
)
)
選項 2:在用戶端的 TNS 檔案中新增躍點
GGC1_SJ_CM =
(DESCRIPTION =
(SOURCE_ROUTE = YES)
(ADDRESS =
(PROTOCOL = TCP)(HOST = 192.168.0.199)(PORT = 1999)
)
(ADDRESS =
(PROTOCOL = TCP)(HOST = 192.168.0.48)(PORT = 1521)
)
(CONNECT_DATA = (SERVICE_NAME=GGC1_SJ.sub02090543360.vcnsj.oraclevcn.com)
)
)
請執行下列命令來驗證連線。
$sqlplus system/MyPasswd__48@GGC1_CM
相關連結
認可
- 作者 - Dharmesh Patel (Oracle 北美洲雲端服務首席雲端架構師 - NACIE)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Install and Configure Oracle Connection Manager
G16516-01
September 2024