[20240826]奇怪ORA-01031 insufficient privileges報錯.txt

来源:https://www.cnblogs.com/lfree/p/18391454
-Advertisement-
Play Games

寫在前面 今天來繼續學習 Redis。 Redis 持久化機制 快照 (Snapshot) 特點 快照持久化可以將某一時刻的所有數據寫入硬碟,預設開啟,保存為 .rdb 文件,也稱為 RDB 持久化。 快照生成方式 客戶端方式 BGSAVE 使用 BGSAVE 命令創建快照,Redis 會創建一個子 ...


[20240826]奇怪ORA-01031 insufficient privileges報錯.txt

--//遇到的奇怪ORA-01031 insufficient privileges情況,做一個分析:

1.環境:
SYS@book01p> @ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

2.測試:
SYS@book01p> select count(1) from hist_head$ ;
  COUNT(1)
----------
     50435
--//沒有任何問題.

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;

      OBJ#       COL# BUCKET_CNT    ROW_CNT  CACHE_CNT
---------- ---------- ---------- ---------- ----------
     10040          3          0          0          0

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存在問題.

SYS@book01p> select DENSITY,INTCOL#,SPARE1,SPARE2,AVGCLN,SPARE3,SPARE4,MINIMUM_ENC,MAXIMUM_ENC from hist_head$ where rownum=1
  2  @ pr
==============================
DENSITY                       : 0
INTCOL#                       : 3
SPARE1                        : 0
SPARE2                        : 2
AVGCLN                        : 0
SPARE3                        :
SPARE4                        :
MINIMUM_ENC                   :
MAXIMUM_ENC                   :
PL/SQL procedure successfully completed.

--//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,表示怎麼意思。

SCOTT@book01p> create table t1( MINIMUM number);
Table created.

SCOTT@book01p> select * from t1;
no rows selected

SCOTT@book01p> insert into t1 values (1);
1 row created.

SCOTT@book01p> commit ;
Commit complete.

SCOTT@book01p> select * from t1;
MINIMUM
----------
1
--//建表也沒有問題啊.

select
OBJ#
,COL#
,BUCKET_CNT
,ROW_CNT
,CACHE_CNT
,NULL_CNT
,TIMESTAMP#
,SAMPLE_SIZE
--,MINIMUM
--,MAXIMUM
,DISTCNT
--,LOWVAL
--,HIVAL
,DENSITY
,INTCOL#
,SPARE1
,SPARE2
,AVGCLN
,SPARE3
,SPARE4
,MINIMUM_ENC
,MAXIMUM_ENC
from hist_head$ ;
--//測試確實只要不包括這4個欄位,查詢不存在問題.
--//難道21c做了一些限制,一些欄位不可以查詢嗎?

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                          -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-

--//查到這裡,無法知道為什麼,那位知道.

SYS@book01p> analyze table hist_head$ validate structure cascade;
Table analyzed.

3.通過轉儲看看:

SYS@book01p> select rowid from hist_head$ where rownum=1;
ROWID
------------------
AAAABEAABAAAEw6AAZ

SYS@book01p> @ rowid AAAABEAABAAAEw6AAZ
      OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
------------ ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
          68          1      19514         25   0x404C3A           1,19514              alter system dump datafile 1 block 19514
                                                                                         ;

SYS@book01p> alter system dump datafile 9 block 19514;
System altered.
--//絕對文件號是9.
SYS@book> select file#,rfile#,name from v$datafile;
     FILE#     RFILE# NAME
---------- ---------- --------------------------------------------------
         1          1 /u01/oradata/BOOK/system01.dbf
         3          3 /u01/oradata/BOOK/sysaux01.dbf
         4          4 /u01/oradata/BOOK/undotbs01.dbf
         5          1 /u01/oradata/BOOK/pdbseed/system01.dbf
         6          4 /u01/oradata/BOOK/pdbseed/sysaux01.dbf
         7          7 /u01/oradata/BOOK/users01.dbf
         8          9 /u01/oradata/BOOK/pdbseed/undotbs01.dbf
         9          1 /u01/oradata/BOOK/book01p/system01.dbf
        10          4 /u01/oradata/BOOK/book01p/sysaux01.dbf
        11          9 /u01/oradata/BOOK/book01p/undotbs01.dbf
        12         12 /u01/oradata/BOOK/book01p/users01.dbf
