Mentransfer file antara Amazon RDS untuk Oracle dan bucket Amazon S3 - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mentransfer file antara Amazon RDS untuk Oracle dan bucket Amazon S3

Untuk mentransfer file antara instans RDS untuk Oracle DB dan bucket Amazon S3, Anda dapat menggunakan paket AmazonRDS. rdsadmin_s3_tasks Anda dapat mengompres file GZIP saat mengunggahnya, dan mendekompresnya saat mengunduh.

Persyaratan dan batasan transfer file

Sebelum mentransfer file antara instans DB Anda dan bucket Amazon S3, perhatikan hal-hal berikut:

  • Paket rdsadmin_s3_tasks mentransfer file yang berada di dalam satu direktori. Anda tidak dapat menyertakan subdirektori dalam transfer.

  • Ukuran objek maksimum dalam bucket Amazon S3 adalah 5 TB.

  • Tugas yang dibuat oleh rdsadmin_s3_tasks dijalankan secara asinkron.

  • Anda dapat mengunggah file dari direktori Data Pump, seperti DATA_PUMP_DIR, atau direktori lain yang dibuat oleh pengguna. Anda tidak dapat mengunggah file dari direktori yang digunakan oleh proses latar belakang Oracle, seperti direktori adump, bdump, atau trace.

  • Batas pengunduhan adalah 2.000 file per panggilan prosedur untuk download_from_s3. Jika Anda perlu mengunduh lebih dari 2.000 file dari Amazon S3, bagi unduhan menjadi beberapa tindakan terpisah, dengan tidak lebih dari 2.000 file per panggilan prosedur.

  • Jika terdapat file dengan nama yang sama di folder unduhan Anda, download_from_s3 tidak akan memproses pengunduhan. Untuk menghapus file dari direktori unduhan, gunakan SQL prosedur PL/ UTL_FILE. FREMOVE.

Mengunggah file dari instans Oracle DB Anda RDS ke bucket Amazon S3

Untuk mengunggah file dari instans DB Anda ke bucket Amazon S3, gunakan prosedur rdsadmin.rdsadmin_s3_tasks.upload_to_s3. Misalnya, Anda dapat mengunggah file cadangan Oracle Recovery Manager (RMAN) atau file Oracle Data Pump. Untuk informasi selengkapnya tentang penggunaan objek, lihat Panduan Pengguna Amazon Simple Storage Service. Untuk informasi selengkapnya tentang melakukan RMAN backup, lihat. Melakukan RMAN tugas-tugas umum untuk instans Oracle DB

Prosedur rdsadmin.rdsadmin_s3_tasks.upload_to_s3 memiliki parameter berikut.

Nama parameter Jenis data Default Wajib Deskripsi

p_bucket_name

VARCHAR2

wajib

Nama bucket Amazon S3 tempat file diunggah.

p_directory_name

VARCHAR2

wajib

Nama objek direktori Oracle asal file yang akan diunggah. Direktori dapat berupa objek direktori yang dibuat pengguna atau direktori Data Pump, seperti DATA_PUMP_DIR. Anda tidak dapat mengunggah file dari direktori yang digunakan oleh proses latar belakang, seperti adump, bdump, dan trace.

catatan

Anda hanya dapat mengunggah file dari direktori yang ditentukan. Anda tidak dapat mengunggah file di subdirektori dalam direktori yang ditentukan.

p_s3_prefix

VARCHAR2

wajib

Awalan nama file Amazon S3 tempat file diunggah. Awalan kosong mengunggah semua file ke tingkat teratas di bucket Amazon S3 yang ditentukan dan tidak menambahkan awalan pada nama file.

Misalnya, jika prefiksnya adalah folder_1/oradb, file akan diunggah ke folder_1. Dalam hal ini, prefiks oradb ditambahkan ke setiap file.

p_prefix

VARCHAR2

wajib

Prefiks nama file yang harus sama dengan nama file yang akan diunggah. Prefiks kosong akan mengunggah semua file dalam direktori yang ditentukan.

p_compression_level

NUMBER

0

opsional

Tingkat GZIP kompresi. Nilai yang valid berkisar dari 0 sampai 9:

  • 0 – Tanpa kompresi

  • 1 – Kompresi tercepat

  • 9 – Kompresi tertinggi

