Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Melakukan tugas umum terkait log untuk instans DB Oracle
Setelah itu, Anda dapat menemukan cara melakukan tugas DBA umum tertentu terkait proses pencatatan log di instans DB Amazon RDS Anda yang menjalankan Oracle. Untuk memberikan pengalaman layanan terkelola, Amazon RDS tidak memberikan akses shell ke instans DB, dan membatasi akses ke sejumlah prosedur dan tabel sistem tertentu yang memerlukan hak istimewa tingkat lanjut.
Untuk informasi selengkapnya, lihat File log basis data Oracle.
Topik
- Mengatur pencatatan log paksa
- Mengatur pencatatan log tambahan
- Mengganti file log online
- Menambahkan log pengulangan online
- Menghapus log pengulangan online
- Mengubah ukuran log pengulangan online
- Mempertahankan log pengulangan yang diarsipkan
- Mengakses log pengulangan online dan yang diarsipkan
- Mengunduh log pengulangan yang diarsipkan dari Amazon S3
Mengatur pencatatan log paksa
Dalam mode pencatatan log paksa, Oracle mencata log semua perubahan pada basis data kecuali perubahan dalam ruang tabel sementara dan segmen sementara (NOLOGGING
klausul diabaikan). Untuk informasi selengkapnya, lihat Menentukan mode LOGGING PAKSA
Untuk mengatur pencatatan log paksa, gunakan prosedur rdsadmin.rdsadmin_util.force_logging
Amazon RDS. Prosedur force_logging
memiliki parameter berikut.
Nama parameter | Jenis data | Default | Ya | Deskripsi |
---|---|---|---|---|
|
boolean |
true |
Tidak |
Atur ke |
Contoh berikut menempatkan basis data dalam mode pencatatan log paksa.
EXEC rdsadmin.rdsadmin_util.force_logging(p_enable =>
true
);
Mengatur pencatatan log tambahan
Jika Anda mengaktifkan pencatatan tambahan, LogMiner memiliki informasi yang diperlukan untuk mendukung baris berantai dan tabel berkerumun. Untuk informasi selengkapnya, lihat Supplemental logging
Oracle Database tidak mengaktifkan pencatatan log tambahan secara default. Untuk mengaktifkan dan menonaktifkan pencatatan log tambahan, gunakan prosedur rdsadmin.rdsadmin_util.alter_supplemental_logging
Amazon RDS. Untuk informasi selengkapnya tentang cara Amazon RDS mengelola retensi log pengulangan yang diarsipkan untuk instans DB Oracle, lihat Mempertahankan log pengulangan yang diarsipkan.
Prosedur alter_supplemental_logging
memiliki parameter berikut.
Nama parameter | Jenis data | Default | Wajib | Deskripsi |
---|---|---|---|---|
|
varchar2 |
— |
Ya |
|
|
varchar2 |
null |
Tidak |
Tipe pencatatan log tambahan. Nilai yang valid adalah |
Contoh berikut mengaktifkan pencatatan log tambahan.
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
'); end; /
Contoh berikut mengaktifkan pencatatan log tambahan untuk semua kolom ukuran maksimum dengan panjang tetap.
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
', p_type => 'ALL
'); end; /
Contoh berikut memungkinkan pencatatan log tambahan untuk kolom kunci primer.
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
', p_type => 'PRIMARY KEY
'); end; /
Mengganti file log online
Untuk beralih file log, gunakan prosedur rdsadmin.rdsadmin_util.switch_logfile
Amazon RDS. Prosedur switch_logfile
tidak memiliki parameter.
Contoh berikut mengganti file log.
EXEC rdsadmin.rdsadmin_util.switch_logfile;
Menambahkan log pengulangan online
Instans DB Amazon RDS yang menjalankan Oracle dimulai dengan empat log pengulangan online, yang masing-masing berukuran 128 MB. Untuk menambahkan log pengulangan tambahan, gunakan prosedur rdsadmin.rdsadmin_util.add_logfile
Amazon RDS.
Prosedur add_logfile
memiliki parameter berikut.
catatan
Parameter ini tidak bisa ada pada saat yang sama.
Nama parameter | Jenis data | Default | Wajib | Deskripsi |
---|---|---|---|---|
|
positif |
null |
Tidak |
Ukuran file log dalam byte. |
|
varchar2 |
— |
Ya |
Ukuran file log. Anda dapat menentukan ukuran dalam kilobyte (K), megabyte (M), atau gigabyte (G). |
Perintah berikut menambahkan file log 100 MB.
EXEC rdsadmin.rdsadmin_util.add_logfile(p_size => '
100M
');
Menghapus log pengulangan online
Untuk menghapus log pengulangan, gunakan prosedur rdsadmin.rdsadmin_util.drop_logfile
Amazon RDS. Prosedur drop_logfile
memiliki parameter berikut.
Nama parameter | Jenis data | Default | Wajib | Deskripsi |
---|---|---|---|---|
|
positif |
— |
Ya |
Nomor grup log. |
Contoh berikut menghapus log dengan grup nomor 3.
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp =>
3
);
Anda hanya dapat menghapus log yang memiliki status tidak digunakan atau tidak aktif. Contoh berikut mendapatkan status log.
SELECT GROUP#, STATUS FROM V$LOG; GROUP# STATUS ---------- ---------------- 1 CURRENT 2 INACTIVE 3 INACTIVE 4 UNUSED
Mengubah ukuran log pengulangan online
Instans DB Amazon RDS yang menjalankan Oracle dimulai dengan empat log pengulangan online, yang masing-masing berukuran 128 MB. Contoh berikut menunjukkan cara menggunakan prosedur Amazon RDS untuk mengubah ukuran log Anda dari 128 MB menjadi 512 MB untuk masing-masing.
/* Query V$LOG to see the logs. */ /* You start with 4 logs of 128 MB each. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE /* Add four new logs that are each 512 MB */ EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); /* Query V$LOG to see the logs. */ /* Now there are 8 logs. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Drop each inactive log using the group number. */ EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 1); EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3); EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 4); /* Query V$LOG to see the logs. */ /* Now there are 5 logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 CURRENT 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Switch logs so that group 2 is no longer current. */ EXEC rdsadmin.rdsadmin_util.switch_logfile; /* Query V$LOG to see the logs. */ /* Now one of the new logs is current. */ SQL>SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 ACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* If the status of log 2 is still "ACTIVE", issue a checkpoint to clear it to "INACTIVE". */ EXEC rdsadmin.rdsadmin_util.checkpoint; /* Query V$LOG to see the logs. */ /* Now the final original log is inactive. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 INACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED # Drop the final inactive log. EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 2); /* Query V$LOG to see the logs. */ /* Now there are four 512 MB logs. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED
Mempertahankan log pengulangan yang diarsipkan
Anda dapat menyimpan log redo yang diarsipkan secara lokal pada instans DB Anda untuk digunakan dengan produk seperti LogMiner Oracle (). DBMS_LOGMNR
Setelah Anda mempertahankan redo log, Anda dapat menggunakan LogMiner untuk menganalisis log. Untuk informasi selengkapnya, lihat Menggunakan LogMiner untuk menganalisis file log ulang
Untuk mempertahankan log pengulangan yang diarsipkan, terapkan prosedur rdsadmin.rdsadmin_util.set_configuration
Amazon RDS. Prosedur set_configuration
memiliki parameter berikut.
Nama parameter | Jenis data | Default | Wajib | Deskripsi |
---|---|---|---|---|
|
varchar |
— |
Ya |
Nama konfigurasi yang akan diperbarui. |
|
varchar |
— |
Ya |
Nilai untuk konfigurasi. |
Contoh berikut mempertahankan log pengulangan 24 jam.
begin rdsadmin.rdsadmin_util.set_configuration( name => 'archivelog retention hours', value => '24'); end; / commit;
catatan
Commit tersebut diperlukan agar perubahan dapat berlaku.
Untuk melihat berapa lama log pengulangan yang diarsipkan dipertahankan untuk instans DB Anda, gunakan prosedur rdsadmin.rdsadmin_util.show_configuration
Amazon RDS.
Contoh berikut menunjukkan waktu retensi log.
set serveroutput on EXEC rdsadmin.rdsadmin_util.show_configuration;
Output menunjukkan pengaturan saat ini untuk archivelog retention hours
. Output berikut menunjukkan bahwa log pengulangan yang diarsipkan dipertahankan selama 48 jam.
NAME:archivelog retention hours
VALUE:48
DESCRIPTION:ArchiveLog expiration specifies the duration in hours before archive/redo log files are automatically deleted.
Karena log pengulangan yang diarsipkan dipertahankan dalam instans DB Anda, pastikan bahwa instans DB Anda memiliki penyimpanan yang cukup untuk log yang dipertahankan. Untuk menentukan seberapa besar ruang yang digunakan oleh instans DB Anda dalam X jam terakhir, Anda dapat menjalankan kueri berikut, mengganti X dengan jumlah jam.
SELECT SUM(BLOCKS * BLOCK_SIZE) bytes FROM V$ARCHIVED_LOG WHERE FIRST_TIME >= SYSDATE-(
X
/24) AND DEST_ID=1;
RDS for Oracle hanya menghasilkan log pengulangan yang diarsipkan jika periode retensi cadangan instans DB Anda lebih besar dari nol. Secara default periode retensi cadangan lebih besar dari nol.
Ketika periode retensi log yang diarsipkan berakhir, RDS for Oracle akan menghapus log pengulangan yang diarsipkan dari instans DB Anda. Untuk mendukung pemulihan instans DB Anda ke titik waktu tertentu, Amazon RDS menyimpan log pengulangan yang diarsipkan di luar instans DB Anda berdasarkan periode retensi cadangan. Untuk mengubah periode retensi cadangan, lihat Memodifikasi instans DB Amazon RDS.
catatan
Dalam beberapa kasus, Anda mungkin menggunakan JDBC di Linux untuk mengunduh log pengulangan yang diarsipkan dan mengalami waktu latensi panjang dan pengaturan ulang koneksi. Dalam kasus seperti itu, masalah mungkin disebabkan oleh pengaturan generator nomor acak default pada klien Java Anda. Sebaiknya setel driver JDBC Anda untuk menggunakan generator nomor acak yang tidak blokir.
Mengakses log pengulangan online dan yang diarsipkan
Anda mungkin ingin mengakses file log redo online dan diarsipkan untuk pertambangan dengan alat eksternal seperti GoldenGate, Attunity, Informatica, dan lainnya. Untuk mengakses file ini, lakukan hal berikut:
-
Buat objek direktori yang memberikan akses hanya baca ke jalur file fisik.
Gunakan
rdsadmin.rdsadmin_master_util.create_archivelog_dir
danrdsadmin.rdsadmin_master_util.create_onlinelog_dir
. -
Baca file menggunakan PL/SQL.
Anda dapat membaca file menggunakan PL/SQL. Untuk informasi selengkapnya tentang cara membaca file dari objek direktori, lihat Membuat daftar file di direktori instans DB dan Membaca file di direktori instans DB.
Mengakses log transaksi didukung untuk rilis berikut ini:
-
Oracle Database 21c
-
Oracle Database 19c
Kode berikut membuat direktori yang memberikan akses baca saja ke file log pengulangan online dan yang diarsipkan.
penting
Kode ini juga mencabut hak istimewa DROP ANY DIRECTORY
.
EXEC rdsadmin.rdsadmin_master_util.create_archivelog_dir; EXEC rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
Kode berikut menghapus direktori untuk file log pengulangan online dan yang diarsipkan.
EXEC rdsadmin.rdsadmin_master_util.drop_archivelog_dir; EXEC rdsadmin.rdsadmin_master_util.drop_onlinelog_dir;
Kode berikut memberikan dan mencabut hak istimewa DROP ANY DIRECTORY
.
EXEC rdsadmin.rdsadmin_master_util.revoke_drop_any_directory; EXEC rdsadmin.rdsadmin_master_util.grant_drop_any_directory;
Mengunduh log pengulangan yang diarsipkan dari Amazon S3
Anda dapat mengunduh log pengulangan yang diarsipkan pada instans DB Anda menggunakan paket rdsadmin.rdsadmin_archive_log_download
. Jika log pengulangan yang diarsipkan tidak lagi tersedia di instans DB, Anda dapat mengunduhnya lagi dari Amazon S3. Kemudian Anda dapat menambang log atau menggunakannya untuk memulihkan atau mereplikasi basis data Anda.
catatan
Anda tidak dapat mengunduh log pengulangan yang diarsipkan pada instans replika baca.
Mengunduh log pengulangan yang diarsipkan: langkah-langkah dasar
Ketersediaan log pengulangan yang diarsipkan bergantung pada kebijakan retensi berikut:
-
Kebijakan retensi cadangan - Log dalam kebijakan ini tersedia di Amazon S3. Log di luar kebijakan ini akan dihapus.
-
Kebijakan penyimpanan log yang diarsipkan - Log dalam kebijakan ini tersedia pada instans DB Anda. Log di luar kebijakan ini akan dihapus.
Jika log tidak tersedia di instans Anda tetapi dilindungi oleh periode retensi cadangan, gunakan rdsadmin.rdsadmin_archive_log_download
untuk mengunduhnya lagi. RDS for Oracle menyimpan log ke direktori /rdsdbdata/log/arch
pada instans DB Anda.
Untuk mengunduh log pengulangan yang diarsipkan dari Amazon S3
-
Konfigurasikan periode retensi Anda untuk memastikan unduhan log pengulangan yang diarsipkan dipertahankan selama yang Anda butuhkan. Pastikan untuk
COMMIT
perubahan Anda.RDS mempertahankan log yang Anda unduh sesuai dengan kebijakan retensi log yang diarsipkan, mulai dari saat log diunduh. Untuk mempelajari cara menetapkan kebijakan retensi, lihat Mempertahankan log pengulangan yang diarsipkan.
-
Tunggu hingga 5 menit agar perubahan kebijakan retensi log yang diarsipkan diterapkan.
-
Unduh log pengulangan yang diarsipkan dari Amazon S3 menggunakan
rdsadmin.rdsadmin_archive_log_download
.Untuk informasi lebih lanjut, lihat Mengunduh satu log pengulangan yang diarsipkan dan Mengunduh serangkaian log pengulangan yang diarsipkan.
catatan
RDS secara otomatis memeriksa penyimpanan yang tersedia sebelum mengunduh. Jika log yang diminta memakan ruang dengan persentase tinggi, Anda akan menerima peringatan.
-
Konfirmasi bahwa log berhasil diunduh dari Amazon S3.
Anda dapat melihat status tugas unduhan Anda di file bdump. File bdump memiliki nama jalur
/rdsdbdata/log/trace/dbtask-
. Pada langkah unduhan sebelumnya, Anda menjalankan pernyataantask-id
.logSELECT
yang menampilkan ID tugas dalam tipe dataVARCHAR2
. Untuk informasi selengkapnya, lihat contoh serupa di Memantau status transfer file.
Mengunduh satu log pengulangan yang diarsipkan
Untuk mengunduh satu log pengulangan yang diarsipkan ke direktori /rdsdbdata/log/arch
, gunakan rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum
. Prosedur ini memiliki parameter berikut.
Nama parameter | Jenis data | Default | Wajib | Deskripsi |
---|---|---|---|---|
|
number |
— |
Ya |
Nomor urut log pengulangan yang diarsipkan. |
Contoh berikut mengunduh log dengan nomor urut 20.
SELECT rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum(seqnum => 20) AS TASK_ID FROM DUAL;
Mengunduh serangkaian log pengulangan yang diarsipkan
Untuk mengunduh serangkaian log pengulangan yang diarsipkan ke direktori /rdsdbdata/log/arch
, gunakan download_logs_in_seqnum_range
. Unduhan Anda dibatasi hingga 300 log per permintaan. Prosedur download_logs_in_seqnum_range
memiliki parameter berikut.
Nama parameter | Jenis data | Default | Wajib | Deskripsi |
---|---|---|---|---|
|
number |
— |
Ya |
Nomor urut awal untuk rangkaian. |
|
number |
— |
Ya |
Nomor urut akhir untuk rangkaian. |
Contoh berikut mengunduh log dengan nomor urut 50 sampai 100.
SELECT rdsadmin.rdsadmin_archive_log_download.download_logs_in_seqnum_range(start_seq => 50, end_seq => 100) AS TASK_ID FROM DUAL;