SQL> create table "BAD NAME2" as select * from "Bad Name";
表已创建。
已用时间:00: 00: 00.04
SQL> begin
2FOR STALE IN (select OWNER,SEGMENT_NAME,1 PERCENT from dba_segments where upper(segment_name) like 'BAD%') LOOP
3DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => STALE.OWNER,
4
TABNAME => case when STALE.SEGMENT_NAME=upper(replace(STALE.SEGMENT_NAME,' '))then STALE.SEGMENT_NAME else '"'||STALE.SEGMENT_NAME||'"' end,
5
ESTIMATE_PERCENT => STALE.PERCENT,
6
METHOD_OPT => 'for all columns size repeat', --坑
7
DEGREE => 1,
8
GRANULARITY => 'ALL',
9
CASCADE => TRUE);
10dbms_output.put_line(case when STALE.SEGMENT_NAME=upper(replace(STALE.SEGMENT_NAME,' '))then STALE.SEGMENT_NAME else '"'||STALE.SEGMENT_NAME||'"' end);
11END LOOP;
12end;
13/
BADGES_EXCHANGE
BADGES
"Bad Name"
"BAD NAME2"
PL/SQL 过程已成功完成。
已用时间:00: 00: 00.72
SQL> SQL> exec dbms_STATS.GATHER_TABLE_STATS('SCOTT','BAD NAME2');
BEGIN dbms_STATS.GATHER_TABLE_STATS('SCOTT','BAD NAME2'); END;
*
第 1 行出现错误:
ORA-20001: BAD NAME2 is an invalid identifier
ORA-06512: 在 "SYS.DBMS_STATS", line 23154
ORA-06512: 在 "SYS.DBMS_STATS", line 23205
ORA-06512: 在 line 1
已用时间:00: 00: 00.01
|