本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon S3 整合
您可以在RDS適用於 Oracle 資料庫執行個體和 Amazon S3 儲存貯體之間傳輸檔案。您可以使用 Amazon S3 與 Oracle Data Pump 等 Oracle 資料庫功能整合。例如,您可以將資料汲取檔案從 Amazon S3 下載到RDS適用於 Oracle 資料庫執行個體的資料庫執行個體。如需詳細資訊,請參閱將資料匯入 Amazon RDS 上的 Oracle。
注意
資料庫執行個體與 Amazon S3 儲存貯體必須在相同的 AWS 區域中。
主題
為RDS甲骨文與 Amazon S3 整合設定IAM許可
若要讓 Oracle 與 Amazon S3 整合,您的資料庫執行個體必須能夠存取 Amazon S3 儲存貯體。RDS您的資料庫執行個體VPC使用的 Amazon 不需要提供對 Amazon S3 端點的存取權。
RDS為 Oracle 支援在一個帳戶中的資料庫執行個體和另一個帳戶中的 Amazon S3 儲存貯體之間傳輸檔案。如需採取額外步驟,下列各節中會說明這些步驟。
主題
步驟 1:為您的 Amazon RDS 角色建立IAM政策
在此步驟中,您會建立具有在 Amazon S3 儲存貯體和RDS資料庫執行個體之間傳輸檔案所需許可的 AWS Identity and Access Management (IAM) 政策。此步驟假設您已建立 S3 儲存貯體。
在您建立政策之前,請記住下列資訊:
-
您存儲桶的 Amazon 資源名稱(ARN)
-
如果您ARN的存儲桶使用 SSE-KMS 或 SSE-S3 加密,則為您的 AWS KMS 密鑰
注意
RDS適用於 Oracle 資料庫執行個體無法存取使用 SSE-C 加密的 Amazon S3 儲存貯體。
如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的使用伺服器端加密保護資料。
建立允許 Amazon 訪問您的 Amazon RDS S3 儲存貯體的IAM政策
-
開啟 IAM 管理主控台
。 -
在 Access management (存取管理) 下,請選擇 Policies (政策)。
-
選擇 建立政策 。
-
在 Visual editor (視覺化編輯器) 標籤中,選擇 Choose a service (選擇服務),然後選擇 S3。
-
對於「動作」,選擇「全部展開」,然後選擇將檔案從 Amazon S3 儲存貯體傳輸到 Amazon 所需的儲存貯體許可和物件許可RDS。例如,請執行以下操作:
-
展開 [清單],然後選取ListBucket。
-
展開 [讀取],然後選取GetObject。
-
展開 [寫入],然後選取PutObject和DeleteObject。
-
展開 [權限管理],然後選取PutObjectAcl。若您計劃將檔案上傳至另一個帳戶所擁有的儲存貯體,而此帳戶需要儲存貯體內容的完全控制,則需要此許可權限。
物件許可權限是 Amazon S3 中物件作業的許可權限。您必須授予其儲存貯體中的物件,而非儲存貯體本身。如需詳細資訊,請參閱物件作業的許可權限。
-
-
選擇資源,然後執行下列動作:
-
選擇特定。
-
對於值區,請選擇「新增」ARN。輸入您的存儲桶ARN。儲存貯體名稱會自動填入。接著選擇 Add (新增)。
-
如果顯示物件資源,請選擇「新增」ARN 以手動新增資源,或選擇「任何」。
注意
您可以將 Amazon 資源名稱(ARN)設置為更具體的ARN值,以允許亞馬遜僅訪問 Amazon RDS S3 存儲桶中的特定文件或文件夾。如需如何為 Amazon S3 定義存取原則的詳細資訊,請參閱管理 Amazon S3 資源的存取許可。
-
-
(選用) 選擇 Add additional permissions (新增其他許可),將資源新增至政策。例如,請執行以下操作:
-
如果您的儲存貯體已使用自訂KMS金鑰加密,請KMS為該服務選取。
-
針對手動動作,請選取下列項目:
-
加密
-
ReEncrypt 從和ReEncrypt 到
-
解密
-
DescribeKey
-
GenerateDataKey
-
-
針對資源,請選擇特定。
-
對於金鑰,請選擇「新增」ARN。輸入您ARN的自訂金鑰作為資源,然後選擇 [新增]。
如需詳細資訊,請參閱 Amazon 簡單儲存服務使用者指南中的 AWS Key Management Service (SSE-KMS) 中存放的KMS金鑰使用伺服器端加密來保護資料。
-
如果您希RDS望 Amazon 訪問其他存儲桶,請ARNs為這些存儲桶添加。(選擇性) 您也可以授權存取 Amazon S3 中的所有儲存貯體和物件。
-
-
選擇 Next: Tags (下一步:標籤),然後選擇 Next: Review (下一步:檢閱)。
-
例如,在 [名稱] 中輸入IAM原則的名稱
rds-s3-integration-policy
。建立要與資料庫執行個體建立關聯的IAM角色時,您可以使用此名稱。您也可以新增選用的 Description (描述) 值。 -
選擇 Create policy (建立政策)。
建立一個 AWS Identity and Access Management (IAM) 政策,授予亞馬遜RDS存取 Amazon S3 儲存貯體的權限。建立原則之後,請記下原則ARN的內容。您需要執ARN行後續步驟。
依據所需的存取類型,在政策中納入適當動作:
-
GetObject
— 需要將文件從 Amazon S3 存儲桶傳輸到 Amazon RDS。 -
ListBucket
— 需要將文件從 Amazon S3 存儲桶傳輸到 Amazon RDS。 -
PutObject
— 需要將文件從 Amazon 傳輸RDS到 Amazon S3 存儲桶。
下列 AWS CLI 命令會建立以這些選項命名
的IAM策略。其中將授予存取至名為 rds-s3-integration-policy
的儲存貯體。amzn-s3-demo-bucket
範例
對於LinuxmacOS、或Unix:
aws iam create-policy \ --policy-name
rds-s3-integration-policy
\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration
", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket
/*
" ] } ] }'
下列範例包含自訂KMS金鑰的權限。
aws iam create-policy \ --policy-name
rds-s3-integration-policy
\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration
", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:DescribeKey", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket
/*
", "arn:aws:kms:::your-kms-arn
" ] } ] }'
在 Windows 中:
aws iam create-policy ^ --policy-name
rds-s3-integration-policy
^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration
", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket
/*
" ] } ] }'
下列範例包含自訂KMS金鑰的權限。
aws iam create-policy ^ --policy-name
rds-s3-integration-policy
^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration
", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt", "kms:GenerateDataKey", "kms:DescribeKey", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket
/*
", "arn:aws:kms:::your-kms-arn
" ] } ] }'
步驟 2:(選用) 為您的 Amazon S3 儲存貯體建立IAM政策
只有在下列情況中才需要此步驟:
-
您計劃從一個帳戶 (帳戶 A) 將檔案上傳至 Amazon S3 儲存貯體,然後從另一個帳戶 (帳戶 B) 進行存取。
-
帳戶 B 擁有儲存貯體。
-
帳戶 B 需要載入儲存貯體中物件的完整控制。
若上述條件不適用於您,請跳到 步驟 3:為您的資料庫執行個體建立IAM角色並附加原則。
如要建立儲存貯體政策,請確定您具有下列項目:
-
帳戶 A 的帳戶 ID
-
帳户 A 的使用者名稱
-
帳戶 B 中 Amazon S3 存儲桶的值 ARN
建立或編輯儲存貯體政策
登入 AWS Management Console 並開啟 Amazon S3 主控台,位於https://console.aws.amazon.com/s3/
。 -
在 Buckets (儲存貯體) 清單中,選擇要建立儲存貯體政策的儲存貯體名稱,或您想編輯之儲存貯體政策的儲存貯體名稱。
-
選擇 Permissions (許可)。
-
在 Bucket policy (儲存貯體政策) 下方,選擇 Edit (編輯)。這會開啟「編輯儲存貯體政策」頁面。
-
在編輯儲存貯體政策頁面上,瀏覽 Amazon S3 使用者指南中的政策範例,選擇政策產生器以自動產生政策,或JSON在政策區段中編輯。
如果您選擇「策略產生器」,則「 AWS 策略產生器」會在新視窗中開啟:
-
在 AWS Policy Generator ( 政策產生器) 頁面上,在 Select Type of Policy (選取政策類型) 中選擇 S3 Bucket Policy (S3 儲存貯體政策)。
-
在提供的欄位中輸入資訊,以新增陳述式,然後選擇 Add Statement (新增陳述式)。針對您想要新增的任意數量陳述式重複此動作。如需有關這些欄位的詳細資訊,請參閱《IAM使用指南》中的IAMJSON策略元素參考資料。
注意
為方便起見,[編輯儲存貯體政策] 頁面會在 [政策] 文字欄位上方顯示目前儲存貯體的儲存貯體 ARN (Amazon 資源名稱)。您可以複製此項目,以ARN便在「AWS 原則產生器」頁面的陳述式中使用。
-
完成新增陳述式後,選擇 Generate Policy (產生政策)。
-
複製產生的政策文字,選擇 Close (關閉),然後退回 Amazon S3 主控台中的 Edit bucket policy (編輯儲存貯體政策) 頁面。
-
-
在 Policy (政策) 方塊中,編輯現有政策,或從政策產生器貼上儲存貯體政策。請務必先處理安全性警告、錯誤、一般警告,以及建議,然後再儲存政策。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
account-A-ID
:account-A-user
" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
", "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" ] } ] } -
選擇 Save changes (儲存變更),此選項會跳至儲存貯體許可頁面。
步驟 3:為您的資料庫執行個體建立IAM角色並附加原則
此步驟假設您已在中建立IAM策略步驟 1:為您的 Amazon RDS 角色建立IAM政策。在此步驟中,您RDS會為 Oracle 資料庫執行個體建立角色,然後將原則附加至該角色。
創建一個IAM角色以允許 Amazon RDS 訪問 Amazon S3 存儲桶
-
開啟 IAM 管理主控台
。 -
在導覽窗格中,選擇 Roles (角色)。
-
選擇 Create Role (建立角色)。
-
選擇 AWS 服務。
-
對於其他 AWS 服務的使用案例:,選擇RDS然後 RDS-將角色添加到數據庫。然後選擇下一步。
-
對於 [權限] IAM 策略下的 [搜尋],輸入您在其中建立的原則名稱步驟 1:為您的 Amazon RDS 角色建立IAM政策,然後在清單中顯示時選取策略。然後選擇下一步。
-
在「角色名稱」中,輸入IAM角色的名稱,例如,
rds-s3-integration-role
。您也可以新增選用的 Description (描述) 值。 -
選擇建立角色。
如要建立角色並將政策附加至該角色
-
建立 Amazon RDS 可以代表您擔任的IAM角色,以存取您的 Amazon S3 儲存貯體。
建議您在資源型信任關係中使用
aws:SourceArn
和aws:SourceAccount
全域條件內容金鑰,將服務的許可限定於特定資來源。這是防止混淆代理人問題最有效的方式。您可以同時使用全域條件內容索引鍵和包含帳號 ID 的
aws:SourceArn
值。在此情況下,當在相同陳述式中使用aws:SourceAccount
值和aws:SourceArn
裡的帳户時,兩者必須使用同樣的帳户 ID。-
如果您想要跨服務存取單一資源,請使用
aws:SourceArn
。 -
如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用
aws:SourceAccount
。
在信任關係中,請務必將
aws:SourceArn
全域條件內容金鑰與存取角色的資源的完整 Amazon 資源名稱 (ARN) 搭配使用。下列 AWS CLI 命令會建立
為此目的命名的角色。rds-s3-integration-role
範例
對於LinuxmacOS、或Unix:
aws iam create-role \ --role-name
rds-s3-integration-role
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount":my_account_ID
, "aws:SourceArn": "arn:aws:rds:Region
:my_account_ID
:db:dbname
" } } } ] }'在 Windows 中:
aws iam create-role ^ --role-name
rds-s3-integration-role
^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount":my_account_ID
, "aws:SourceArn": "arn:aws:rds:Region
:my_account_ID
:db:dbname
" } } } ] }'如需詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給IAM使用者。
-
-
建立角色之後,請注意角色ARN的。您需要執ARN行後續步驟。
-
請將您建立的政策連接到您建立的角色。
下列 AWS CLI 命令會將原則附加至名為的角色
。rds-s3-integration-role
範例
對於LinuxmacOS、或Unix:
aws iam attach-role-policy \ --policy-arn
your-policy-arn
\ --role-namerds-s3-integration-role
在 Windows 中:
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-namerds-s3-integration-role
取代
為您在上ARN一個步驟中記下的原則。your-policy-arn
步驟 4:將您的IAM角色與您RDS的 Oracle 資料庫執行個體建立關聯
設定 Amazon S3 整合許可的最後一個步驟是將您的IAM角色與資料庫執行個體建立關聯。請注意以下要求:
-
您必須能夠存取已附加所需 Amazon S3 許可政策的IAM角色。
-
您一次只能將一個IAM角色與 Oracle RDS 資料庫執行個體建立關聯。
-
您的資料庫執行個體必須處於可用狀態。
將您的IAM角色與您RDS的 Oracle 資料庫執行個體建立關聯
登錄 AWS Management Console 並在打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/
。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇 Oracle 資RDS料庫執行個體名稱以顯示其詳細資訊。
-
在 [連線與安全性] 索引標籤上,向下捲動至頁面底部的 [管理IAM角色] 區段。
-
對於 [將IAM角色新增至此執行個體],請選擇您在中建立的角色步驟 3:為您的資料庫執行個體建立IAM角色並附加原則。
-
對於「功能」,選擇 S3_ INTEGRATION。
-
選擇 Add role (新增角色)。
下列 AWS CLI 命令會將角色新增至名為的 Oracle 資料庫執行個體
。mydbinstance
範例
對於LinuxmacOS、或Unix:
aws rds add-role-to-db-instance \ --db-instance-identifier
mydbinstance
\ --feature-name S3_INTEGRATION \ --role-arnyour-role-arn
在 Windows 中:
aws rds add-role-to-db-instance ^ --db-instance-identifier
mydbinstance
^ --feature-name S3_INTEGRATION ^ --role-arnyour-role-arn
取代
為您在上ARN一個步驟中記下的角色。 your-role-arn
S3_INTEGRATION
必須為--feature-name
選項指定。
新增 Amazon S3 整合選項
若要將 Amazon RDS 版 Oracle 與 Amazon S3 整合,您的資料庫執行個體必須與包含該選項的選項群組建立關聯。S3_INTEGRATION
設定選項群組進行 Amazon S3 整合
-
建立新的選項群組,或識別現有的選項群組,以便在其中新增
S3_INTEGRATION
選項。如需建立選項群組的相關資訊,請參閱建立選項群組。
-
將
S3_INTEGRATION
選項新增至選項群組。如需將選項新增至選項群組的相關資訊,請參閱將選項新增至選項群組。
-
RDS為 Oracle 資料庫執行個體建立新的執行個體,並將選項群組與其關聯,或修改 Oracle 資料庫執RDS行個體的執行個體,以建立選項群組與其關聯。
如需建立資料庫執行個體的相關資訊,請參閱 建立 Amazon RDS 資料庫執行個體。
如需修改資料庫執行個體的相關資訊,請參閱修改 Amazon RDS 資料庫執行個體。
設定選項群組進行 Amazon S3 整合
-
建立新的選項群組,或識別現有的選項群組,以便在其中新增
S3_INTEGRATION
選項。如需建立選項群組的相關資訊,請參閱建立選項群組。
-
將
S3_INTEGRATION
選項新增至選項群組。例如,下列 AWS CLI 指令會將
S3_INTEGRATION
選項新增至名為的選項群組myoptiongroup
。範例
對於LinuxmacOS、或Unix:
aws rds add-option-to-option-group \ --option-group-name
myoptiongroup
\ --options OptionName=S3_INTEGRATION,OptionVersion=1.0在 Windows 中:
aws rds add-option-to-option-group ^ --option-group-name
myoptiongroup
^ --options OptionName=S3_INTEGRATION,OptionVersion=1.0 -
RDS為 Oracle 資料庫執行個體建立新的執行個體,並將選項群組與其關聯,或修改 Oracle 資料庫執RDS行個體的執行個體,以建立選項群組與其關聯。
如需建立資料庫執行個體的相關資訊,請參閱 建立 Amazon RDS 資料庫執行個體。
如需修改 Oracle 資料庫執行RDS個體的相關資訊,請參閱修改 Amazon RDS 資料庫執行個體。
在 Amazon RDS 的甲骨文和 Amazon S3 存儲桶之間傳輸文件
若要在 Oracle 資料庫執RDS行個體和 Amazon S3 儲存貯體之間傳輸檔案,您可以使用 Amazon RDS 套件rdsadmin_s3_tasks
。您可以在上傳文件GZIP時壓縮文件,並在下載時對其進行解壓縮。
主題
檔案傳輸的需求和限制
在資料庫執行個體和 Amazon S3 儲存貯體之間傳輸檔案之前,請注意以下事項:
-
rdsadmin_s3_tasks
套件會傳輸位於單一目錄中的檔案。您無法在傳輸中包含子目錄。 -
Amazon S3 儲存貯體中的物件大小上限為 5 TB。
-
以非同步方式
rdsadmin_s3_tasks
執行所建立的工作。 -
您可以從「資料汲取」目錄 (例如
DATA_PUMP_DIR
,或任何使用者建立的目錄) 上載檔案。您無法從 Oracle 背景處理作業所使用的目錄 (例如adump
bdump
、或trace
目錄) 上傳檔案。 -
每個程序呼叫的下載限制為 2000 個檔案
download_from_s3
。如果您需要從 Amazon S3 下載 2000 個以上的檔案,請將您的下載分割為不同的動作,每次程序呼叫不超過 2000 個檔案。 -
如果您的下載資料夾中存在檔案,且您嘗試下載具有相同名稱的檔案,則
download_from_s3
會跳過下載。若要從下載目錄中移除檔案,請使用 PL/ SQL 程序 UTL_ FILE。 FREMOVE。
將RDS適用於 Oracle 資料庫執行個體的檔案上傳至 Amazon S3 儲存貯體
如要從資料庫執行個體上傳檔案至 Amazon S3 儲存貯體,請使用程序 rdsadmin.rdsadmin_s3_tasks.upload_to_s3
。例如,您可以上傳「Oracle 復原管理程式」(RMAN) 備份檔案或「Oracle 資料汲取」檔案。如需使用物件的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》。如需執行RMAN備份的詳細資訊,請參閱執行 Oracle 資料庫執行個體的一般 RMAN 任務。
rdsadmin.rdsadmin_s3_tasks.upload_to_s3
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
VARCHAR2 |
– |
必要 |
上傳檔案目的地的 Amazon S3 儲存貯體名稱。 |
|
VARCHAR2 |
– |
必要 |
上傳檔案來源的 Oracle 目錄物件名稱。目錄可為 Data Pump 目錄任何由使用者定義的目錄物件,例如 注意您只能由指定目錄上傳檔案。您不能由指定目錄之中的子目錄上傳檔案。 |
|
VARCHAR2 |
– |
必要 |
上傳檔案的 Amazon S3 檔案名稱字首。空白字首會將所有檔案上傳至指定 Amazon S3 儲存貯體的頂層,不會在檔案名稱新增字首。 例如若字首為 |
|
VARCHAR2 |
– |
必要 |
檔案名稱必須與其相符才能上傳的檔案名稱字首。空白字首會將上傳指定目錄之中的檔案。 |
|
NUMBER |
|
選擇性 |
GZIP壓縮層級。有效值範圍從
|
|
VARCHAR2 |
– |
選擇性 |
儲存貯體的存取控制設定。唯一有效值為 null 或 |
rdsadmin.rdsadmin_s3_tasks.upload_to_s3
程序的傳回值是一個任務 ID。
下列範例會將
目錄中的所有檔案上傳到名為的 Amazon S3 儲存貯體 DATA_PUMP_DIR
amzn-s3-demo-bucket
。 檔案不會壓縮。
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_prefix => '', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR
') AS TASK_ID FROM DUAL;
以下範例將
目錄中所有字首為 db
的檔案上傳至名為 DATA_PUMP_DIR
的 Amazon S3 儲存貯體。Amazon RDS 對文件應用最高級別的GZIP壓縮。amzn-s3-demo-bucket
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_prefix => 'db
', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR
', p_compression_level =>9
) AS TASK_ID FROM DUAL;
下列範例將
目錄的所有檔案,上傳至名為DATA_PUMP_DIR
的 Amazon S3 儲存貯體。檔案上傳至 amzn-s3-demo-bucket
dbfiles
資料夾。在此範例中,GZIP壓縮層級為 1
,這是最快的壓縮級別。
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_prefix => '', p_s3_prefix => 'dbfiles/
', p_directory_name => 'DATA_PUMP_DIR
', p_compression_level =>1
) AS TASK_ID FROM DUAL;
以下範例將
目錄的所有檔案,上傳至名為DATA_PUMP_DIR
的 Amazon S3 儲存貯體。檔案上傳至 amzn-s3-demo-bucket
dbfiles
資料夾,而 ora
則新增至每個檔案名稱的開頭。未套用任何壓縮。
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_prefix => '', p_s3_prefix => 'dbfiles/ora
', p_directory_name => 'DATA_PUMP_DIR
') AS TASK_ID FROM DUAL;
下列範例假定該命令執行於帳戶 A 中,但帳戶 B 需要儲存貯體內容的完全控制。命令 rdsadmin_s3_tasks.upload_to_s3
會將
目錄中的所有檔案傳輸至名為 DATA_PUMP_DIR
的儲存貯體。存取控制設定為 s3bucketOwnedByAccountB
FULL_CONTROL
,則帳戶 B 可存取儲存貯體中的檔案。GZIP壓縮級別為 6
,它平衡了速度和文件大小。
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
s3bucketOwnedByAccountB
', p_prefix => '', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR
', p_bucket_owner_full_control => 'FULL_CONTROL', p_compression_level =>6
) AS TASK_ID FROM DUAL;
在各項範例中,SELECT
陳述式以 VARCHAR2
資料類型傳回任務 ID。
您可以透過顯示任務的輸出檔案來檢視結果。
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-
task-id
.log'));
Replace (取代)
具有程序傳回的任務 ID。任務識別碼
注意
任務是以非同步方式執行。
將檔案從 Amazon S3 儲存貯體下載至 Oracle 資料庫執行個體
若要將檔案從 Amazon S3 儲存貯體下載到適用RDS於 Oracle 執行個體的執行個體,請使用 Amazon RDS 程序rdsadmin.rdsadmin_s3_tasks.download_from_s3
。
download_from_s3
程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
VARCHAR2 |
– |
必要 |
下載檔案來源的 Amazon S3 儲存貯體名稱。 |
|
VARCHAR2 |
– |
必要 |
下載檔案目的地的 Oracle 目錄物件名稱。目錄可為 Data Pump 目錄任何由使用者定義的目錄物件,例如 |
|
VARCHAR2 |
FALSE |
選用 |
此旗標可決定當 Amazon S3 儲存貯體中沒有物件符合字首時,任務是否會引發錯誤。如果未將此參數設定或設定為 FALSE (預設值),工作會列印一則訊息,指出找不到物件,但不會引發例外狀況或失敗。如果此參數是TRUE,則工作會引發例外狀況並失敗。 可能無法進行比對測試的字首規格範例是字首中的空格 (如 |
|
VARCHAR2 |
– |
必要 |
檔案名稱必須與其相符才能下載的檔案名稱字首。空白字首會在指定的 Amazon S3 儲存貯體中下載所有第一層檔案,但不是在該儲存貯體資料夾中的檔案。 程序僅會由符合字首的第一層資料夾下載 Amazon S3 物件。符合指定字串的巢狀目錄結構不會下載。 例如假設 Amazon S3 儲存貯體具有資料夾結構 如果您反而指定 |
|
VARCHAR2 |
– |
選用 |
解壓縮格式。有效值為 |
rdsadmin.rdsadmin_s3_tasks.download_from_s3
程序的傳回值是一個任務 ID。
以下範例將名為
的 Amazon S3 儲存貯體中所有的檔案下載至 amzn-s3-demo-bucket
目錄。這些檔案未壓縮,因此無須套用解壓縮。DATA_PUMP_DIR
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_directory_name => 'DATA_PUMP_DIR
') AS TASK_ID FROM DUAL;
以下範例將名為
的 Amazon S3 儲存貯體之中字首為 db
的所有檔案下載至 amzn-s3-demo-bucket
目錄。檔案會以壓縮GZIP,因此會套用解壓縮。參數 DATA_PUMP_DIR
p_error_on_zero_downloads
會開啟字首錯誤檢查,因此,如果字首與儲存貯體中的任何檔案不符,任務就會引發例外狀況並失敗。
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_s3_prefix => 'db
', p_directory_name => 'DATA_PUMP_DIR
', p_decompression_format => 'GZIP
', p_error_on_zero_downloads => 'TRUE
') AS TASK_ID FROM DUAL;
以下範例將名為
的 Amazon S3 儲存貯體之中資料夾 myfolder/
的所有檔案下載至 amzn-s3-demo-bucket
目錄。使用 DATA_PUMP_DIR
p_s3_prefix
參數,指定 Amazon S3 資料夾。上傳的文件被壓縮GZIP,但在下載過程中不會解壓縮。
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_s3_prefix => 'myfolder/
', p_directory_name => 'DATA_PUMP_DIR
', p_decompression_format => 'NONE
') AS TASK_ID FROM DUAL;
以下範例將名為
的 Amazon S3 儲存貯體中的檔案 amzn-s3-demo-bucket
下載至 mydumpfile.dmp
目錄。未套用任何解壓縮。DATA_PUMP_DIR
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_s3_prefix => 'mydumpfile.dmp
', p_directory_name => 'DATA_PUMP_DIR
') AS TASK_ID FROM DUAL;
在各項範例中,SELECT
陳述式以 VARCHAR2
資料類型傳回任務 ID。
您可以透過顯示任務的輸出檔案來檢視結果。
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-
task-id
.log'));
Replace (取代)
具有程序傳回的任務 ID。任務識別碼
注意
任務是以非同步方式執行。
您可使用 UTL_FILE.FREMOVE
Oracle 程序由目錄移除檔案。如需詳細資訊,請參閱 Oracle 說明文件中的FREMOVE程序
監控檔案傳輸狀態
檔案傳輸任務會在 Amazon RDS 事件開始和完成時發佈。事件訊息包含檔案傳輸的任務 ID。如需檢視事件相關資訊,請參閱查看 Amazon RDS 活動。
您可在 bdump 檔案之中,檢視進行中作業的狀態。bdump 檔案位在 /rdsdbdata/log/trace
目錄:每個 bdump 檔案的名稱格式如下。
dbtask-
task-id
.log
將
替換為您要監控作業的 ID。task-id
注意
任務是以非同步方式執行。
您可以使用 rdsadmin.rds_file_util.read_text_file
預存程序檢視 bdump 檔案內容。例如以下查詢會傳回
bdump 檔案的內容。dbtask-1234567890123-1234.log
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','
dbtask-1234567890123-1234.log
'));
下列範例顯示傳輸失敗的日誌。
TASK_ID -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1234567890123-1234 TEXT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2023-04-17 18:21:33.993 UTC [INFO ] File #1: Uploading the file /rdsdbdata/datapump/A123B4CDEF567890G1234567890H1234/sample.dmp to Amazon S3 with bucket name
amzn-s3-demo-bucket
and key sample.dmp. 2023-04-17 18:21:34.188 UTC [ERROR] RDS doesn't have permission to write to Amazon S3 bucket nameamzn-s3-demo-bucket
and key sample.dmp. 2023-04-17 18:21:34.189 UTC [INFO ] The task failed.
針對 Amazon S3 整合進行疑難排解
如需疑難排解秘訣,請參閱 AWS Re: POST 文章當我將亞馬遜版 Oracle 與 Amazon RDS S3 整合時,如何解決問題?
移除 Amazon S3 整合選項
您可由資料庫執行個體移除 Amazon S3 整合選項。
若要從資料庫執行個體中移除 Amazon S3 整合選項,請執行下列其中一個動作:
-
若要從多個資料庫執行個體中移除 Amazon S3 整合選項,請從資料庫執行個體所屬的選項群組中移除
S3_INTEGRATION
選項。此變更會影響使用選項群組的所有資料庫執行個體。如需詳細資訊,請參閱從選項群組移除選項。 -
如要從單一資料庫執行個體移除 Amazon S3 整合,請修改執行個體,並指定不含
S3_INTEGRATION
選項的不同選項群組。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需詳細資訊,請參閱修改 Amazon RDS 資料庫執行個體。