ORA-29913 adalah salah satu kesalahan umum saat bekerja dengan tabel eksternal di database Oracle. Kami akan mencari berbagai cara untuk menghasilkan kesalahan dan apa yang dapat dilakukan untuk mengatasi kesalahan
(1) File Eksternal tidak ditemukan atau izin salah
SQL> select * from Scott.example_external_table;
select * from example_external_table
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04040: file test1.dat in TEST_DIR not found
ORA-06512: at "SYS.ORACLE_LOADER", line 14
ORA-06512: at line 1
Saat menganalisis tabel, Anda mendapatkan pesan serupa:
SQL> jalankan sys.dbms_stats.gather_table_stats('SCOTT','EXAMPLE_EXTERNAL_TABLE');
BEGIN sys.dbms_stats.gather_table_stats('SCOTT','EXAMPLE_EXTERNAL_TABLE'); END;
*
ERROR pada baris 1:
ORA-29913:kesalahan dalam menjalankan pemanggilan ODCIEXTTABLEOPEN
ORA-29400:kesalahan kartrid data
KUP-04040:file test1 .dat di TEST_DIR tidak ditemukan
ORA-06512:pada “SYS.DBMS_STATS”, baris 7161
ORA-06512:pada “SYS.DBMS_STATS”, baris 7174
ORA-06512:pada baris 1
Atau secara umum
ORA-20011: Approximate NDV failed:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04040: file <file_name> in <directory_name> not found
Alasan
File eksternal telah dipindahkan dari lokasi yang benar
SQL> select * from dba_directories ;
OWNER DIRECTORY_NAME DIRECTORY_PATH
------ -------------- -----------------------
SYS TEST_DIR /u01/oradata/external_files
Periksa Nama File yang terkait dengan tabel eksternal
select * from dba_external_locations
where table_name='EXAMPLE_EXTERNAL_TABLE';OWNER TABLE_NAME LOCATION DIRECTORY_OWNER DIRECTORY_NAME
----- ------------- -------- --------------- ---------------
SYS EXAMPLE_EXTERNAL_TABLE test1.dat SYS TEST_DIR
SYS EXAMPLE_EXTERNAL_TABLE test2.dat SYS TEST_DIR
Sekarang memeriksa di tingkat OS
$ cd /u01/oradata/external_files
$ ls test[1-2]/dat
Tidak ada file atau direktori seperti itu
Jadi file tidak ada di lokasi yang benar
Kedua pertanyaan di atas dapat digabungkan seperti di bawah ini juga
select TABLE_NAME, DIRECTORY_PATH||'/'||LOCATION file_name from DBA_EXTERNAL_LOCATIONS loc, dba_directories dir
where loc.DIRECTORY_OWNER=dir.OWNER
and loc.DIRECTORY_NAME=dir.DIRECTORY_NAME
and loc.OWNER='&1' and loc.TABLE_NAME='&2';
Resolusi:
Pindahkan kembali kedua file ke lokasi aslinya
$ mv /u02/oradata/external_files/test2.dat /u01/oradata/external_files
$ mv /u02/oradata/external_files/test1.dat /u01/oradata/external_files
Sekarang
Kedua pernyataan di bawah ini akan berhasil
select * from Scott.example_external_table; execute sys.dbms_stats.gather_table_stats('SCOTT','EXAMPLE_EXTERNAL_TABLE');
(2) Format data salah dalam file eksternal
KESALAHAN pada baris 1: ORA-29913:kesalahan dalam menjalankan pemanggilan ODCIEXTTABLEFETCH ORA-30653:batas penolakan tercapai ORA-06512:pada “SYS.ORACLE_LOADER”, baris 14 ORA-06512:pada baris 1 |
Alasan
(i) File eksternal mungkin memiliki baris kosong
(ii) Periksa pembatas TAB atau pembatas HEX
sebuah. Pembatas TAB '\t', yang digunakan oleh Oracle, diwakili oleh nilai HEX '09'
b. Nilai HEX dalam datafile harus sesuai dengan nilai HEX yang ditentukan dalam
pernyataan CREATE
c. Spesifikasi HEX dalam pernyataan CREATE akan terlihat seperti 0X'
(iii) Jika kolom yang ditambahkan ke tabel eksternal, hal yang sama harus ada di file eksternal
Resolusi
Periksa kesalahan di log dan perbaiki masalah yang sesuai
(3) Kesalahan dengan kolom Null
KESALAHAN pada baris 1: ORA-29913:kesalahan dalam menjalankan pemanggilan ODCIEXTTABLEOPEN ORA-29400:kesalahan kartrid data KUP-04043:kolom tabel tidak ditemukan di sumber eksternal: |
Alasan
File eksternal memang memiliki nilai null untuk kolom terakhir yang awalnya berupa kolom angka. Ketika kita mengubah null menjadi angka 0, maka query berhasil.
Resolusi
Untuk memuat nilai NULL, kita perlu menyertakan pembatas ENCLOSED BY dalam definisi tabel.
rekaman dibatasi oleh baris baru bidang diakhiri dengan ',' secara opsional diapit oleh ' ' <<<====== nilai bidang tidak ada adalah nol |
(4) ORA-29913 juga dapat terjadi jika Oracle tidak dapat membuat file log juga. Jadi periksa izin direktori
(5) Kesalahan direktori tabel eksternal
Kesalahan ORA-29913 juga dapat terjadi pada tabel eksternal saat Anda tidak memberikan izin baca dan tulis ke direktori:
BUAT ATAU GANTI DIRECTORY extdir AS ‘/u01/oradata/testdir’;
GRANT READ ON DIRECTORY testdir TO
GRANT WRITE ON DIRECTORY testdir TO
Berikut adalah beberapa informasi bagus tentang Tabel Eksternal, Anda harus memeriksa
Apa itu TABEL EKSTERNAL di Oracle?
(1) Tabel eksternal adalah tabel hanya-baca di mana data disimpan dalam file datar di luar database
(2) Anda dapat menggunakan fitur tabel eksternal untuk mengakses file eksternal seolah-olah mereka adalah tabel di dalam database.
(3) Saat membuat tabel eksternal, Anda menentukan struktur dan lokasinya dengan di oracle. Pada dasarnya Anda hanya menyimpan metadata di dalam oracle
(4) Saat Anda membuat kueri tabel, Oracle membaca tabel eksternal dan mengembalikan hasilnya seolah-olah data telah disimpan dalam database.
(5) Server oracle menyediakan dua driver oracle utama untuk membaca file datar
- Oracle_loader:Ini digunakan untuk membaca file datar menggunakan teknologi oracle loader. Ini pada dasarnya memungkinkan untuk membaca file yang dapat ditafsirkan menggunakan teknologi sql loader
- Oracle_datapump:Ini digunakan untuk mengimpor dan mengekspor data menggunakan format platform independen
Artikel Terkait
Tabel Eksternal Oracle :Lihat posting ini untuk informasi tentang penggunaan tabel eksternal di oracle dengan contoh, cara membuat tabel eksternal, cara menggunakannya
Oracle Create tabel :Tabel adalah unit dasar penyimpanan data di Oracle Database.kami membahas cara menggunakan perintah Oracle create table untuk membuat tabel dengan foreign key /primary key
ORA-00936 missing expression :Pelajari troubleshooting ORA-00936 missing expression di Oracle SQL. kita dapat menghindarinya, bug Oracle untuk kesalahan ini
ORA-01017:username/password tidak valid; logon ditolak :Pelajari kemungkinan resolusi nama pengguna/kata sandi ORA-01017 yang tidak valid; masuk ditolak. Bagaimana mengatasinya dengan cepat tanpa banyak usaha
ORA-00001 unique constraint melanggar :Lihat posting ini untuk solusi yang mungkin untuk kesalahan oracle ORA-00001 unique constraint dilanggar. Cara mengatasi dan memperbaikinya
ORA-00911:karakter tidak valid :Posting ini untuk penyebab umum ORA-00911:karakter tidak valid di oracle dengan contoh dan resolusi untuk membantu Anda menyelesaikan pekerjaan
ORA-00900 :Posting ini untuk berbagai solusi untuk pernyataan sql yang tidak valid ORA-00900.Alasan kesalahan.Cara men-debug dan menyelesaikannya dengan cepat,
ORA-03113:end-of-file pada saluran komunikasi:Lihat metode untuk menyelesaikan ORA -03113:akhir file pada saluran komunikasi. Kesalahan ini dapat terjadi saat memulai basis data, menjalankan program
Dokumentasi Oracle
Kursus yang Direkomendasikan
Berikut adalah Kursus Udemy yang bagus untuk Oracle SQL
Oracle-Sql-Step-by-step :Kursus ini mencakup sql dasar, bergabung, Membuat Tabel dan memodifikasi strukturnya, Membuat Tampilan, Union, Union -semua dan banyak hal lainnya . Kursus yang bagus dan kursus yang harus dimiliki untuk pemula SQL
Kursus Sertifikasi Oracle SQL Lengkap :Ini adalah kursus yang bagus untuk siapa saja yang ingin siap kerja untuk keterampilan pengembang SQL. Kursus yang dijelaskan dengan baik
Pengembang Oracle SQL:Esensi, Kiat, dan Trik :Alat pengembang Oracle Sql sedang digunakan oleh banyak pengembang. Kursus ini memberi kita trik dan pelajaran tentang cara menggunakannya secara efektif dan menjadi pengembang sql yang produktif
Oracle SQL Performance Tuning Masterclass 2020 :Penyetelan kinerja adalah salah satu keterampilan yang penting dan paling dicari. Ini adalah kursus yang bagus untuk mempelajarinya dan mulai melakukan penyetelan kinerja sql