設定並連線至 Oracle Autonomous Database

取得 Oracle Autonomous Database 組態檔,並將它們安裝在安裝 CMAN-TDM 的機器上。

使用雙向 TLS 協定設定 Oracle Autonomous Database 公事包檔案

您必須使用公事包連線至 Oracle Autonomous Database (包括 Oracle Autonomous Data WarehouseOracle Autonomous Transaction ProcessingOracle Autonomous JSON Database)。此功能提供相互的「傳輸層安全 (TLS)」,可增強認證與加密的安全性。
  1. 登入 Oracle Cloud Infrastructure 主控台,並導覽至自治式資料庫所在的區域。
  2. 瀏覽至 Autonomous Database 頁面,然後按一下資料庫連線頁籤。
    「Autonomous Database 詳細資訊」隨即顯示。
  3. 按一下「下載公事包」。
    系統會提示您使用公事包密碼。
  4. 提供密碼,然後將公事包 ZIP 檔案下載至您的本機機器。
    使用您偏好的 SSH 檔案傳輸應用程式或方法,將下載的 ZIP 檔案傳輸到您的 Linux 機器。請務必儲存 (或記住) 公事包密碼。您稍後必須在此解決方案中使用密碼。
    在 Linux 機器中的公事包 ZIP 檔案之後,移至下一個步驟。
  5. 將內容擷取至 $TNS_ADMIN 目錄。

    附註:

    此位置可能是 CMAN-TDM 機器安裝的預設 $ORACLE_HOME/network/admin 路徑。

    公事包未包含資料庫使用者名稱和密碼證明資料,但您仍應將公事包和檔案保留在安全的位置以供日後使用。

    以下為擷取檔案的範例:

    -rw-r--r--. 1 oracle oinstall  7085 Sep  3 07:24 cwallet.sso
    -rw-r--r--. 1 oracle oinstall  7040 Sep  3 07:24 ewallet.p12
    -rw-r--r--. 1 oracle oinstall  3243 Aug 24 14:25 keystore.jks
    -rw-r--r--. 1 oracle oinstall   691 Aug 24 14:25 ojdbc.properties
    -rw-r--r--. 1 oracle oinstall  3387 Aug 24 14:25 README
    -rw-r--r--. 1 oracle oinstall   235 Sep  3 08:00 sqlnet.ora
    -rw-r--r--. 1 oracle oinstall  1832 Sep  3 08:41 tnsnames.ora
    -rw-r--r--. 1 oracle oinstall  3336 Aug 24 14:25 truststore.jks

    目前使用案例所需的主要檔案為 cwallet.ssoewallet.p12sqlnet.oratnsnames.ora。只有當使用者計畫透過 JDBC 應用程式連線時,才需要其他檔案。

  6. 編輯 sqlnet.ora 檔案,並將公事包位置 DIRECTORY 變更為包含 cwallet.sso 檔案的目錄:
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/u01/app/oracle/network/admin")))
    SSL_SERVER_DN_MATCH=yes

    現在已設定公事包,您可以使用 tnsnames.ora 的其中一個「網路服務名稱」連線字串 (例如 exampledb_high) 連線至您的資料庫。

  7. 開啟 tnsnames.ora 檔案,並將自治式資料庫的連線詳細資訊儲存在其他檔案中,例如 $HOME/dbdetails.txt
    設定 CMAN-TDM 時,會使用自治式資料庫的位址、安全性和服務名稱參數。
  8. (選擇性) 使用 SQL*Plus 檢查資料庫連線。
    • 如果 SQL*Plus 與 CMAN-TDM 位於相同的機器上,則您可以從公事包目錄 $TNS_ADMIN 檢視 tnsnames.ora 檔案。

    • 如果 SQL*Plus 安裝在與 CMAN-TDM 不同的機器上,請將 Autonomous Database 公事包檔案複製到安裝 SQL*Plus 之機器的 $TNS_ADMIN 目錄中。然後將上一個區段的資料庫詳細資訊複製到同一部機器上的 $TNS_ADMIN/tnsnames.ora 檔案。

    $TNS_ADMIN/tnsnames.ora 檔案包含數個網路服務名稱 (位於 "=" 符號左側)。您可以根據資料庫所需要的效能和服務並行層次,使用任何項目。

    ADMIN 使用者身分執行 SQL*Plus,並輸入您在建立資料庫時所設定的使用者密碼:

    $ sqlplus -l admin@adb-name_high
    成功時,您將連線到資料庫。