11 rows selected.

                                                                                        
block_row_dump:
tab 0, row 0, @0x1f66
tl: 58 fb: --H-FL-- lb: 0x2  cc: 18
col  0: [ 2]  c1 05
col  1: [ 2]  c1 2b
col  2: [ 2]  c1 02
col  3: [ 1]  80
col  4: [ 1]  80
col  5: [ 3]  c2 17 5f
col  6: [ 7]  78 7c 08 18 10 05 38
col  7: [ 3]  c2 02 02
col  8: [ 1]  80
col  9: [ 1]  80
col 10: [ 2]  c1 02
col 11: [ 1]  80
col 12: [ 1]  80
col 13: [ 2]  c1 02
col 14: [ 2]  c1 2b
col 15: [ 2]  c1 02
col 16: [ 2]  c1 03
col 17: [ 2]  c1 03
--//看不出任何問題。總之就是不能select * 。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • STM32 與 linux 雙向串口通信實驗 本文記錄STM32 與 linux 雙向串口通信,包含stm32發送、Linux阻塞式接收;Linux發送,STM32阻塞式接收;本實驗的目的在於調通數據鏈路,為之後使用奠定基礎。 實驗平臺為: STM32方面用的是STM32H723ZGT6為核心的開發 ...
  • Linux 腳本文件 shebang (!#) 行最大為何只有 128 位元組?為何最多只能指定一個參數?如何將這些參數排列在參數列表前面?本文通過閱讀 Linux 內核源碼,一一為你揭秘 ...
  • 前言 將一個處於睡眠狀態或者新創建的進程加入就緒隊列時會產生喚醒搶占檢查,被喚醒的任務一般期望能夠立刻執行,發生搶占能夠滿足被喚醒任務的實時性需求。CFS調度器的喚醒搶占能否成功會受到sysctl_sched_wakeup_granularity的影響,該參數能控制喚醒搶占發生的概率。頻繁的搶占有可 ...
  • FFmpeg是一個開源的多媒體框架,它可以處理各種音頻和視頻格式的轉換、解碼、編碼和流處理。它提供了一套豐富的庫和工具,廣泛應用於視頻點播、直播、多媒體處理、游戲開發等領域。 FFmpeg的主要組件包括: libavformat - 用於音頻和視頻的多媒體容器的多路復用和解復用。支持多種格式,如MP ...
  • 寫在前面 今天繼續學習redis後面的知識。 Redis 哨兵機制 哨兵 Sentinel 機制 Sentinel(哨兵)是 Redis 的高可用性解決方案。由一個或多個 Sentinel 實例組成的 Sentinel 系統可以監視任意多個主伺服器,以及這些主伺服器屬下的所有從伺服器。當被監視的主服 ...
  • 我們欣喜地宣佈,Apache SeaTunnel 2.3.7 版本現已正式發佈!作為一個廣受歡迎的下一代開源數據集成工具,Apache SeaTunnel 一直致力於為用戶提供更加靈活、高效的數據同步和集成能力。此次版本更新不僅引入瞭如 LLM(大型語言模型)數據轉換支持、增強的 SQL 支持和新連 ...
  • 轉載自神龍大俠 我是用olphinScheduler 3.2.1版本做源代碼編譯部署(部署方式參考我的另外一篇文檔《源代碼編譯,Apache DolphinScheduler前後端分離部署解決方案》) 二進位文件部署本文也適用,只需要修改相對應的配置即可。 資源管理底層基座替換成hdfs Flink ...
  • 在ByteHouse的支持下,目前該公司在銷售數據的非ACL查詢和ACL查詢兩個方向上,都實現了查詢效率的顯著提升。以ACL查詢的60M廣告客戶DI場景為例,查詢效率已經從從優化前的16秒大幅縮短至如今的1秒,效率提升高達16倍。 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...