我論 Oracle 對安裝於 Linux 上的要求調校事項(二)
更新:2007-05-02
對映章節:
內容:
Linux 採用 System V 的架構
shm 是 System V 下的 Shared memory 的簡稱
/etc/sysctl.conf 用來開機載入更動核心預設值用
/proc/sys/kernel/ 包含以下的核心映射,
我們來對照一下 Debian testing 版本的預設:
#Total amount of shared memory available (bytes or pages)
"kernel.shmall = 2097152" (= Debian Default)
#Maximum size of shared memory segment (bytes)
"kernel.shmmax = 2147483648"
(> Debina "33554432" , 加大到近 22倍大)(巨大怪獸的證據!!!)
#Minimum size of shared memory segment (bytes)
"kernel.shmmni = 4096" (= Debian Default)
#Maximum number of shared memory segments per process
"kernel.sem = 250 32000 100 128"
(> Debian "250 32000 32 128")
/proc/sys/fs/
最大開啟檔案數量的需求設置(巨大怪獸的證據!!!)
"fs.file-max = 65536" (> Debian "48938")
這個選項與 ulimit 功能有連帶關係...
/proc/sys/net/ipv4/
#加寛非常大量的 local port 長度(巨大怪獸的證據!!!)
"net.ipv4.ip_local_port_range = 1024 65000"
(> Debian 預設寬度 "32768 61000")
#最後就是啟用上述來對 Linux 生效...
/etc/init.d/networks restart
/sbin/sysctl -p
延伸閱讀(Link):
http://www.postgresql.org/docs/8.2/interactive/kernel-resources.html
2 則留言:
1. SHARE MEMORY:
Oracle針對不同的DB,各有獨立一組的process, memory和datafile.
在系統參數中對於share memory/semaphore如此設定基本上是為了process之間IPC的需求.對於這樣的設定,系統是真的配置下去?還是允諾oracle可以用的這麼多?或許我們應該先去瞭解系統的行為及對效能的影響,再下結論會比較好.
比較單純的想法,假如單一主機上的一個dbms下所轄的db,必需共用process, memory以及tablespace,是否會有安全上考慮及可靠性的疑慮?
2. MAX OPEN FILE:
對於file system的open file限制,是基於管理及效能的需求.db肯定要允許單一table資料橫跨多的檔案,在這種情況下. fs.file-max的值應該說是受限於業務運作的需求.假如要開100000個檔案,你就必須考慮考慮.並不能據此下太吃資源的定論.
此外對於不同db的資料,卻share同一個tablespace,在架構上是否合理?假如要分離,又要再架一套dbms,在維運上是否合理?
3. LOCAL PORT
ip_local_port_range的定義是什麼?這樣的設定是如何吃掉系統資源?還是單純的限制所有application可以使用的區間?假如打算支持10000個client,每個client又會不斷開起重連.請用netstat查查看,你的db伺服器到底還剩幾個local port可以連出去,將資料傳給client?請確認你真的瞭解tcpip中到底在那些狀態下會進入wait,又wait有那幾種,並它們要等多久才會release local port?
postgresql 的前輩您好,
以下有個問題困擾我許久,
請大家幫我解答一下!
我在資料庫下了一個語法
---------------------
select *
from t1 INNER JOIN t2
on t1.uid = t2.uid
---------------------
但是出現了以下錯誤訊息:
---------------------
查詢結果 0 筆資料列將被遞回。
ERROR: invalid memory alloc request size 2147483648
********** 錯誤 **********
ERROR: invalid memory alloc request size 2147483648
SQL 狀態: XX000
---------------------
此外我發現在 table [t1],[t2]裡資料筆數少的時候,"不會"發生此種現象,
因此懷疑是資料庫設定上有問題,也許是'記憶體'方面沒有設定好,但我不知如何下手修改,請各位前輩指點一下,感謝!
張貼留言