[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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...