p_bucket_owner_full_control

VARCHAR2

opsional

Pengaturan kontrol akses untuk bucket. Satu-satunya nilai yang valid adalah null atau FULL_CONTROL. Pengaturan ini diperlukan hanya jika Anda mengunggah file dari satu akun (akun A) ke dalam sebuah bucket milik akun yang berbeda (akun B), dan akun B memerlukan kontrol penuh atas file tersebut.

Nilai yang dikembalikan untuk prosedur rdsadmin.rdsadmin_s3_tasks.upload_to_s3 adalah ID tugas.

Contoh berikut mengunggah semua file dalam DATA_PUMP_DIR direktori ke bucket Amazon S3 bernama amzn-s3-demo-bucket. File tidak dikompresi.

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;

Contoh berikut mengunggah semua file dengan prefiks db dalam direktori DATA_PUMP_DIR ke bucket Amazon S3 bernama amzn-s3-demo-bucket. Amazon RDS menerapkan tingkat GZIP kompresi tertinggi ke file.

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;

Contoh berikut mengunggah semua file di DATA_PUMP_DIR direktori ke bucket Amazon S3 bernama amzn-s3-demo-bucket. File tersebut diunggah ke folder dbfiles. Dalam contoh ini, tingkat GZIP kompresi adalah 1, yang merupakan tingkat kompresi tercepat.

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;

Contoh berikut mengunggah semua file di direktori DATA_PUMP_DIR ke bucket Amazon S3 bernama amzn-s3-demo-bucket. File tersebut diunggah ke folder dbfiles dan ora ditambahkan ke awal setiap nama file. Tidak ada kompresi yang diterapkan.

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;

Contoh berikut ini mengasumsikan bahwa perintah dijalankan di akun A, tetapi akun B memerlukan kontrol penuh atas konten bucket. Perintah rdsadmin_s3_tasks.upload_to_s3 mentransfer semua file dalam direktori DATA_PUMP_DIR ke bucket bernama s3bucketOwnedByAccountB. Kontrol akses diatur ke FULL_CONTROL agar akun B dapat mengakses file di bucket. Tingkat GZIP kompresi adalah 6, yang menyeimbangkan kecepatan dan ukuran file.

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;

Di setiap contoh, pernyataan SELECT mengembalikan ID tugas dalam jenis data VARCHAR2.

Anda dapat melihat hasilnya dengan menampilkan file keluaran tugas.

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

Ganti task-id dengan ID tugas yang dikembalikan oleh prosedur.

catatan

Tugas dijalankan secara asinkron.

Mengunduh file dari bucket Amazon S3 ke instans DB Oracle

Untuk mengunduh file dari bucket Amazon S3 ke instance RDS for Oracle, gunakan prosedur Amazon. RDS rdsadmin.rdsadmin_s3_tasks.download_from_s3

Prosedur download_from_s3 memiliki parameter berikut.

Nama parameter Jenis data Default Wajib Deskripsi

p_bucket_name

VARCHAR2

Diperlukan

Nama bucket Amazon S3 asal unduhan file.

p_directory_name

VARCHAR2

Diperlukan

Nama objek direktori Oracle untuk menyimpan unduhan file. Direktori dapat berupa objek direktori yang dibuat pengguna atau direktori Data Pump, seperti DATA_PUMP_DIR.

p_error_on_zero_downloads

VARCHAR2

FALSE

Opsional

Tanda yang menentukan apakah tugas akan memunculkan kesalahan jika tidak ada objek di bucket Amazon S3 yang cocok dengan prefiks. Jika parameter ini tidak disetel atau disetel ke FALSE (default), tugas akan mencetak pesan bahwa tidak ada objek yang ditemukan, tetapi tidak memunculkan pengecualian atau gagal. Jika parameter iniTRUE, tugas menimbulkan pengecualian dan gagal.

Contoh spesifikasi prefiks yang dapat menggagalkan uji kecocokan adalah spasi pada prefiks, seperti pada ' import/test9.log', dan ketidakcocokan huruf besar/kecil, seperti pada test9.log dan test9.LOG.

p_s3_prefix

VARCHAR2

Diperlukan

