4.3.2(p91)
1、V$DB_CACHE_ADVICE获得Oracle的缓冲区建议值(p91)
字段解释:
size_for_estimate:估计的cache size大小
size_factor: 估计的cache size大小与当前大小的比值
estd_physical_reads:在估计的cache size大小情况下,会产生的物理读数量
estd_physical_read_factor:估计的物理读数量与当前物理读数量的比值。
[参考]http://blog.csdn.net/RedPea/archive/2009/08/14/4446469.aspx
2、数据库中可以设置最多一个标准块尺寸和四个非标准块尺寸,可以用这5个块尺寸创建不同的表空间。(p91)
但是在创建非标准块尺寸的表空间前,必须在缓冲区高速缓存中用需要使用的每个非标准块尺寸配置非标准的子高速缓存(subcache)。
通过使用DB_nK_CACHE_SIZE初始化参数,可以指定非标准缓冲区高速缓存的子高速缓存,这里n是以KB为单位的块尺寸 ---- 可以取值为2、4、6、16或32。
数据库缓冲区高速缓存可以划分为三个池:即默认、保持和循环缓冲区池。缓冲区高速缓存的总尺寸是分配给数据库缓冲区高速缓存的所有部件的内存块的总和。保持和循环缓冲区池只能用标准块尺寸创建,但可以使用最多5个不同的块尺寸来配置默认缓冲区池。
以下例子说明如何在初始化参数文件中给每个缓冲区高速缓存的子高速缓存指定不同的尺寸值。
DB_KEEP_CACHE_SIZE = 48MB
DB_RECYCLE_CACHE_SIZE = 24MB
DB_CACHE_SIZE = 128MB /* standard 4KB block size */
DB_2K_CACHE_SIZE = 48MB /* 2K non-standard block size */
DB_8K_CACHE_SIZE = 192MB /* 8K non-standard block size */
DB_16K_CACHE_SIZE = 384MB /* 16K non-standard block size */
该例子中总的缓冲区高速缓存的尺寸将是以上所有子高速缓存的总和,大约为824MB
3、自动共享内存管理(p93)
可通过使用新的SGA_TARGET初始化参数配置自动共享内存管理。所需做的就是为SGA_TARGET参数分配一个正值,然后Oracle将在各种SGA的部件之间自动管理该内存的分配。
Oracle能够自动管理的5个SGA部件
(1)数据库缓冲区高速缓存(DB_CACHE_SIZE)
(2)共享池(SHARED_POOL_SIZE)
(3)大池(LARGE_POOL_SIZE)
(4)Java池(JAVA_POOL_SIZE)
(5)Streams池(STREAMS_POOL_SIZE)
即使在自动共享内存管理下也需要自己管理的SGA部件
(1)保持缓冲区高速缓存(DB_KEEP_CACHE_SIZE)
(2)循环缓冲区高速缓存(DB_RECYCLE_CACHE_SIZE)
(3)任何非标准块尺寸的缓冲区高速缓存(DB_nK_CACHE_SIZE)
(4)重做日志缓冲区(LOG_BUFFER)
4.3.3(p94)
1、PGA(程序全局区),包括私有SQL区域、运行时区域,Oracle建议使用自动PGA管理,它将自动分配PGA内存。
WORKAREA_SIZE_POLICY=auto,开启自动PGA管理,同时通过PGA_AGGREGATE_TARGET指定一个值来设置总PGA内存配置的尺寸。
WORKAREA_SIZE_POLICY=manual,关闭自动PGA管理,这时必须手工配置PGA各部件的大小。
4.5(p97)
1、Oracle使用两种基本的锁定方式,独占锁定方式(exclusive lock mode)和共享锁定方式(share lock mode)
5.3.5(p116)
1、查看Oracle10R2的区段管理、区段分配类型和段空间管理的默认值
select extent_management, allocation_type, segment_space_management from dba_tablespaces where tablespace_name = 'TEST01';
结果:
extent_management allocation_type segment_space_management
--------------------------------------------------------------------------------------------
LOCAL SYSTEM AUTO
Oracle10R2的默认值
区段管理:LOCAL
区段尺寸的分配:AUTOALLOCATE(在上述输出结果中显示为SYSTEM)
段空间管理:AUTO
5.3.11(p124)
1、select * from v$sort_segment
select * from v$tempseg_usage
可以使用以上视图查看临时表空间的使用情况
5.3.17(p131)
1、管理表空间的数据字典视图
select * from dba_data_files
select * from dba_tablespaces
select * from dba_free_space
select * from dba_segments
5.4.8(p135)
1、可以使用truncate删除表中的所有数据,属于DDL,不能使用rollback撤销,例如
truncate table test;
5.4.9(p136)
1、使用create table ... as select * from ...创建新表时可以使用parallel和nologging选项来提高装载打表的速度
paralle允许用多个进程并行执行数据加载
nologging指示Oracle不要把变化信息记录进重做日志文件和回滚段中
以下是一个例子:
create table employee_new
as select * from employees
parallel degree 4
nologging;
2、可以将表从一个表空间移动到另一个表空间,移动一个表时rowid改变了,因而使该表的索引不可用,必须重建索引,例如
alter table employee move new_tablespace;
5.4.10
1(p136)、
使用drop table table_name命令删除一个表时要删除的表被Oracle放入回收站,可以使用flashback恢复,例如
flashback table emp to before drop;
如果想直接永久删除一个表则使用purge选项,例如
drop table emp purge;
5.6.8
1(p152)
监控索引使用情况的途径除了EXPLAIN PLAN和SQL Trace外还可以使用以下方法,例如索引 p_key_sales
SQL>alter index p_key_sales monitoring usage;
现在,在该表中运行某些查询。然后通过使用以下命令终止监控活动
SQL>alter index p_key_sales nomonitoring usage;
现在,查询V$object_usage字典视图来查找p_key_sales索引是否被使用
SQL>select * from v$object_usage where index_name='P_KEY_SALES';
INDEX_NM TABLE_NM MON USED START_MONITORING END_MONITORING
-------------------------------------------------------------------------------------------------------------------
P_KEY_SALES SALES NO YES 05/20/2005 16:19:54 05/20/2005 16:21:26
上述输出中,ORACLE在USED列放了yes值,表明索引被查询使用了。如果索引在监控周期内被忽略则为NO
5.6.9
1(p153)
用rebuild命令重构索引,例如
alter index p_key_sales rebuild;
重构索引的一个更有效的方法是联机创建它,例如
alter index p_key_sales rebuild online;
在运行索引的联机重建时,可以执行所有的DML操作,但不能执行任何DDL操作