Oracle錯(cuò)誤怎么看,oracle報(bào)錯(cuò)大全

oracle數(shù)據(jù)庫(kù)的警告日志如何查看

測(cè)試環(huán)境中出現(xiàn)了一個(gè)異常的告警現(xiàn)象:一條告警通過(guò) Thanos Ruler 的 HTTP 接口觀察到持續(xù)處于 active 狀態(tài),但是從 AlertManager 這邊看這條告警為已解決狀態(tài)。按照 DMP 平臺(tái)的設(shè)計(jì),告警已解決指的是告警上設(shè)置的結(jié)束時(shí)間已經(jīng)過(guò)了當(dāng)前時(shí)間。一條發(fā)送至 AlertManager 的告警為已解決狀態(tài)有三種可能:1. 手動(dòng)解決了告警2. 告警只產(chǎn)生了一次,第二次計(jì)算告警規(guī)則時(shí)會(huì)發(fā)送一個(gè)已解決的告警3. AlertManager 接收到的告警會(huì)帶著一個(gè)自動(dòng)解決時(shí)間,如果還沒(méi)到達(dá)自動(dòng)解決時(shí)間,則將該時(shí)間重置為 24h 后首先,因?yàn)榱私獾綔y(cè)試環(huán)境沒(méi)有手動(dòng)解決過(guò)異常告警,排除第一條;其次,由于該告警持續(xù)處于 active 狀態(tài),所以不會(huì)是因?yàn)楦婢划a(chǎn)生了一次而接收到已解決狀態(tài)的告警,排除第二條;最后,告警的告警的產(chǎn)生時(shí)間與自動(dòng)解決時(shí)間相差不是 24h,排除第三條。那問(wèn)題出在什么地方呢?

創(chuàng)新互聯(lián)建站是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來(lái)公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶(hù)提供滿(mǎn)意周到的服務(wù),在本地打下了良好的口碑,在過(guò)去的10余年時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶(hù),如茶藝設(shè)計(jì)等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶(hù)的一致表?yè)P(yáng)。

分析

下面我們開(kāi)始分析這個(gè)問(wèn)題。綜合第一節(jié)的描述,初步的猜想是告警在到達(dá) AlertManager 前的某些階段的處理過(guò)程太長(zhǎng),導(dǎo)致告警到達(dá) AlertManager 后就已經(jīng)過(guò)了自動(dòng)解決時(shí)間。我們從分析平臺(tái)里一條告警的流轉(zhuǎn)過(guò)程入手,找出告警在哪個(gè)處理階段耗時(shí)過(guò)長(zhǎng)。首先,一條告警的產(chǎn)生需要兩方面的配合:

metric 數(shù)據(jù)

告警規(guī)則

將 metric 數(shù)據(jù)輸入到告警規(guī)則進(jìn)行計(jì)算,如果符合條件則產(chǎn)生告警。DMP 平臺(tái)集成了 Thanos 的相關(guān)組件,數(shù)據(jù)的提供和計(jì)算則會(huì)分開(kāi),數(shù)據(jù)還是由 Prometheus Server 提供,而告警規(guī)則的計(jì)算則交由 Thanos Rule(下文簡(jiǎn)稱(chēng) Ruler)處理。下圖是 Ruler 組件在集群中所處的位置:

看來(lái),想要弄清楚現(xiàn)告警的產(chǎn)生到 AlertManager 之間的過(guò)程,需要先弄清除 Ruler 的大致機(jī)制。官方文檔對(duì) Ruler 的介紹是:You can think of Rule as a simplified Prometheus that does not require a sidecar and does not scrape and do PromQL evaluation (no QueryAPI)。

不難推測(cè),Ruler 應(yīng)該是在 Prometheus 上封裝了一層,并提供一些額外的功能。通過(guò)翻閱資料大致了解,Ruler 使用 Prometheus 提供的庫(kù)計(jì)算告警規(guī)則,并提供一些額外的功能。下面是 Ruler 中告警流轉(zhuǎn)過(guò)程:

請(qǐng)點(diǎn)擊輸入圖片描述

請(qǐng)點(diǎn)擊輸入圖片描述

首先,圖中每個(gè)告警規(guī)則 Rule 都有一個(gè) active queue(下面簡(jiǎn)稱(chēng)本地隊(duì)列),用來(lái)保存一個(gè)告警規(guī)則下的活躍告警。

其次,從本地隊(duì)列中取出告警,發(fā)送至 AlertManager 前,會(huì)被放入 Thanos Rule Queue(下面簡(jiǎn)稱(chēng)緩沖隊(duì)列),該緩沖隊(duì)列有兩個(gè)屬性:

capacity(默認(rèn)值為 10000):控制緩沖隊(duì)列的大小,

maxBatchSize(默認(rèn)值為 100):控制單次發(fā)送到 AlertManager 的最大告警數(shù)

了解了上述過(guò)程,再通過(guò)翻閱 Ruler 源碼發(fā)現(xiàn),一條告警在放入緩沖隊(duì)列前,會(huì)為其設(shè)置一個(gè)默認(rèn)的自動(dòng)解決時(shí)間(當(dāng)前時(shí)間 + 3m),這里是影響告警自動(dòng)解決的開(kāi)始時(shí)間,在這以后,有兩個(gè)階段可能影響告警的處理:1.?緩沖隊(duì)列階段2.?出緩沖隊(duì)列到 AlertManager 階段(網(wǎng)絡(luò)延遲影響)由于測(cè)試環(huán)境是局域網(wǎng)環(huán)境,并且也沒(méi)在環(huán)境上發(fā)現(xiàn)網(wǎng)絡(luò)相關(guān)的問(wèn)題,我們初步排除第二個(gè)階段的影響,下面我們將注意力放在緩沖隊(duì)列上。通過(guò)相關(guān)源碼發(fā)現(xiàn),告警在緩沖隊(duì)列中的處理過(guò)程大致如下:如果本地隊(duì)列中存在一條告警,其上次發(fā)送之間距離現(xiàn)在超過(guò)了 1m(默認(rèn)值,可修改),則將該告警放入緩沖隊(duì)列,并從緩沖隊(duì)列中推送最多 maxBatchSize 個(gè)告警發(fā)送至 AlertManager。反之,如果所有本地隊(duì)列中的告警,在最近 1m 內(nèi)都有發(fā)送過(guò),那么就不會(huì)推送緩沖隊(duì)列中的告警。也就是說(shuō),如果在一段時(shí)間內(nèi),產(chǎn)生了大量重復(fù)的告警,緩沖隊(duì)列的推送頻率會(huì)下降。隊(duì)列的生產(chǎn)方太多,消費(fèi)方太少,該隊(duì)列中的告警就會(huì)產(chǎn)生堆積的現(xiàn)象。因此我們不難猜測(cè),問(wèn)題原因很可能是是緩沖隊(duì)列推送頻率變低的情況下,單次推送的告警數(shù)量太少,導(dǎo)致緩沖隊(duì)列堆積。下面我們通過(guò)兩個(gè)方面驗(yàn)證上述猜想:首先通過(guò)日志可以得到隊(duì)列在大約 20000s 內(nèi)推送了大約 2000 次,即平均 10s 推送一次。結(jié)合緩沖隊(duì)列的具體屬性,一條存在于隊(duì)列中的告警大約需要 (capacity/maxBatchSize)*10s = 16m,AlertManager 在接收到告警后早已超過(guò)了默認(rèn)的自動(dòng)解決時(shí)間(3m)。其次,Ruler 提供了 3 個(gè) metric 的值來(lái)監(jiān)控緩沖隊(duì)列的運(yùn)行情況:

thanos_alert_queue_alerts_dropped_total

thanos_alert_queue_alerts_pushed_total

thanos_alert_queue_alerts_popped_total

通過(guò)觀察 thanos_alert_queue_alerts_dropped_total 的值,看到存在告警丟失的總數(shù),也能佐證了緩沖隊(duì)列在某些時(shí)刻存在已滿(mǎn)的情況。

