如何對整合 Amazon RDS for Oracle 與 Amazon S3 時出現的問題進行疑難排解?

2 分的閱讀內容
0

我想對 Amazon Relational Database Service (Amazon RDS) for Oracle 與 Amazon Simple Storage Service (Amazon S3) 整合時出現的問題和錯誤進行疑難排解。

簡短描述

在 Amazon RDS for Oracle 資料庫執行個體與 Amazon S3 儲存貯體之間傳輸檔案時,請確認下列情況:

  • 資料庫執行個體和 S3 儲存貯體位於相同的 AWS 區域。
  • 資料庫執行個體具有 S3 儲存貯體的必要存取權。
  • 資料庫執行個體與包含 S3_INTEGRATION 選項的選項群組關聯。
  • 您只是從 Oracle 目錄物件上傳檔案。此目錄可能是使用者建立的目錄或 DATA_PUMP_DIR 目錄。
  • 對於使用者建立的目錄,執行上載和下載的使用者必須擁有目錄上所需的讀取和寫入權限。如需詳細資訊,請參閱如何在 Amazon RDS for Oracle 資料庫執行個體中管理使用者權限和角色?
  • 如果您要複製子目錄中的資料,請在使用 rdsadmin 套件時明確指定子目錄的名稱。您無法使用 S3_INTEGRATION 選項來複製子目錄。

解決方法

確保資料庫執行個體具有 S3 儲存貯體的必要存取權

檢查您的資料庫執行個體是否具有 AWS Identity and Access Management (IAM) 角色,且權限最低可從 S3 上傳和下載:

  1. 開啟 Amazon RDS 主控台
  2. 在導覽窗格中,選擇資料庫
  3. 選擇您要檢查的資料庫執行個體。
  4. 選擇連線與安全性標籤。
  5. 向下捲動至管理 IAM 角色區段,檢查您是否擁有具有下列權限的作用中 IAM 角色:
    S3:ListBucket
    S3:PutObject
    S3:GetObject

您也可以使用 AWS Command Line Interface (AWS CLI) 命令 describe-db-instances 檢查您的資料庫執行個體是否具有以下最低權限的 IAM 角色:

aws rds describe-db-instances \
--db-instance-identifier example-db-instance \
--query 'DBInstances[*].[AssociatedRoles[*]]'

**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確保您使用的是最新版本的 AWS CLI

檢查 IAM 角色是否存在之後,請根據您的調查結果執行下列任一項作業:

  • 如果 IAM 角色存在但沒有這些最低權限,請修改角色以包含這些許可。
  • 如果您沒有具有必要許可的 IAM 角色,請建立 IAM 政策。授與此政策將檔案從 S3 儲存貯體傳輸到 Amazon RDS 的許可。建立 IAM 政策時,請務必將儲存貯體層級許可新增至儲存貯體,並將物件層級許可新增至物件。

