Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-20001 di R12 Kumpulkan statistik skema pada 11g(FND_HISTOGRAM_COLS)

Program “Gather Schema Statistics” melaporkan kesalahan berikut dalam file log permintaan:

Error #1: ERROR: While GATHER_TABLE_STATS:
object_name=GL.JE_BE_LINE_TYPE_MAP***ORA-20001: invalid column name or duplicate columns/column groups/expressions in method_opt***
Error #2: ERROR: While GATHER_TABLE_STATS:
object_name=GL.JE_BE_LOGS***ORA-20001: invalid column name or duplicate columns/column groups/expressions in method_opt***
Error #3: ERROR: While GATHER_TABLE_STATS:
object_name=GL.JE_BE_VAT_REP_RULES***ORA-20001: invalid column name or duplicate columns/column groups/expressions in method_opt***

Error #4: ERROR: While GATHER_TABLE_STATS: object_name=FII.FII_FIN_ITEM_HIERARCHIES***ORA-20001: invalid column name or duplicate columns/column groups/expressions in method_opt***

Ini terjadi jika ada kolom duplikat atau tidak valid di FND_HISTOGRAMS_COL

(1) Ada baris duplikat pada tabel FND_HISTOGRAM_COLS untuk tabel JE_BE_LINE_TYPE_MAP. Karena masalah ini, FND_STATS mencoba mengumpulkan informasi histogram menggunakan perintah yang salah dan gagal dengan kesalahan ORA-20001.

SQL berikut harus mengembalikan satu baris, bukan dua:

SQL>select column_name, nvl(hsize,254) hsize
from FND_HISTOGRAM_COLS
where table_name = 'JE_BE_LINE_TYPE_MAP'
order by column_name;

COLUMN_NAME HSIZE
------------------------------ ----------
SOURCE 254
SOURCE 254

Karena ada dua baris dalam tabel histogram, FND_STATS membuat perintah berikut untuk mengumpulkan statistik pada tabel ‘JE_BE_LINE_TYPE_MAP’ :

dbms_Stats.gather_table_stats(OWNNAME => 'GL', TABNAME
=>'JE_BE_LINE_TYPE_MAP',METHOD_OPT=>'FOR ALL COLUMNS SIZE 1 FOR COLUMNS SOURCE SIZE 254 FOR
COLUMNS SOURCE SIZE 254');

Perintah di atas akan bekerja pada database 9i dan 10G tetapi akan gagal dengan kesalahan ora-20001 pada 11G.

(2) Kolom tidak ada di tabel tetapi masih tercantum di tabel FND_HISTOGRAMS_COL.

Anda dapat menggunakan SQL berikut untuk mengidentifikasi. SQL akan meminta nama tabel, gunakan nama tabel dari kesalahan. Dalam contoh di atas, Anda dapat menggunakan FII_FIN_ITEM_HIERARCHIES.

select hc.table_name, hc.column_name
from FND_HISTOGRAM_COLS hc , dba_tab_columns tc
where hc.table_name ='&TABLE_NAME'
and hc.table_name= tc.table_name (+)
and hc.column_name = tc.column_name (+)
and tc.column_name is null;

Cari tahu semua duplikat dan/atau baris usang di FND_HISTOGRAM_COLS dan hapus salah satunya. Ingatlah untuk membuat cadangan tabel FND_HISTOGRAM_COLS sebelum menghapus data apa pun.
— mengidentifikasi baris duplikat

select table_name, column_name, count(*)
from FND_HISTOGRAM_COLS
group by table_name, column_name
having count(*) > 1;

— Gunakan hasil di atas pada SQL berikut untuk menghapus duplikat

delete from FND_HISTOGRAM_COLS
where table_name = '&TABLE_NAME'
and column_name = '&COLUMN_NAME'
and rownum=1;

— Gunakan SQL berikut untuk menghapus baris usang

delete from FND_HISTOGRAM_COLS
where (table_name, column_name) in
(
select hc.table_name, hc.column_name
from FND_HISTOGRAM_COLS hc , dba_tab_columns tc
where hc.table_name ='&TABLE_NAME'
and hc.table_name= tc.table_name (+)
and hc.column_name = tc.column_name (+)
and tc.column_name is null
);

Juga Dibaca
ORA-00900 :Pernyataan Sql tidak valid
ORA-03113
ora-29283:operasi file tidak valid
ORA-29285:kesalahan penulisan file
ORA-00054


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memanggil fungsi Oracle atau prosedur tersimpan menggunakan kerangka kerja persistensi pegas?

  2. Jalankan Oracle Client dalam mode 32-bit pada mesin 64-bit

  3. INSTR() Fungsi di Oracle

  4. Kembalikan baris dengan nilai maksimal satu kolom per grup

  5. Oracle Trigger ORA-04098:pemicu tidak valid dan validasi ulang gagal