設定 CMAN 以連線至 Oracle Autonomous Database

建立、配置以及增加具有 CMAN-TDM 機器之 $TNS_ADMIN 目錄中所有規格的 CMAN (cman.ora) 配置檔案。該目錄通常位於 ORACLE_HOME/network/admin

cman.ora 檔案是 CMAN-TDM 所讀取的主要配置檔案。其中包含啟用 Traffic Director 和 CMAN 以與 Oracle Autonomous Database 連線的所有組態詳細資訊。

  1. oracle 使用者的身分登入。
  2. 瀏覽至 $TNS_ADMIN 目錄並建立 cman.ora 檔案。
    $ cd $TNS_ADMIN
    $ vi cman.ora
  3. 設定 cman.ora 檔案。
    在此範例中, CMAN-TDM 實例名稱是 cman-test。用戶端應用程式透過 TCP 協定連線至 CMAN 程序,而 CMAN 則透過 TCPS 協定連線至 Oracle Autonomous Database

    位址參數包含 CMAN-TDM 伺服器的主機名稱和協定。下列範例 cman.ora 檔案使用 TCP 和連接埠號碼 1523。您可以在 Linux 機器上選擇任何可用的連接埠號碼。

    設定下列參數:

    • tdm=true重要! 您必須將 tdm 參數設為 true ,才能啟用 Traffic Director 模式。
    • tdm_threading_mode=dedicated:此範例是以專用模式 (Traffic Director 模式的預設模式) 執行 CMAN-TDM 。您可以在共用模式中執行 Traffic Director 模式。
    • log_level:設為啟用必要的記錄日誌層次以供測試與除錯之用。
    • max_connections:根據您的效能需求設定。
    • idle_timeout=0
    • registration_invited_nodes = *
    • inbound_connect_timeout=0
    • session_timeout=0
    • outbound_connect_timeout=0
    • max_gateway_processes:根據您的效能需求設定。
    • min_gateway_processes:根據您的效能需求設定。
    • trace_level:設為啟用必要的追蹤層次以進行測試和除錯。
    • max_cmctl_sessions:根據您的效能需求設定。
    • event_group: init_and_term, memory_ops
    • next_hop:此參數會指向 Oracle Autonomous Database 的位址詳細資訊以及 SSL 詳細資訊。這些詳細資訊是從您在上一節中建立的 dbdetails.txt 檔案取得。
    • WALLET_LOCATION:此參數會指向 Traffic Director 模式應用程式使用者公事包的位置,您稍後會在此區段中建立。
    • SQLNET.WALLET_OVERRIDE = 真
    以下為範例 cman.ora 檔案:
    exampledb_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.us-ashburn-1.oraclecloud.com))(connect_data=(service_name=g5cadf7d7e4c6c8_exampledb_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adwc.uscom-east-1.oraclecloud.com, OU=Oracle BMCS US, O=Oracle Corporation, L=Redwood City, ST=California, C=US")))
    
    cman-test = (configuration=
      (address=(protocol=tcp)(host=oracle-cloud-linuxvm)(port=1523))
      (parameter_list =
        (tdm=true)
        (tdm_threading_mode=dedicated)
        (log_level=off)
        (max_connections=50)
        (idle_timeout=0)
        (registration_invited_nodes = *)
        (inbound_connect_timeout=0)
        (session_timeout=0)
        (outbound_connect_timeout=0)
        (max_gateway_processes=8)
        (min_gateway_processes=3)
        (trace_level=support)
        (max_cmctl_sessions=4)
        (event_group=init_and_term,memory_ops)
      )
      (next_hop=(description=(address=(protocol=tcps)(port=1522)(host=adb.us-ashburn-1.oraclecloud.com))(security=(ssl_server_dn_match=on)(ssl_server_cert_dn="CN=adwc.uscom-east-1.oraclecloud.com, OU=Oracle BMCS US, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))))
      (rule_list=
        (rule=
           (src=*)(dst=*)(srv=*)(act=accept)
           (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on))
      ) )
    )
    
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/u01/app/oracle/network/admin")))
    SQLNET.WALLET_OVERRIDE = TRUE
  4. 建立資料庫代理主機使用者 (tdm),以取得啟用 Traffic Director 模式 (TDM) 所需的所有權限。
    1. admin 使用者身分透過 SQL*Plus 登入 Oracle Autonomous Database
      $ sqlplus admin@exampledb_high
      
      SQL*Plus: Release 21.0.0.0.0 - Production on Tue May 6 15:34:43 2025
      Version 21.3.0.0.0
      
      Copyright (c) 1982, 2025, Oracle.  All rights reserved.
      
      Enter password:
      Last Successful login time: Tue May 06 2025 15:33:09 +00:00
      
      Connected to:
      Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
      Version 19.12.0.1.0
    2. 建立資料庫代理主機使用者。
      此範例使用 tdm 作為資料庫代理使用者。
      SQL> create user tdm identified by {password} -- replace {password} with your actual password
      
      User created.
      
      SQL> grant create session to tdm;
      
      Grant succeeded.
    3. 結束 SQL*Plus。
  5. 建立資料庫代理主機使用者公事包。

    將 TDM 使用者憑證新增至您現有的 Autonomous Database 公事包。

    1. 瀏覽至 Autonomous Database 公事包所在的 $TNS_ADMIN 目錄。
      該目錄通常是 $ORACLE_HOME/network/admin
      $ cd $TNS_ADMIN
    2. 使用 $ORACLE_HOME/bin 目錄中的 mkstore 公用程式,將 tdm 使用者詳細資訊新增至 Autonomous Database 公事包。

      附註:

      • 針對 service_name 參數,輸入先前建立之 dbdetails.txt 檔案中的服務名稱。
      • 若為 usernamepassword 參數,請輸入您的 tdm 使用者證明資料。如果您想要讓其他服務 (例如 exampledb_low) 可透過 tdm 使用,請重複此步驟。

      請使用下列語法:$ORACLE_HOME/bin/mkstore -wrl . -createCredential service_name username password。舉例而言:

      
      
      $ $ORACLE_HOME/bin/mkstore -wrl . -createCredential g5cadf7d7e4c6c8_exampledb_high.adb.oraclecloud.com tdm {password}
    3. 使用 orapki 公用程式確認公事包是否正確建立。
      $ $ORACLE_HOME/bin/orapki wallet display -wallet .
      Oracle PKI Tool Release 21.0.0.0.0 - Production
      Version 21.3.0.0.0
      Copyright (c) 2004, 2021, Oracle and/or its affiliates. All rights reserved.
      
      Requested Certificates:
      User Certificates:
      Subject:        CN=AAE9D2E1AE8646298FED591FC4A097EA,DNQ=V1
      Oracle Secret Store entries:
      oracle.security.client.connect_string1
      oracle.security.client.password1
      oracle.security.client.username1
      Trusted Certificates:
      Subject:        CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US
      Subject:        C=US,ST=California,L=Redwood Shores,O=Oracle Corporation Autonomous Data Warehouse Cloud Self-signed CA,CN=Autonomous Data Warehouse Cloud CA
      Subject:        CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US

      輸出應該包含 Oracle 加密密碼存放區項目,這表示已儲存 tdm 使用者證明資料,而且是「信任憑證」和「使用者憑證」(Autonomous Database SSL 憑證)。

    4. 使用 mkstore 公用程式驗證公事包中的 tdm 使用者證明資料。系統提示您輸入公事包密碼時,請輸入您從 Oracle Cloud Infrastructure 主控台下載公事包壓縮檔時所建立的 Autonomous Database 公事包密碼。
      $ $ORACLE_HOME/bin/mkstore -wrl . -listCredential
      Oracle Secret Store Tool Release 21.0.0.0.0 - Production
      Version 21.3.0.0.0
      Copyright (c) 2004, 2021, Oracle and/or its affiliates. All rights reserved.
      
      Enter wallet password:
      List credential (index: connect_string username)
      1: g5cadf7d7e4c6c8_exampledb_high.adb.oraclecloud.com tdm
  6. 使用 Oracle Autonomous Database 上的 CMAN-TDM 應用程式使用者進行連線。
    您需要建立一個「一般」資料庫使用者來進行一般應用程式存取,而不是使用授權的 ADMIN 使用者,以使用資料庫代理使用者 (tdm) 權限透過 CMAN-TDM 連線至 Oracle Autonomous Database

    附註:

    如果您在 Autonomous Database 中已有一或多個現有應用程式使用者,請略過此步驟。
    1. 建立資料庫使用者。

      您可以複製和自訂下列 createuser.sql 命令檔來建立使用者。

      define USERNAME = &1
      
      -- Uncomment if you want to clean up a previous user
      -- begin execute immediate 'drop user &USERNAME cascade'; exception when others then if sqlcode <> -1918 then raise; end if; end;
      -- /
      
      create user &USERNAME;
      
      alter user &USERNAME
            default tablespace data temporary tablespace temp
            account unlock quota unlimited on data;
      
      grant connect, resource to &USERNAME;
      
      grant create session, create table, create procedure,
            create sequence, create trigger, create view,
            create synonym, alter  session, create type,
            soda_app to &USERNAME;
      
      password &USERNAME
    2. ADMIN 使用者身分啟動 SQL*Plus:
      $ sqlplus -l admin@exampledb_high
    3. 執行 createuser.sql 命令檔。

      傳送您使用者的名稱作為命令檔引數。此範例使用 example

      指令碼將會提示您設定此新使用者的密碼。密碼必須符合 Oracle Autonomous Database 使用者密碼準則。如果不符合準則,您將無法建立使用者。

      SQL> @createuser.sql example
      新使用者會在您輸入新密碼後立即建立。
  7. 將資料庫代理主機使用者 tdm 權限新增至所有需要透過 CMAN-TDM 存取 Autonomous Database 的應用程式使用者,然後結束 SQL*Plus。
    SQL> alter user example grant connect through tdm;
    User altered.
    SQL> exit
  8. 確認新使用者連線成功 (系統會提示您輸入密碼):
    $ sqlplus -l example@exampledb_high
    
    [ . . .]
    
    SQL> show user
    USER is "example"
    
    SQL> quit

您將使用此使用者透過 CMAN-TDM 連線至 Oracle Autonomous Database

透過 CMAN 連線至 Oracle Autonomous Database

在執行從屬端應用程式以新增連線之機器的 $TNS_ADMIN/tnsnames.ora 檔案中,為伺服器新增 CMAN-TDM 位址。
  1. 如果 VM 位於防火牆後方,請先開啟 CMAN-TDM 連接埠 (在此情況下為 1523),作為 CMAN-TDM 之 Linux VM 上的 root 使用者。
    $ sudo su root
    $ firewall-cmd --permanent --add-port=1523/tcp
    $ firewall-cmd --reload
  2. 您可以檢視從屬端應用程式所在機器的 $TNS_ADMIN/tnsnames.ora 檔案,以確認位址參數。您可以在檔案中新增 CMAN-TDM 連線別名。

    在此範例中,用戶端應用程式 SQL*Plus 與 CMAN-TDM 位於相同的機器上。

    位址參數包括 CMAN-TDM 位址。connect_data 參數必須包含 Autonomous Databaseservice_name 參數。

    exampledb_high_cman_tdm = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcp)(port=1523)(host=oracle-cloud-linuxvm))(connect_data=(service_name=g5cadf7d7e4c6c8_exampledb_high.adb.oraclecloud.com)))
  3. 執行 cmctl 公用程式以啟動 CMAN-TDM
    $ $ORACLE_HOME/bin/cmctl startup -c cman-test
    公用程式會連線並啟動您的 CMAN 執行處理。會顯示執行處理的狀態和詳細資訊。
  4. 使用先前建立的 CMAN-TDM 連線別名和應用程式使用者 example 來執行 SQL*Plus,以連線至 Autonomous Database
    $ sqlplus example@exampledb_high_cman_tdm

    SQL 查詢會顯示 CMAN-TDM 用來連線至您 Oracle Autonomous Database 的資料庫代理主機使用者 TDM。此查詢會在直接連線至 Oracle Database 時傳回空白值。

您現在已透過 CMAN-TDM 連線至 Oracle Autonomous Database