將 Oracle 外部資料表遷移到 Amazon Aurora PostgreSQL 相容版本 - AWS Prescriptive Guidance

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 Oracle 外部資料表遷移到 Amazon Aurora PostgreSQL 相容版本

由阿努拉達中國(AWS)和拉格哈夫(AWS)創建

來源:資料庫:關聯

目標:資料庫:關聯

R 類型 重新架構

:Conment PoC 或試驗

Technologies 移轉; 資料庫

工作負載:開放原始碼

AWS 服務:Amazon S3

Summary

外部表格可讓 Oracle 查詢資料庫外部儲存在平面檔案中的資料。您可以使用 ORACLE_LOADER 驅動程式來存取以 SQL*Loader 公用程式可載入之任何格式儲存的資料。您無法在外部資料表上使用資料處理語言 (DML),但您可以使用外部資料表進行查詢、聯結和排序作業。

與 Amazon Aurora 相容的 PostgreQ 版不提供類似於 Oracle 中的外部表格的功能。相反地,您必須使用現代化來開發符合功能需求且節儉的可擴充解決方案。

此模式提供的步驟,可讓您將不同類型的 Oracle 外部資料表遷移至 Amazon Web Services (AWS) 雲端的 Aurora PostgreSQL 相容版本。aws_s3延伸。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • AWS 命令列界面 (AWS CLI)

  • 可用的 Aurora PostgreQ 相容資料庫執行處理

  • 含有外部資料表的內部部署 Oracle 資料庫

  • 客戶端 API

  • 資料檔案 

限制

  • 此模式不提供作為 Oracle 外部表格取代的功能。不過,您可以進一步增強步驟和範例程式碼,以達成資料庫現代化目標。

  • 文件不應包含作為分隔符傳遞的字符aws_s3匯出和匯入函數。

Architecture

來源技術堆疊

Oracle

來源架構

目標技術堆疊

  • Amazon Aurora PostgreSQL 相容

  • Amazon CloudWatch

  • AWS Lambda

  • AWS Secrets Manager

  • Amazon Simple Notification Service (Amazon SNS)

  • Amazon Simple Storage Service (Amazon S3)

目標架構

下圖顯示解決方案的高層級表示方法。

自動化和擴充

對外部表格的任何新增或變更都可以使用中繼資料維護來處理。

Tools

  • Amazon Aurora PostgreSQL 相容— Amazon Aurora PostgreSQL 相容版本是與 PostgreSQL 相容的完全受管且符合 ACID 規範的關聯式資料庫引擎,結合了高端商用資料庫的速度和可靠性,以及開放原始碼資料庫的成本效益。

  • AWS CLI— AWS Command Line Interface (AWS CLI) 是用於管理 AWS 服務的統一工具。只要一個工具來下載和設定,就可以從命令列控制多個 AWS 服務,並透過指令碼將服務自動化。

  • Amazon CloudWatch— Amazon CloudWatch 察監控 Amazon S3 資源和使用率。

  • AWS Lambda— AWS Lambda 是無伺服器運算服務,支援執行程式碼,而不需佈建或管理伺服器、建立工作負載感知叢集擴展邏輯、維護事件整合或管理執行階段。在這種模式中,Lambda 會在檔案上傳到 Amazon S3 時執行資料庫函數。

  • AWS Secrets Manager— AWS Secrets Manager 是一項用於認證儲存和擷取的服務。使用 Secrets Manager,您可以將程式碼中硬式編碼的登入資料,包括密碼,改成透過 API 呼叫 Secrets Manager,以程式設計方法擷取秘密。

  • Amazon S3— Amazon Simple Storage Service (Amazon S3) 提供了一個儲存層,用於接收和存放檔案,以便在與 Aurora PostgreQ 相容的叢集之間進行消耗和傳輸。

  • aws_s3aws_s3擴充套件整合了與 Amazon S3 和 Aurora 相容的功能。

  • Amazon SNS— Amazon Simple Notification Service (Amazon SNS) 協調與管理發佈商和用戶端之間的訊息傳遞或傳送。在此模式中,Amazon SNS 用於傳送通知。

Code

無論何時將檔案放置在 S3 儲存貯體中,都必須建立資料庫函數,並從處理應用程式或 Lambda 函數呼叫。如需詳細資訊,請參閱程式碼 (隨附)。

Epics

任務描述所需技能
將外部檔案新增至來源資料庫。

建立外部檔案,並將其移至oracle目錄。

DBA
任務描述所需技能
建立 Aurora PostgreSQL 資料庫。

在 Amazon Aurora PostgreSQL 相容叢集中建立資料庫執行個體。

DBA
建立資料架構和表格。

這些資料表包括實際資料表、臨時資料表、錯誤與記錄資料表,以及中繼資料表。

DBA, 開發人員
建立 DB 函數。

要創建 DB 函數,使用load_external_table_latest.sql檔案 (已附加)。

DBA, 開發人員
任務描述所需技能
建立角色。

建立具有存取 Amazon S3 和 Amazon Relations Database Service (Amazon RDS) 的權限的角色。此角色將被分配給 Lambda 以執行模式。

DBA
建立 Lambda 函數。

若要建立 Lambda 函式,請使用附加的程式碼和您建立的角色。

DBA
設定 S3 儲存貯體事件觸發程序。

設定機制來呼叫 S3 儲存貯體中所有物件建立事件的 Lambda 函數。

DBA
建立秘密

使用「Secrets Manager」建立資料庫證明資料的秘密名稱。在 Lambda 函數中傳遞秘密。

DBA
上傳 Lambda 支援檔案。

上傳一個 .zip 檔案,其中包含 Lambda 支援套件和附加的 Python 指令碼,用於連接至與 Aurora 後續運作相容的檔案。Python 代碼調用您在數據庫中創建的函數。

DBA
任務描述所有技能
建立 S3 儲存貯體

在 Amazon S3 主控台上,建立具有不包含前導斜線的唯一名稱的 S3 儲存貯體。S3 儲存貯體的名稱必須是全域唯一,且命名空間會由所有 AWS 帳戶共享。

DBA
建立 IAM 政策。

若要建立 AWS Identity and Access Management (IAM) 政策,請使用s3bucketpolicy_for_import.json(已附上)。

DBA
建立角色。

為與 Aurora PostgreQ 相容的兩個角色建立一個角色,一個角色用於匯入,另一個角色用於匯出。將對應的原則指派給角色。

DBA
將角色附加到與 Aurora PostgreSQL 相容的叢集。

管理角色,請將匯入和匯出角色附加至 Aurora PostgreSQL 叢集。

DBA
建立與 Aurora PostgreSQL 相容的支援物件。

使用ext_tbl_scripts.sql(已附加) 表格指令碼。使用load_external_Table_latest.sql(附加)用於自定義函數。

DBA
任務描述所有技能
將檔案上傳至 S3 儲存貯體。

若要將測試檔案上傳到 S3 儲存貯體,請在 AWS CLI 中使用主控台或下列命令。 

aws s3 cp /Users/Desktop/ukpost/exttbl/"testing files"/aps s3://s3importtest/inputext/aps

一旦上傳檔案,儲存貯體事件就會啟動 Lambda 函數,該函數會執行與 Aurora PostgreQL 相容的函數。

DBA
檢查資料和記錄檔和錯誤檔案。

Aurora Postgreql 兼容函數將文件加載到主表中,並創建.log.bad文件。

DBA
監控解決方案。

在 Amazon CloudWatch 主控台中,監控 Lambda 功能。

DBA

Attachments

attachment.zip