解決通過(guò)以上的分析,我們基本確定了問(wèn)題的根源:Ruler 組件內(nèi)置的緩沖隊(duì)列堆積造成了告警發(fā)送的延遲。針對(duì)這個(gè)問(wèn)題,我們選擇調(diào)整隊(duì)列的 maxBatchSize 值。下面介紹一下這個(gè)值如何設(shè)置的思路。由于每計(jì)算一次告警規(guī)則就會(huì)嘗試推送一次緩沖隊(duì)列,我們通過(guò)估計(jì)一個(gè)告警數(shù)量的最大值,得到 maxBatchSize 可以設(shè)置的最小值。假設(shè)你的業(yè)務(wù)系統(tǒng)需要監(jiān)控的實(shí)體數(shù)量分別為 x1、x2、x3、...、xn,實(shí)體上的告警規(guī)則數(shù)量分別有 y1、y2、y3、...、yn,那么一次能產(chǎn)生的告警數(shù)量最多是(x1 * y2 + x2 * y2 + x3 * y3 + ... + xn * yn),最多推送(y1 + y2 + y3 + ... + yn)次,所以要使緩沖隊(duì)列不堆積,maxBatchSize 應(yīng)該滿(mǎn)足:maxBatchSize = (x1 * y2 + x2 * y2 + x3 * y3 + ... + xn * yn) / (y1 + y2 + y3 + ... + yn),假設(shè) x = max(x1,x2, ...,xn), 將不等式右邊適當(dāng)放大后為 x,即 maxBatchSize 的最小值為 x。也就是說(shuō),可以將 maxBatchSize 設(shè)置為系統(tǒng)中數(shù)量最大的那一類(lèi)監(jiān)控實(shí)體,對(duì)于 DMP 平臺(tái),一般來(lái)說(shuō)是 MySQL 實(shí)例。

注意事項(xiàng)

上面的計(jì)算過(guò)程只是提供一個(gè)參考思路,如果最終計(jì)算出該值過(guò)大,很有可能對(duì) AlertManager 造成壓力,因而失去緩沖隊(duì)列的作用,所以還是需要結(jié)合實(shí)際情況,具體分析。因?yàn)?DMP 將 Ruler 集成到了自己的組件中,所以可以比較方便地對(duì)這個(gè)值進(jìn)行修改。如果是依照官方文檔的介紹使用的 Ruler 組件,那么需要對(duì)源碼文件進(jìn)行定制化修改。

oracle更新表記錄失敗,如何展示錯(cuò)誤

在oracle的服務(wù)器上直接敲命令oerr錯(cuò)誤類(lèi)型、錯(cuò)誤編號(hào),oracle會(huì)告訴你錯(cuò)在什么地方,怎么解決這個(gè)錯(cuò)誤,或者到oracle的網(wǎng)站上下載她的技術(shù)文檔,然后打開(kāi),進(jìn)入主頁(yè),在左上角有errormessage。點(diǎn)擊進(jìn)入,然后查找你要查看的error信息。

oracle 看報(bào)錯(cuò)日志怎么看

首先了解什么是外部表,與其它表的區(qū)別,建立一個(gè)簡(jiǎn)單的外部表(主要看操作過(guò)程),最后我們用外部表查看ORACLE報(bào)警日志

1.了解oracle外部表

外部表定義:結(jié)構(gòu)被存放在數(shù)據(jù)字典,而表數(shù)據(jù)被放在OS文件中的表

作用:在數(shù)據(jù)庫(kù)中查詢(xún)OS文件的數(shù)據(jù),還可以將OS文件數(shù)據(jù)裝載到數(shù)據(jù)庫(kù)中

與其它表的區(qū)別:在外部表上不能執(zhí)行DML操作,也不能在外部表上建索引,只能執(zhí)行select操用

2.建一個(gè)簡(jiǎn)單的外部表1.建一個(gè)OS上的文件

因?yàn)橥獠勘碇饕遣榭碠S上的文件,首先在OS上建一個(gè)文件

mkdir -p /oracle/ext

vi /oracle/ext/ext.dat