如果儲存貯體許可仍有問題,請修改 IAM 角色以授予 S3 儲存貯體的完整存取權:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::example-bucket/*",
        "arn:aws:s3:::example-bucket"
      ]
    }
  ]
}

**重要:**這會修改 IAM 角色以授予完整存取權限,只是用於測試問題是否來自 IAM 權限。解決問題後,視需要調整自訂權限。

若要將檔案上傳到 S3 中的特定資料夾,請在 rdsadmin.rdsadmin_s3_tasks.upload_to_s3 程序中使用 p_s3_prefix 參數。在上傳檔案之前,請確定您擁有必要的許可。

例如,若要將檔案上傳到 example-folder 資料夾至 S3 儲存貯體 example-bucket,請連接下列 IAM 政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::example-bucket/example-folder/*"
      ]
    }
  ]
}

確定資料庫執行個體與包含 S3_INTEGRATION 選項的選項群組關聯

檢查您的 RDS 資料庫執行個體是否連接選項群組:

  1. 開啟 Amazon RDS 主控台
  2. 在導覽窗格中,選擇資料庫
  3. 選擇您要檢查的資料庫執行個體。
  4. 選擇組態標籤。
  5. 記下選項群組參數。

如果此選項群組不是處於同步狀態,而且您要新增 S3_INTEGRATION 選項,則該選項無法成功新增。因此,請確定選項群組處於同步狀態。

若要檢查此選項群組是否處於同步狀態,請執行下列 AWS CLI 命令:

aws rds describe-db-instances \
--db-instance-identifier example-db-instance \
--query 'DBInstances[*].[OptionGroupMemberships[*]]'

如果選項群組不是處於同步狀態,請為資料庫選擇日誌和事件標籤,然後向下捲動至最近的事件區段。識別阻止選項群組同步的元件,並從資料庫中移除此元件。

如果選項群組處於同步狀態,請檢查選項群組中是否包含 S3_INTEGRATION 選項。如需詳細資訊,請參閱列出選項群組的選項和選項設定。如果 S3_INTEGRATION 選項未包含在選項群組中,請新增該選項。如需詳細資訊,請參閱新增 Amazon S3 整合選項

**注意:**如果 S3_INTEGRATION 選項未新增至資料庫執行個體,您會收到錯誤 ORA-00904: "RDSADMIN"."RDSADMIN_S3_TASKS"."UPLOAD_TO_S3":無效的識別符。此錯誤表示在資料庫執行個體上未建立上傳和下載所需的程序。

將 S3_INTEGRATION 選項新增至 Amazon RDS 不會導致停機。如果您要使用立即套用選項,請確定沒有擱置的維護動作。如有任何擱置中的動作,則這些動作會透過 Amazon S3 整合生效。如需詳細資訊,請參閱維護資料庫執行個體

確保您只從使用者建立的 Oracle 目錄物件或 DATA_PUMP_DIR 目錄上傳/下載檔案

您無法直接在資料庫執行個體中存取 S3 檔案。若要存取這些檔案,則必須將檔案複製到 RDS 主機中的目錄才可存取。若要將檔案從資料庫執行個體上傳或下載到 S3 儲存貯體,請完成下列步驟:

  1. 若要將 Amazon RDS 中的匯出檔案複製到 S3,請先建立傾印檔案。為此,請使用 expdp 命令或 DATA_DUMP_DIR 或自訂目錄中的 dbms_datapump API。然後,使用 rdsadmin.rdsadmin_s3_tasks.upload_to_s3 程序將檔案上傳到 S3。如需有關此程序參數以及上傳檔案之範例查詢的資訊,請參閱將檔案從 Oracle 資料庫執行個體上傳至 Amazon S3 儲存貯體
  2. 使用 rdsadmin. rdsadmin_s3_tasks.download_from_s3 程序將檔案從 S3 儲存貯體下載到 DATA_PUMP_DIR 資料夾或任何使用者建立的目錄。如需有關此程序參數以及上傳檔案之範例查詢的資訊,請參閱將檔案從 Amazon S3 儲存貯體下載至 Oracle 資料庫執行個體

若要監控檔案傳輸的狀態,請檢視執行程序以上傳或下載 rdsadmin 套件時所產生的日誌:

  1. 開啟 Amazon RDS 主控台
  2. 在導覽窗格中,選擇資料庫
  3. 選擇您要檢視其日誌的資料庫執行個體。
  4. 選擇日誌和事件標籤。
  5. 日誌區段下,於搜尋篩選條件中輸入程序傳回的工作 ID。
  6. 選擇傳回的檔案。
  7. 選擇監看以檢視日誌。
    -或-
    選擇下載以下載日誌。

您也可以執行下列命令來讀取在上傳或下載程序期間產生的日誌檔案:

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));

**注意:**將 task-id 取代為程序傳回的工作 ID。

相關資訊

Amazon S3 整合

為什麼我的 Amazon RDS for Oracle 資料庫執行個體使用的儲存體超出預期?

AWS 官方
AWS 官方已更新 7 個月前