Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengimpor menggunakan Oracle Data Pump
Oracle Data Pump adalah utilitas yang memungkinkan Anda untuk mengekspor data Oracle ke file dump dan mengimpornya ke basis data Oracle lain. Ini adalah pengganti jangka panjang untuk utilitas Ekspor/Impor Oracle. Oracle Data Pump adalah cara yang disarankan untuk memindahkan sejumlah besar data dari database Oracle ke instans Amazon RDS DB.
Contoh dalam bagian ini menunjukkan satu cara untuk mengimpor data ke dalam basis data Oracle, tetapi Oracle Data Pump mendukung teknik lainnya. Lihat informasi yang lebih lengkap dalam dokumentasi Oracle Database
Contoh dalam bagian ini menggunakan paket DBMS_DATAPUMP
. Anda dapat menyelesaikan tugas yang sama menggunakan utilitas baris perintah impdp
dan expdp
Oracle Data Pump. Anda dapat menginstal utilitas ini pada host jarak jauh sebagai bagian dari instalasi Oracle Client, termasuk Oracle Instant Client. Untuk informasi selengkapnya, lihat Bagaimana cara menggunakan Oracle Instant Client untuk menjalankan Data Pump Import atau Export untuk Amazon RDS for Oracle DB
Topik
Gambaran umum Oracle Data Pump
Oracle Data Pump terdiri dari komponen-komponen berikut:
-
Klien baris perintah dan
expdp
impdp
-
Paket
DBMS_DATAPUMP
PL/ SQL -
Paket
DBMS_METADATA
PL/ SQL
Anda dapat menggunakan Oracle Data Pump untuk skenario berikut:
-
Impor data dari database Oracle, baik lokal maupun di EC2 instans Amazon, ke instans RDS untuk Oracle DB.
-
Impor data dari instans RDS untuk Oracle DB ke database Oracle, baik lokal maupun di instans Amazon. EC2
-
Impor data antara RDS instans Oracle DB, misalnya, untuk memigrasikan data dari EC2 -Classic ke. VPC
Untuk mengunduh utilitas Oracle Data Pump, lihat Unduhan perangkat lunak basis data Oracle
Alur kerja Oracle Data Pump
Biasanya, Anda menggunakan Oracle Data Pump dalam tahapan berikut:
-
Ekspor data Anda ke dalam file dump pada basis data sumber.
-
Unggah file dump Anda ke tujuan Anda RDS untuk instans Oracle DB. Anda dapat mentransfer menggunakan bucket Amazon S3 atau menggunakan tautan basis data antara dua basis data tersebut.
-
Impor data dari file dump Anda RDS ke instans Oracle DB Anda.
Praktik terbaik Oracle Data Pump
Saat Anda menggunakan Oracle Data Pump untuk mengimpor data ke instans RDS for Oracle, kami merekomendasikan praktik terbaik berikut:
-
Lakukan impor dalam mode
schema
atautable
untuk mengimpor skema dan objek tertentu. -
Hanya impor skema yang diperlukan oleh aplikasi Anda.
-
Jangan mengimpor dalam mode
full
atau mengimpor skema untuk komponen yang dikelola sistem.Karena RDS untuk Oracle tidak mengizinkan akses ke
SYS
atau penggunaSYSDBA
administratif, tindakan ini dapat merusak kamus data Oracle dan mempengaruhi stabilitas database Anda. -
Saat memuat data dalam jumlah besar, lakukan hal berikut:
-
Transfer file dump ke target RDS untuk instance Oracle DB.
-
Ambil snapshot DB dari instans Anda.
-
Uji pengimporan untuk memastikan keberhasilannya.
Jika komponen basis data tidak divalidasi, Anda dapat menghapus instans DB dan membuat ulang instans tersebut dari snapshot DB. Instans DB yang dipulihkan mencakup file dump yang ditetapkan pada instans DB saat Anda mengambil snapshot DB.
-
-
Jangan mengimpor file dump yang dibuat menggunakan parameter ekspor Oracle Data Pump
TRANSPORT_TABLESPACES
,TRANSPORTABLE
, atauTRANSPORT_FULL_CHECK
. RDSuntuk instance Oracle DB tidak mendukung pengimporan file dump ini. -
Jangan mengimpor file dump yang berisi objek Oracle Scheduler di
SYS
,SYSTEM
,RDSADMIN
,RDSSEC
, sertaRDS_DATAGUARD
, dan yang termasuk dalam kategori berikut:-
Tugas
-
Program
-
Jadwal
-
Rantai
-
Aturan
-
Konteks evaluasi
-
Set aturan
RDSuntuk instance Oracle DB tidak mendukung pengimporan file dump ini.
-
-
Untuk mengecualikan objek Oracle Scheduler yang tidak didukung, gunakan arahan tambahan selama ekspor Data Pump. Jika Anda menggunakan
DBMS_DATAPUMP
, Anda dapat menambahkanMETADATA_FILTER
tambahan sebelumDBMS_METADATA.START_JOB
:DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM SYS.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' );
Jika Anda menggunakan
expdp
, buat file parameter yang berisi arahanexclude
sebagaimana ditunjukkan dalam contoh berikut. Kemudian gunakanPARFILE=
dengan perintahparameter_file
expdp
.exclude=procobj:"IN (SELECT NAME FROM sys.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) )"
Mengimpor data dengan Oracle Data Pump dan bucket Amazon S3
Proses impor berikut menggunakan Oracle Data Pump dan bucket Amazon S3. Langkah-langkahnya adalah sebagai berikut:
-
Ekspor data pada database sumber menggunakan DATAPUMP paket Oracle DBMS_
. -
Tempatkan file dump di bucket Amazon S3.
-
Unduh file dump dari bucket Amazon S3 ke direktori pada RDS target untuk
DATA_PUMP_DIR
instans Oracle DB. -
Impor data dari file dump yang disalin ke instance RDS for Oracle DB menggunakan paket.
DBMS_DATAPUMP
Topik
- Persyaratan untuk Mengimpor data dengan Oracle Data Pump dan bucket Amazon S3
- Langkah 1: Berikan hak istimewa kepada pengguna database pada instance DB target Oracle RDS untuk Oracle
- Langkah 2: Ekspor data ke file dump menggunakan _ DBMS DATAPUMP
- Langkah 3: Unggah file dump ke bucket Amazon S3 Anda
- Langkah 4: Unduh file dump dari bucket Amazon S3 Anda ke instans DB target Anda
- Langkah 5: Impor file dump Anda ke instans DB target Anda menggunakan _ DBMS DATAPUMP
- Langkah 6: Bersihkan
Persyaratan untuk Mengimpor data dengan Oracle Data Pump dan bucket Amazon S3
Proses ini memiliki persyaratan sebagai berikut:
-
Pastikan bucket Amazon S3 tersedia untuk transfer file, dan bucket Amazon S3 Wilayah AWS sama dengan instans DB. Untuk mengetahui petunjuknya, lihat Membuat bucket di Panduan Memulai Amazon Simple Storage Service.
-
Objek yang Anda unggah ke dalam bucket Amazon S3 harus sebesar 5 TB atau kurang. Untuk mengetahui informasi selengkapnya tentang cara menggunakan objek di Amazon S3, lihat Panduan Pengguna Amazon Simple Storage Service.
catatan
Jika file dump lebih besar dari 5 TB, Anda dapat menjalankan ekspor Oracle Data Pump dengan opsi paralel. Operasi ini menyebarkan data ke dalam banyak file dump sehingga setiap file tidak melebihi batas 5 TB.
-
Anda harus menyiapkan bucket Amazon S3 untuk RDS integrasi Amazon dengan mengikuti petunjuk di. Mengkonfigurasi IAM izin RDS untuk integrasi Oracle dengan Amazon S3
-
Anda harus memastikan bahwa ruang penyimpanan cukup untuk menyimpan file dump pada instans sumber dan instans DB target.
catatan
Proses ini mengimpor file dump ke dalam direktori DATA_PUMP_DIR
, direktori yang telah dikonfigurasi di semua instans DB Oracle. Direktori ini terletak di volume penyimpanan yang sama dengan file data Anda. Saat Anda mengimpor file dump, file data Oracle yang ada menggunakan lebih banyak ruang. Dengan demikian, Anda harus memastikan bahwa instans DB Anda dapat mengakomodasi penggunaan ruang tambahan. File dump yang diimpor tidak secara otomatis dihapus atau dihilangkan dari direktori DATA_PUMP_DIR
. Untuk menghapus file dump yang diimpor, gunakan UTL_FILE. FREMOVE
Langkah 1: Berikan hak istimewa kepada pengguna database pada instance DB target Oracle RDS untuk Oracle
Pada langkah ini, Anda membuat skema yang akan menerima impor data dan memberikan hak istimewa yang diperlukan kepada pengguna.
Untuk membuat pengguna dan memberikan hak istimewa yang diperlukan pada instance target RDS for Oracle
-
Gunakan SQL *Plus atau Oracle SQL Developer untuk masuk sebagai pengguna utama ke instance RDS for Oracle DB di mana data akan diimpor. Lihat informasi yang lebih lengkap tentang cara menghubungi instans Anda di Menghubungkan ke instans RDS for Oracle DB.
-
Buat ruang tabel yang diperlukan sebelum Anda mengimpor data. Untuk informasi selengkapnya, lihat Membuat dan mengukur tablespace.
-
Buat akun pengguna dan berikan izin serta peran yang diperlukan jika akun pengguna tempat impor data tidak ada. Jika Anda berencana mengimpor data ke dalam beberapa skema pengguna, buat setiap akun pengguna serta berikan hak istimewa dan peran yang diperlukan ke akun tersebut.
Misalnya, SQL pernyataan berikut membuat pengguna baru dan memberikan izin dan peran yang diperlukan untuk mengimpor data ke dalam skema yang dimiliki oleh pengguna ini. Ganti
dengan nama skema Anda pada langkah ini dan pada langkah selanjutnya.schema_1
CREATE USER
schema_1
IDENTIFIED BYmy_password
; GRANT CREATE SESSION, RESOURCE TO schema_1; ALTER USER schema_1 QUOTA 100M ON users;catatan
Tentukan kata sandi selain perintah yang ditampilkan di sini sebagai praktik terbaik keamanan.
Pernyataan sebelumnya memberi pengguna baru hak istimewa
CREATE SESSION
dan peranRESOURCE
. Anda mungkin memerlukan hak istimewa dan peran tambahan, tergantung objek basis data yang Anda impor.
Langkah 2: Ekspor data ke file dump menggunakan _ DBMS DATAPUMP
Untuk membuat file dump, gunakan paket DBMS_DATAPUMP
.
Untuk mengekspor data Oracle ke dalam file dump
-
Gunakan SQL Plus atau Oracle SQL Developer untuk terhubung ke sumber RDS instans Oracle DB dengan pengguna administratif. Jika database sumber adalah RDS untuk instans Oracle DB, sambungkan dengan pengguna RDS master Amazon.
-
Ekspor data dengan memanggil prosedur
DBMS_DATAPUMP
.Skrip berikut mengekspor skema
ke file dump bernamaSCHEMA_1
sample.dmp
dalam direktoriDATA_PUMP_DIR
. Ganti
dengan nama skema yang ingin Anda ekspor.SCHEMA_1
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'SCHEMA', job_name => null ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl , filename => 'sample.dmp' , directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_exp.log', directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_log_file ); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''
SCHEMA_1
'')'); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM SYS.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' ); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /catatan
Data Pump memulai tugas secara asinkron. Untuk informasi tentang pemantauan tugas Data Pump, lihat Monitoring job status
dalam dokumentasi Oracle. -
(Opsional) Lihat konten log ekspor dengan memanggil prosedur
rdsadmin.rds_file_util.read_text_file
. Untuk informasi selengkapnya, lihat Membaca file di direktori instans DB.
Langkah 3: Unggah file dump ke bucket Amazon S3 Anda
Gunakan RDS prosedur Amazon rdsadmin.rdsadmin_s3_tasks.upload_to_s3
untuk menyalin file dump ke bucket Amazon S3. Contoh berikut ini mengunggah semua file dari direktori DATA_PUMP_DIR
ke bucket Amazon S3 bernama
.amzn-s3-demo-bucket
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;
Pernyataan SELECT
mengembalikan ID tugas dalam jenis data VARCHAR2
. Untuk informasi selengkapnya, lihat Mengunggah file dari instans Oracle DB Anda RDS ke bucket Amazon S3.
Langkah 4: Unduh file dump dari bucket Amazon S3 Anda ke instans DB target Anda
Lakukan langkah ini menggunakan RDS prosedur Amazonrdsadmin.rdsadmin_s3_tasks.download_from_s3
. Saat Anda mengunduh file ke direktori, prosedur download_from_s3
melewatkan unduhan jika file bernama identik sudah ada di direktori. Untuk menghapus file dari direktori unduhan, gunakan UTL_FILE. FREMOVE
Untuk mengunduh file dump Anda
-
Mulailah SQL *Plus atau Oracle SQL Developer dan masuk sebagai master pada instans Oracle DB RDS target Amazon Anda
-
Unduh file dump menggunakan RDS prosedur
rdsadmin.rdsadmin_s3_tasks.download_from_s3
Amazon.Contoh berikut ini mengunduh semua file dari bucket Amazon S3 bernama
ke direktoriamzn-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;Pernyataan
SELECT
mengembalikan ID tugas dalam jenis dataVARCHAR2
. Untuk informasi selengkapnya, lihat Mengunduh file dari bucket Amazon S3 ke instans DB Oracle.
Langkah 5: Impor file dump Anda ke instans DB target Anda menggunakan _ DBMS DATAPUMP
Gunakan DBMS_DATAPUMP
untuk mengimpor skema ke instans DB Oracle AndaRDS. Opsi tambahan seperti METADATA_REMAP
mungkin diperlukan.
Untuk mengimpor data ke instans DB target Anda
-
Mulailah SQL *Plus atau SQL Pengembang dan masuk sebagai pengguna utama ke instans DB Oracle AndaRDS.
-
Impor data dengan memanggil
DBMS_DATAPUMP
prosedur.Contoh berikut mengimpor
SCHEMA_1
data darisample_copied.dmp
ke instans DB target Anda.DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_copied.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_imp.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''
SCHEMA_1
'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /catatan
Tugas Data Pump dimulai secara asinkron. Untuk informasi tentang pemantauan tugas Data Pump, lihat Monitoring job status
dalam dokumentasi Oracle. Anda dapat melihat konten log impor menggunakan prosedur rdsadmin.rds_file_util.read_text_file
. Untuk informasi selengkapnya, lihat Membaca file di direktori instans DB. -
Verifikasi impor data dengan mencantumkan tabel skema pada instans DB target Anda.
Misalnya, kueri berikut mengembalikan jumlah tabel untuk
.SCHEMA_1
SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='
SCHEMA_1
';
Langkah 6: Bersihkan
Setelah data diimpor, Anda dapat menghapus file yang tidak ingin Anda simpan.
Untuk menghapus file yang tidak diperlukan
-
Mulailah SQL *Plus atau SQL Pengembang dan masuk sebagai pengguna utama ke instans DB Oracle AndaRDS.
-
Cantumkan file di
DATA_PUMP_DIR
menggunakan perintah berikut.SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
-
Hapus file di
DATA_PUMP_DIR
yang tidak lagi Anda perlukan menggunakan perintah berikut.EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','
filename
');Misalnya, perintah berikut menghapus file bernama
sample_copied.dmp
.EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp');
Mengimpor data dengan Oracle Data Pump dan tautan basis data
Proses impor berikut menggunakan Oracle Data Pump dan paket Oracle DBMS_ FILE _ TRANSFER
-
Connect ke database Oracle sumber, yang dapat berupa database lokal, EC2 instans Amazon, atau instans RDS untuk Oracle DB.
-
Ekspor data menggunakan DATAPUMP paket DBMS_
. -
Gunakan
DBMS_FILE_TRANSFER.PUT_FILE
untuk menyalin file dump dari database Oracle keDATA_PUMP_DIR
direktori pada target RDS untuk Oracle DB instance yang terhubung menggunakan link database. -
Impor data dari file dump yang disalin ke instance RDS for Oracle DB menggunakan paket.
DBMS_DATAPUMP
Proses impor yang menggunakan Oracle Data Pump dan paket DBMS_FILE_TRANSFER
memiliki langkah-langkah berikut.
Topik
- Persyaratan untuk mengimpor data dengan Oracle Data Pump dan tautan basis data
- Langkah 1: Berikan hak istimewa kepada pengguna pada instance DB target Oracle RDS untuk Oracle
- Langkah 2: Berikan hak istimewa kepada pengguna pada basis data sumber
- Langkah 3: Buat file dump menggunakan _ DBMS DATAPUMP
- Langkah 4: Buat tautan basis data ke instans DB target
- Langkah 5: Salin file dump yang diekspor ke instans DB target menggunakan _ _ DBMS FILE TRANSFER
- Langkah 6: Impor file data ke instans DB target menggunakan DBMS _ DATAPUMP
- Langkah 7: Bersihkan
Persyaratan untuk mengimpor data dengan Oracle Data Pump dan tautan basis data
Proses ini memiliki persyaratan sebagai berikut:
-
Anda harus memiliki hak istimewa eksekusi pada paket
DBMS_FILE_TRANSFER
danDBMS_DATAPUMP
. -
Anda harus memiliki hak istimewa tulis ke direktori
DATA_PUMP_DIR
pada instans DB sumber. -
Anda harus memastikan bahwa ruang penyimpanan cukup untuk menyimpan file dump pada instans sumber dan instans DB target.
catatan
Proses ini mengimpor file dump ke dalam direktori DATA_PUMP_DIR
, direktori yang telah dikonfigurasi di semua instans DB Oracle. Direktori ini terletak di volume penyimpanan yang sama dengan file data Anda. Saat Anda mengimpor file dump, file data Oracle yang ada menggunakan lebih banyak ruang. Dengan demikian, Anda harus memastikan bahwa instans DB Anda dapat mengakomodasi penggunaan ruang tambahan. File dump yang diimpor tidak secara otomatis dihapus atau dihilangkan dari direktori DATA_PUMP_DIR
. Untuk menghapus file dump yang diimpor, gunakan UTL_FILE. FREMOVE
Langkah 1: Berikan hak istimewa kepada pengguna pada instance DB target Oracle RDS untuk Oracle
Untuk memberikan hak istimewa kepada pengguna pada instans DB target Oracle RDS untuk Oracle, lakukan langkah-langkah berikut:
-
Gunakan SQL Plus atau Oracle SQL Developer untuk terhubung ke instance RDS for Oracle DB di mana Anda ingin mengimpor data. Connect sebagai pengguna RDS master Amazon. Lihat informasi yang lebih lengkap tentang cara menghubungkan ke instans DB di Menghubungkan ke instans RDS for Oracle DB.
-
Buat ruang tabel yang diperlukan sebelum Anda mengimpor data. Untuk informasi selengkapnya, lihat Membuat dan mengukur tablespace.
-
Jika akun pengguna untuk impor data tidak ada, buat akun pengguna serta berikan izin dan peran yang diperlukan. Jika Anda berencana mengimpor data ke dalam beberapa skema pengguna, buat setiap akun pengguna serta berikan hak istimewa dan peran yang diperlukan ke akun tersebut.
Misalnya, perintah berikut membuat pengguna baru bernama
schema_1
dan memberikan izin dan peran yang diperlukan untuk mengimpor data ke dalam skema untuk pengguna ini.CREATE USER
schema_1
IDENTIFIED BYmy-password
; GRANT CREATE SESSION, RESOURCE TO schema_1; ALTER USER schema_1 QUOTA 100M ON users;catatan
Tetapkan kata sandi selain penggugah (prompt) yang ditampilkan di sini sebagai praktik terbaik keamanan.
Contoh sebelumnya memberi pengguna baru hak istimewa
CREATE SESSION
dan peranRESOURCE
. Hak istimewa dan peran tambahan mungkin diperlukan bergantung pada objek basis data yang Anda impor.catatan
Ganti
dengan nama skema Anda pada langkah ini dan pada langkah selanjutnya.schema_1
Langkah 2: Berikan hak istimewa kepada pengguna pada basis data sumber
Gunakan SQL *Plus atau Oracle SQL Developer untuk terhubung ke instance RDS for Oracle DB yang berisi data yang akan diimpor. Jika perlu, buat akun pengguna dan berikan izin yang diperlukan.
catatan
Jika database sumber adalah RDS instance Amazon, Anda dapat melewati langkah ini. Anda menggunakan akun pengguna RDS master Amazon Anda untuk melakukan ekspor.
Perintah berikut membuat pengguna baru dan memberikan izin yang diperlukan.
CREATE USER export_user IDENTIFIED BY
my-password
; GRANT CREATE SESSION, CREATE TABLE, CREATE DATABASE LINK TO export_user; ALTER USER export_user QUOTA 100M ON users; GRANT READ, WRITE ON DIRECTORY data_pump_dir TO export_user; GRANT SELECT_CATALOG_ROLE TO export_user; GRANT EXECUTE ON DBMS_DATAPUMP TO export_user; GRANT EXECUTE ON DBMS_FILE_TRANSFER TO export_user;
catatan
Tetapkan kata sandi selain penggugah (prompt) yang ditampilkan di sini sebagai praktik terbaik keamanan.
Langkah 3: Buat file dump menggunakan _ DBMS DATAPUMP
Untuk membuat file dump, lakukan hal berikut:
-
Gunakan SQL *Plus atau Oracle SQL Developer untuk terhubung ke instance Oracle sumber dengan pengguna administratif atau dengan pengguna yang Anda buat di langkah 2. Jika database sumber adalah Amazon RDS untuk instans Oracle DB, sambungkan dengan pengguna RDS master Amazon.
-
Buat file dump menggunakan utilitas Oracle Data Pump.
Skrip berikut membuat file dump bernama sampel.dmp dalam direktori
DATA_PUMP_DIR
.DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT' , job_mode => 'SCHEMA' , job_name => null ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample.dmp' , directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl , filename => 'sample_exp.log' , directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_log_file ); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl , 'SCHEMA_EXPR' , 'IN (''SCHEMA_1'')' ); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM sys.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' ); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
catatan
Tugas Data Pump dimulai secara asinkron. Untuk informasi tentang pemantauan tugas Data Pump, lihat Monitoring job status
dalam dokumentasi Oracle. Anda dapat melihat konten log ekspor menggunakan prosedur rdsadmin.rds_file_util.read_text_file
. Untuk informasi selengkapnya, lihat Membaca file di direktori instans DB.
Langkah 4: Buat tautan basis data ke instans DB target
Buat tautan basis data antara instans sumber Anda dan instans DB target Anda. Instans Oracle lokal Anda harus memiliki konektivitas jaringan ke instans DB untuk membuat tautan basis data dan untuk mentransfer file dump ekspor Anda.
Lakukan langkah ini dengan terhubung ke akun pengguna yang sama dengan langkah sebelumnya.
Jika Anda membuat tautan database antara dua instance DB di dalam yang sama VPC atau diintipVPCs, dua instance DB harus memiliki rute yang valid di antara keduanya. Grup keamanan dari setiap instans DB harus mengizinkan ingress dan egress dari instans DB lainnya. Aturan masuk dan keluar kelompok keamanan dapat merujuk ke kelompok keamanan dari yang sama VPC atau peered. VPC Untuk informasi selengkapnya, lihat Menyesuaikan tautan basis data untuk digunakan dengan instans DB di VPC.
Perintah berikut membuat link database bernama to_rds
yang menghubungkan ke pengguna RDS master Amazon pada instans DB target.
CREATE DATABASE LINK to_rds CONNECT TO
<master_user_account>
IDENTIFIED BY<password>
USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>
) (PORT=<listener port>
))(CONNECT_DATA=(SID=<remote SID>
)))';
Langkah 5: Salin file dump yang diekspor ke instans DB target menggunakan _ _ DBMS FILE TRANSFER
Gunakan DBMS_FILE_TRANSFER
untuk menyalin file dump dari instans basis data sumber ke instans DB target. Skrip berikut menyalin file dump bernama sample.dmp dari instans sumber ke tautan basis data target bernama to-rds (yang dibuat pada langkah sebelumnya).
BEGIN DBMS_FILE_TRANSFER.PUT_FILE( source_directory_object => 'DATA_PUMP_DIR', source_file_name => 'sample.dmp', destination_directory_object => 'DATA_PUMP_DIR', destination_file_name => 'sample_copied.dmp', destination_database => 'to_rds' ); END; /
Langkah 6: Impor file data ke instans DB target menggunakan DBMS _ DATAPUMP
Gunakan Oracle Data Pump untuk mengimpor skema dalam instans DB. Opsi tambahan seperti METADATA _ REMAP mungkin diperlukan.
Connect ke instans DB dengan akun pengguna RDS master Amazon untuk melakukan impor.
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_copied.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_imp.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''
SCHEMA_1
'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
catatan
Tugas Data Pump dimulai secara asinkron. Untuk informasi tentang pemantauan tugas Data Pump, lihat Monitoring job statusrdsadmin.rds_file_util.read_text_file
. Untuk informasi selengkapnya, lihat Membaca file di direktori instans DB.
Anda dapat memverifikasi impor data dengan melihat tabel pengguna pada instans DB. Misalnya, kueri berikut mengembalikan jumlah tabel untuk
. schema_1
SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='
SCHEMA_1
';
Langkah 7: Bersihkan
Setelah data diimpor, Anda dapat menghapus file yang tidak ingin Anda simpan. Anda dapat mencantumkan file di DATA_PUMP_DIR
menggunakan perintah berikut.
SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
Untuk menghapus file di DATA_PUMP_DIR
yang tidak lagi Anda perlukan, gunakan perintah berikut.
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','
<file name>
');
Misalnya, perintah berikut menghapus file bernama "sample_copied.dmp"
.
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp');