真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle如何限制內(nèi)存 oracle 修改內(nèi)存

Oracle關(guān)于內(nèi)存參數(shù)及大頁設(shè)置的相關(guān)概念和設(shè)置之Limits概念和配置

最近,對Linux大頁的調(diào)整,所以重溫了一些Linux內(nèi)存及SGA等相關(guān)概念、參數(shù)和配置,這里進行一下記錄,省的總Google.

荷塘網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)自2013年創(chuàng)立以來到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

limits.conf文件實際是Linux PAM(插入式認證模塊,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,突破系統(tǒng)的默認限制,對系統(tǒng)訪問資源有一定保護作用。 limits.conf 和sysctl.conf區(qū)別在於limits.conf是針對用戶,而sysctl.conf是針對整個系統(tǒng)參數(shù)配置。

limits.conf是 pam_limits.so的 配置文件,然後/etc/pam.d/下的應(yīng)用程序調(diào)用pam_***.so模塊。譬如說,當用戶訪問服務(wù)器,服務(wù)程序?qū)⒄埱蟀l(fā)送到PAM模塊,PAM模塊根據(jù)服務(wù)名稱在/etc/pam.d目 錄下選擇一個對應(yīng)的服務(wù)文件,然後根據(jù)服務(wù)文件的內(nèi)容選擇具體的PAM模塊進行處理。

格式為:

-c 指定修改core文件的大小,1000指定了core文件大小。也可以對core文件的大小不做限制,如: ulimit -c unlimited

對於需要做許多套接字連接并使它們處於打開狀態(tài)的應(yīng)用程序而言,最好通過使用ulimit -n,或者通過設(shè)置nofile參數(shù),為用戶把文件描述符的數(shù)量設(shè)置得比默認值高一些

maxlogins - 此用戶允許登錄的最大數(shù)目

注意:要使 limits.conf 文件配置生效,必須要確保 pam_limits.so 文件被加入到啟動文件中。查看 /etc/pam.d/login 文件中有:session required /lib/security/pam_limits.so

詳細說明:

username|@groupname:設(shè)置需要被限制的用戶名,組名前面加@和用戶名區(qū)別。也可以用通配符*來做所有用戶的限制。

type:有 soft,hard 和 -,

soft 指的是當前系統(tǒng)生效的設(shè)置值。

hard 表明系統(tǒng)中所能設(shè)定的最大值。

soft 的限制不能比har 限制高。

用 - 就表明同時設(shè)置了 soft 和 hard 的值。

resource:

示例,若機器上部署了ORACLE數(shù)據(jù)庫,我們需要對oracle用戶的資源做下調(diào)整,如下:

要使 limits.conf 文件配置生效,必須要確保 pam_limits.so 文件被加入到啟動文件中。查看 /etc/pam.d/login 文件中有:

--查看當前系統(tǒng)配置文件ulimit的全局配置

ulimit -a

如果未進行具體設(shè)置的話,會使用默認配置,如下查看:

批注:當使用*號讓全局用戶生效的時候,生效的nproc的值大小是受文件/etc/security/limits.d/90-nproc.conf中nproc值大小制約的,而如果僅僅是針對某個用戶,那麼就不受該文件nproc值大小的影響。

Linux系統(tǒng) /etc/security/limits.conf 配置

參考自

如何限制單個ORACLE進程占用內(nèi)存

首先需要分清,物理內(nèi)存和虛擬內(nèi)存的概念。然后你需要知道什么是“虛空間”。 物理內(nèi)存到虛擬內(nèi)存的轉(zhuǎn)換因不同 CPU 和操作系統(tǒng)的不同而不同,而且機制過于復(fù)雜,不說了。 首先,不是說你的機器有 1.5G 的物理內(nèi)存就可以分配到內(nèi)存。

oracle怎么設(shè)置自動管理內(nèi)存

在oracle 11g中,使用一個參數(shù)memory_target就能夠?qū)崿F(xiàn)SGA和PGA組件依據(jù)工作負荷進行自動內(nèi)存分配。oracle推薦使用自動內(nèi)存管理簡化內(nèi)存分配。

oracle 11g依然支持手工內(nèi)存分配:

1:oracle 11g使用memory_target來支持內(nèi)存自動分配。

2:使用sga_target和pga_target參數(shù)來設(shè)置SGA和PGA,數(shù)據(jù)庫會在這兩個組件中自我優(yōu)化。

3:你也可以手工設(shè)置SGA中的各個組件。比如db_cache_size,shared_pool_size等組件。

oracle 11g中新的內(nèi)存初始化參數(shù):

有兩個新的關(guān)鍵的內(nèi)存初始化參數(shù)memory_target(動態(tài)參數(shù),設(shè)置分配給實例的內(nèi)存數(shù))和memory_max_size(靜態(tài)參數(shù),這個參數(shù)是可選的,設(shè)置實例能夠分配的最大內(nèi)存,設(shè)置的是memory_target的上限值)。

注意:雖然memory_target是一個動態(tài)參數(shù),但是當數(shù)據(jù)庫運行時,你不能從非自動內(nèi)存管理交換到自動內(nèi)存管理。必須重啟數(shù)據(jù)庫將參數(shù)應(yīng)用到實例啟動過程才行。

如何使oracle的SGA在32位的操作系統(tǒng)下超出2G?

Win2003 :

由于32位的CPU的在windows系統(tǒng)中2G給系統(tǒng)用2G給應(yīng)用程序使用,如系統(tǒng)及oracle參數(shù)不作修改時,oracle的SGA內(nèi)存使用不能超過1.7G,所以要對一些進行windos

ows和oracle參數(shù)據(jù)進行修改,大致有以下幾步:一 windows 上的參數(shù)據(jù)修改:

1. 修改boot.ini文件,加/3GB /PAE:

在這行,multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows" /3GB /PAE 2.修改windows 注冊表:

regedit到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 這個目錄中找到AWE_WINDOW_MEMORY這個參數(shù),將其修改為oracle需要內(nèi)存的大小:例如:6G時為:6*1024*1024*1024

這個參數(shù)如不存大時,可以新建一個字符串名為AWE_WINDOW_MEMORY,值為上面講過的大小,這個值需要足夠大,不夠時將報:

ORA-27102 out of memory

OSD-00034 Message 34 not found; Product=RDBMS;facility =SOSD

O/S Error: (OS 8) Not enough storage is available to process this command

3.修改windows控制面板中的管理工具-- 域安全策略-- 本地安全策略 --鎖定內(nèi)存頁 中加入啟oracle數(shù)據(jù)庫的OS用戶名.

二 ORACLE數(shù)據(jù)庫中要改的參數(shù):

1.在改參數(shù)之前最好能先備份一個spfile到pfile 文件以防數(shù)據(jù)庫修改失敗時可以從這個參數(shù)文件在啟動數(shù)據(jù)庫: create pfile='d:\inittest.ora' from spfile; 2.主要修改的參數(shù)為:

_db_block_lru_latches --這個參數(shù)據(jù)大小為=CPU數(shù)*2*8

取消參數(shù)據(jù):db_cache_size,sga_max_size

db_block_buffers

USE_INDIRECT_DATA_BUFFERS=TRUE

SQL shutdown immediate;

數(shù)據(jù)庫已經(jīng)關(guān)閉。

已經(jīng)卸載數(shù)據(jù)庫。

ORACLE 例程已經(jīng)關(guān)閉。

SQL startup

ORACLE 例程已經(jīng)啟動。Total System Global Area 1008280152 bytes

Fixed Size 455256 bytes

Variable Size 478150656 bytes

Database Buffers 528482304 bytes

Redo Buffers 1191936 bytes

數(shù)據(jù)庫裝載完畢。

數(shù)據(jù)庫已經(jīng)打開。

SQL alter system set "_db_block_lru_latches"=128 scope=spfile;系統(tǒng)已更改。SQL alter system reset db_cache_size scope=spfile sid='*';系統(tǒng)已更改。SQL alter system set lock_sga=false scope=spfile;系統(tǒng)已更改。SQL alter system set db_block_buffers=1179648 scope=spfile;系統(tǒng)已更改。SQL alter system set use_indirect_data_buffers=true scope=spfile;系統(tǒng)已更改。SQL create pfile='d:\init2.ora' from spfile;文件已創(chuàng)建。SQL shutdown immediate;

數(shù)據(jù)庫已經(jīng)關(guān)閉。

已經(jīng)卸載數(shù)據(jù)庫。

ORACLE 例程已經(jīng)關(guān)閉。可以通過OEM來修改PGA,shared pool這些內(nèi)存大小

SQL startup

ORACLE 例程已經(jīng)啟動。Total System Global Area 7516192768 bytes

Fixed Size 455256 bytes

Variable Size 478150656 bytes

Database Buffers 3528482304 bytes

Redo Buffers 1191936 bytes

數(shù)據(jù)庫裝載完畢。

數(shù)據(jù)庫已經(jīng)打開。

Linux

有不少用戶認為在32位Linux,只能設(shè)置約1.7GB的Oracle SGA。也有不少用戶在不同的Linux發(fā)行版中使用相同的配置過程,獲得了不同的SGA最大值,便認為某些Linux發(fā)行版存在問題。這些想法都比較片面。實際上 32位Linux上Oracle SGA 的容量取決于三個指標,即:Linux kernel 版本、Oracle Database 版本、Linux 內(nèi)核參數(shù)shmmax。這里跟據(jù)一些網(wǎng)上文章做了些查正,做一些分析吧。一、內(nèi)核版本的影響在32位Linux平臺,至少都有兩套內(nèi)核供用戶使用。一個是smp核心,一個是hugemem核心。兩個核心的區(qū)別在于直接映射的內(nèi)核數(shù)據(jù)代碼地址空間的區(qū)別:SMP 核心:在x86架構(gòu)下,虛擬地址空間的大小為4G。在這4G空間中,用戶空間占3G (0×00000000到0xbfffffff),核心空間占1G(0xc0000000到0xffffffff)。這樣的分配策略稱為3G/1G分配。具體的分配方式如下:1. 0GB-1GB User space - Used for text/code and brk/sbrk allocations (malloc uses brk for small chunks)2. 1GB-3GB User space - Used for shared libraries, shared memory, and stack; shared memory and malloc use mmap (malloc uses mmap for large chunks)3. 3GB-4GB Kernel Space - Used for the kernel itself這種分配方式對于擁有1G物理內(nèi)存以下的系統(tǒng)是沒有任何問題的,即使超過1G物理內(nèi)存,3G/1G分配策略也沒有什么問題,因為內(nèi)核可以在高端內(nèi)存區(qū)域 (物理地址1G以上的內(nèi)存)中存放一些內(nèi)核數(shù)據(jù)結(jié)構(gòu)(比如頁緩沖等)。然而,隨著物理內(nèi)存的增多,3G/1G分配策略的問題也逐漸會暴露出來。這是因為一些關(guān)鍵的內(nèi)核數(shù)據(jù)結(jié)構(gòu) (比如用于管理物理內(nèi)存的mem_map[]) 是存放在1G核心空間之內(nèi)的。對于32G內(nèi)存的系統(tǒng),mem_map[]會占用近 0.5G的低端內(nèi)存(物理地址896M以下的內(nèi)存),這樣留給核心其他部分的內(nèi)存就不到所有內(nèi)存的1.5%;而對于64G內(nèi)存的系統(tǒng),mem_map[] 本身就會耗盡所有的低端內(nèi)存,造成系統(tǒng)無法啟動。但是把mem_map[]放到高端內(nèi)存的做法也不太實際,因為mem_map[]和內(nèi)存管理,體系結(jié)構(gòu)相關(guān)底層實現(xiàn),文件系統(tǒng)以及驅(qū)動等幾乎所有的核心的關(guān)鍵部分均有聯(lián)系,這時候就需要使用hugemem核心了。hugemem 核心:與SMP的3G/1G策略不同,hugemem 使用4G/4G分配方式??梢允购诵目臻g由1G增加到4G,而用戶空間也由3G增加到4G。相比3G/1G分配策略,對于4G物理內(nèi)存系統(tǒng),使用4G/4G分配可以增加低端內(nèi)存達3倍以上,而對于32G物理內(nèi)存系統(tǒng),則會有更多的提升,達到原來的6倍。 理論上,4G/4G策略可以支持物理內(nèi)存達200G的x86系統(tǒng)(如果硬件沒有限制的話),即使對于這樣的系統(tǒng),4G/4G策略也能保證留有1G可用的低端內(nèi)存。不論能否理解上面的解釋,只須要記住 smp 和 hugemem 兩個核心,一個是 3G/1G策略,一個是4G/4G策略即可。二、Oracle Database 版本:Oracle SGA 是掛載在內(nèi)存用戶空間中,不同版本的 Oracle Database ,掛載SGA起始地址是不同的:Oracle 10g Release 1:掛載SGA的起始地址為0×50000000(1.25GB)Oracle 10g Release 2:掛載SGA的起始地址為0×20000000(0.5GB)(其它版本未查正,有興趣可以自已看看Oracle手冊)從這個結(jié)果可以看出,理論上若使用3G/1G的smp核心,Oracle 10g Release 1 的SGA可設(shè)置到 3GB - 1.25 = 1.75GB 。正是因此,也有人認為Oracle SGA 只能設(shè)置到 1.75GB。而升級至 R2 版本,則可以設(shè)置到 3GB - 0.5GB = 2.5GB 。相同的,使用 4G/4G 的hugemem 核心能夠獲得多大的SGA 就很清楚了。

