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)
如要瞭解如何啟用服務,請參閱「啟用服務」。
如果專案先前未啟用這些服務或權限,系統會在設定連結器時提示您啟用。
設定連接器
連線專屬於資料來源。也就是說,如果您有多個資料來源,則必須為每個資料來源建立個別的連線。如要建立連線,請按照下列步驟操作:
- 在 Cloud 控制台中,前往「Integration Connectors」>「Connections」頁面,然後選取或建立 Google Cloud 專案。
- 按一下「+ 建立新項目」開啟「建立連線」頁面。
- 在「位置」部分中,選擇連線位置。
- 區域:從下拉式清單中選取位置。
如需所有支援的地區清單,請參閱「位置」一文。
- 點選「下一步」。
- 區域:從下拉式清單中選取位置。
- 在「連線詳細資料」部分,完成下列步驟:
- 連接器:從可用連接器的下拉式清單中選取「Oracle DB」。
- 連接器版本:從可用版本的下拉式清單中選取版本 2。
- 在「連線名稱」欄位中,輸入連線執行個體的名稱。
連線名稱必須符合下列條件:
- 連線名稱可使用英文字母、數字或連字號。
- 字母必須為小寫。
- 連線名稱開頭須為英文字母,結尾則須為英文字母或數字。
- 連結名稱不得超過 49 個字元。
- 視需要輸入連線執行個體的「Description」(說明)。
- 或者,可啟用 Cloud Logging,然後選取記錄層級。記錄層級預設為
Error
。 - 如要啟用 Cloud Logging,請選取「啟用 Cloud Logging」。
- 服務帳戶:選取具備必要角色的服務帳戶。
- 視需要設定「連線節點設定」:
- 節點數量下限:輸入連線節點數量下限。
- 節點數量上限:輸入連線節點數量上限。
節點是用來處理交易的連線單位 (或備用資源)。連線處理的交易量越多,就需要越多節點;反之,處理的交易量越少,需要的節點就越少。如要瞭解節點對連接器定價的影響,請參閱「 連線節點定價」。如未輸入任何值,系統預設會將節點下限設為 2 (提高可用性),節點上限則設為 50。
- 根據 Oracle 資料庫連線是使用伺服器連線還是 TNS 連線,指定 ServiceName 或 DataSource (TNS 連線字串)。如果同時指定兩者,系統會使用 DataSource。
- ServiceName:如果您使用伺服器型驗證,請指定服務名稱和目的地詳細資料。
-
DataSource:如果您使用 TNS 連線,請指定 Oracle Net Services 名稱、連線描述元 (也稱為 TNS 連線字串),或可識別要連線資料庫的簡易連線命名。請使用以下格式指定 TNS 連線字串:
(DESCRIPTION=(ADDRESS=(protocol_address_information))(CONNECT_DATA= (SERVICE_NAME=service_name)))
。如果您指定資料來源,就不得在「目的地」部分再次指定目的地詳細資料。
- 視需要選取「Include Synonyms」(包含同義字)。
- 閒置連線逾時:輸入逾時值 (以秒為單位),指定借用的連線閒置多久後會視為閒置。
- 非作用中連線逾時:輸入連線逾時值 (以秒為單位)。
- 連線重複使用時間上限:輸入連線重複使用時間 (以秒為單位)。
- TTL 連線逾時:輸入連線可保持使用中的時間上限 (以秒為單位)。
- 可瀏覽的結構定義:輸入以半形逗號分隔的結構定義名稱,用於擷取實體和動作。例如:
schemaA, schemaB, schemaC
。 - 選用:按一下「+ 新增標籤」,以鍵/值組合的形式為連線新增標籤。
- 點按「下一步」。
- 在「目的地」部分,輸入要連線的遠端主機 (後端系統) 詳細資料。
- 目的地類型:選取目的地類型。
- 如要指定目的地主機名稱或 IP 位址,請選取「主機地址」,然後在「主機 1」欄位中輸入地址。
- 如要建立私人連線,請選取「Endpoint attachment」(端點連結),然後從「Endpoint Attachment」(端點連結) 清單中選擇所需連結。
如要建立與後端系統的公開連線,並加強安全性,建議為連線設定靜態輸出 IP 位址,然後設定防火牆規則,只允許特定靜態 IP 位址。
如要輸入其他目的地,請按一下「+新增目的地」。
- 點按「下一步」。
- 目的地類型:選取目的地類型。
-
在「Authentication」(驗證) 部分中,輸入驗證詳細資料。
- 選取「驗證類型」並輸入相關詳細資料。
Oracle DB 連線支援下列驗證類型:
- 使用者名稱和密碼
- 點按「下一步」。
如要瞭解如何設定這些驗證類型,請參閱「設定驗證」。
- 選取「驗證類型」並輸入相關詳細資料。
- 檢查:檢查連線和驗證詳細資料。
- 點選「建立」。
設定驗證機制
根據要使用的驗證方式輸入詳細資料。
-
使用者名稱和密碼
- 使用者名稱:用於驗證的 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 查詢,連接器提供「執行自訂查詢」動作。
如要建立自訂查詢,請按照下列步驟操作:
- 請按照詳細說明 新增連接器工作。
- 設定連接器工作時,請在要執行的動作類型中選取「動作」。
- 在「動作」清單中,選取「執行自訂查詢」,然後按一下「完成」。
- 展開「Task input」(工作輸入) 區段,然後執行下列操作:
- 在「Timeout after」(逾時時間) 欄位中,輸入查詢執行前的等待秒數。
預設值:
180
秒。 - 在「資料列數量上限」欄位中,輸入要從資料庫傳回的資料列數量上限。
預設值為
25
。 - 如要更新自訂查詢,請按一下「編輯自訂指令碼」。「指令碼編輯器」對話方塊隨即開啟。
- 在「指令碼編輯器」對話方塊中輸入 SQL 查詢,然後按一下「儲存」。
您可以在 SQL 陳述式中使用問號 (?) 代表單一參數,該參數必須在查詢參數清單中指定。舉例來說,下列 SQL 查詢會從
Employees
資料表選取與LastName
資料欄指定值相符的所有資料列:SELECT * FROM Employees where LastName=?
- 如果您在 SQL 查詢中使用問號,請為每個問號點按「+ 新增參數名稱」,加入參數。執行整合時,這些參數會依序取代 SQL 查詢中的問號 (?)。舉例來說,如果您新增了三個問號 (?),就必須依序新增三個參數。
如要新增查詢參數,請按照下列步驟操作:
- 在「類型」清單中,選取參數的資料類型。
- 在「值」欄位中輸入參數值。
- 如要新增多個參數,請按一下「+ 新增查詢參數」。
- 在「Timeout after」(逾時時間) 欄位中,輸入查詢執行前的等待秒數。
如要瞭解如何使用自訂查詢動作,請參閱「動作範例」。
動作範例
本節說明如何在這個連接器中執行部分動作。
範例 - 執行 group by 查詢
- 在「設定連接器工作」對話方塊中,選取「動作」。
- 選取「執行自訂查詢」動作,然後按一下「完成」。
- 在「連結器」工作的「工作輸入」部分,按一下「編輯自訂查詢」。系統會開啟「自訂查詢」對話方塊。
- 在「自訂查詢」對話方塊中輸入下列 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
這個範例會從
EMPLOYEES
和EMPLOYEE_DEPARTMENT
資料表選取員工記錄。如果動作成功,連接器工作的connectorOutputPayload
回應參數會包含查詢結果集。
範例 - 執行參數化查詢
- 在「設定連接器工作」對話方塊中,選取「動作」。
- 選取「執行自訂查詢」動作,然後按一下「完成」。
- 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,為欄位設定下列值:
- 逾時時間:
10
- 資料列數量上限:
3
- 類型:
VARCHAR
- Value:
John
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=?
這個範例會選取員工姓名為 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 }]
範例 - 使用序號值插入記錄
- 在「設定連接器工作」對話方塊中,選取「動作」。
- 選取「執行自訂查詢」動作,然後按一下「完成」。
- 在「自訂查詢」對話方塊中,輸入下列 SQL 查詢,然後按一下「儲存」:
INSERT INTO AUTHOR(id,title) VALUES(author_table_id_seq.NEXTVAL,'Sample_book_title')
這個範例會使用現有的 author_table_id_seq
序列物件,在 AUTHOR
資料表中插入記錄。如果動作成功,連接器工作 connectorOutputPayload
回應參數的值會類似以下內容:
[{ }]
範例 - 使用匯總函式執行查詢
- 在「設定連接器工作」對話方塊中,選取「動作」。
- 選取「執行自訂查詢」動作,然後按一下「完成」。
- 在「自訂查詢」對話方塊中,輸入下列 SQL 查詢,然後按一下「儲存」:
SELECT SUM(SALARY) as Total FROM EMPLOYEES
這個範例會計算 EMPLOYEES
資料表中的薪資總值。如果動作成功,連接器工作 connectorOutputPayload
回應參數的值會類似以下內容:
[{ "TOTAL": 13000.0 }]
範例 - 建立新資料表
- 在「設定連接器工作」對話方塊中,選取「動作」。
- 選取「執行自訂查詢」動作,然後按一下「完成」。
- 在「自訂查詢」對話方塊中,輸入下列 SQL 查詢,然後按一下「儲存」:
CREATE TABLE TEST1 (ID INT, NAME VARCHAR(40),DEPT VARCHAR(20),CITY VARCHAR(10))
這個範例會建立 TEST1
資料表。如果動作成功,連接器工作 connectorOutputPayload
回應參數的值會類似以下內容:
[{ }]
實體作業範例
範例 - 列出所有員工
這個範例會列出 Employee
實體中的所有員工。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Employee
。 - 選取「
List
」作業,然後按一下「完成」。 - (選用) 在「連結器」工作的「工作輸入」部分,您可以指定篩選子句,篩選結果集。
範例 - 取得員工詳細資料
這個範例會從 Employee
實體取得 ID 為 45 的員工詳細資料。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Employee
。 - 選取「
Get
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入) 區段中,按一下「EntityId」,然後在「Default Value」(預設值) 欄位中輸入
45
。其中
45
是Employee
實體的主鍵值。
範例 - 建立員工記錄
這個範例會在 Employee
實體中新增員工記錄。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Employee
。 - 選取「
Create
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "EMPLOYEE_ID": 69.0, "EMPLOYEE_NAME": "John", "CITY": "Bangalore" }
如果整合成功,連接器工作的
connectorOutputPayload
欄位會顯示類似下列的值:{ "ROWID": "AAAoU0AABAAAc3hAAF" }
範例 - 更新員工記錄
這個範例會更新 Employee
實體中 ID 為 69 的員工記錄。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Employee
。 - 選取「
Update
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "EMPLOYEE_NAME": "John", "CITY": "Mumbai" }
- 按一下「entityId」,然後在「Default Value」欄位中輸入
69
。或者,您也可以將 filterClause 設為
69
,而非指定 entityId。如果整合成功,連接器工作的
connectorOutputPayload
欄位會包含類似下列內容的值:{ }
範例 - 刪除員工記錄
這個範例會刪除 Employee
實體中 ID 為 35 的員工記錄。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Employee
。 - 選取「
Delete
」作業,然後按一下「完成」。 - 在「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 中建立及使用「連線器」工作,請參閱「連線器工作」。