灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:1816回复:0

LINUX RAC修改配置LOCK_SGA

楼主#
更多 发布于:2012-08-27 14:51

通过修改lock_sga和pre_page_sga参数可以保证SGA不被换出到虚拟内存,进而可以提高SGA的使用效率。通过这个小文儿给大家展示一下这两个参数的修改过程,不要太乐观,修改过程是存在“小坎坷”的。
当lock_sga参数设置为TRUE时(默认值是FALSE),可以保证整个SGA被锁定在物理内存中,这样可以防止SGA被换出到虚拟内存。只要设置lock_sga为“TRUE”便可保证SGA被锁定在物理内存中,这里之所以顺便将pre_page_sga参数也设置为“TRUE”,是因为这样可以保证在启动数据库时把整个SGA读入到物理内存中,以便提高系统的效率(虽然会增加系统的启动时间)。
  
  env:linux oracle 10.2.0.4
  
  
  
Node2
  
Linux操作系统对每一个任务在物理内存中能够锁住的最大值做了限制!需要手工进行调整。
  
  
  
  
  
[root@ldbrac2 mysql]# su - oracle
  
[oracle@ldbrac2 ~]$ sqlplus / as sysdba
  
  
  
SQL*Plus: Release 10.2.0.1.0 - Production on WedFeb 29 10:27:24 2012
  
  
  
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
  
  
  
  
  
Connected to:
  
Oracle Database 10g Enterprise Edition Release10.2.0.1.0 - Production
  
With the Partitioning, Real Application Clusters,OLAP and Data Mining options
  
  
  
SQL> show parameter sga
  
  
  
NAME                                 TYPE        VALUE
  
------------------------------------ -----------------------------------------
  
lock_sga                             boolean     FALSE
  
pre_page_sga                         boolean     FALSE
  
sga_max_size                         big integer 880M
  
sga_target                           big integer 880M
  
SQL> show parameter lock_a^Hsg^H^[[D^[[D
  
SQL> show parameter lock_sga
  
  
  
NAME                                 TYPE        VALUE
  
------------------------------------ -----------------------------------------
  
lock_sga                             boolean     FALSE
  
SQL> alter system set lock_sga=truescope=spfile;
  
  
  
System altered.
  
  
  
SQL> alter system set pre_page_sga=truescope=spfile;
  
  
  
System altered.
  
  
  
SQL> shutdown immediate;
  
Database closed.
  
Database dismounted.
  
ORACLE instance shut down.
  
SQL>      
  
SQL>
  
SQL> startup;
  
ORACLE instance started.
  
  
  
Total System Global Area  922746880 bytes
  
Fixed Size                  1222624 bytes
  
Variable Size             260048928 bytes
  
Database Buffers          654311424 bytes
  
Redo Buffers                7163904 bytes
  
Database mounted.
  
Database opened.
  
SQL> show parameter lock_sga
  
  
  
NAME                                 TYPE        VALUE
  
------------------------------------ -----------------------------------------
  
lock_sga                             boolean     TRUE
  
SQL>
  
SQL> show parameter lock_sga
  
  
  
NAME                                 TYPE        VALUE
  
------------------------------------ -----------------------------------------
  
lock_sga                             boolean     TRUE
  
SQL>  showparameter lock_sga
  
  
  
NAME                                 TYPE        VALUE
  
------------------------------------ -----------------------------------------
  
lock_sga                             boolean     TRUE
  
  
  
  
  
  
  
  
  
  
  
Node1
  
  
  
  
  
[root@ldbrac1 ~]# ulimit -l unlimited
  
[root@ldbrac1 ~]# ulimit -a
  
core file size         (blocks, -c) 0
  
data seg size           (kbytes, -d) unlimited
  
file size               (blocks, -f) unlimited
  
pending signals                 (-i) 1024
  
max locked memory       (kbytes, -l) unlimited
  
max memory size         (kbytes, -m) unlimited
  
open files                      (-n) 1024
  
pipe size           (512 bytes, -p) 8
  
POSIX message queues     (bytes, -q) 819200
  
stack size              (kbytes, -s) 10240
  
cpu time               (seconds, -t) unlimited
  
max user processes              (-u) 32764
  
virtual memory          (kbytes, -v) unlimited
  
file locks                      (-x) unlimited
  
[root@ldbrac1 ~]# su - oracle
  
  
  
[oracle@ldbrac1 ~]$ sqlplus / as sysdba
  
  
  
SQL*Plus: Release 10.2.0.1.0 - Production on WedFeb 29 10:29:58 2012
  
  
  
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
  
  
  
  
  
Connected to:
  
Oracle Database 10g Enterprise Edition Release10.2.0.1.0 - Production
  
With the Partitioning, Real Application Clusters,OLAP and Data Mining options
  
  
  
SQL> alter system set lock_sga=truescope=spfile;
  
alter system set lock_sga=true scope=spfile
  
*
  
ERROR at line 1:
  
ORA-32001: write to SPFILE requested but no SPFILEspecified at startup
  
  
  
SQL> shutdown immediate;
  
  
  
  
  
[oracle@ldbrac1 ~]$ cat/u01/app/oracle/product/10.2.0/db_1/dbs/initldbrac1.ora
  
ldbrac2.__db_cache_size=666894336
  
ldbrac1.__db_cache_size=734003200
  
ldbrac1.__java_pool_size=4194304
  
ldbrac2.__java_pool_size=8388608
  
ldbrac1.__large_pool_size=4194304
  
ldbrac2.__large_pool_size=4194304
  
ldbrac2.__shared_pool_size=226492416
  
ldbrac1.__shared_pool_size=163577856
  
ldbrac2.__streams_pool_size=8388608
  
ldbrac1.__streams_pool_size=8388608
  
*.audit_file_dest='/u01/app/oracle/admin/ldbrac/adump'
  
*.background_dump_dest='/u01/app/oracle/admin/ldbrac/bdump'
  
*.cluster_database_instances=2
  
*.cluster_database=true
  
*.compatible='10.2.0.1.0'
  
*.control_file_record_keep_time=14
  
*.control_files='+DATA/ldbrac/controlfile/current.260.732154615'
  
*.core_dump_dest='/u01/app/oracle/admin/ldbrac/cdump'
  
*.db_block_size=8192
  
*.db_create_file_dest='+DATA'
  
*.db_domain='domain'
  
*.db_file_multiblock_read_count=16
  
*.db_name='ldbrac'
  
*.dispatchers='(PROTOCOL=TCP)(service=test.domain)'
  
ldbrac1.instance_number=1
  
ldbrac2.instance_number=2
  
*.job_queue_processes=10
  
*.log_archive_dest_1='location=+DATA/ldbrac/archives2mandatory'
  
*.log_archive_dest_2=''
  
*.max_shared_servers=5
  
*.open_cursors=300
  
*.pga_aggregate_target=307232768
  
*.processes=200
  
*.remote_listener='LISTENERS_LDBRAC'
  
*.remote_login_passwordfile='exclusive'
  
*.service_names='ldbrac.domain,test.domain'
  
*.sga_target=922746880
  
*.shared_servers=3
  
ldbrac2.thread=2
  
ldbrac1.thread=1
  
*.undo_management='AUTO'
  
ldbrac2.undo_tablespace='UNDOTBS2'
  
ldbrac1.undo_tablespace='UNDOTBS1'
  
*.user_dump_dest='/u01/app/oracle/admin/ldbrac/udump'
  
  
  
修改pfile加入spfile的指定
  
[oracle@ldbrac1 dbs]$ vi initldbrac1.ora
  
  
  
ldbrac2.__db_cache_size=666894336
  
ldbrac1.__db_cache_size=734003200
  
ldbrac1.__java_pool_size=4194304
  
ldbrac2.__java_pool_size=8388608
  
ldbrac1.__large_pool_size=4194304
  
ldbrac2.__large_pool_size=4194304
  
ldbrac2.__shared_pool_size=226492416
  
ldbrac1.__shared_pool_size=163577856
  
ldbrac2.__streams_pool_size=8388608
  
ldbrac1.__streams_pool_size=8388608
  
*.audit_file_dest='/u01/app/oracle/admin/ldbrac/adump'
  
*.background_dump_dest='/u01/app/oracle/admin/ldbrac/bdump'
  
*.cluster_database_instances=2
  
*.cluster_database=true
  
*.compatible='10.2.0.1.0'
  
*.control_file_record_keep_time=14
  
*.control_files='+DATA/ldbrac/controlfile/current.260.732154615'
  
*.core_dump_dest='/u01/app/oracle/admin/ldbrac/cdump'
  
*.db_block_size=8192
  
*.db_create_file_dest='+DATA'
  
*.db_domain='domain'
  
*.db_file_multiblock_read_count=16
  
*.db_name='ldbrac'
  
*.dispatchers='(PROTOCOL=TCP)(service=test.domain)'
  
ldbrac1.instance_number=1
  
ldbrac2.instance_number=2
  
*.job_queue_processes=10
  
*.log_archive_dest_1='location=+DATA/ldbrac/archives2mandatory'
  
*.log_archive_dest_2=''
  
*.max_shared_servers=5
  
*.open_cursors=300
  
*.pga_aggregate_target=307232768
  
*.processes=200
  
*.remote_listener='LISTENERS_LDBRAC'
  
*.remote_login_passwordfile='exclusive'
  
*.service_names='ldbrac.domain,test.domain'
  
*.sga_target=922746880
  
*.shared_servers=3
  
ldbrac2.thread=2
  
ldbrac1.thread=1
  
*.undo_management='AUTO'
  
ldbrac2.undo_tablespace='UNDOTBS2'
  
ldbrac1.undo_tablespace='UNDOTBS1'
  
*.user_dump_dest='/u01/app/oracle/admin/ldbrac/udump'
  
SPFILE='+DATA/ldbrac/spfileldbrac.ora'
  
  
  
  
  
[oracle@ldbrac1 dbs]$ sqlplus / as sysdba
  
  
  
SQL*Plus: Release 10.2.0.1.0 - Production on WedFeb 29 10:54:19 2012
  
  
  
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
  
  
  
Connected to an idle instance.
  
SQL> startup mount pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initldbrac1.ora';
  
ORACLE instance started.
  
  
  
Total System Global Area  922746880 bytes
  
Fixed Size                  1222624 bytes
  
Variable Size             180357152 bytes
  
Database Buffers          734003200 bytes
  
Redo Buffers                7163904 bytes
  
Database mounted.
  
SQL> show parameter lock
  
  
  
NAME                                 TYPE        VALUE
  
------------------------------------ -----------------------------------------
  
db_block_buffers                     integer     0
  
db_block_checking                    string      FALSE
  
db_block_checksum                    string      TRUE
  
db_block_size                        integer     8192
  
db_file_multiblock_read_count        integer     16
  
ddl_wait_for_locks                   boolean     FALSE
  
distributed_lock_timeout             integer     60
  
dml_locks                            integer     988
  
gc_files_to_locks                    string
  
lock_name_space                      string
  
lock_sga                             boolean     TRUE
  
SQL>
  
SQL> alter database open;
  
  
  
Database altered.
  
  
  
SQL>
  
  [oracle@ldbrac1 ~]$ ipcs -m|grep ora
0x00fa5a34 131073     oracle    640        94371840   16                    
0xb1260140 262146     oracle    640        924844032  41                locked
  
  
  
  
.lock_sga和pre_page_sga参数在Oracle10gR2官方文档中的描述,供参考。
http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/initparams097.htm#REFRN10084
LOCK_SGA
Property Description
Parameter type Boolean
Default value false
Modifiable No
Range of values true | false
Basic No
LOCK_SGAlocks the entire SGA into physical memory. It is usually advisable tolock the SGA into real (physical) memory, especially if the use of virtualmemory would include storing some of the SGA using disk space. This parameteris ignored on platforms that do not support it.
http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/initparams168.htm#REFRN10174
PRE_PAGE_SGA
Property Description
Parameter type Boolean
Default value false
Modifiable No
Range of values true | false
PRE_PAGE_SGAdetermines whether Oracle reads the entire SGA into memory atinstance startup. Operating system page table entries are then prebuilt foreach page of the SGA. This setting can increase the amount of time necessaryfor instance startup, but it is likely to decrease the amount of time necessaryfor Oracle to reach its full performance capacity after startup.
Note:
This setting does not prevent your operating system from paging or swapping theSGA after it is initially read into memory.
PRE_PAGE_SGAcan increase the process startup duration, because every processthat starts must access every page in the SGA. The cost of this strategy isfixed; however, you might simply determine that 20,000 pages must be touchedevery time a process starts. This approach can be useful with someapplications, but not with all applications. Overhead can be significant ifyour system frequently creates and destroys processes by, for example,continually logging on and logging off.
The advantage thatPRE_PAGE_SGAcan afford depends on page size. For example, ifthe SGA is 80 MB in size and the page size is 4 KB, then 20,000 pages must betouched to refresh the SGA (80,000/4 = 20,000).
If the system permits you to set a 4 MB page size, then only 20 pages must betouched to refresh the SGA (80,000/4,000 = 20). The page size is operatingsystem-specific and generally cannot be changed. Some operating systems,however, have a special implementation for shared memory whereby you can changethe page size.
.小结
通过修改lock_sga和pre_page_sga参数值为“TRUE”可以有效的将整个SGA锁定在物理内存中,这样可以有效的提高系统的性能,推荐酌情进行调整。
注意:不同的操作系统对这lock_sga参数的支持情况是不同的,如果操作系统不支持这种锁定,lock_sga参数将被忽略。Windows不支持lock sga。
  
  
  
AIX
  
Metalink上给出修改参考三步骤:
       1.$ /usr/sbin/vmo -r -ov_pinshm=1                                                
       2.$ /usr/sbin/vmo -r -omaxpin%=percent_of_real_memory                                                              
       3.Set LOCK_SGA parameter to TRUE in the init.ora


喜欢0 评分0
游客

返回顶部