Oracle 資料庫 (第 2 版)

Oracle DB 連接器可讓您連線至 Oracle 資料庫執行個體,並執行支援的資料庫作業。

支援的版本

這個連接器支援的最低 Oracle 資料庫版本為 11.2。

事前準備

使用 Oracle DB 連接器前,請先完成下列工作:

  • 在 Google Cloud 專案中:
    • 確認已設定網路連線。如要瞭解網路模式,請參閱「網路連線」。
    • roles/connectors.admin IAM 角色授予設定連線器的使用者。
    • 將下列 IAM 角色授予要用於連接器的服務帳戶:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor

      服務帳戶是特殊的 Google 帳戶類型,主要用於代表需要驗證且必須取得授權才能存取 Google API 資料的非人類使用者。如果您沒有服務帳戶,請建立服務帳戶。詳情請參閱「建立服務帳戶」。

    • 啟用下列服務:
      • secretmanager.googleapis.com (Secret Manager API)
      • connectors.googleapis.com (Connectors API)

      如要瞭解如何啟用服務,請參閱「啟用服務」。

    如果專案先前未啟用這些服務或權限,系統會在設定連結器時提示您啟用。

設定連接器

連線專屬於資料來源。也就是說,如果您有多個資料來源,則必須為每個資料來源建立個別的連線。如要建立連線,請按照下列步驟操作:

  1. Cloud 控制台中,前往「Integration Connectors」>「Connections」頁面,然後選取或建立 Google Cloud 專案。

    前往「連線」頁面

  2. 按一下「+ 建立新項目」開啟「建立連線」頁面。
  3. 在「位置」部分中,選擇連線位置。
    1. 區域:從下拉式清單中選取位置。

      如需所有支援的地區清單,請參閱「位置」一文。

    2. 點選「下一步」
  4. 在「連線詳細資料」部分,完成下列步驟:
    1. 連接器:從可用連接器的下拉式清單中選取「Oracle DB」
    2. 連接器版本:從可用版本的下拉式清單中選取版本 2。
    3. 在「連線名稱」欄位中,輸入連線執行個體的名稱。

      連線名稱必須符合下列條件:

      • 連線名稱可使用英文字母、數字或連字號。
      • 字母必須為小寫。
      • 連線名稱開頭須為英文字母,結尾則須為英文字母或數字。
      • 連結名稱不得超過 49 個字元。
    4. 視需要輸入連線執行個體的「Description」(說明)
    5. 或者,可啟用 Cloud Logging,然後選取記錄層級。記錄層級預設為 Error
    6. 如要啟用 Cloud Logging,請選取「啟用 Cloud Logging」
    7. 服務帳戶:選取具備必要角色的服務帳戶。
    8. 視需要設定「連線節點設定」

      • 節點數量下限:輸入連線節點數量下限。
      • 節點數量上限:輸入連線節點數量上限。

      節點是用來處理交易的連線單位 (或備用資源)。連線處理的交易量越多,就需要越多節點;反之,處理的交易量越少,需要的節點就越少。如要瞭解節點對連接器定價的影響,請參閱「 連線節點定價」。如未輸入任何值,系統預設會將節點下限設為 2 (提高可用性),節點上限則設為 50。

    9. 根據 Oracle 資料庫連線是使用伺服器連線還是 TNS 連線,指定 ServiceNameDataSource (TNS 連線字串)。如果同時指定兩者,系統會使用 DataSource。
      • ServiceName:如果您使用伺服器型驗證,請指定服務名稱和目的地詳細資料。
      • DataSource:如果您使用 TNS 連線,請指定 Oracle Net Services 名稱、連線描述元 (也稱為 TNS 連線字串),或可識別要連線資料庫的簡易連線命名。請使用以下格式指定 TNS 連線字串:(DESCRIPTION=(ADDRESS=(protocol_address_information))(CONNECT_DATA= (SERVICE_NAME=service_name)))。如果您指定資料來源,就不得在「目的地」部分再次指定目的地詳細資料。
    10. 視需要選取「Include Synonyms」(包含同義字)
    11. 閒置連線逾時:輸入逾時值 (以秒為單位),指定借用的連線閒置多久後會視為閒置。
    12. 非作用中連線逾時:輸入連線逾時值 (以秒為單位)。
    13. 連線重複使用時間上限:輸入連線重複使用時間 (以秒為單位)。
    14. TTL 連線逾時:輸入連線可保持使用中的時間上限 (以秒為單位)。
    15. 可瀏覽的結構定義:輸入以半形逗號分隔的結構定義名稱,用於擷取實體和動作。例如:schemaA, schemaB, schemaC
    16. 選用:按一下「+ 新增標籤」,以鍵/值組合的形式為連線新增標籤。
    17. 點按「下一步」
  5. 在「目的地」部分,輸入要連線的遠端主機 (後端系統) 詳細資料。
    1. 目的地類型:選取目的地類型
      • 如要指定目的地主機名稱或 IP 位址,請選取「主機地址」,然後在「主機 1」欄位中輸入地址。
      • 如要建立私人連線,請選取「Endpoint attachment」(端點連結),然後從「Endpoint Attachment」(端點連結) 清單中選擇所需連結。

      如要建立與後端系統的公開連線,並加強安全性,建議為連線設定靜態輸出 IP 位址,然後設定防火牆規則,只允許特定靜態 IP 位址。

      如要輸入其他目的地,請按一下「+新增目的地」

    2. 點按「下一步」
  6. 在「Authentication」(驗證) 部分中,輸入驗證詳細資料。
    1. 選取「驗證類型」並輸入相關詳細資料。

      Oracle DB 連線支援下列驗證類型:

      • 使用者名稱和密碼
    2. 如要瞭解如何設定這些驗證類型,請參閱「設定驗證」。

    3. 點按「下一步」
  7. 檢查:檢查連線和驗證詳細資料。
  8. 點選「建立」

