专供数据字典使用的缓冲区,SQL语句分析过程中需要大量访问系统数据字典(从磁盘数据文件中访问数据字典成为recursive calls),即可使用该缓存区专门存放数据字典,从而避免过多的recursive calls所带来的性能损失。
数据字典是关于数据库的参考信息、数据库的结构信息、数据库的用户信息等各类信息描述的一组表和视图的集合。
数据字典用于描述所有数据库对象的数据库对象的集合。
SQL> select * from v$fixed_table; #查看系统中所有的动态表。
SQL> select * from dict; #查看数据字典。
SQL> select object_name,object_type,created from dba_objects where object_name in ('TEST','T1'); #从数据字典的dba_objects表中查询指定数据库对象的相关描述。
SQL> select * from dba_users; #从数据字典dba_users表中查询数据库用户的相关描述。
SQL> select * from dba_data_files; #从数据字典dba_data_files表中查询所有数据库文件的相关描述。
数据字典中表的分类:
静态表:对各类数据库对象的各类属性的描述,常见的有下面三类字母开头:
dba_*:存储当前数据库中所有数据库对象的描述
all_*:存储当前用户能够访问的数据对象的描述
user_*:存储当前用户所拥有的数据库对象的描述
动态表:不断动态更新以反映数据库当前运行状况,常见以“v$”开头。
查看data dictionary cache的大小:
SQL> select sum(sharable_mem) from v$sqlarea;
测试的data dictionary cache作用:
SQL> set autot on stat #打开统计信息显示。
SQL> select count(*) from dba_source; #查询一张表。
COUNT(*)
----------
292167
Statistics
----------------------------------------------------------
312 recursive calls #recursive calls 次数。
0 db block gets
1998 consistent gets
698 physical reads
0 redo> 413 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
6 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> select count(*) from dba_source; #再次查同一张表。
COUNT(*)
----------
292167
Statistics
----------------------------------------------------------
0 recursive calls #可见recursive calls 次数明显减少。
0 db block gets
1927 consistent gets
0 physical reads
0 redo> 413 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed