Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何對整合 Amazon RDS for Oracle 與 Amazon S3 時出現的問題進行疑難排解?
我想對 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 上的 Oracle。
- 如果您要複製子目錄中的資料,請在使用 rdsadmin 套件時明確指定子目錄名稱。您無法複製使用 S3_INTEGRATION 選項的子目錄。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
確認資料庫執行個體具有存取 S3 儲存貯體所需的權限
檢查您的資料庫執行個體是否具有具備最小權限、可上傳與下載 S3 的 AWS Identity and Access Management (IAM) 角色。請完成以下步驟:
- 開啟 Amazon RDS console (Amazon RDS 主控台)。
- 在導覽窗格中,選擇 Databases (資料庫)。
- 選取您要檢查的資料庫執行個體。
- 選擇 Connectivity & security (連線與安全性) 索引標籤。
- 向下捲動至 Manage IAM roles (管理 IAM 角色) 區段,檢查是否有包含以下權限的 active (作用中) IAM 角色
S3:ListBucket
S3:PutObject
S3:GetObject
若要檢查您的資料庫執行個體是否具有具備最小權限的 IAM 角色,請執行以下 AWS CLI 命令 describe-db-instances:
aws rds describe-db-instances \--db-instance-identifier example-db-instance \--query 'DBInstances[*].[AssociatedRoles[*]]'
在您確認 IAM 角色是否存在之後,請採取以下其中一個動作:
- 如果 IAM 角色存在但不具備最小權限,則修改角色以加入這些權限。
- 如果您沒有具備所需權限的 IAM 角色,請先建立一個 IAM 政策,並加入傳輸檔案所需的權限。接著,為 Amazon RDS for Oracle 資料庫執行個體建立一個角色,並將您的政策附加至該角色。然後,將您的 IAM 角色關聯至您的 Amazon RDS for Oracle 資料庫執行個體。如需更多資訊,請參閱 RDS Custom for Oracle 的要求與限制。在建立 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 角色並授與完整存取權限。在您解決問題後,請將自訂權限恢復為先前的狀態。
若要將檔案上傳至 Amazon S3 中的特定資料夾,請在 rdsadmin.rdsadmin_s3_tasks.upload_to_s3 程序中使用 p_s3_prefix 參數。在上傳檔案之前,請確認您已具備所需的權限。
例如,若要將檔案上傳至 S3 儲存貯體中的範例資料夾,並使用範例儲存貯體,請附加以下 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 資料庫執行個體是否已附加選項群組,請完成以下步驟:
- 開啟 Amazon RDS console (Amazon RDS 主控台)。
- 在導覽窗格中,選擇 Databases (資料庫)。
- 選擇您要檢查的資料庫執行個體。
- 選擇 Configuration (組態) 索引標籤。
- 記下 Option groups (選項群組) 參數。
如果此選項群組未處於同步狀態,且您嘗試新增 S3_INTEGRATION 選項,則系統不會新增該選項。最佳實務是確保選項群組處於同步狀態。
若要檢查此選項群組是否處於同步狀態,請執行以下 AWS CLI 命令:
aws rds describe-db-instances \--db-instance-identifier example-db-instance \ --query 'DBInstances[*].[OptionGroupMemberships[*]]'
如果選項群組未處於同步狀態,請選擇資料庫的 Logs & events (日誌與事件) 索引標籤,然後檢閱 Recent events (最近的事件) 區段。找出導致選項群組無法處於同步狀態的元件,然後從資料庫中移除此元件。
如果選項群組處於同步狀態,請確認選項群組中包含 S3_INTEGRATION 選項。如需更多資訊,請參閱列出選項群組的選項和選項設定。如果選項群組未包含 S3_INTEGRATION 選項,請新增該選項。如需更多資訊,請參閱新增 Amazon S3 整合選項。
**注意:**如果未將 S3_INTEGRATION 選項新增至您的資料庫執行個體,您會收到錯誤 「ORA-00904: "RDSADMIN"."RDSADMIN_S3_TASKS"."UPLOAD_TO_S3": invalid identifier";」。此錯誤表示資料庫執行個體上未建立上傳與下載所需的程序。
當您將 S3_INTEGRATION 選項新增至 Amazon RDS 時,不會發生停機時間。如果您打算使用 Apply Immediately (立即套用) 選項,請確認沒有待處理的維護動作。如果存在待處理的維護動作,系統會在套用 S3 整合時一併套用這些動作。如需更多資訊,請參閱維護資料庫執行個體。
請確認您僅從使用者建立的 Oracle 目錄物件或 DATA_PUMP_DIR 目錄上傳與下載檔案
您無法在資料庫執行個體中直接存取 Amazon S3 檔案。若要存取這些檔案,您必須先將檔案複製到 Amazon RDS 主機中的目錄,才能進行存取。若要在資料庫執行個體與 S3 儲存貯體之間上傳與下載檔案,請完成以下步驟:
- 使用 expdp 命令、DATA_DUMP_DIR 中的 dbms_datapump API,或自訂目錄,將 Amazon RDS 中的匯出檔案複製到 Amazon S3。請務必建立傾印檔案。
- 使用 rdsadmin.rdsadmin_s3_tasks.upload_to_s3 程序將檔案上傳至 S3。如需更多資訊,請參閱從 RDS for Oracle 資料庫執行個體上傳檔案至 Amazon S3 儲存貯體。
- 使用 rdsadmin.rdsadmin_s3_tasks.download_from_s3 程序,將檔案從 S3 儲存貯體下載至 DATA_PUMP_DIR 資料夾或使用者建立的目錄。如需更多資訊,請參閱從 Amazon S3 儲存貯體下載檔案至 Oracle 資料庫執行個體。
檢視您在執行 rdsadmin 套件上傳或下載程序時所產生的日誌,以監控檔案傳輸的狀態。若要檢視這些日誌,請完成以下步驟:
- 開啟 Amazon RDS console (Amazon RDS 主控台)。
- 在導覽窗格中,選擇 Databases (資料庫)。
- 選擇您要檢視的資料庫執行個體。
- 選擇 Logs & events (日誌與事件) 索引標籤。
- 在 Logs (日誌) 區段下,於搜尋篩選條件中輸入程序回傳的任務 ID。
- 選取系統回傳的檔案。
- 選擇 Watch (監看) 以檢視日誌。
-或-
選擇 Download (下載) 以下載日誌。
若要讀取在上傳或下載程序期間產生的日誌檔案,請執行以下命令:
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
**注意:**請務必將 task-id 替換為程序回傳的任務 ID。
相關資訊
相關內容
- 已提問 2 年前
- 已提問 3 年前

