DBASK問答集萃第六期

2021-09-26 02:52:58 字數 3557 閱讀 7409

引言問答集萃問題

一、為什麼oracle不需要像mysql那樣double write

為了解決 partial page write 問題 ,當mysql將髒資料flush到data file的時候, 先使用memcopy 將髒資料複製到記憶體中的double write buffer ,之後通過double write buffer再分2次,每次寫入1mb到共享表空間,然後馬上呼叫fsync函式,同步到磁碟上,避免緩衝帶來的問題,在完成doublewrite寫入後,在將double write buffer寫入各表空間檔案,這時是離散寫入。這個過程是mysql double write。 問題:oracle也是會出現類似的情況,為什麼那麼自信,不需要double write

診斷結論:這只能說是innodb的設計實現,不同的產品設計思路不同。又由於innodb只是乙個儲存引擎,考慮的情況還要複雜。mysql的引擎制還導致redo和binlog共存。在未來oracle主導之下,這些都會慢慢被改變。

問題二、truncate 分割槽表的時候非常慢3個小時沒跑完會是什麼原因

分割槽表有200多g,通過truncate 刪除其中的乙個分割槽 使用了 update global indexes選項,執行了3個小時沒執行完成,分割槽表存在 global 索引,最終導致業務無法操作,kill掉truncate 分割槽表的session 恢復操作,請問

1、這3個小時是在等待 update global indexes 嘛?

2、kill 了 truncate session,業務恢復,表資料也沒有刪除,不是 truncate 不走 undo嘛,為什麼 kill session 之後 能回滾了呢?

診斷結論:1、從描述看,很大可能是阻塞在update global indexes上面了;可以結合ash看看。2、truncate是ddl,記錄不計redo,但是medata還是有undo的,你這個操作失敗,自然就回滾了。

問題三、oracel 預定義處理語句轉為mysql寫法

oracle寫法如下:

exception

when others then

v_result := i_service_id;

return(v_result);

如何轉換為mysql語句寫法?看網上說mysql用 declare,或者是否可以實現這種寫法的轉換?

診斷結論:類似這種寫法:declare exit handler for sqlwarning,not found,sqlexception,但是感覺mysql的exit和oracle的return還是有差距。

問題

四、對大表字段設定為unuse有哪些影響?

oracle 11.2版本中對大表字段設定為unuse對後續的管理會產生哪些影響?

診斷結論:set unused再drop unused columns,是對於資料量很大的表的一種標準處理方法,所以,實際上大部分都是在set unused之後的幾天內就會選擇合適的時機,將這些列物理drop掉,因此不存在太多後續還要持續管理的機會吧。

問題五、rac心跳機制導致重啟的問題

rac心跳機制包括網路和磁碟心跳,如遇節點間心跳超時(可能是由於伺服器hang住或者網路出現問題),是否會重啟非主節點的伺服器?

節點重啟是指集群服務重啟還是伺服器重啟?如果伺服器hang住,可以理解為不能對磁碟進行讀寫,磁碟心跳超時問題就一定會重啟伺服器?另外根據mos文件指出,11.2.0.2之後的版本,節點驅逐並不一定會導致伺服器重啟。

問題六、oracle goldengate實現一對多複製

目前一套oracle rac做為源端,需要同步到同一機房的異機乙份資料,還需要同步到異地機房乙份資料,用一套ogg做一對多複製對源端效能影響大嘛?還是先同步到同一機房異機乙份在從異機的目標端同步資料到異地?

像這種既有同機房異機資料同步,又異地同步,有更好的方案嘛?

診斷結論:一對多可以共用同乙個抽取程序,只需多配乙個投遞程序就可以。

只要是同平台、同版本的oracle容災,基本上現在都用的adg。但是由於源端為ibm小機,目標端為x86的伺服器,沒考慮用adg,基本上能用的只有ogg了,不過ogg也不太穩定,特別是全庫同步,ddl頻繁的場景。

問題七、pdb級別的負載監控效能診斷

