RECYCLE池:用于不能重复使用的对象
2、数据库高速缓存工作原理
对所有这些池,Oracle实例都使用一个Least Recently Used算法来判断应交换出哪个缓
冲区。
LRU算法原理:
将定数据告诉缓存包括10个缓冲区,数据已经占满了这10个缓冲区,并且B1是最早
访问的缓冲区,B10是最近访问的缓冲区。假定需要执行新的数据访问操作,并且要访问
的数据不在这10个缓冲区中,那么服务器进程会清除B1缓冲区数据,将新数据块B11的
数据放到该缓冲区中,并将该缓冲区标识为“最近访问”的缓冲区;如果要访问的数据在缓
冲区中已经存在,服务器进程会直接读取或修改数据,并将相应缓冲区标识为“最近访问”
的缓冲区。
3、数据库高速缓存结构
无论是读取数据还是修改数据,都是在数据高速缓存中完成的。按照缓冲区使用情况,
可以将其划分为脏缓冲区(Dirty Buffer),空闲缓冲区(Free Buffer)、忙缓冲区(Pinne
d Buffer)三种。脏缓冲区是指内容与相应数据块不一致的缓冲区,当执行DML操作时,
服务器进程会修改缓冲区数据,此时缓冲区和数据块内容不一致;空闲缓冲区是指内容与
数据块一致或不包含数据的缓冲区,当执行SELECT操作时,缓冲区与数据块内容一致;
忙缓冲区是指服务器进程正在存取的缓冲区。
为了描述数据库高速缓存的使用,SGA提供了类似于队列的LRU列表和脏列表。LRU
列表用于记载缓冲区访问的先后次序;脏列表则用于存放缓冲区的列表信息。
4、修改数据高速缓存尺寸
ALTER SYSTEM SET DB_CHCHE_SIZE=60M;
大池(large pool)
如果创建了大池,那么各种进程都会自动使用大池;否则,各种进程就只能使用共享
池中的内存。它用于共享服务器、备份与恢复和I/O操作。可以由Oracle或自行配置。后面
涉及的RMAN也会将大池用作其磁盘和磁带I/O从属进程。
大池用于为大内存操作提供相对独立的内存空间。通过分配大缓冲池,可以提高这些
大内存操作的性能。以下情况应分配大缓冲池:
使用共享服务器
使用RMAN在磁带设备上执行备份、转储和恢复操作
执行并行查询
使用I/O Slaves提高I/O性能(如配置初始化参数dbwr_io_slaves)
Java池(Java pool)
运行Java编写的存储过程Java池被用于实例化Java对象所需的堆空间。许多Oracle带
的Java语言使得现在已将Java池作为一种标准的存储结构,如果要在Oracle数据库中安装J
ava VM,必须配置Java池,并且其尺寸应该大于20M
[2].6
。