10,20,30

40,50,60

70,80,90

2.授予用戶(hù)權(quán)限,并建立目錄對(duì)象

在此我們先建一個(gè)新用戶(hù)

create user test identified by “123” default tablespace test quota unlimited on test;

用戶(hù)授權(quán)

SQL grant create any directory to test;

建立目錄對(duì)象

SQL conn test / 123

Connected.

SQL create directory ext as '/oracle/ext';

Directory created.

3.建立外部表

SQL create table exttable(

id number,name varchar2(10),i number

)organization external

(type oracle_loader

default directory ext

access parameters

(records delimited by newline

fields terminated by ','

)location('ext.dat')

);

4.測(cè)試

SQL select * from exttable;

ID NAMEI

---------- ---------- ----------

10 20 30

40 50 60

70 80 90

測(cè)試成功,可見(jiàn)在數(shù)據(jù)庫(kù)中可以查詢(xún)OS文件的數(shù)據(jù)

2. 使用外部表查看oracle報(bào)警日志

由于在上面實(shí)驗(yàn)中已建立了一個(gè)用戶(hù),并賦相應(yīng)的權(quán)限,而且也有了OS文件(即報(bào)警文件alert_SID.log),所以在此直接建立目錄對(duì)象并建立外部表就可以了。

1.建立目錄對(duì)象

SQL conn test / 123

Connected.

SQL create directory bdump as '/oracle/u01/app/oracle/admin/db2/bdump';

Directory created.

2.建立外部表

SQL create table alert_log(

text varchar2(400)

)organization external

(type oracle_loader

default directory bdump

access parameters

(records delimited by newline

)location('alert_db2.log')

);

3.測(cè)試

首先查看能否查到alert_db2.log的內(nèi)容

SQL select * from alert_log where rownum 10;

TEXT

--------------------------------------------------------------------------------

Thu Jun 11 00:51:46 2009

Starting ORACLE instance (normal)

Cannot determine all dependent dynamic libraries for /proc/self/exe

Unable to find dynamic library libocr10.so in search paths

RPATH = /ade/aime1_build2101/oracle/has/lib/:/ade/aime1_build2101/oracle/lib/:/a

de/aime1_build2101/oracle/has/lib/:

LD_LIBRARY_PATH is not set!

The default library directories are /lib and /usr/lib

Unable to find dynamic library libocrb10.so in search paths

Unable to find dynamic library libocrutl10.so in search paths

9 rows selected.

測(cè)試成功

然后我們測(cè)試查報(bào)警信息’ORA-%’

SQL select * from alert_log where text like 'ORA-%';

TEXT

--------------------------------------------------------------------------------

ORA-00202: control file: '/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2

.dbf'

ORA-27037: unable to obtain file status

ORA-205 signalled during: ALTER DATABASE MOUNT…

ORA-00301: error in adding log file '/home/oracle/oracle/oradata/testdb/redo01.l

og' - file cannot be created

ORA-27040: file create error

ORA-1501 signalled during: CREATE DATABASE db2

ORA-00200: control file could not be created

TEXT

--------------------------------------------------------------------------------

ORA-00202: control file: '/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2

.dbf'

ORA-27038: created file already exists

ORA-1501 signalled during: CREATE DATABASE db2

ORA-00200: control file could not be created

ORA-00202: control file: '/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2

.dbf'

ORA-27038: created file already exists

ORA-1501 signalled during: CREATE DATABASE db2

測(cè)試成功,

可見(jiàn)我們可以使用外部表來(lái)方便的查看ORACLE的報(bào)警信息

怎么查看oracle數(shù)據(jù)庫(kù)錯(cuò)誤

要獲得邏輯驅(qū)動(dòng)器或存儲(chǔ)卷的性能計(jì)數(shù)器數(shù)據(jù),必須在命令提示符下鍵入diskperf –yv。

默認(rèn)情況下,操作系統(tǒng)使用diskperf –yd命令包含物理驅(qū)動(dòng)器數(shù)據(jù)。

