Chương trình “Thu thập thống kê lược đồ” đã báo cáo các lỗi sau trong tệp nhật ký yêu cầu:
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***
Điều này xảy ra nếu có các cột trùng lặp hoặc không hợp lệ trong FND_HISTOGRAMS_COL
(1) Có các hàng trùng lặp trên bảng FND_HISTOGRAM_COLS cho bảng JE_BE_LINE_TYPE_MAP. Do sự cố này, FND_STATS cố gắng thu thập thông tin biểu đồ bằng cách sử dụng sai lệnh và nó không thành công với lỗi ORA-20001.
SQL sau phải trả về một hàng, không phải hai:
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
Vì có hai hàng trong bảng biểu đồ, FND_STATS tạo lệnh sau để thu thập thống kê trên bảng ‘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');
Lệnh trên sẽ hoạt động trên cơ sở dữ liệu 9i và 10G nhưng nó sẽ không thành công với lỗi ora-20001 trên 11G.
(2) Cột không tồn tại trên bảng nhưng vẫn được liệt kê trong bảng FND_HISTOGRAMS_COL.
Bạn có thể sử dụng SQL sau để xác định. SQL sẽ nhắc tên bảng, sử dụng tên bảng từ các lỗi. Trong các ví dụ trên, bạn có thể sử dụng 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;
Tìm tất cả các hàng trùng lặp và / hoặc lỗi thời trong FND_HISTOGRAM_COLS và xóa một trong số chúng. Hãy nhớ sao lưu bảng FND_HISTOGRAM_COLS trước khi xóa bất kỳ dữ liệu nào.
- xác định các hàng trùng lặp
select table_name, column_name, count(*) from FND_HISTOGRAM_COLS group by table_name, column_name having count(*) > 1;
- Sử dụng các kết quả trên trên SQL sau để xóa các bản sao
delete from FND_HISTOGRAM_COLS where table_name = '&TABLE_NAME' and column_name = '&COLUMN_NAME' and rownum=1;
- Sử dụng SQL sau để xóa các hàng bị che khuất
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 );
Cũng đã đọc
ORA-00900:Câu lệnh Sql không hợp lệ
ORA-03113
hoặc-29283:thao tác tệp không hợp lệ
ORA-29285:lỗi ghi tệp
ORA-00054