設定驗證機制

根據要使用的驗證方式輸入詳細資料。

  • 使用者名稱和密碼
    • 使用者名稱:用於驗證的 Oracle 帳戶使用者名稱
    • 密碼:Secret Manager 密鑰,內含與 Oracle 帳戶使用者名稱相關聯的密碼。

Oracle 資料庫基本驗證連線類型

下表說明可為 Oracle DB 基本驗證連線類型設定的欄位。

欄位名稱 詳細資料
位置 us-central1
連接器 Oracle 資料庫
連接器版本 2
連線名稱 google-oracledb-plsql-new
啟用 Cloud Logging
服務帳戶 SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
服務名稱 pdb1
節點數量下限 2
節點數量上限 50
主機位址 198.51.100.0
通訊埠 1521
使用者名稱 使用者名稱
密碼 密碼
密鑰版本 1

Oracle 資料庫 TNS 連線類型

下表說明可為 Oracle DB TNS 連線類型設定的欄位。

欄位名稱 詳細資料
位置 us-central1
連接器 Oracle 資料庫
連接器版本 2
連線名稱 google-oracledb-plsql-tns
啟用 Cloud Logging
服務帳戶 SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
資料來源 (DESCRIPTION=(ADDRESS=(PROTOCOL_ADDRESS_INFORMATION))(CONNECT_DATA= (SERVICE_NAME=service_name)))
節點數量下限 2
節點數量上限 50
使用者名稱 使用者名稱
密碼 密碼
密鑰版本 1

實體、作業和動作

所有整合連接器都會為所連應用程式的物件提供抽象層。您只能透過這個抽象化程序存取應用程式的物件。抽象化會以實體、作業和動作的形式呈現。

  • 實體: 實體可以視為已連結應用程式或服務中的物件,或是屬性集合。實體的定義因連接器而異。舉例來說,在資料庫連接器中,資料表是實體;在檔案伺服器連接器中,資料夾是實體;在訊息系統連接器中,佇列是實體。

    不過,連接器可能不支援或沒有任何實體,在這種情況下,Entities 清單會是空白。

  • 作業: 作業是指您可以在實體上執行的活動。您可以對實體執行下列任一操作:

    從可用清單中選取實體,系統會產生該實體可用的作業清單。如需作業的詳細說明,請參閱 Connectors 工作的實體作業。 不過,如果連接器不支援任何實體作業,系統就不會在 Operations 清單中列出這些不支援的作業。

  • 動作: 動作是透過連接器介面提供給整合的第一類函式。動作可讓您變更一或多個實體,且因連接器而異。一般來說,動作會有一些輸入參數和輸出參數。不過,連接器可能不支援任何動作,此時 Actions 清單會是空白。

