|
这个问题大家很熟悉了,但我从来没有设备能做这样的测试,这次终于得到一次巧合,做了一次测试,也验证了相关的一些理论. 关于32windows上内存寻址的问题,这节就不介绍了,网上到处都是.下面就我测试的具体信息show一下,或许能对部分朋友有所帮助. 测试环境: Windows 2003 Server Enterprise (32位) 2 cpu + 8G(RAM) + Oracle 10.2.0.1(32位) db_block_size=8192 关键Oracle init参数文件说明: *.use_indirect_data_buffers=true *.db_block_buffers=720896 *.java_pool_size=4194304 *.large_pool_size=4194304 *.shared_pool_size=2147483648 *.streams_pool_size=0 *.compatible='10.2.0.1.0' *.db_block_size=8192 *.db_file_multiblock_read_count=16 *.db_name='DBTest' *.job_queue_processes=10 *.open_cursors=300 *.pga_aggregate_target=203423744 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' 说明:为了使用AWE,在Oracle 10g中不能使用ASMM,所以需要设置sga_target=0. 测试内容和结果 | 测试序号 | cache size(G) | db_block_buffers | shared_pool_size | 测试结果 | | 1 | 3 | 393216 | 213909504 | OK | | 2 | 3.5 | 458752 | 213909504 | OK | | 3 | 4 | 524288 | 213909504 | OK | | 4 | 4.5 | 589824 | 213909504 | OK | | 5 | 5 | 655360 | 283458240 | OK | | 6 | 5.5 | 720896 | 283458240 | OK | | 7 | 6 | 786432 | 283458240 | OK | | 8 | 6.5 | 851968 | 283458240 | OK | | 9 | 6.5 | 851968 | 1073741824 | OK | | 10 | 5.5 | 720896 | 2147483648 | OK |
准备工作 1)enabling support at the OS level 编辑Windows安装盘的根目录下的boot.ini文件,增加如下一行内容 multi(0)disk(0)rdisk(0)partition(1)WINNT="Microsoft Windows 2003 Server Enterprise" /3GB /PAE 说明:/3GB enables a single process to attach 3GB of memory. /PAE enables access to memory above 4GB to be mapped for a process. 这两个参数可以一起使用,也可以单独使用。 if mem<=4G,就只需要设置/3GB即可 if mem> 4G,/3GB /PAE可以同时设置(这个时候最大只能使用到16G,如果要使用更多的内容,需要去掉/3GB参数) 授权:给运行Oracle数据库的操作系统帐户,授予"Lock Pages in Memory"的系统权限 重起windows系统 2)enabling AWE Support at the Database/Instance Level 设置USE_INDIRECT_DATA_BUFFERS=TRUE 设置DB_BLOCK_BUFFERS参数(不能使用db_cache_size参数) 3)修改注册表参数AWE_WINDOW_MEMORY 如果不设置这个参数,默认是1G AWE_WINDOW_MEMORY参数有一个最小值计算公式,我们设置的value不能小于这个最小值 min(AWE_WINDOW_MEMORY)=(4096 * db_block_size * _db_block_lru_latches)/8 其中 db_block_size就是块的大小(在这个测试中8K) _db_block_lru_latches在10g中是一个隐藏的下化线参数,可以通过如下的脚本得到: col ksppinm format a32 col ksppstvl format a20 select ksppinm, ksppstvl from x$ksppi x, x$ksppcv y where x.indx = y.indx and x.inst_id=userenv('instance') and y.inst_id=userenv('instance') and ksppinm='_db_block_lru_latches'; _db_block_lru_latches这个参数也可以通过一个公式计算出来: _db_block_lru_latches=(max buffer pools * sets_per_pool) 其中: max buffer pools是一个常量=8 sets_per_tool是一个变量,它的值取决于是否enable VLM(即是否设置了use_indirect_data_buffers=true) if VLM enabled then sets_per_tool=2*cpu_count else sets_per_tool=cpu_count/2 end if; 建议:建议使用前种方法直接使用Oracle自己计算出来的结果。 根据这个测试环境,我们得到的 min(AWE_WINDOW_MEMORY)=(4096 * db_block_size * _db_block_lru_latches)/8 =(4096 * 8192 * (8*2*2))/8 =134217728(byte) 我在实际测试中,注册表中设置了这个值为234217728 测试具体过程记录 第一轮:(cache size(G)=3 shared_pool_size=213909504) SQL> startup mount pfile='d:zrp.ora';
ORACLE 例程已经启动。
Total System Global Area 3439329280 bytes
Fixed Size 1247564 bytes
Variable Size 209716916 bytes
Database Buffers 3221225472 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
SQL> show parameter db_block
NAME TYPE VALUE
------------------------------------ ----------- -------------
db_block_buffers integer 393216
db_block_checking string FALSE
db_block_checksum string TRUE
db_block_size integer 8192
SQL>
SQL> alter database open;
数据库已更改。
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
----------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
SQL> create user thomas_zhang identified by thomas_zhang default tablespace users;
用户已创建。
SQL> grant connect,resource to thomas_zhang;
授权成功。
SQL> alter user thomas_zhang quota unlimited on users;
用户已更改。
SQL> conn thomas_zhang/thomas_zhang
已连接。
SQL> create table test (no int);
表已创建。
SQL> insert into test select rownum from dual connect by rownum<10;
已创建9行。
SQL> commit;
提交完成。
SQL> select *from test;
NO
----------
1
2
3
4
5
6
7
8
9
已选择9行。
SQL> drop table test purge;
表已删除。
SQL> conn /as sysdba
已连接。
SQL> show parameter service
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string DBTest
SQL> host tnsping dbtest
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 12-3月 -2008 20:12:14
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的参数文件:D:oracleproduct10.2.0db_2networkadminsqlnet.ora
已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = IP10128325)
(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DBTest)))
OK (30 毫秒)
SQL> conn thomas_zhang/thomas_zhang@dbtest;
已连接。
SQL> select sysdate,user from dual;
SYSDATE USER
-------------- -------------------
12-3月 -08 THOMAS_ZHANG
SQL> conn /as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
第二轮:(cache size(G)=3.5 shared_pool_size=213909504) SQL> startup mount pfile='d:zrp.ora';
ORACLE 例程已经启动。
Total System Global Area 3976200192 bytes
Fixed Size 1247564 bytes
Variable Size 209716916 bytes
Database Buffers 3758096384 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
SQL> alter database open;
数据库已更改。
SQL> conn thomas_zhang/thomas_zhang@dbtest;
已连接。
SQL> create table a (a int, b int);
表已创建。
SQL> insert into a values(1,1);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select *from a;
A B
---------- ----------
1 1
SQL> conn /as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
第三轮:(cache size(G)=4 shared_pool_size=213909504) SQL> startup mount pfile='d:zrp.ora';
ORACLE 例程已经启动。
Total System Global Area 4513071104 bytes
Fixed Size 1247564 bytes
Variable Size 209716916 bytes
Database Buffers 4294967296 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
SQL> alter database open;
数据库已更改。
SQL> conn thomas_zhang/thomas_zhang@dbtest;
已连接。
SQL> select *from a;
A B
---------- ----------
1 1
SQL> conn /as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
第四轮:(cache size(G)=4.5 shared_pool_size=213909504) SQL> startup mount pfile='d:zrp.ora';
ORACLE 例程已经启动。
Total System Global Area 5049942016 bytes
Fixed Size 1247564 bytes
Variable Size 209716916 bytes
Database Buffers 4831838208 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
SQL>
SQL> alter database open;
数据库已更改。
SQL> conn thomas_zhang/thomas_zhang@dbtest
已连接。
SQL> select *from a;
A B
---------- ----------
1 1
SQL> insert into a values(3,3);
已创建 1 行。
SQL> commit;
提交完成。
SQL> conn /as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
第五轮:(cache size(G)=5 shared_pool_size=283458240)第七轮:(cache size(G)=6 shared_pool_size=283458240) SQL> startup mount pfile='d:zrp.ora';
ORACLE 例程已经启动。
Total System Global Area 5679087616 bytes
Fixed Size 1247828 bytes
Variable Size 301991340 bytes
Database Buffers 5368709120 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
SQL> alter database open;
数据库已更改。
SQL> conn thomas_zhang/thomas_zhang@dbtest;
已连接。
SQL> select *from a;
A B
---------- ----------
3 3
1 1
SQL> insert into a values(5,5);
已创建 1 行。
SQL> commit;
提交完成。
SQL> conn /as sysdba
已连接。
SQL> show parameter db_block
NAME TYPE VALUE
------------------------------------ ----------- ---------
db_block_buffers integer 655360
db_block_checking string FALSE
db_block_checksum string TRUE
db_block_size integer 8192
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。SQL> 第六轮:(cache size(G)=5.5 shared_pool_size=283458240)
SQL> startup mount pfile='d:zrp.ora';
ORACLE 例程已经启动。
Total System Global Area 6215958528 bytes
Fixed Size 1247828 bytes
Variable Size 301991340 bytes
Database Buffers 5905580032 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
SQL> alter database open;
数据库已更改。
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ---------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 5928M
sga_target big integer 0
SQL> conn thomas_zhang/thomas_zhang@dbtest;
已连接。
SQL> select *from a;
A B
---------- ----------
3 3
1 1
5 5
SQL> insert into a values(6,6);
已创建 1 行。
SQL> commit;
提交完成。
SQL> conn /as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
SQL> startup mount pfile='d:zrp.ora';
ORACLE 例程已经启动。
Total System Global Area 6752829440 bytes
Fixed Size 1247828 bytes
Variable Size 301991340 bytes
Database Buffers 6442450944 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
SQL> alter database open;
数据库已更改。
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ---------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 6440M
sga_target big integer 0
SQL> conn thomas_zhang/thomas_zhang@dbtest;
已连接。
SQL> select *from a;
A B
---------- ----------
3 3
6 6
1 1
5 5
SQL> insert into a values(7,7);
已创建 1 行。
SQL> commit;
提交完成。
SQL> conn /as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
第八轮:(cache size(G)=6.5 shared_pool_size=283458240) SQL> startup mount pfile='d:zrp.ora';
ORACLE 例程已经启动。
Total System Global Area 7289700352 bytes
Fixed Size 1247828 bytes
Variable Size 301991340 bytes
Database Buffers 6979321856 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
SQL> alter database open;
数据库已更改。
SQL> conn thomas_zhang/thomas_zhang@dbtest;
已连接。
SQL> select *from a;
A B
---------- ----------
3 3
6 6
7 7
1 1
5 5
SQL> insert into a values(8,8);
已创建 1 行。
SQL> commit;
提交完成。
SQL> conn /as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
第九轮:(cache size(G)=6.5 shared_pool_size=1073741824) SQL> startup mount pfile='d:zrp.ora';
ORACLE 例程已经启动。
Total System Global Area 8078229504 bytes
Fixed Size 1250092 bytes
Variable Size 1090522324 bytes
Database Buffers 6979321856 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> alter database open;
数据库已更改。
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- -------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 7704M
sga_target big integer 0
SQL> show parameter shared_pool_size
NAME TYPE VALUE
------------------------------------ ----------- --------------
shared_pool_size big integer 1G
SQL> conn thomas_zhang/thomas_zhang@dbtest
已连接。
SQL> select * from a;
A B
---------- ----------
3 3
6 6
7 7
8 8
1 1
5 5
已选择6行。
SQL> insert into a values(9,9);
已创建 1 行。
SQL> commit;
提交完成。
SQL> conn /as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>第十轮:(cache size(G)=5.5 shared_pool_size=2147483648) SQL> startup mount pfile='d:zrp.ora';
ORACLE 例程已经启动。
Total System Global Area 8078229504 bytes
Fixed Size 1253172 bytes
Variable Size 2164261068 bytes
Database Buffers 5905580032 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> alter database open;
数据库已更改。
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- -------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 7704M
sga_target big integer 0
SQL> show parameter shared_pool_size
NAME |