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.
Topik
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 direktoriadump
,bdump
, atautrace
. -
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 |
---|---|---|---|---|
|
VARCHAR2 |
– |
wajib |
Nama bucket Amazon S3 tempat file diunggah. |
|
VARCHAR2 |
– |
wajib |
Nama objek direktori Oracle asal file yang akan diunggah. Direktori dapat berupa objek direktori yang dibuat pengguna atau direktori Data Pump, seperti catatanAnda hanya dapat mengunggah file dari direktori yang ditentukan. Anda tidak dapat mengunggah file di subdirektori dalam direktori yang ditentukan. |
|
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 |
|
VARCHAR2 |
– |
wajib |
Prefiks nama file yang harus sama dengan nama file yang akan diunggah. Prefiks kosong akan mengunggah semua file dalam direktori yang ditentukan. |
|
NUMBER |
|
opsional |
Tingkat GZIP kompresi. Nilai yang valid berkisar dari
|
|
VARCHAR2 |
– |
opsional |
Pengaturan kontrol akses untuk bucket. Satu-satunya nilai yang valid adalah null atau |
Nilai yang dikembalikan untuk prosedur rdsadmin.rdsadmin_s3_tasks.upload_to_s3
adalah ID tugas.
Contoh berikut mengunggah semua file dalam
direktori ke bucket Amazon S3 bernama DATA_PUMP_DIR
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
dalam direktori db
ke bucket Amazon S3 bernama DATA_PUMP_DIR
. Amazon RDS menerapkan tingkat GZIP kompresi tertinggi ke file.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;
Contoh berikut mengunggah semua file di
direktori ke bucket Amazon S3 bernama DATA_PUMP_DIR
. File tersebut diunggah ke folder amzn-s3-demo-bucket
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
ke bucket Amazon S3 bernama DATA_PUMP_DIR
. File tersebut diunggah ke folder amzn-s3-demo-bucket
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
ke bucket bernama DATA_PUMP_DIR
. Kontrol akses diatur ke s3bucketOwnedByAccountB
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
dengan ID tugas yang dikembalikan oleh prosedur.task-id
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 |
---|---|---|---|---|
|
VARCHAR2 |
– |
Diperlukan |
Nama bucket Amazon S3 asal unduhan file. |
|
VARCHAR2 |
– |
Diperlukan |
Nama objek direktori Oracle untuk menyimpan unduhan file. Direktori dapat berupa objek direktori yang dibuat pengguna atau direktori Data Pump, seperti |
|
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 |
|
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 Sebaliknya, jika Anda menggunakan prefiks |
|
VARCHAR2 |
– |
Opsional |
Format dekompresi. Nilai yang valid untuk tanpa dekompresi adalah |
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
ke direktori amzn-s3-demo-bucket
. File tidak dikompresi, jadi tidak ada dekompresi yang diterapkan.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;
Contoh berikut mengunduh semua file dengan prefiks
di bucket Amazon S3 bernama db
ke direktori amzn-s3-demo-bucket
. File dikompresi denganGZIP, sehingga dekompresi diterapkan. Parameter DATA_PUMP_DIR
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
di bucket Amazon S3 bernama myfolder/
ke direktori amzn-s3-demo-bucket
. Gunakan parameter DATA_PUMP_DIR
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
di bucket Amazon S3 bernama mydumpfile.dmp
ke direktori amzn-s3-demo-bucket
. Tidak ada dekompresi yang diterapkan.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;
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
dengan ID tugas yang dikembalikan oleh prosedur.task-id
catatan
Tugas dijalankan secara asinkron.
Anda dapat menggunakan prosedur UTL_FILE.FREMOVE
Oracle untuk menghapus file dari direktori. Untuk informasi lebih lanjut, lihat FREMOVEprosedur
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
dengan ID tugas yang ingin Anda pantau.task-id
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 nameamzn-s3-demo-bucket
and key sample.dmp. 2023-04-17 18:21:34.189 UTC [INFO ] The task failed.