Oracle的V$SESSION_LONGOPS超過系統時間的處理方法

來源:互聯網
上載者:User

檢查一個系統,意外探索資料庫的v$session_longops中時間遠遠超過了系統時間。

查詢結果如下:

[oracle@datasd ~]$ sqlplus / as sysdba

SQL*Plus: Release10.2.0.3.0 - Production on星期一12月20 14:57:04 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Connected to:

Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE

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

2010-12-20 14:57:22

SQL> select max(start_time), max(last_update_time)

2  from v$session_longops;

MAX(START_TIME)     MAX(LAST_UPDATE_TIM

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

2022-03-25 13:51:24 2022-03-25 13:51:25

從v$session_longops查詢的時間比sysdate看到的時間快了20多年。看到這個現象的第一個反應是bug。

於是查詢了metalink,看看有沒有v$session_longops視圖時間變快的記錄,把整個metalink翻了個遍也沒有找到有價值的資訊。

SQL> select instance_name, startup_time

2  from v$instance;

INSTANCE_NAME    STARTUP_TIME

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

shandong         2008-01-15 15:19:28

SQL> host uptime

15:01:21 up 1069 days, 22:12,  2 users,  load average: 0.00, 0.00, 0.00

進一步檢查系統,探索資料庫和系統的啟動時間都接近3年了。

由於沒有可以借鑒的資訊,只能猜測可能導致問題的原因:

一、資料庫的bug,導致v$session_longops記錄的時間變快;

二、作業系統已耗用時間超過了500天,導致作業系統或Oracle資料庫中某些變數溢出,從而導致了這個問題。

三、作業系統上時間曾經被手工改動過,發現修改錯誤後,調整回來,但是v$session_longops視圖中的時間沒有自動回調。

前兩種的可能性並不大,因為如果是這兩種情況,那麼應該是比較普遍的,不太可能metalink中沒有任何的記錄。

第三種可能性可以自己來類比一下:

SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

會話已更改。

SQL> select sid from v$mystat where rownum = 1;

SID

----------

18

SQL> set autot trace stat

SQL> select * from ndmain.cat_product;

已選擇124350行。

Statistics

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

0  recursive calls

0  db block gets

20274  consistent gets

12867  physical reads

0  redo size

75995724  bytes sent via SQL*Net to client

91682  bytes received via SQL*Net from client

8291  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

124350  rows processed

SQL> set autot off

SQL> select max(start_time), max(last_update_time)

2  from v$session_longops

3  where sid = 18;

MAX(START_TIME)     MAX(LAST_UPDATE_TIM

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

2010-12-20 15:40:54 2010-12-20 15:41:06

SQL> select sysdate from dual;

SYSDATE

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

2010-12-20 15:41:47

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.