Prefiks nama file yang harus sama dengan nama file yang akan diunduh. Prefiks kosong akan mengunduh semua file tingkat atas dalam bucket Amazon S3 yang ditentukan, tetapi tidak akan mengunduh file di folder di dalam bucket.

Prosedur ini mengunduh objek Amazon S3 hanya dari folder tingkat pertama yang cocok dengan prefiks. Struktur direktori bersarang yang cocok dengan prefiks yang ditentukan tidak akan diunduh.

Sebagai contoh, misal bucket Amazon S3 memiliki struktur folder folder_1/folder_2/folder_3. Prefiks yang Anda gunakan adalah 'folder_1/folder_2/'. Dalam hal ini, hanya file di dalam folder_2 yang akan diunduh, bukan file di folder_1 atau folder_3.

Sebaliknya, jika Anda menggunakan prefiks 'folder_1/folder_2', semua file di folder_1 yang cocok dengan prefiks 'folder_2' akan diunduh, dan file di folder_2 tidak akan diunduh satu pun.

p_decompression_format

VARCHAR2

Opsional

Format dekompresi. Nilai yang valid untuk tanpa dekompresi adalah NONE, dan GZIP untuk dekompresi.

Nilai yang dikembalikan untuk prosedur rdsadmin.rdsadmin_s3_tasks.download_from_s3 adalah ID tugas.

Contoh berikut mengunduh semua file di bucket Amazon S3 bernama amzn-s3-demo-bucket ke direktori DATA_PUMP_DIR. File tidak dikompresi, jadi tidak ada dekompresi yang diterapkan.

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;

Contoh berikut mengunduh semua file dengan prefiks db di bucket Amazon S3 bernama amzn-s3-demo-bucket ke direktori DATA_PUMP_DIR. File dikompresi denganGZIP, sehingga dekompresi diterapkan. Parameter p_error_on_zero_downloads mengaktifkan pemeriksaan kesalahan prefiks, jadi jika prefiks tidak cocok dengan file di dalam bucket, tugas akan memunculkan pengecualian dan gagal.

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;

Contoh berikut mengunduh semua file dalam folder myfolder/ di bucket Amazon S3 bernama amzn-s3-demo-bucket ke direktori DATA_PUMP_DIR. Gunakan parameter p_s3_prefix untuk menentukan folder Amazon S3. File yang diunggah dikompresi denganGZIP, tetapi tidak didekompresi selama pengunduhan.

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;

Contoh berikut mengunduh file mydumpfile.dmp di bucket Amazon S3 bernama amzn-s3-demo-bucket ke direktori DATA_PUMP_DIR. Tidak ada dekompresi yang diterapkan.

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;

Di setiap contoh, pernyataan SELECT mengembalikan ID tugas dalam jenis data VARCHAR2.

Anda dapat melihat hasilnya dengan menampilkan file keluaran tugas.

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

Ganti task-id dengan ID tugas yang dikembalikan oleh prosedur.

catatan

Tugas dijalankan secara asinkron.

Anda dapat menggunakan prosedur UTL_FILE.FREMOVE Oracle untuk menghapus file dari direktori. Untuk informasi lebih lanjut, lihat FREMOVEprosedur dalam dokumentasi Oracle.

Memantau status transfer file

Tugas transfer file mempublikasikan RDS peristiwa Amazon ketika mereka mulai dan ketika mereka selesai. Pesan peristiwa berisi ID tugas untuk transfer file. Untuk informasi tentang cara melihat peristiwa, lihat Melihat RDS acara Amazon.

Anda dapat melihat status tugas yang sedang berlangsung di file bdump. File bdump terletak di direktori /rdsdbdata/log/trace. Setiap nama file bdump memiliki format berikut.

dbtask-task-id.log

Ganti task-id dengan ID tugas yang ingin Anda pantau.

catatan

Tugas dijalankan secara asinkron.

Anda dapat menggunakan prosedur tersimpan rdsadmin.rds_file_util.read_text_file untuk melihat konten file bdump. Misalnya, kueri berikut mengembalikan konten file bdump dbtask-1234567890123-1234.log.

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

Contoh berikut menunjukkan file log untuk transfer yang gagal.

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 name amzn-s3-demo-bucket and key sample.dmp. 2023-04-17 18:21:34.189 UTC [INFO ] The task failed.