使用命令diskperf的詳細(xì)信息,請(qǐng)?jiān)诿钐崾痉骆I入diskperf -?。

Oracle 常見(jiàn)錯(cuò)誤處理

ORA-28040: No matching authencation protocol

1、問(wèn)題復(fù)現(xiàn):Spring boot 應(yīng)用啟動(dòng)時(shí)候正常,但是頁(yè)面訪(fǎng)問(wèn)后臺(tái)接口,程序再訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)時(shí),控制臺(tái)報(bào)錯(cuò)如下:沒(méi)有匹配的身份驗(yàn)證協(xié)議

Caused by: java. sql. SQLExceptiona ORA-28040: No matching authentication protocol

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java 112)

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java: 331)

....

2、產(chǎn)生原因:當(dāng)時(shí)環(huán)境是:Java jdk 1.8 + Spring boot ,在開(kāi)發(fā)環(huán)境時(shí)是 Oracle 11g,此時(shí)運(yùn)行正常,后面到測(cè)試環(huán)境換成 Oracle 12C,就發(fā)生上面的錯(cuò)誤,經(jīng)過(guò)檢查發(fā)現(xiàn)原來(lái)是 .jar 文件里面打了兩個(gè)不同版本的 Oracle 驅(qū)動(dòng)。

3、解決方式:直接用壓縮工具打開(kāi) .jar 文件,然后手動(dòng)刪除多余的 ojdbc14-x.x.x.jar 文件,只留下 ojdbc8 版本的驅(qū)動(dòng)即可。

OracleOraDb11g_home1TNSListener服務(wù)啟動(dòng)后停止

1、問(wèn)題復(fù)現(xiàn):有時(shí)候連接 Oralce 的時(shí)候發(fā)現(xiàn)連接不上,然后打開(kāi) "services.msc" 服務(wù)面板發(fā)現(xiàn) xxxxTNSListener 監(jiān)聽(tīng)服務(wù)沒(méi)有啟動(dòng),當(dāng)手動(dòng)啟動(dòng)監(jiān)聽(tīng)服務(wù)的時(shí)候,它彈框提示:“本地計(jì)算機(jī)上的OracleOraDb11g_home1TNSListener服務(wù)啟動(dòng)后停止。某些服務(wù)在未由其他服務(wù)或程序使用時(shí)將自動(dòng)停止?!?/p>

2、產(chǎn)生原因:Oracle 數(shù)據(jù)庫(kù)通常都會(huì)提供遠(yuǎn)程訪(fǎng)問(wèn),比如小張電腦上安裝了 Oralce 數(shù)據(jù)庫(kù),小李、小劉就可以直接訪(fǎng)問(wèn)小張的Oracle。Oracle 開(kāi)啟遠(yuǎn)程訪(fǎng)問(wèn),需要在配置文件中設(shè)置本機(jī) ip 地址,這樣其它人才能通過(guò) IP 訪(fǎng)問(wèn),然而當(dāng) IP 在某些情況下發(fā)生變化時(shí),比如切換了網(wǎng)絡(luò),或者是動(dòng)態(tài) IP 等情況,Oracle 監(jiān)聽(tīng)器監(jiān)聽(tīng)的 IP 與計(jì)算機(jī)實(shí)際 IP 就會(huì)不一致,然后就會(huì)發(fā)生上面的錯(cuò)誤。

3、解決方式:找到 Oracle 數(shù)據(jù)庫(kù)安裝目錄下的 listener.ora 文件,比如 C:appThinkproduct11.2.0dbhome_1NETWORKADMINlistener.ora。然后修改其中監(jiān)聽(tīng)的 IP 為 Oralce 安裝的計(jì)算機(jī) IP 地址,比如下面的 192.168.3.195。最后再次啟動(dòng)監(jiān)聽(tīng)服務(wù)即可正常。

文章題目:Oracle錯(cuò)誤怎么看,oracle報(bào)錯(cuò)大全
網(wǎng)站鏈接:http://www.muchs.cn/article16/hcphgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)響應(yīng)式網(wǎng)站外貿(mào)建站、移動(dòng)網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化