Tujuan

Anda akan menjadi akrab dengan:

  • Beberapa kesalahan dan resolusi khas mereka
  • Common logis kelemahan pengguna SQL
  • Cara untuk mencegah kemunduran sehari-hari disebabkan oleh kesalahan

Pengenalan

Hari ini Anda akan melihat berbagai kesalahan umum bahwa setiap orang – dari pemula sampai pro – membuat saat menggunakan SQL. Anda tidak akan pernah bisa menghindari semua kesalahan dan / atau kesalahan, tapi menjadi akrab dengan berbagai kesalahan akan membantu Anda mengatasinya dalam waktu sesingkat mungkin.

CATATAN: Toturial ini menggunakan Oracle7 untuk contoh. Implementasi tertentu Anda akan sangat mirip dalam jenis kesalahan, tetapi mungkin berbeda dalam penomoran atau penamaan kesalahan. Kami berlari pernyataan SQL kita menggunakan SQL * PLUS dan mengatur ECHO dan KOMENTAR untuk terus untuk melihat pernyataan itu.

Diketahui bahwa beberapa kesalahan benar-benar akan menghasilkan pesan kesalahan, sementara orang lain mungkin hanya ketidakmampuan dalam logika yang mau tidak mau akan menyebabkan signifikan lebih banyak error atau masalah di jalan. Dengan arti sempit perhatian terhadap detail, Anda dapat menghindari masalah yang paling, meskipun Anda akan selalu menemukan diri terhuyung-huyung di atas kesalahan.

Kesalahan umum

Bagian ini menjelaskan banyak kesalahan umum bahwa Anda akan menerima sementara melaksanakan semua jenis laporan SQL. Sebagian besar sederhana dan membuat Anda ingin menendang diri Anda pada sisi belakang, tampak jelas kesalahan lainnya sedangkan yang menyesatkan.

Tabel atau Lihat Tiada

Ketika Anda menerima kesalahan yang menyatakan bahwa meja yang Anda coba akses tidak eksis, tampak jelas, misalnya:

INPUT:
SQL> @tables.sql
OUTPUT:
SQL> spool tables.lst
SQL> set echo on
SQL> set feedback on
SQL> set pagesize 1000
SQL> select owner|| '.' || table_name
   2  from sys.dba_table
   3  where owner = 'SYSTEM'
   4  order by table_name
   5  /
       from sys.dba_table
      *
ERROR at line 2:
ORA-00942: table or view does not exist
 SQL> spool off
 SQL>

ANALISIS:

Perhatikan asterisk di bawah tabel kata. Nama tabel yang benar adalah sys.dba_tables. S Sebuah dihilangkan dari nama tabel.

Tetapi bagaimana jika Anda tahu meja ada dan Anda masih menerima kesalahan ini? Kadang-kadang bila Anda menerima kesalahan ini, meja sebenarnya tidak ada, tetapi mungkin ada masalah keamanan – yang adalah, meja ada, tapi Anda tidak memiliki akses ke sana. Kesalahan ini juga dapat database server jalan mengatakan bagus, “Anda tidak memiliki izin untuk mengakses tabel ini!”

TIP: Sebelum Anda memungkinkan untuk mengatur dalam panik, segera memverifikasi apakah atau tidak meja ada menggunakan account DBA, jika tersedia, atau account skema. Anda akan sering menemukan bahwa meja tidak ada dan bahwa pengguna tidak memiliki hak istimewa yang sesuai untuk mengaksesnya.
Username atau Password tidak valid

INPUT:
  SQL * Plus: Release 3.2.3.0.0 - pada Sabtu 10 Mei 11:15:35 1997 
  Copyright (c) 1979 Oracle Corporation, 1994.  All rights reserved. 
  Masukkan nama pengguna: rplew 
  Masukkan sandi:
OUTPUT:
  ERROR: ORA-01017: invalid username / password; logon ditolak 
  Masukkan nama pengguna: 

