2013年(350)
分类: Oracle
2013-04-25 11:30:19
我们都知道通常查看初始化参数可以使用show parameter,但是对于没有dba权限的用户就无法执行该命令,因此呢提供了一个视图v$system_parameter用来查看当前实例的初始化参数设置,例如:
SQL> select name,value from v$system_parameter p where p.name='sort_area_size';
NAME VALUE
------------------------------ ------------------------------
sort_area_size 65536
这个东西平淡无奇,大家都知道,我们今天也不是来看它的,今天的主角是双胞胎的故事,没错,v$system_parameter就有一个双胞胎兄弟,名字也起的很傻,叫v$system_parameter2。
既然说了是双胞胎,这哥俩之间必须非常相像,事实也确实如此,两个视图都是显示实例当前的初始化参数设置,如果要说哥俩间有啥区别的话,细微之处,我们还是能够辨别的出。对于v$system_parameter而言,每个初始化参数会被做为一行记录显示,不管该参数拥有几个值。而v$system_parameter2则不同,如果某个初始化参数拥有多个值,则每个值都会被做为一条记录显示。
举例来说,控制文件通常会有多个,在v$system_parameter中会显示成一行,而在v$system_parameter2中,则每个控制文件显示成一行,例如:
SQL> select name,value from v$system_parameter p where p.name='control_files';
NAME VALUE
------------------------------ ------------------------------------------------------------
control_files /data/oradata/test08/control01.ctl, /data/oradata/test08/con
trol02.ctl, /data/oradata/test08/control03.ctl
SQL> select name,value from v$system_parameter2 p where p.name='control_files';
NAME VALUE
------------------------------ ------------------------------------------------------------
control_files /data/oradata/test08/control01.ctl
control_files /data/oradata/test08/control02.ctl
control_files /data/oradata/test08/control03.ctl
与此类似的还有v$parameter视图。
如果说v$system_parameter显示实例中初始化参数的值,则v$parameter则显示使用于当前session的初始化参数值,例如:
SQL> select name,value from v$parameter p where p.name='sort_area_size';
NAME VALUE
------------------------------ ------------------------------
sort_area_size 65536
SQL> alter session set sort_area_size=10240000;
Session altered
SQL> select name,value from v$parameter p where p.name='sort_area_size';
NAME VALUE
------------------------------ ------------------------------
sort_area_size 10240000
SQL> select name,value from v$system_parameter p where p.name='sort_area_size';
NAME VALUE
------------------------------ ------------------------------
sort_area_size 65536
如上,由于alter session只作用于当前session,因此查询v$system_parameter视图发现没有任何变化,而v$parameter视图中的值则已经更新。
v$parameter也有一个双胞胎兄弟,名字也一样傻:v$parameter2。这哥俩之间的区别与v$system_parameter和v$system_parameter2一样,这里就不做示例演示了。