/dev/shm目錄下產生大量的ora_$ORACLE_SID_的二進位制檔案 解決方案
2014.11.18
下午在檢查一個新上線的生產庫的時候,發現了一個問題:
為什麼/u01 使用了41G,明明這個目錄下面只有oracle的安裝軟體和system.sysaux表空間,大小加起來也就幾個G,而且使用du -sh /u01 顯示確實只有8.3G。
同時 這裡顯示/dev/shm使用了30G,我就納悶呢!找原因。
去到/dev下面 再du -sh 一下,顯示shm 有三十多個G,同時去到看到大量的ora_ORACLE_SID_開頭的檔案,檔案大小加起來剛開30G左右。
第一次看到,一頭霧水,還以為是資料庫裡面的那個引數位置指定錯了
於是檢視歸檔路徑,查一些可以檢視的引數路徑,結果一無所獲。
為什麼這下資料庫產生的檔案會跑到/dev/shm 下面呢。
網上找到了一篇相關了部落格,擷取一點解釋:
1)什麼是/dev/shm
它就是所謂的tmpfs,從名字可以看出是一個臨時的檔案系統,有人說跟ramdisk(虛擬磁碟),但不一樣。使用/dev/shm的好處就是讀取資料相當快,因為典型的 tmpfs 檔案系統會
完全駐留在 RAM 中,讀寫幾乎可以是瞬間的。同時,要注意的是,在/dev/shm中的檔案在系統重啟後會被清除掉。
tmpfs預設大小一般為實體記憶體的一半,當然可以修改tmpfs的大小。一般在fstab上可以看到
tmpfs /dev/shm tmpfs defaults 0 0
如果要將tmpfs的大小修改為4G,可以對上面的做適當的修改即可,如:
tmpfs /dev/shm tmpfs defaults,size=4096M 0 0
(2)/dev/shm對oracle 11g的影響
ORACLE 從11g版本開始,引入了一個自動記憶體管理(Automatic Memory Management)特性,該特性需要更多的共享記憶體(/dev/shm),因此如果決定應用該特性的話,
必須要確保共享記憶體大於ORACLE 中初始化引數MEMORY_MAX_TARGET 和MEMORY_TARGET(特別提示,這兩個引數即自動記憶體管理特性對應的初始化引數)的值。
Oracle在metalink的文件:Doc ID:Note:460506.1中進行了說明。解決這個問題只有兩個方法,一種是修改初始化引數,使得初始化引數中SGA的設定小於/dev/shm的大小,
另一種方法就是調整/dev/shm的大小。
現在我的問題是磁碟不允許增大shm,當然以前也做過增大shm的滿足oracle的記憶體的需求。
既然這兩種方法都不行,我想到的是關閉自動記憶體管理,會不會解決這個問題
果然我現在先在自己的本子上的11.2.0.1 中實驗得到了理想的結果
下面是貼出剛剛正式環境的變化情況
關閉前: 磁碟的使用情況:
[oracle@xxxx~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 50G 20G 28G 42% /
tmpfs 64G 30G 34G 48% /dev/shm
/dev/sda1 291M 36M 240M 14% /boot
/dev/sda4 30G 173M 28G 1% /tmp
/dev/sda5 47G 41G 3.9G 92% /u01
這是關閉後的:
[oracle@xxxx ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 50G 20G 28G 42% /
tmpfs 64G 424K 64G 1% /dev/shm
/dev/sda1 291M 36M 240M 14% /boot
/dev/sda4 30G 173M 28G 1% /tmp
/dev/sda5 47G 8.5G 36G 20% /u01
效果很明顯
讓後去到/dev/shm 下面發現所有的ora_ORACLE_SID_開頭的檔案都沒有了。
[oracle@xxxx shm]$ ll
total 424
-r--------. 1 oracle dba 67108904 Oct 13 14:51 pulse-shm-1960468867
-r--------. 1 gdm gdm 67108904 Oct 13 14:50 pulse-shm-2383950921
-r--------. 1 oracle dba 67108904 Oct 13 14:50 pulse-shm-3779625268
-r--------. 1 oracle dba 67108904 Oct 13 15:01 pulse-shm-410992017
-r--------. 1 oracle dba 67108904 Oct 13 14:50 pulse-shm-465023947
[oracle@xxxx shm]$
這裡說說我的看法:
一般情況下,資料庫剛建立的時候,建議是自動管理,等執行一段時間,或者進入正常的時候,根據個人經驗和awr.addm等的參考值,來調整資料庫的相關引數,並把資料庫記憶體管理變為手動。
因為開啟自動記憶體管理,也是有一些不可預測的風險,好比如,既然想讓它為你多做事情,就得承擔多一點的風險!
當然這個看自己權衡利弊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30936525/viewspace-2016692/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL建立二進位制日誌產生1067錯誤的解決方案MySql
- 記錄一下docker踩坑 /dev/shm目錄Dockerdev
- 從spfile二進位制檔案中產生init.ora文字檔案
- 記:”$ORACLE_HOME/.../sysman/recv/errors“目錄下產生大量日誌檔案OracleError
- 介面返回二進位制檔案的下載。
- Linux系統目錄/dev/shmLinuxdev
- bdump目錄下產生大量*m000*.trc檔案(P5010657)
- 對Linux目錄下面/dev/shm的理解和使用Linuxdev
- /dev目錄下找不到裝置檔案dev
- git .gitignore 檔案 解決二進位制檔案衝突問題Git
- /var/spool/clientmqueue/目錄下存在大量檔案的原因及解決方法clientMQ
- C#的二進位制檔案操作C#
- JS下載後臺介面返回的二進位制檔案JS
- 文字檔案與二進位制檔案的區別
- Windows系統上安裝pycrypto的二進位制解決方案Windows
- 二進位制檔案複製
- php寫二進位制檔案PHP
- 二進位制檔案拷貝
- 二進位制檔案視覺化(二)視覺化
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 8.var目錄下的檔案和目錄詳解
- [轉帖]linux的tmpfs和/dev/shm目錄的詳細介紹Linuxdev
- 根據數字二進位制下 1 的數目排序排序
- 檔案操作(二進位制拷貝)
- Git處理二進位制檔案Git
- MySQL二進位制檔案(binlog)MySql
- 前端怎麼處理二進位制檔案下載前端
- 6.3建立自己執行的二進位制檔案
- Oracle建立二進位制檔案索引的方法(轉)Oracle索引
- 進位制詳解:二進位制、八進位制和十六進位制
- Linux 只複製目錄,不復制目錄下的資料檔案Linux
- Python讀寫二進位制檔案Python
- Java二進位制Class檔案格式解析Java
- c++ 二進位制儲存檔案C++
- 使用UltraEdit 拷貝二進位制檔案
- linux /dev/shm與tmpfs檔案系統Linuxdev
- 產生一個32位的16進位制隨機數隨機
- /dev/shmdev