系統限制

Oracle DB 連接器每秒最多可處理 70 筆交易, 每個節點, 並節流任何超出此限制的交易。根據預設,Integration Connectors 會為連線分配 2 個節點 (以提高可用性)。

如要瞭解 Integration Connectors 適用的限制,請參閱「限制」一文。

支援的資料類型

這個連接器支援的資料類型如下:

  • BIGINT
  • BINARY
  • BIT
  • BOOLEAN
  • CHAR
  • DATE
  • DECIMAL
  • DOUBLE
  • FLOAT
  • INTEGER
  • LONGN VARCHAR
  • LONG VARCHAR
  • NCHAR
  • NUMERIC
  • NVARCHAR
  • REAL
  • SMALL INT
  • 時間
  • TIMESTAMP
  • TINY INT
  • VARBINARY
  • VARCHAR

動作

Oracle DB 連接器可讓您以 Oracle 資料庫支援的格式,執行預存程序、函式和自訂 SQL 查詢。如要執行自訂 SQL 查詢,連接器提供「執行自訂查詢」動作。

如要建立自訂查詢,請按照下列步驟操作:

  1. 請按照詳細說明 新增連接器工作
  2. 設定連接器工作時,請在要執行的動作類型中選取「動作」
  3. 在「動作」清單中,選取「執行自訂查詢」,然後按一下「完成」

    圖片:顯示 execute-custom-query-action 圖片:顯示 execute-custom-query-action

  4. 展開「Task input」(工作輸入) 區段,然後執行下列操作:
    1. 在「Timeout after」(逾時時間) 欄位中,輸入查詢執行前的等待秒數。

      預設值:180 秒。

    2. 在「資料列數量上限」欄位中,輸入要從資料庫傳回的資料列數量上限。

      預設值為 25

    3. 如要更新自訂查詢,請按一下「編輯自訂指令碼」。「指令碼編輯器」對話方塊隨即開啟。

      圖片:顯示自訂 SQL 查詢 圖片:顯示自訂 SQL 查詢

    4. 在「指令碼編輯器」對話方塊中輸入 SQL 查詢,然後按一下「儲存」

      您可以在 SQL 陳述式中使用問號 (?) 代表單一參數,該參數必須在查詢參數清單中指定。舉例來說,下列 SQL 查詢會從 Employees 資料表選取與 LastName 資料欄指定值相符的所有資料列:

      SELECT * FROM Employees where LastName=?

    5. 如果您在 SQL 查詢中使用問號,請為每個問號點按「+ 新增參數名稱」,加入參數。執行整合時,這些參數會依序取代 SQL 查詢中的問號 (?)。舉例來說,如果您新增了三個問號 (?),就必須依序新增三個參數。

      圖片:顯示 add-query-param 圖片:顯示 add-query-param

      如要新增查詢參數,請按照下列步驟操作:

      1. 在「類型」清單中,選取參數的資料類型。
      2. 在「值」欄位中輸入參數值。
      3. 如要新增多個參數,請按一下「+ 新增查詢參數」

如要瞭解如何使用自訂查詢動作,請參閱「動作範例」。

動作範例

本節說明如何在這個連接器中執行部分動作。

範例 - 執行 group by 查詢

  1. 在「設定連接器工作」對話方塊中,選取「動作」
  2. 選取「執行自訂查詢」動作,然後按一下「完成」
  3. 在「連結器」工作的「工作輸入」部分,按一下「編輯自訂查詢」系統會開啟「自訂查詢」對話方塊。
  4. 在「自訂查詢」對話方塊中輸入下列 SQL 查詢,然後按一下「儲存」
          Select E.EMPLOYEE_ID, E.EMPLOYEE_NAME, E.CITY
          FROM EMPLOYEES E
          LEFT JOIN EMPLOYEE_DEPARTMENT ED ON E.EMPLOYEE_ID=ED.ID 
          WHERE E.EMPLOYEE_NAME = 'John'
          GROUP BY E.CITY,E.EMPLOYEE_ID,E.EMPLOYEE_NAME
        

    這個範例會從 EMPLOYEESEMPLOYEE_DEPARTMENT 資料表選取員工記錄。如果動作成功,連接器工作的 connectorOutputPayload 回應參數會包含查詢結果集。

範例 - 執行參數化查詢

  1. 在「設定連接器工作」對話方塊中,選取「動作」
  2. 選取「執行自訂查詢」動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,為欄位設定下列值:
    1. 逾時時間: 10
    2. 資料列數量上限: 3
  4. 按一下「+新增參數名稱」,然後輸入下列值:
    1. 類型: VARCHAR
    2. Value: John
  5. 按一下「編輯自訂查詢」。系統會開啟「自訂查詢」對話方塊。
  6. 在「自訂查詢」對話方塊中,輸入下列 SQL 查詢,然後按一下「儲存」
      Select C.ID,C.NAME,C.CITY,C.O_DATE,E.EMPLOYEE_ID 
      FROM customqueries C,Employees E 
      WHERE C.ID=E.Employee_id and C.NAME=?
  7. 這個範例會選取員工姓名為 John 的員工記錄。 請注意,員工姓名已參數化。 如果動作成功,連接器工作 connectorOutputPayload 回應參數的值會類似以下內容:

    [{
    "NAME": "John",
    "O_DATE": "2023-06-01 00:00:00.0",
    "EMPLOYEE_ID": 1.0
    }, {
    "NAME": "John",
    "O_DATE": "2021-07-01 00:00:00.0",
    "EMPLOYEE_ID": 3.0
    }, {
    "NAME": "John",
    "O_DATE": "2022-09-01 00:00:00.0",
    "EMPLOYEE_ID": 4.0
    }]

範例 - 使用序號值插入記錄

  1. 在「設定連接器工作」對話方塊中,選取「動作」
  2. 選取「執行自訂查詢」動作,然後按一下「完成」
  3. 在「自訂查詢」對話方塊中,輸入下列 SQL 查詢,然後按一下「儲存」
      INSERT INTO AUTHOR(id,title) VALUES(author_table_id_seq.NEXTVAL,'Sample_book_title')
  4. 這個範例會使用現有的 author_table_id_seq 序列物件,在 AUTHOR 資料表中插入記錄。如果動作成功,連接器工作 connectorOutputPayload 回應參數的值會類似以下內容:

    [{
    }]

範例 - 使用匯總函式執行查詢

  1. 在「設定連接器工作」對話方塊中,選取「動作」
  2. 選取「執行自訂查詢」動作,然後按一下「完成」
  3. 在「自訂查詢」對話方塊中,輸入下列 SQL 查詢,然後按一下「儲存」
      SELECT SUM(SALARY) as Total FROM EMPLOYEES
      
  4. 這個範例會計算 EMPLOYEES 資料表中的薪資總值。如果動作成功,連接器工作 connectorOutputPayload 回應參數的值會類似以下內容:

    [{
    "TOTAL": 13000.0
    }]  
      

範例 - 建立新資料表

  1. 在「設定連接器工作」對話方塊中,選取「動作」
  2. 選取「執行自訂查詢」動作,然後按一下「完成」
  3. 在「自訂查詢」對話方塊中,輸入下列 SQL 查詢,然後按一下「儲存」
        CREATE TABLE TEST1 (ID INT, NAME VARCHAR(40),DEPT VARCHAR(20),CITY VARCHAR(10))
     
  4. 這個範例會建立 TEST1 資料表。如果動作成功,連接器工作 connectorOutputPayload 回應參數的值會類似以下內容:

    [{
    }]

實體作業範例

範例 - 列出所有員工