三、kernel shmmax 參數(shù):shmmax定義單個共享內(nèi)存段的最大值,它的取值范圍區(qū)間是[0,4294967295], 單位為byte,4294967295 bytes即4294967296 bytes(4GB)減去1。一般來說,它應(yīng)該足夠大以容下整個SGA,避免SGA使用多個共享內(nèi)存段造成Oracle性能下降。那么,將shmmax設(shè)置為最大值4294967295,使用 hugmemem 核心,Oracle 10g R2 版本,則理論上的SGA最大值為 3.5GB。盡管用戶進程可用的虛擬地址空間為4GB以及shmmax的最大值為4294967295,仍然可以通過使用內(nèi)存文件系統(tǒng)(in-memory filesystem,比如tmpfs、ramfs以及hugetlbfs)打開Oracle的Very Large Memory (VLM)特性來擴展SGA超過4GB,比如6GB。但是這種方法有個不方便的地方是,用戶不能夠再使用Oracle 10g中的Automatic Shared Memory Management了??偨Y(jié)一下:SMP核心和hugemem核心的影響:SMP核心:1GB+3GB,SGA最大值為1.75GB(3GB-1.25GB)Hugemem核心:4GB+4GB , SGA最大值為2.75GB(4GB-1.25GB)Oracle 不同版本的影響:Oracle 10g Release 1:掛載SGA的起始地址為0×50000000(1.25GB)Oracle 10g Release 2:掛載SGA的起始地址為0×20000000(0.5GB)那么:Hugemem 核心 + Oracle 10g Release 2 ,SGA最大值為3.5GB(4GB-0.5GB)BTW:由于64位系統(tǒng)對應(yīng)16EB尋址范圍,而不是32位系統(tǒng)的4GB,所以想要獲得更大SGA,性能更好的效果,應(yīng)該優(yōu)先使用 64 位系統(tǒng),而不是通過32系統(tǒng)配合內(nèi)存文件系統(tǒng)來配置了。

如何限制oracle中用戶的資源的使用

可以創(chuàng)建不同的資源限制,最好將ALTER SYSTEM SET RESOURCE_LIMIT=TRUE

寫在init文件中:RESOURCE_LIMIT=TRUE ,不然下次啟動可能……

create profile low_limits limit

idle_time 10 ----分鐘

connect_time unlimited; ----分鐘

然后把某種配置文件賦給某個用戶:

alter user youruser profile low_limits;

然后可以查看:

select profile from dba_users where username='YOURUSER';

select * from dba_profile where profile='low_limits';

其它資源比如:

session_per_user 限制一個用戶名可進行的連接

cpu_per_session 一次會話用戶可使用的server的cpu時間(白分秒)

cpu_per_call 用戶進程對數(shù)據(jù)庫一次調(diào)用用時(百分秒)

private_sga 限制一個用戶可占用內(nèi)存

oracle 11g 數(shù)據(jù)庫實例的內(nèi)存大小是由哪個參數(shù)來控制

數(shù)據(jù)庫實例的內(nèi)存主要包括 sga 和 pga

9i 以后 SGA 需要設(shè)置 sga_max_size 和 sga_target 兩個參數(shù)

PGA 需要設(shè)置 pga_aggregate_target 參數(shù)


本文名稱:oracle如何限制內(nèi)存 oracle 修改內(nèi)存
網(wǎng)頁URL:http://weahome.cn/article/hjgdjj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部