目录
一、数据库参数配置
DM的数据库参数分为静态参数和动态参数两种类型,再具体细分可以分为四种:
-
READ ONLY:手动参数,不能通过 SQL 命令或函数修改;只能通过修改 dm.ini 文本文件修改此参数(需要重启数据库才能生效)。
-
SYS:动态(系统级)参数。数据库运行中可以直接修改,可以即可以修改内存中的值,也可以修改参数文件中的值。可以通过 SQL 命令或系统函数修改。
-
SESSION:动态(会话级)参数,数据库运行中可以直接修改,可以即可以修改内存中的值,也可以修改参数文件中的值,还可以只修改当前会话的值。可以通过 SQL 命令或函数修改,且可以只针对当前会话生效。
-
IN FILE:静态参数,不能修改内存中的值,只能修改参数文件中的值,可以通过 SQL 命令或函数修改,但需要重启数据库才能生效。
ps:静态参数在数据库运行期间不能修改内存中的值,动态参数在数据库运行期间可以修改内存中的值(修改后立即生效)。
select distinct para_type from v$dm_ini;
1、图形化修改_console工具
使用工具修改后,需重启系统才生效。
ps:隐形函数无法用图形化界面修改。
2、系统函数修改
可以用来修改静态和动态参数,静态参数只能修改配置文件中的值(修改后需要重启数据库才能生效),动态参数即可以修改内存中的值(修改成功后即生效),也可以修改参数文件的值。
通过调用系统过程SP_SET_PARA_VALUE()、SP_SET_PARA_DOUBLE_VALUE()和SP_SET_PARA_STRING_VALUE()对参数值进行修改。
SP_SET_PARA_VALUE:修改整型参数。
SP_SET_PARA_DOUBLE_VALUE:修改浮点型参数:比如 UNDO_RETENTION。 SP_SET_PARA_STRING_VALUE:修改字符型参数
select name,id from v$ifun t where name like '%_SET_PARA%';
select * from v$ifun_arg t where id=584;
参数说明: SCOPE:修改范围(0:memory;1:both(memory+spfile);2:spfile)
改静态参数:
改动态参数:
3、使用SQL语句alter system set命令修改
可以用来修改静态和动态参数,静态参数只能修改配置文件中的值(修改后需重启数据库才能生效),动态参数即可以修改内存中的值(修改成功后即生效),也可以修改参数文件的值。
COMPATIBLE_MODE (静态参数)
-
0:不兼容,缺省值
-
1:兼容 SQL92 标准,
-
2:部分兼容 ORACLE,
-
3:部分兼容 MS SQL SERVER,
-
4:部分兼容 MYSQL,
-
5:兼容 DM6,
-
6:部分兼容 TERADATA
例如:修改数据库兼容性参数(静态参数),修改数据库兼容性参数使其兼容 Oracle 数据库。由于此参数是静态参数,所以不能修改内存中的值,只能修改参数文件中的值,并且需要重启数据库才能生效。
alter system set 'COMPATIBLE_MODE'=2 spfile;
-- 修改配置文件里的静态参数COMPATIBLE_MODE
重启服务后,配置文件才生效,para_value的值由0更改为2。
4、直接修改dm.ini配置文件
可以 vim 编辑 dm.ini 文件,采用此方式不管修改什么类型参数都需要重启数据库才能生效。
二、数据缓冲区配置
用于缓存数据文件中的数据页。
BUFFER 是从磁盘读出的数据页在内存中的镜像,包含四个类型,分别是 normal、fast、recycle、keep,由 INI 配置中的 BUFFER、FAST_POOL_PAGES、RECYCLE、KEEP 等确定大小。
--查看四个类型缓冲区的大小
select * from SYS."V$PARAMETER" t where name in ('BUFFER','FAST_POOL_PAGES','RECYCLE','KEEP');
--为了结果更美观,可以筛选关键列
select name,type,value,sys_value,file_value from v$parameter t where name in
('BUFFER','KEEP','A6P00PAGES','RECYCLE');
--将normal缓冲区的大小改为500
alter system set 'BUFFER'= 500 spfile;
也可以再dm.ini配置文件修改
总结:在学习DM数据库过程中,导致报错的原因很多是因为参数字母拼不全或错误,整个配置参数过程比较艰辛,因此将成功过程记录下来。小白要注意参数拼错一个字母也会报错,需要尤其注意这个细节。