Kesalahan ini disebabkan baik oleh salah memasukkan username atau password salah. Coba lagi. Jika tidak berhasil, telah mereset password Anda. Jika Anda yakin bahwa Anda mengetikkan username dan password yang benar, maka pastikan bahwa Anda mencoba untuk menyambung ke database yang benar jika Anda memiliki akses ke lebih dari satu database.

Dari Kata Kunci Tidak Tertentu

INPUT:
  SQL> @ tblspc.sql
OUTPUT:
  SQL> spool tblspc.lst 
  SQL mengatur> echo pada 
  SQL> set umpan balik pada 
  SQL> set PageSize 1000 
  SQL> pilih substr (tablespace_name, 1,15) suatu, 
    2 substrfile_name, 1,45) c, byte 
    3 dari sys.dba_data_files 
    4 order by tablespace_name; 
       substrfile_name, 1,45) c, byte 
       * 
  ERROR pada baris 2: 
  ORA-00923: FROM kata kunci tidak ditemukan di mana diharapkan 
  SQL> spool off 
  SQL>

ANALISIS:

Error ini bisa menyesatkan. DARI kata kunci tersebut ada, tapi Anda kehilangan kurung kiri antara substr dan FILE_NAME on line 2. Kesalahan ini juga dapat disebabkan oleh koma hilang di antara nama kolom dalam pernyataan SELECT. Jika kolom dalam laporan SELECT tidak diikuti dengan koma, prosesor query secara otomatis mencari kata kunci DARI. Pernyataan sebelumnya telah dikoreksi sebagai berikut:

SQL> pilih substr (tablespace_name, 1,15) suatu, 
    2 substr (FILE_NAME, 1,45) c, byte 
    3 dari sys.dba_data_files 
    4 order by tablespace_name;

Grup Fungsi Tidak Boleh Disini

INPUT:
  SQL> menghitung pilih (last_name), first_name, phone_number 
    2 dari employee_tbl 
    3 kelompok oleh count (last_name), first_name, phone_number 
    4 /
OUTPUT:
  kelompok dengan count (last_name), first_name, phone_number 
             * 
  ERROR pada baris 3: 
  ORA-00934: fungsi kelompok tidak diperkenankan di sini 
  SQL>
ANALISIS:

Berikut sintaks tidak benar. Kesalahan ini terjadi ketika Anda menghilangkan kata wajib dengan sintaks perintah yang diberikan. Jika Anda menggunakan bagian yang opsional perintah, opsi yang mungkin memerlukan kata kunci tertentu. Kata kunci hilang dalam contoh ini adalah sebagai. Pernyataan tersebut akan terlihat seperti ini:

  SQL> emp_view membuat tampilan sebagai 
    2 pilih * dari employee_tbl 
    3 / 

Hilang Waktu kurung

INPUT:
  SQL> @ insert.sql
OUTPUT:
  SQL> insert ke nilai-nilai people_tbl 
    2 '303785523 ',' SMITH ', "JOHN', 'Jay', 'PRIA', '10-JAN-50 ') 
    3 / 
       '303785523 ',' SMITH ',' JOHN ',' Jay ',' PRIA ', '10-JAN-50') 
       * 
    ERROR pada baris 2: 
    ORA-00906: kurung kiri hilang 
  SQL> 
ANALISIS:

Pada baris 2 kurung tidak muncul sebelum nomor Jaminan Sosial. Sintaks yang benar akan terlihat seperti ini:

 SQL> insert ke nilai-nilai people_tbl 2 ('303785523 ',' SMITH ',' JOHN ',' Jay ',' PRIA ', '10-JAN-50') 3 /

Hilang parenthesis kanan

INPUT:
  SQL> @ tblspc.sql