這個範例會列出 Employee 實體中的所有員工。

  1. 在「Configure connector task」對話方塊中,按一下 Entities
  2. Entity 清單中選取 Employee
  3. 選取「List」作業,然後按一下「完成」
  4. (選用) 在「連結器」工作的「工作輸入」部分,您可以指定篩選子句,篩選結果集。

範例 - 取得員工詳細資料

這個範例會從 Employee 實體取得 ID 為 45 的員工詳細資料。

  1. 在「Configure connector task」對話方塊中,按一下 Entities
  2. Entity 清單中選取 Employee
  3. 選取「Get」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入) 區段中,按一下「EntityId」,然後在「Default Value」(預設值) 欄位中輸入 45

    其中 45Employee 實體的主鍵值。

範例 - 建立員工記錄

這個範例會在 Employee 實體中新增員工記錄。

  1. 在「Configure connector task」對話方塊中,按一下 Entities
  2. Entity 清單中選取 Employee
  3. 選取「Create」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
    "EMPLOYEE_ID": 69.0,
    "EMPLOYEE_NAME": "John",
    "CITY": "Bangalore"
    }

    如果整合成功,連接器工作的 connectorOutputPayload 欄位會顯示類似下列的值:

     {
    "ROWID": "AAAoU0AABAAAc3hAAF"
    }

範例 - 更新員工記錄

這個範例會更新 Employee 實體中 ID 為 69 的員工記錄。

  1. 在「Configure connector task」對話方塊中,按一下 Entities
  2. Entity 清單中選取 Employee
  3. 選取「Update」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
    "EMPLOYEE_NAME": "John",
    "CITY": "Mumbai"
    }
  5. 按一下「entityId」,然後在「Default Value」欄位中輸入 69

    或者,您也可以將 filterClause 設為 69,而非指定 entityId

    如果整合成功,連接器工作的 connectorOutputPayload 欄位會包含類似下列內容的值:

    {
    }

範例 - 刪除員工記錄

這個範例會刪除 Employee 實體中 ID 為 35 的員工記錄。

  1. 在「Configure connector task」對話方塊中,按一下 Entities
  2. Entity 清單中選取 Employee
  3. 選取「Delete」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下「entityId」,然後在「Default Value」(預設值) 欄位中輸入 35

使用 Terraform 建立連線

您可以使用 Terraform 資源建立新連線。

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

如要查看用於建立連線的 Terraform 範本範例,請參閱範本範例

使用 Terraform 建立這項連線時,您必須在 Terraform 設定檔中設定下列變數:

參數名稱 資料類型 必填 說明
service_name STRING Oracle 資料庫的服務名稱。
data_source STRING Oracle Net Services 名稱、連線描述元 (也稱為 TNS 連線字串),或可識別要連線資料庫的簡易連線命名。
include_synonyms BOOLEAN 查詢同義字的中繼資料,並將其設為可用實體。將屬性設為 false 可提升中繼資料效能。
abandoned_connection_timeout INTEGER 閒置連線逾時 (以秒為單位) 會決定借用的連線閒置多久後,會被視為閒置並由連線集區回收。
inactive_connection_timeout INTEGER 閒置連線逾時 (以秒為單位) 會決定可用連線在連線集區中保留的時間長度,超過後就會從集區中移除。
max_connection_reuse_time INTEGER 連線重複使用時間上限 (以秒為單位) 會指定連線可重複使用的時間上限,超過後集區就會移除並關閉連線。
ttl_connection_timeout INTEGER 連線可保持使用中的時間上限 (以秒為單位)。
browsable_schemas STRING 以半形逗號分隔的架構 (例如 SchemaA、SchemaB),用於擷取連線的實體和動作。預設使用者的結構定義

在整合服務中使用 Oracle DB 連線

建立連線後,Apigee Integration 和 Application Integration 都會提供該連線。您可以在整合中透過「連接器」工作使用連線。

  • 如要瞭解如何在 Apigee Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。
  • 如要瞭解如何在 Application Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。

向 Google Cloud 社群尋求協助

如要發布問題及討論這個連接器,請前往 Cloud 論壇的 Google Cloud 社群。

後續步驟