Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ORA-20001 trong R12 Thu thập thống kê giản đồ về 11g (FND_HISTOGRAM_COLS)

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ĐẶT SQLBLANKLINES:Cách Cho phép Dòng trống trong SQLcl &SQL * Plus

  2. Đọc clob từng dòng với pl \ sql

  3. Không thể chuyển giá trị chuỗi 1,2 làm đầu vào cho một truy vấn tiên tri

  4. Làm cách nào để thực hiện CHỌN DISTINCT trên tất cả các trường ngoại trừ BLOB?

  5. Сtạo máy ảo với hộp ảo Oracle VM