SYS@book01p> select * from hist_head$ ;
select * from hist_head$
*
ERROR at line 1:
ORA-01031: insufficient privileges
--//换成*报错,感觉是否表出了问题,由于前面通过索引就可以完成实行计划.
SYS@book01p> select /*+ full(hist_head$) */ count(1) from hist_head$ ;
COUNT(1)
----------
50435
SYS@book01p> select /*+ index(hist_head$) */ * from hist_head$ where rownum=1;
select /*+ index(hist_head$) */ * from hist_head$ where rownum=1
*
ERROR at line 1:
ORA-01031: insufficient privileges
--//仔细看*位置实行hist_head$,仔细看拼写也没有错误啊.
SYS@book01p> @ desc hist_head$
Name Null? Type
------------------------------- -------- ----------------------------
1 OBJ# NOT NULL NUMBER
2 COL# NOT NULL NUMBER
3 BUCKET_CNT NOT NULL NUMBER
4 ROW_CNT NOT NULL NUMBER
5 CACHE_CNT NUMBER
6 NULL_CNT NUMBER
7 TIMESTAMP# DATE
8 SAMPLE_SIZE NUMBER
9 MINIMUM NUMBER
10 MAXIMUM NUMBER
11 DISTCNT NUMBER
12 LOWVAL RAW(1000)
13 HIVAL RAW(1000)
14 DENSITY NUMBER
15 INTCOL# NOT NULL NUMBER
16 SPARE1 NUMBER
17 SPARE2 NUMBER
18 AVGCLN NUMBER
19 SPARE3 NUMBER
20 SPARE4 NUMBER
21 MINIMUM_ENC RAW(1000)
22 MAXIMUM_ENC RAW(1000)
--//有4个raw范例.难道是不能访问raw范例吗?
SYS@book01p> select DENSITY,AVGCLN from hist_head$ where rownum=1;
DENSITY AVGCLN
---------- ----------
0 0
--//这样看视乎是里面某个访问某个字段时报错.5个5个一组尝试.
SYS@book01p> select OBJ#,COL#,BUCKET_CNT,ROW_CNT,CACHE_CNT from hist_head$ where rownum=1;
SYS@book01p> select TIMESTAMP#,SAMPLE_SIZE,MINIMUM,MAXIMUM,DISTCNT from hist_head$ where rownum=1;
select TIMESTAMP#,SAMPLE_SIZE,MINIMUM,MAXIMUM,DISTCNT from hist_head$ where rownum=1
*
ERROR at line 1:
ORA-01031: insufficient privileges
--//分开尝试发现
SYS@book01p> select MINIMUM from hist_head$ where rownum=1;
select MINIMUM from hist_head$ where rownum=1
*
ERROR at line 1:
ORA-01031: insufficient privileges
SYS@book01p> select MAXIMUM from hist_head$ where rownum=1;
select MAXIMUM from hist_head$ where rownum=1
*
ERROR at line 1:
ORA-01031: insufficient privileges
--//发现MINIMUM,MAXIMUM存在问题.
SYS@book01p> select LOWVAL from hist_head$ where rownum=1;
select LOWVAL from hist_head$ where rownum=1
*
ERROR at line 1:
ORA-01031: insufficient privileges
SYS@book01p> select HIVAL from hist_head$ where rownum=1;
select HIVAL from hist_head$ where rownum=1
*
ERROR at line 1:
ORA-01031: insufficient privileges
--//发现LOWVAL,HIVAL存在问题.
--//MINIMUM_ENC,MAXIMUM_ENC也是raw范例,没有报错。
SYS@book01p> select DENSITY,INTCOL#,SPARE1,SPARE2,AVGCLN,SPARE3,SPARE4,MINIMUM_ENC,MAXIMUM_ENC from hist_head$ where rownum=1 and MINIMUM_ENC is not null
2 @pr
PL/SQL procedure successfully completed.
SYS@book01p> select DENSITY,INTCOL#,SPARE1,SPARE2,AVGCLN,SPARE3,SPARE4,MINIMUM_ENC,MAXIMUM_ENC from hist_head$ where rownum=1 and MAXIMUM_ENC is not null
2 @pr
PL/SQL procedure successfully completed.
--//MINIMUM_ENC,MAXIMUM_ENC全部都是null.
SYS@book01p> select * from v$reserved_words where KEYWORD in ('MINIMUM','MAXIMUM','LOWVAL','HIVAL')
2 @pr
==============================
KEYWORD : MINIMUM
LENGTH : 7
RESERVED : N
RES_TYPE : N
RES_ATTR : N
RES_SEMI : N
DUPLICATE : N
CON_ID : 0
PL/SQL procedure successfully completed.
--//就1个MINIMUM是保存字.RES*字段的值都是N,表示怎么意思。
Select PRIVILEGE, GRANTEE, GRANTABLE, GRANTOR, NULL COLUMN_NAME
from sys.dba_tab_privs
where table_name = 'HIST_HEAD$'
and owner='SYS'
UNION ALL
Select PRIVILEGE, GRANTEE, GRANTABLE, GRANTOR, COLUMN_NAME
from sys.dba_col_privs
where table_name = 'HIST_HEAD$'
and owner='SYS'
order by grantee;
--//没有输出.
SELECT o.object_name, o.object_type,
NVL(d.alt, '-/-') alt,
NVL(d.aud, '-/-') aud,
NVL(d.com, '-/-') com,
NVL(d.del, '-/-') del,
NVL(d.gra, '-/-') gra,
NVL(d.ind, '-/-') ind,
NVL(d.ins, '-/-') ins,
NVL(d.loc, '-/-') loc,
NVL(d.ren, '-/-') ren,
NVL(d.sel, '-/-') sel,
NVL(d.upd, '-/-') upd,
--NVL(d.REF, '-/-') REF,
NVL(d.exe, '-/-') exe,
NVL(d.cre, '-/-') cre,
NVL(d.rea, '-/-') rea,
NVL(d.wri, '-/-') wri,
NVL(d.fbk, '-/-') fbk
FROM sys.USER_OBJ_AUDIT_OPTS d, sys.USER_OBJECTS o
WHERE d.object_name(+) = o.object_name
and d.object_type(+) = decode(o.object_type, 'MATERIALIZED VIEW', 'TABLE', 'PACKAGE', 'PROCEDURE', 'FUNCTION', 'PROCEDURE', 'LIBRARY', 'PROCEDURE', O.OBJECT_TYPE)
and (d.aud is null or (d.aud chr(0) || '/' || chr(0)))
and o.object_type = 'TABLE'
and o.object_name ='HIST_HEAD$';
OBJECT_NAME OBJECT_TYPE ALT AUD COM DEL GRA IND INS LOC REN SEL UPD EXE CRE REA WRI FBK
------------------------------ ------------------------------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
HIST_HEAD$ TABLE -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/-