Anonim

Para pakar database akan mengenali nama Oracle sebagai pembangkit tenaga listrik di dunia sistem manajemen basis data relasional (DBMS). Oracle telah menghasilkan solusi DBMS yang sangat bertenaga selama beberapa dekade dan tetap menjadi pemimpin di bidangnya. Banyak pengguna akhir produk database mungkin bingung atau bingung ketika mereka menggunakan solusi yang telah dirancang dan menghasilkan pesan kesalahan. Satu pesan kesalahan umum yang diproduksi oleh Oracle adalah kesalahan ORA-06512.

Lihat juga artikel kami Cara Memperbaiki Kesalahan ora-00942

Oracle adalah sistem manajemen basis data yang telah ada selama empat puluh tahun dalam berbagai bentuk. Awalnya menggunakan sesuatu yang disebut skema SCOTT, dinamai setelah salah satu karyawan asli Oracle. Anda bahkan masuk ke Oracle untuk pertama kalinya dengan nama pengguna 'scott' dan kata sandi 'tiger' yang dinamai kucing Scott. Sekarang ada beberapa skema yang digunakan tergantung pada apa yang Anda gunakan untuk Oracle.

Jika Anda ingin mempelajari lebih lanjut tentang Oracle dari awal, halaman ini sangat berguna.

Memperbaiki kesalahan ORA-06512

Di Oracle, kesalahan ORA-06512 adalah kesalahan pengecualian umum yang memberi tahu Anda di mana ada sesuatu yang salah. Ini adalah salah satu kesalahan paling tidak spesifik yang diproduksi oleh Oracle, karena hanya memberi tahu Anda bahwa ada masalah, tetapi bukan apa yang salah.

Misalnya, pesan kesalahan umum mungkin membaca:

“ORA-01422: pengambilan tepat pengembalian lebih dari jumlah baris yang diminta

ORA-06512: di "DATABASE_NAME", baris 66

ORA-06512: pada baris 1 ″

Baris pertama memberi tahu Anda apa jenis kesalahan yang terjadi, dalam hal ini, kueri mengembalikan lebih banyak data daripada yang diharapkan sehingga tidak tahu cara menanganinya. Kode 'ORA-01422' adalah kode kesalahan aktual yang perlu Anda perhatikan. ORA-06512 hanyalah kode kesalahan umum.

Baris kedua memberi tahu Anda di mana kesalahan itu terjadi. DATABASE_NAME akan menjadi basis data apa pun yang Anda gunakan saat itu. Baris 66 adalah baris di mana kesalahan terjadi dan merupakan baris yang perlu Anda periksa untuk memperbaiki kesalahan.

Baris ketiga dalam sintaks kesalahan memberitahu Anda dari mana panggilan itu berasal. Periksa baris satu dan Anda akan melihat panggilan ke DATABASE_NAME.

Untuk memperbaiki kesalahan khusus ini, Anda harus memperbaiki masalah yang disebabkan oleh ORA-01422, yaitu 'pengambilan tepat pengembalian lebih dari jumlah baris yang diminta' atau Anda perlu menambahkan penangan pengecualian untuk memberitahu Oracle untuk mengabaikannya. Karena memperbaiki masalah inti selalu lebih disukai, inilah cara yang harus diambil.

Ada dua hal yang bisa Anda lakukan. Jika Anda mengharapkan kueri mengembalikan lebih dari satu baris, Anda dapat memodifikasinya sehingga tidak terkejut. Jika Anda hanya mengharapkan permintaan untuk mengembalikan satu baris, Anda dapat memodifikasinya juga.

Mengharapkan lebih dari satu baris:

untuk X in (pilih * dari t mana …)

lingkaran

- proses catatan X di sini

loop akhir;

Ini harus menghapus kesalahan dalam kueri basis data di mana lebih dari satu baris akan dikembalikan.

Jika Anda hanya mengharapkan satu baris dikembalikan, Anda dapat mencoba:

mulai

pilih * ke ….

dari mana….

proses….

pengecualian

ketika NO_DATA_FOUND lalu

kode penanganan kesalahan saat tidak ada catatan ditemukan

ketika TOO_MANY_ROWS lalu

kode penanganan kesalahan saat terlalu banyak catatan ditemukan

akhir;

Metode kedua ini harus menghasilkan hanya satu baris tanpa memuntahkan kesalahan 'ORA-01422: pengambilan tepat mengembalikan lebih dari jumlah kesalahan baris yang diminta' dan karena itu kesalahan ORA-06512 yang asli.

Anda juga dapat mengubah kueri sehingga hanya mengembalikan baris pertama dari jawaban beberapa baris. Ini mungkin berhasil jika Anda tidak memiliki kontrol penuh atas database atau tidak ingin mengacaukan banyak hal tetapi masih perlu jawaban.

menyatakan

kursor c1 untuk select * from t where…

mulai

buka c1;

ambil c1 menjadi ..

if (c1% notfound) lalu

penanganan kesalahan tanpa catatan yang ditemukan

berakhir jika;

tutup c1;

akhir;

(Jika Anda tahu SQL, Anda mungkin sedikit bingung dengan baris perintah ini … Oracle tidak menggunakan Transact-SQL melainkan ekstensi bahasa prosedural sendiri dari SQL, PL / SQL. Sementara mirip dengan Transact-SQL, PL / SQL tidak banyak hal pintar dan merupakan alat yang sangat kuat dalam dirinya sendiri. Anda mungkin menemukan FAQ PL / SQL ini berguna ketika mencoba mempelajari tentang Oracle.)

Jadi pelajaran dasar di sini adalah dari kesalahan ORA-06512, dengan sendirinya, bukanlah sesuatu yang dapat Anda perbaiki secara langsung. Alih-alih, Anda harus mencari tahu apa kesalahan sebenarnya, yang akan diberitahukan kode kesalahan lain kepada Anda, dan kemudian mengatasi kesalahan itu satu per satu.

Apakah Anda punya kiat atau trik Oracle untuk dibagikan? Beri tahu kami tentang mereka di komentar!

Cara memperbaiki kesalahan ora-06512 di oracle db