在12c以前可以通過例如dbtime的指標,判斷資料庫負載,在公升級到12c,18c後,對於資料庫的負載監控有沒有乙個指標,判斷當前容器內那個pdb占用cdb資源最多?在使用oratop時只能看到cdb層面的負載資訊,還有別的指標可以快速定位資源佔比較高的pdb

診斷結論:12.2可以生成pdb級別的awr報告,另外可以通過oem cc監控檢視各個pdb的負載情況。

問題

八、重啟多路徑跟udev時,需要關閉資料跟資料庫集群嗎?

12c3節點rac在asm新增新的磁碟時,用的多路徑,跟udev,修改multipath.conf de 重啟多路徑跟udev時,需要關閉資料跟資料庫集群嗎?

診斷結論:一般情況下重啟udev和multipath是不會影響到集群的,原來的鏈路都在,且重啟過程很快。但是重啟過程中也可能存在鏈路超時或者原鏈路夯住導致集群重啟的情況。還有網絡卡如果使用udev繫結也會存在節點重啟的情況。另外multipath有reload命令。

問題九、oracle目錄.cache檔案是否可以清理

資料庫所在的檔案系統/u01使用率基本快滿,根據find / -szie +500m -type f檢視大於500m的檔案進行清理,釋放空間,詢問您字尾為.cache檔案可以清理嗎,檔案大小為500m,或者那些檔案可以清理,我一一查詢進行清理。

專家解答:不知道能不能刪的檔案,最好mv到其他地方,過一段時間後再刪除。另外,檔案系統慢不一定是大檔案占用,可能是很多小檔案,比如oracle的trace檔案。通過du命令去找到占用空間較大的檔案或目錄,再考慮刪除。

問題十、oracle 11g 怎麼清理tnslsnr alert日誌

請問一下,oracle 11g 怎樣安全清理生產環境的alert日誌。我想清理。diag/tnslsnr/erp-db/listener/alert

診斷結論:這些都是監聽日誌檔案,如果不需要使用,可以直接刪除所有帶數字的xml檔案。

另外禁用xml形式生成監聽日誌,可以通過在lisneter.ora中設定如下引數:

diag_adr_enabled_listener = off

另外如果是資料庫alert日誌可以先壓縮備份alert日誌,再執行:> alert_sid.log

問題十

一、請問如何怎麼快速定位儲存過程中執行慢的語句

請問如何快速定位儲存過程中執行慢的語句

診斷結論:可以通過ash 找到儲存過程的主sql然後依次找到遞迴的所有sql,然後對這些sql資源消耗做排序;儲存過程記錄日誌;用10046跟蹤執行儲存過程的會話;用plsql developer的profiler除錯,會展示每個sql的執行時長。

CSDN 精品專欄 第六期

以往精品專欄推薦 csdn 精品專欄 第一期 csdn 精品專欄 第二期 csdn 精品專欄 第三期 csdn 精品專欄 第四期 csdn 精品專欄 第五期 推薦理由 很多人使用過linux命令,但是不成體系,很多的原理並不是特別的清楚,本專欄將在介紹linux命令的同時,系統的講解蘊藏在命令背後的...

第六期提高班

首先我來說一下,我很慶幸自己當初能夠報這個班兒,這是我們數信學院計算機基礎教育部的公尺新江教授 牽頭主辦的乙個 試驗田 全新式的教育理念,基本上讓我初步了解了真正的大學式教育應該是什麼樣兒的,在這樣兒的班級裡真的是省人.上個週日我們來到南五樓接著我們這新學期的課程,上午公尺老師主要和大家交流了一下這...

第六期新人助跑感悟

為期一周的新人助跑已經結束了,我的心情久久不能平靜。在這不算太長的時間裡,新同事和員工發展中心的各位老師在我心裡留下了深深的烙印,這些就是我以後工作中汲取力量的源泉。首先我應該感謝公司,因為沒有公司,就不會有今天我們的相聚,公司給了我們乙個展示自己的平台,我們就應該盡我們最大的努力去實現自己的價值,...