附註:

安裝並設定 Oracle 連線管理程式

簡介

「Oracle 連線管理程式 (CMAN)」是一個 Oracle 公用程式,它可以作為代理主機伺服器,將從屬端的連線要求轉送至資料庫。它會在階段作業層次上運作,而且通常安裝在個別的伺服器上。

圖像

CMAN 使用案例

目標

必要條件

作業 1:Oracle Connection Manager 安裝的初始設定

在本教學課程中,我們將使用下列 IP 位址。

開啟防火牆連線

連接埠應在 1999 年從從屬端 VM 開啟至 CMAN VM,以及在 1521 從 CMAN VM 開啟至資料庫伺服器。

作業 2:在 Oracle 連線管理程式虛擬機器上安裝 Oracle 連線管理程式

  1. 準備 CMAN VM 進行安裝。執行下列命令以建立 Oracle 使用者、安裝套裝軟體、變更核心參數等等。

    $sudo su - root
    $yum install oracle-database-preinstall-21c.x86_64
    
  2. 執行 mkdir -p $HOME/stage 指令以建立目錄。

  3. 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
    
  4. 以 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
    
  5. 現在,安裝 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
    
  6. 準備用於安裝 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 
    
  7. 執行下列命令以安裝 CMAN。

    $HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp  ORACLE_HOME_NAME=cman2130
    
  8. 以 root 使用者身分完成安裝。以 root 使用者身分執行以完成安裝。

    $ /u01/app/oraInventory/orainstRoot.sh
    $ /u01/app/oracle/product/cman2130/root.sh
    
  9. 只要您以 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/
    
  10. 執行下列命令以確保 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
  1. 一般 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
    
  2. 以規則為基礎的 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

認可

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center