OUTPUT:
  SQL> spool tblspc.lst 
  SQL mengatur> echo pada 
  SQL> set umpan balik pada 
  SQL> set PageSize 1000 
  SQL> pilih substr (tablespace_name, 1,15 a, 
    2 substr (FILE_NAME, 1,45) c, byte 
    3 dari sys.dba_data_files 
    4 order by tablespace_name; 
       pilih substr (tablespace_name, 1,15 a, 
                       * 
  ERROR pada baris 1: 
  ORA-00907: parenthesis kanan hilang 
  SQL> spool off 
  SQL> 
ANALISIS:

Di baris 1 tanda kurung yang benar hilang dari substr tersebut. Sintaks yang benar terlihat seperti ini:

  SQL> pilih substr (tablespace_name, 1,15) suatu, 
      2 substr (FILE_NAME, 1,45) c, byte 
      3 dari sys.dba_data_files 
      4 order by tablespace_name; 

Hilang Koma

INPUT:
  SQL> @ ezinsert.sql
OUTPUT:
 SQL> spool ezinsert.lst SQL> set echo on SQL> set memasukkan umpan balik pada> SQL kedalam nilai office_tbl 2 ('303785523 '' SMITH ',' KANTOR DARI NEGARA INDIANA, Ajudan Jenderal ') 3 / ('303785523' ' SMITH ',' KANTOR DARI NEGARA INDIANA, ') * Ajudan Jenderal ERROR pada baris 2: ORA-00917: SQL hilang koma> spool off SQL>
ANALISIS:

On line 2 koma yang hilang antara nomor Jaminan Sosial dan SMITH.

Kolom ambigu Ditetapkan

INPUT:
  SQL> @ employee_tbl
OUTPUT:
  SQL> spool employee.lst 
  SQL mengatur> echo pada 
  SQL> set umpan balik pada 
  SQL> p.ssn pilih, nama, e.address, e.phone 
    2 dari employee_tbl e, 
    3 payroll_tbl p 
    4 mana e.ssn = p.ssn; 
       pilih p.ssn, nama, e.address, e.phone 
                 * 
  ERROR pada baris 1: 
  ORA-00918: Kolom ambigously didefinisikan 
  SQL> spool off 
  SQL> 
ANALISIS:

Di baris 1 kolom nama belum ditetapkan. Tabel telah diberi alias e dan p. Tentukan tabel untuk menarik nama dari dan menentukan dengan meja alias.

Perintah SQL Tidak Benar Berakhir

INPUT:
  SQL> emp_tbl membuat tampilan sebagai 
    2 pilih * dari employee_tbl 
    3 order by nama 
    4 /
OUTPUT:
  pesanan dengan nama 
       * 
  ERROR pada baris 3: 
  ORA-00933: Perintah SQL tidak benar berakhir 
  SQL> 
ANALISIS:

Mengapa perintah tidak benar berakhir? Anda tahu bahwa Anda dapat menggunakan / untuk mengakhiri pernyataan SQL. fooler lain. Sebuah klausa ORDER BY tidak dapat digunakan dalam pernyataan CREATE VIEW. Menggunakan GROUP BY sebagai gantinya. Berikut prosesor query adalah mencari terminator (koma atau garis miring) sebelum klausa ORDER BY karena prosesor ORDER BY menganggap bukan bagian dari pernyataan CREATE VIEW. Karena terminator tidak ditemukan sebelum BY ORDER, kesalahan ini dikembalikan bukan kesalahan menunjuk ke BY ORDER.

Ekspresi Hilang

INPUT:
  SQL> @ tables.sql
OUTPUT:
  SQL> spool tables.lst 
  SQL mengatur> echo pada 
  SQL> set umpan balik pada 
  SQL> set PageSize 1000 
  SQL> pilih pemilik | | '. "  | | Tabel, 
    2 dari sys.dba_tables 
    3 di mana owner = 'SYSTEM' 
    4 order by table_name 
    5 / 
       dari sys.dba_tables 
      * 
  ERROR pada baris 2: 
  ORA-00936: ekspresi hilang 
  SQL> spool off 
  SQL> 
ANALISIS:

Perhatikan tabel koma setelah pada baris pertama, sehingga prosesor query adalah mencari kolom lain di klausa SELECT. Pada titik ini, prosesor tidak mengharapkan klausa FROM.

Argumen Tidak Cukup untuk Fungsi

INPUT:
  SQL> @ tblspc.sql
OUTPUT:
  SQL> spool tblspc.lst 
  SQL mengatur> echo pada 
  SQL> set umpan balik pada 
  SQL> set PageSize 1000 
  SQL> pilih substr (tablespace_name, 1,15) suatu, 
    2 decode (substr (FILE_NAME, 1,45)) c, byte 
    3 dari sys.dba_data_files 
    4 order by tablespace_name; 
       decode (substr (FILE_NAME, 1,45)) c, byte 
            * 
  ERROR pada baris 2: 
  ORA-00938: tidak cukup argumen untuk fungsi 
  SQL> spool off 
  SQL> 
ANALISIS:

Tidak ada cukup argumen untuk fungsi deCODE. Periksa pelaksanaan Anda untuk sintaks yang tepat.

Tidak Cukup Nilai

INPUT:
  SQL> @ ezinsert.sql
OUTPUT:
  SQL> spool ezinsert.lst 
  SQL mengatur> echo pada 
  SQL> set umpan balik pada 
  SQL> insert ke nilai-nilai employee_tbl 
    2 ('303785523 ',' SMITH ',' JOHN ',' Jay ',' PRIA ') 
    3 / 
       masukkan ke dalam nilai-nilai employee_tbl 
               * 
  ERROR pada baris 1: 
  ORA-00947: tidak cukup nilai-nilai 
  SQL> spool off 
  SQL> 
ANALISIS:

Nilai kolom yang hilang. Lakukan perintah DESCRIBE di atas meja untuk menemukan kolom hilang. Anda dapat memasukkan data tertentu hanya jika Anda daftar kolom yang akan dimasukkan ke dalam, seperti ditunjukkan pada contoh berikut:

INPUT:
  SQL> spool ezinsert.lst 
  SQL mengatur> echo pada 
  SQL> set umpan balik pada 
  SQL> masukkan ke employee_tbl (SSN, last_name, first_name, mid_name, jenis kelamin) 
    2 nilai ('303785523 ',' SMITH ',' JOHN ',' Jay ',' PRIA ') 
    3 / 

Kendala Integritas Melanggar – Kunci Induk Tidak Ditemukan

INPUT:
  SQL> insert ke nilai-nilai payroll_tbl 
    2 ('111111111 ',' SMITH ',' JOHN ') 
    3 /
OUTPUT:
  masukkan ke dalam nilai-nilai payroll_tbl 
                      * 
  ERROR pada baris 1: 
  ORA-02291: kendala integritas (employee_cons) melanggar - induk 
  kunci tidak ditemukan 
  SQL> 
ANALISIS:

Kesalahan ini disebabkan dengan mencoba menyisipkan data ke dalam tabel tanpa data yang ada pada tabel induk. Periksa tabel induk untuk data yang benar. Jika hilang, maka Anda harus memasukkan data ke dalam tabel induk sebelum berusaha untuk menyisipkan data ke dalam tabel anak.

Oracle Tidak Tersedia

INPUT:
 ) / Home> sun_su3 (SQLPlus SQL * Plus: Release 3.2.3.0.0 - Produksi pada Sabtu 10 Mei 11:19:50 1997 Hak Cipta (c) 1979 Oracle, Corporation tahun 1994.  All rights reserved. Masukkan nama pengguna: rplew Masukkan sandi:
OUTPUT:
  ERROR: ORA-01034: ORACLE tidak tersedia 
  ORA-07318: smsget: error saat membuka file terbuka sgadef.dbf. 
ANALISIS:

Anda mencoba untuk login ke SQL * PLUS. Database mungkin bawah. Periksa status database. Juga, pastikan bahwa Anda mencoba untuk menyambung ke database yang benar jika Anda memiliki akses ke database multipel.

untuk Kolom Dimasukkan Nilai Terlalu Besar

INPUT:
  SQL> @ ezinsert.sql
OUTPUT:
  SQL> spool ezinsert.lst 
  SQL mengatur> echo pada 
  SQL> set umpan balik pada 
  SQL> insert ke nilai-nilai office_tbl 
    2 ('303785523 ',' SMITH ", 'OFFICE OF NEGARA INDIANA, Ajudan Jenderal') 
    3 / 
       masukkan ke dalam nilai-nilai office_tbl 
               * 
  ERROR pada baris 1: 
  ORA-01401: nilai dimasukkan terlalu besar untuk kolom 
  SQL> spool off 
  SQL> 
ANALISIS:

Salah satu nilai yang dimasukkan terlalu besar untuk kolom. Gunakan perintah DESCRIBE di meja untuk panjang data yang benar. Jika perlu, Anda dapat melakukan perintah ALTER TABLE di atas meja untuk memperluas lebar kolom.

TNS: pendengar Tidak Bisa Putuskan SID Mengingat di Connect Descriptor

INPUT:
  SQLDBA> rplew menghubungkan / xxxx @ database1
OUTPUT:
  ORA-12505: TNS: pendengar tidak dapat menyelesaikan SID diberikan dalam deskripsi menghubungkan 
  SQLDBA> putuskan 
  Terputus. 
  SQLDBA> 
ANALISIS:

Kesalahan ini sangat umum dalam database Oracle. pendengar sebagaimana dimaksud dalam kesalahan sebelumnya adalah proses yang memungkinkan permintaan dari klien untuk berkomunikasi dengan database di server jauh. Di sini Anda mencoba untuk menyambung ke database. Entah nama database yang salah diketik dalam atau pendengar sedang down. Periksa nama database dan coba lagi. Jika tidak berhasil, memberitahu administrator database masalah.

Kurangnya Keistimewaan Selama Hibah

INPUT:
  SQL> grant pilih pada people_tbl untuk ron;
OUTPUT:
  hibah pilih pada people_tbl untuk ron 
                                * 
  ERROR pada baris 1: 
  ORA-01749: Anda mungkin tidak / GRANT hak REVOKE ke / dari diri sendiri 
  SQL>
INPUT:
  SQL> grant pilih pada demo.employee untuk ron;
OUTPUT:
  hibah pilih pada demo.employee untuk ron 
                       * 
  ERROR pada baris 1: 
  ORA-01031: hak istimewa tidak cukup 
  SQL> 

Kesalahan ini terjadi jika Anda mencoba untuk memberikan hak istimewa pada meja pengguna lain dan Anda tidak memiliki hak istimewa yang tepat untuk melakukannya. Anda harus memiliki meja untuk dapat memberikan hak istimewa di atas meja kepada pengguna lain. Dalam Oracle Anda dapat diberikan hak istimewa dengan opsi Admin, yang berarti Anda bisa memberikan hak istimewa yang tercantum pada tabel pengguna lain untuk pengguna lain. Periksa pelaksanaan Anda untuk hak tertentu yang Anda butuhkan untuk memberikan hak istimewa.

Karakter Escape dalam Pernyataan Anda – Karakter tidak valid

Escape karakter sangat frustasi ketika mencoba untuk men-debug sebuah pernyataan SQL rusak. Hal ini dapat terjadi jika Anda menggunakan tombol backspace ketika Anda memasukkan pernyataan SQL Anda dalam buffer atau file. Kadang-kadang tombol backspace menempatkan sebuah karakter tidak valid dalam laporan tergantung pada bagaimana kunci Anda dipetakan, meskipun Anda mungkin tidak dapat melihat karakter.

Can’t Buat File Sistem Operasi

Kesalahan ini memiliki sejumlah penyebab. Yang paling umum penyebab adalah bahwa disk asosiasi tersebut penuh atau tidak benar perizinan telah ditetapkan pada sistem file. Jika disk penuh, Anda harus menghapus file yang tidak diinginkan. Jika izin tidak benar, mengubahnya ke pengaturan yang benar. Kesalahan ini lebih merupakan kesalahan sistem operasi, sehingga Anda mungkin perlu mendapatkan nasihat dari administrator sistem Anda.

Common Kesalahan Logis

Sejauh ini kita telah membahas kesalahan dalam pernyataan SQL yang menghasilkan pesan kesalahan yang sebenarnya. Sebagian besar kesalahan yang sudah jelas, dan resolusi mereka meninggalkan sedikit imajinasi. Kesalahan berikutnya lebih (atau kurang) logis, dan mereka dapat menyebabkan masalah di kemudian – jika tidak segera.

Menggunakan Reserved Kata-kata dalam pernyataan SQL Anda

INPUT:
  SQL> pilih sysdate DATE 
    2 dari dual;
OUTPUT:
  pilih sysdate DATE 
                 * 
  ERROR pada baris 1: 
  ORA-00923: FROM kata kunci tidak ditemukan di mana diharapkan 
ANALISIS:

Dalam contoh ini prosesor query tidak mengharapkan kata DATE karena merupakan kata reserved. Tidak ada koma setelah pseudocolumn yang SYSDATE, sehingga unsur berikutnya yang diharapkan adalah klausa FROM.

INPUT:
  SQL> sysdate pilih "DATE" 
    2 dari dual;
OUTPUT:
  DATE 
  -------- 
  15-MEI-97 
ANALISIS:

Perhatikan bagaimana kata masalah reserved adalah diringankan dengan melampirkan DATE kata dengan tanda kutip ganda. tanda kutip ganda memungkinkan Anda untuk menampilkan string literal DATE sebagai alias kolom.


CATATAN: Pastikan untuk memeriksa dokumentasi database tertentu Anda untuk mendapatkan daftar kata-kata cipta, sebagai kata-kata ini dilindungi undang-undang akan bervariasi antara implementasi yang berbeda.


Anda mungkin atau tidak mungkin harus menggunakan tanda kutip ganda ketika penamaan alias kolom. Pada contoh berikut, Anda tidak perlu menggunakan tanda kutip ganda karena HARI INIbukan kata reserved. Untuk memastikan, periksa pelaksanaan spesifik Anda.

INPUT:
  SQL> sysdate TODAY pilih 
    2 dari dual;
OUTPUT:
  HARI INI 
  -------- 
  15-MEI-97 
  SQL> 

Penggunaan berbeda bila Multiple Memilih Kolom

INPUT:
  SQL> pilih berbeda (kota), berbeda (zip) 
    2 dari address_tbl;
OUTPUT:
 pilih berbeda (kota), berbeda (zip) * ERROR di baris 1: ORA-00936: hilang ekspresi SQL>
ANALISIS:

Sebuah kota dapat memiliki lebih dari satu kode ZIP. Sebagai aturan, Anda harus menggunakan perintah yang berbeda pada hanya satu kolom yang dipilih.

Menjatuhkan suatu Tabel WTP

Setiap kali menghapus tabel, gunakan selalu pemilik atau skema. Anda dapat membuat dua nama tabel dalam database. Jika Anda tidak menggunakan pemilik / skema nama, maka meja salah bisa jatuh.

Sintaks berisiko untuk menghapus tabel:

Sintaks:
  SQL> drop tabel people_tbl; 

Pernyataan selanjutnya adalah jauh lebih aman karena menentukan pemilik tabel yang ingin Anda drop.

Sintaks:
  SQL> drop tabel ron.people_tbl; 

PERINGATAN: Kualifikasi meja ketika menjatuhkannya selalu merupakan praktek yang aman, meskipun kadang-kadang langkah ini mungkin tidak diperlukan. Pernah masalah perintah DROP TABLE tanpa terlebih dahulu memverifikasi user id yang Anda terhubung ke database.


Penggunaan Sinonim Publik dalam Database Multischema

Sinonim membuat hidup lebih mudah bagi pengguna, namun nama-muradif publik tabel terbuka bahwa Anda mungkin tidak ingin semua pengguna untuk melihat. Gunakan hati saat pemberian nama-muradif masyarakat khususnya di lingkungan multischema.

Para Cartesian Produk takut

INPUT:
  SQL> a.ssn pilih, p.last_n 
    2 dari address_tbl sebuah, 
    3 people_tbl p;
OUTPUT:
  SSN LAST_NAME 
  --------- --------------- 
  303785523 SMITH 
  313507927 SMITH 
  490552223 SMITH 
  312667771 SMITH 
  420001690 SMITH 
  303785523 JONES 
  313507927 JONES 
  490552223 JONES 
  312667771 JONES 
  420001690 JONES 
  303785523 Osborn 
  313507927 Osborn 
  490552223 Osborn 
  312667771 Osborn 
  420001690 Osborn 
  303785523 JONES 
  313507927 JONES 
  490552223 JONES 
  312667771 JONES 
  420001690 JONES 

  16 baris yang dipilih. 

Kesalahan ini disebabkan ketika Anda tidak bergabung dengan tabel di klausa WHERE. Perhatikan bagaimana banyak baris yang dipilih. Kedua tabel sebelumnya ada 4 baris, karena itu, kami ingin kembali bukannya 4 baris dari 16 baris yang kami terima. Tanpa menggunakan join pada klausa WHERE, setiap baris dalam tabel pertama adalah cocok dengan setiap baris pada urutan kedua.Untuk menghitung jumlah baris kembali, Anda akan beberapa 4 baris dengan 4 baris, yang menghasilkan 16. Sayangnya, sebagian besar tabel Anda akan berisi lebih dari 4 baris data, dengan beberapa mungkin melebihi ribuan atau jutaan baris. Dalam kasus-kasus ini tidak repot-repot melakukan perkalian tersebut, untuk permintaan Anda yakin untuk menjadi-away query dijalankan.

Kegagalan untuk Menerapkan Standar Input

Menjamin bahwa standar input yang dianut umumnya dikenal sebagai jaminan kualitas (QA). Tanpa pemeriksaan sering pada data yang dimasukkan oleh petugas data entri, Anda menjalankan resiko yang sangat tinggi dari hosting sampah dalam database Anda. Cara yang baik untuk terus menangani jaminan kualitas adalah untuk menciptakan QA beberapa laporan menggunakan SQL, lalu jalankan secara tepat waktu, dan sekarang output mereka kepada manajer entri data untuk tindakan yang tepat untuk memperbaiki kesalahan atau inkonsistensi data.

Kegagalan untuk Menerapkan File Struktur Sistem Konvensi

Anda dapat membuang banyak waktu ketika Anda bekerja dengan sistem file yang tidak standar. Periksa pelaksanaan Anda untuk struktur sistem berkas yang direkomendasikan.

Membiarkan Tabel Besar untuk Ambil Storage Default Parameter

penyimpanan parameter Default akan bervariasi dengan implementasi, tetapi mereka biasanya agak kecil. Ketika sebuah atau dinamis meja besar dibuat dan dipaksa untuk mengambil penyimpanan default, fragmentasi meja serius dapat terjadi, yang bisa sangat menghambat kinerja database. Baik perencanaan sebelum penciptaan tabel akan membantu untuk menghindari ini.Contoh berikut menggunakan pilihan penyimpanan parameter yang Oracle.

INPUT:
  SQL> membuat tabel test_tbl 
    2 (nomor SSN (9) bukan null, 
    3 Nama VARCHAR2 (30) bukan null) 
    4 penyimpanan 
    5 (100M tingkat awal 
    6 tingkat berikutnya 20m 
    7 minextents 1 
    8 maxextents 121 
    9 pctincrease 0); 

Menempatkan Objek pada Sistem Tablespace

Pernyataan berikut menunjukkan meja diciptakan pada tablespace SYSTEM. Meskipun pernyataan ini tidak akan kembali error, kemungkinan untuk menyebabkan masalah di masa depan.

INPUT:
  SQL> membuat tabel test_tbl 
    2 (nomor SSN (9) bukan null, 
    3 Nama VARCHAR2 (30) bukan null) 
    4 tablespace SYSTEM 
    5 penyimpanan 
    6 (100M tingkat awal 
    7 tingkat berikutnya 20m 
    8 minextents 1 
    9 maxextents 121 
    10 pctincrease 0); 

Contoh berikut memperbaiki masalah ini yang disebut:

INPUT:
  SQL> membuat tabel test_tbl 
    2 (nomor SSN (9) bukan null, 
    3 Nama VARCHAR2 (30) bukan null) 
    4 tablespace linda_ts 
    5 (100M tingkat awal 
    6 tingkat berikutnya 20m 
    7 minextents 1 
    8 maxextents 121 
    9 pctincrease 0); 
ANALISIS:

Dalam Oracle, yang tablespace SYSTEM biasanya digunakan untuk menyimpan objek yang dimiliki SISTEM, seperti penyusunan kamus data. Jika Anda kebetulan tempat tabel dinamis dalam tablespace ini dan mereka tumbuh, Anda menjalankan resiko merusak atau setidaknya mengisi ruang kosong, yang pada gilirannya mungkin akan menyebabkan database untuk kecelakaan.Dalam acara ini database mungkin terpaksa menjadi negara dipulihkan. Selalu simpan aplikasi dan tabel pengguna dalam tablespace yang ditunjuk secara terpisah.

Kegagalan untuk Compress File Cadangan Besar

Jika Anda melakukan ekspor yang besar dan tidak memampatkan file, Anda mungkin akan kehabisan ruang disk untuk menyimpan file. Selalu memampatkan file ekspor. Jika Anda menyimpan arsip file log pada hard disk daripada di pita, file-file ini dapat dan mungkin harus dikompresi untuk menghemat ruang.

Kegagalan Sistem Anggaran Resources

Anda harus selalu anggaran sumber daya sistem Anda sebelum Anda membuat database database. Hasil tidak sumber daya sistem penganggaran bisa berkinerja buruk. Anda harus selalu mengetahui apakah database yang akan digunakan untuk transaksi, pergudangan, atau permintaan saja. Fungsi database akan mempengaruhi jumlah dan ukuran segmen rollback. Jumlah pengguna database pasti akan mempengaruhi ukuran dari tablespace USERS dan TEMP. Apakah Anda memiliki cukup ruang untuk garis besar meja Anda? Tabel dan indeks harus disimpan pada perangkat terpisah untuk mengurangi disk contention. Anda harus menjaga Redo log dan tablespace data pada perangkat terpisah untuk meringankan contention disk. Ini hanya beberapa isu-isu untuk mengatasi ketika mempertimbangkan sumber daya sistem.

Mencegah Masalah dengan Data Anda

Pusat pengolahan data Anda harus memiliki sistem cadangan diatur. Jika database Anda kecil dan menengah, Anda dapat mengambil tindakan pencegahan ekstra menggunakan EKSPOR untuk memastikan bahwa data yang didukung. Anda harus membuat cadangan dari ekspor berkas dan menyimpannya di lokasi lain untuk keamanan lebih lanjut. Ingatlah bahwa file-file ini dapat menjadi besar dan akan memerlukan banyak ruang.

Mencari Duplicate Records pada Database Anda

Jika database Anda benar-benar direncanakan, Anda tidak harus memiliki masalah dengan duplikat catatan. Anda dapat menghindari duplikasi data dengan menggunakan kendala, kunci asing, dan indeks yang unik.

Ringkasan

Banyak jenis kesalahan – ratusan – dapat menghalangi Anda dan data Anda. Untungnya, kebanyakan kesalahan / kesalahan tidak bencana dan mudah untuk memperbaiki. Namun, beberapa kesalahan / kesalahan yang terjadi sangat serius. Anda perlu berhati-hati setiap kali Anda mencoba untuk memperbaiki kesalahan / kesalahan, karena kesalahan bisa kalikan jika Anda tidak menggali akar masalah. Ketika Anda melakukan membuat kesalahan, karena Anda pasti akan, menggunakannya sebagai pengalaman pembelajaran.


TIP: Kami lebih memilih untuk mendokumentasikan segala sesuatu yang berkaitan dengan kesalahan database, terutama kesalahan jarang terjadi bahwa kita tersandung atas. Suatu berkas dengan kesalahan adalah sebuah referensi Mengatasi masalah yang tak ternilai.


Sumber ; http://www.webbasedprogramming.com