Oracle 在Linux X86上使用超過2G的SGA
在Linux X86上,SGA最大使用2G記憶體,如果設定超過2G的SGA,會報如下錯誤
ORA-27123: unable to attach to shared memory segment |
可以透過使用shared memory file的方式使用超過2G的sga。
下面演示其過程(RedHat as 4+Oracle 10.2.0.1)
[@more@]1、SGA過大的錯誤演示
SQL> alter system set sga_target=3G scope=spfile; System altered. SQL> startup force ORA-27123: unable to attach to shared memory segment SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options |
2、Mount ramfs 檔案系統,並保證可以被oracle使用者訪問
以下下過程用root使用者操作
[root@linux32 ~]# umount /dev/shm [root@linux32 ~]# mount -t ramfs ramfs /dev/shm [root@linux32 ~]# chown oracle:dba /dev/shm |
然後將上面的三個命令加入到/etc/rc.local檔案最後,修改後的檔案如下所示
[root@linux32 ~]# cat /etc/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local umount /dev/shm mount -t ramfs ramfs /dev/shm chown oracle:dba /dev/shm |
3、設定shared pool可以使用的記憶體
編輯/etc/security/limits.conf檔案,加入標記為紅色的兩行
最後數字的計算公式為(假設要使用1g的shared pool,計算公式為 1×1024×1024=1048576),
[root@linux32 ~]# cat /etc/security/limits.conf # /etc/security/limits.conf # ...... #@student - maxlogins 4 # End of file oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft memlock 1048576 oracle hard memlock 1048576 |
可以在另一個終端中重新用oracle使用者登入,檢視設定是否生效
[oracle@linux32 ~]$ ulimit -l 1048576 |
4、設定SHMMAX引數值
編輯/etc/sysctl.conf檔案,按照如下規則設定如下3行
kernel.shmmax = 2147483648 #Linux主機記憶體的一半,單位為byte,但最大最不能超過4294967295 kernel.shmmni = 4096 #一般固定為4094 kernel.shmall = 2097152 #應該>或= kernel.shmmax/kernel.shmmni |
使用sysctl -p命令使設定生效
[root@linux32 ~]# sysctl -p |
5、修改oracle的pfile檔案
以下操作使用oracle使用者操作
使用spfile生產pfile檔案
[oracle@linux32 dbs]$ strings spfileorcl.ora > init.ora.bak |
編輯init.ora.bak檔案,增加標記為紅色的三行
*.db_block_size=8192 ...... *.use_indirect_data_buffers=true *.db_block_buffers = 393216 *.shared_pool_size = 452984832 |
db_block_buffers表示db_block_size的大小,如欲使用3g的db_block_size,則公司為:(3×1024×1024/8=393216)(8代表db_block_size為8k)
shared_pool_size表示shared pool的大小,單位為byte,不能超過步驟3設定的記憶體大小,否則啟動時會報告如下錯誤:
ORA-27102: out of memory Linux Error: 28: No space left on device |
然後將*.sga_max_size和*.sga_target行刪掉
6、使用修改好的pfile檔案啟動
[oracle@linux32 dbs]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jan 20 21:52:40 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance. SQL> startup pfile='?/dbs/init.ora.bak' ORACLE instance started. Total System Global Area 3724541952 bytes Fixed Size 1218076 bytes Variable Size 486541796 bytes Database Buffers 3221225472 bytes Redo Buffers 15556608 bytes Database mounted. Database opened. |
生成spfile
SQL> create spfile from pfile='?/dbs/init.ora.bak'; File created. |
使用spfile啟動
SQL> startup force; ORACLE instance started. Total System Global Area 3724541952 bytes Fixed Size 1218076 bytes Variable Size 486541796 bytes Database Buffers 3221225472 bytes Redo Buffers 15556608 bytes Database mounted. Database opened. |
顯示sga情況
SQL> show sga Total System Global Area 3724541952 bytes Fixed Size 1218076 bytes Variable Size 486541796 bytes Database Buffers 3221225472 bytes Redo Buffers 15556608 bytes SQL> show parameter sga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 3552M sga_target big integer 0 |
--end--
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22049049/viewspace-1030758/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE 使用超過2G記憶體Oracle記憶體
- Oracle HowTo:如何在Linux上擴充套件SGA超過1.7GOracleLinux套件
- windows 2003 x86 32位中Oracle 10G資料庫使用超過1.7G的sga的方法WindowsOracle 10g資料庫
- linux上Oracle的sga(HugePages)分配問題LinuxOracle
- 在 Linux x86 上安裝 Oracle RAC 10gLinuxOracle
- RHEL4.5 for x86的ORACLE SGA擴充套件Oracle套件
- 在rhel5.3 x86上安裝oracle 11.2.0.1 db software的過程Oracle
- Oracle在各類操作上LOCK_SGA的設定Oracle
- 在Linux x86上安裝Oracle 資料庫10gLinuxOracle資料庫
- oracle 92 修改sga過程Oracle
- AIX上pin住Oracle的SGA的方法AIOracle
- Linux在X86上的虛擬記憶體管理(轉)Linux記憶體
- 如何實現通過Samba訪問超過2G的檔案?Samba
- 【SGA】RAC DB SGA超過100g的最佳實踐和建議
- ORACLE RAC 記憶體SGA,PGA配置超過300G的問題Oracle記憶體
- AIX上pin住Oracle的SGA的方法(轉)AIOracle
- oracle 10gR2 在solaris 10 x86 上的安裝文件Oracle 10g
- Oracle在Linux上的安裝OracleLinux
- ORACLE在LINUX上的系統配置OracleLinux
- oracle在linux系統上的部署OracleLinux
- 在 Linux 上使用 MultitailLinuxAI
- 在 Linux 上使用 tarballLinux
- 在Linux上使用CANLinux
- MikroTik RouterOS x86最大記憶體只能支援2GROS記憶體
- ORACLE SGA 的分配(轉)Oracle
- Linux下如何使用X86 CPU的GPIOLinux
- [轉]32位Linux設定超大Oracle SGA的分析LinuxOracle
- 使用 VMware 在 Oracle Enterprise Linux 上安裝 Oracle RAC 10gOracleLinux
- 在Oracle Linux 7.1上安裝DockerOracleLinuxDocker
- Oracle 11.1.0.6 for linux X86 64的SILENT建庫OracleLinux
- Oracle 11.1.0.6 for linux X86 64的SILENT安裝OracleLinux
- 在 Linux 上使用 Window Maker 桌面Linux
- 在LINUX5.8上使用vncLinuxVNC
- 在Linux上使用raw device方式Linuxdev
- Oracle SGA中的Granule(粒度)Oracle
- 使用 VMware 在 Oracle Enterprise Linux 上安裝 Oracle RAC 10g (2)OracleLinux
- Large SGA On LinuxLinux
- 在Oracle Linux 6.6上安裝Oracle 12cOracleLinux