Oralce实例和数据库的抽象图:
图2-1 Oracle实例和数据库
Oracle有一个很大的内存块,称为系统全局区(SGA),在这里它会做以下工作:
- 维护所有进程需要访问的多种内部数据结构;
- 缓存磁盘上的数据,另外重做数据写至磁盘之前先在这里缓存;
- 保存已解析的SQL计划;
- 等等。
Oracle有一组“附加到”SGA的进程,附加机制因操作系统而异。
在UNIX环境中,这些进程会物理地附加到一个很大的共享内存段,这是操作系统中分配的一个内存块,可以由多个进程并发地访问;
在Windows中,这些进程只是使用C调用(malloc())来分配内存,因为它们实际上是一个大进程中的线程,所以会共享相同的虚拟内存空间。使用PSList,可以看到以下线程:
C:>PSList Oracle
pslist v1.28 - Sysinternals PsList
Copyright ? 2000-2004 Mark Russinovich
Sysinternals
Process information for BIGSUN:
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
oracle 1772 8 13 258 169848 0:00:00.981 0:17:13.496
具体的详细信息:
C:>PSList -d Oracle
pslist v1.28 - Sysinternals PsList
Copyright ? 2000-2004 Mark Russinovich
Sysinternals
Thread detail for BIGSUN:
oracle 1772:
Tid Pri Cswtch State User Time Kernel Time Elapsed Time
1776 9 200 Wait:Executive 0:00:00.010 0:00:00.040 0:17:18.883
1780 8 114 Wait:UserReq 0:00:00.010 0:00:00.000 0:17:17.271
1792 8 2 Wait:UserReq 0:00:00.000 0:00:00.000 0:17:17.261
1928 8 406 Wait:UserReq 0:00:00.000 0:00:00.000 0:17:16.220
1948 8 533 Wait:UserReq 0:00:00.000 0:00:00.020 0:17:15.909
1956 8 779 Wait:UserReq 0:00:00.000 0:00:00.010 0:17:15.599
1992 9 1514 Wait:UserReq 0:00:00.010 0:00:00.010 0:17:15.298
1996 8 245 Wait:UserReq 0:00:00.060 0:00:00.010 0:17:14.998
2000 8 14 Wait:UserReq 0:00:00.000 0:00:00.000 0:17:14.697
2008 8 237 Wait:UserReq 0:00:00.000 0:00:00.010 0:17:14.277
2012 8 336 Wait:UserReq 0:00:00.120 0:00:00.020 0:17:13.956
2016 8 39 Wait:UserReq 0:00:00.000 0:00:00.000 0:17:13.656
2024 8 66 Wait:UserReq 0:00:00.000 0:00:00.010 0:17:13.295
软件环境:Windows XP SP3+Oracle 9i R2,[ORACLE_HOME]=C:/Oracle/Ora92
PSList v1.28:http://www.microsoft.com/china/technet/sysinternals/utilities/PsList.mspx