1.1 数据库实例dm.ini配置文件说明
.../[实例名]/dm.ini文件配置达梦数据库启动所必须的参数的配置文件。dm.ini中主要配置了两种类型的参数:功能配置参数、性能调优参数。通过配置该文件可以设置达梦数据库服务器的各种功能和性能选项。dm.ini参数文件中的参数(MAL_INI、ARCH_INI、MPP_INI、TIMER_INI)可以控制达梦数据库对于其他参数文件的读取。
dm.ini中的参数有必须配置与可选配置项。
必配置项如下:
参数名称 | 描述 |
---|---|
CTL_PATH | 实例控制文件路径。 |
SYSTEM_PATH | 系统表空间路径。 |
TEMP_PATH | 临时表空间路径。 |
BAK_PATH | 数据库备份默认路径。 |
INSTANCE_NAME | 数据库实例名称。 |
比较关键的几个可选配置项如下: | |
参数名称 | 描述 |
:----- | :----- |
ARCH_INI | 选配项,REDO日志本地归档开关,如不配置,无法进行数据库备份。 |
MAL_INI | 集群必配项,MAL通信开关 |
DW_PORT | 集群必配项,数据库和守护进程的TCP通信端口 |
TIMER_INI | 选配,异步备机开关,异步备机必须配置 |
MPP_INI | 选配,MPP集群开关,MPP集群必须配置 |
1.2 数据库实例参数属性特点
INI参数属性分为静态、动态和手动三种类型,分别与动态性能视图V$PARAMETER中TYPE字段的对应关系如下:
类型 | 对应字段值 |
---|---|
静态 | IN_FILE |
动态 | SYS和SESSION |
手动 | READ ONLY |
(1)动态参数(SYS和SESSION): ini 文件和内存同时可修改,修改后即时生效。
动态参数又分为会话级和系统级。
SESSION: 会话级参数被修改后,新参数值只会影响新创建的会话
SYS: 系统级参数修改后,将会影响所有的会话
(2)静态参数(IN FILE): 只能修改 ini 文件,修改后重启DB才能生效,为系统级参数,生效后会影响所有的会话
(3)手动参数(READ ONLY): 在运行过程中不能被修改,必须手动修改 dm.ini 参数文件,然后重启才能生效。
1.3 数据库实例参数的查看
查看方式
(1)直接查看参数文件,如:dm.ini
(2)通过动态性能视图v$PARAMETER,该视图显示ini参数和dminit建库参数的类型及参数值信息(当前会话值、系统值及dm.ini文件中的值)
select name,type,value,sys_value,file_value from v$parameter;
VALUE表示当前会话值,SYS_VALUE表示系统值,FILE_VALUE表示dm.ini文件中值。
(3)通过动态性能视图v$DM_INI可以查看所有ini参数和dminit建库参数信息。也提供了分类的视图查看相关的配置,如:V$DM_ARCH_INI
select para_name, para_value from v$dm_ini where (para_name|para_type|...) (|=|[like]|...);
select * from V$DM_ARCH_INI;
(4)通过函数查看参数值,其中SCOPE参数值为1:表示获取INI文件中配置参数的值,值为2:表示获取内存中配置参数的值
--配置参数为数值类型时使用该函数来获取当前值
SF_GET_PARA_VALUE(scope int, paraname varchar(256))
--配置参数为浮点型时使用该函数来获取当前值
SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187))
--配置参数为字符串类型时用该系统函数来获取当前值
SF_GET_PARA_STRING_VALUE (scope int, paraname varchar(8187))
--获得当前会话的某个会话级 INI 参数的值
SF_GET_SESSION_PARA_VALUE (paraname varchar(8187))
ALTER SYSTEM SET '<参数名称>'=<参数值> [DEFERRED] [MEMORY|BOTH|SPFILE];
--DEFERRED: 只适用于动态参数。指定DEFERRED时,参数值延迟生效,对当前session不生效,只对新创建的会话生效;缺省为立即生效,即对当前会话和新创建的会话都生效。
(4)通过系统函数修改参数
--该过程用于修改整型静态配置参数和动态配置参数
SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64)
--该过程用于修改浮点型静态配置参数和动态配置参数
SP_SET_PARA_DOUBLE_VALUE (scope int, paraname varchar(8187),value double)
--该过程用于修改 int、double、varchar 类型的静态配置参数或动态配置参数。当DEFERRED 参数值为 0 表示当前 session 修改的参数立即生效;值为 1 表示当前 session不生效,后续再生效,默认为 0。
SF_SET_SYSTEM_PARA_VALUE (paraname varchar(256), value int64\double\varchar(256),deferred int, scope int64)
--设置字符串型参数值
SP_SET_PARA_STRING_VALUE (scope int, ini_param_name varchar(256) ,value varchar(8187))
--设置某个会话级 INI 参数的值,设置的参数值只对本会话有效
SF_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint)
--重置某个会话级INI参数的值,使得这个INI参数的值和系统INI参数的值保持一致
SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187))
--设置服务器日志相关 INI 参数 SVR_LOG 和 SQL_TRACE_MASK
SF_SET_SQL_LOG (svrlog int,svrmsk varchar(1000))
(备注在创建数据库时设置的页大小和簇大小,一旦创建实例,则不能被改变)
--通过查询建表
create TABLE test1 as select * from EMPLOYEE WHERE (SALARY > 30000);
alter table test1 MODIFY employee_id INT DEFAULT 0 NOT NULL check(employee_id < 100000); --执行成功
--修改原字段名name为name_tmp
alter table tb rename column name to name_tmp;
alter table test1 rename column employee_id to id; -- 修改test1表格中的employee_id为id,执行成功
alter table test1 rename column id to employee_id; -- 将id列修改回employee_id
--增加一个和原字段名同名的字段name
alter table tb add name varchar2(40);
alter table test1 add test_id INT check(test_id < 1000000);
--将原字段name_tmp数据更新到增加的字段name
update tb set name=trim(name_tmp);
update test1 set test_id=trim(employee_id)
--更新完,删除原字段name_tmp
alter table tb drop column name_tmp;
分类总结:
--修改原字段 T_CONTENT 为 T_CONTENT_TEMP 注T_CONTENT类型为varchar(4000)
alter table "数据库名"."表名" rename column T_CONTENT to T_CONTENT_TEMP;
--增加一个和原字段名称相同的字段 T_CONTENT
alter table "数据库名"."表名" add T_CONTENT varchar(8000);
--将原字段 T_CONTENT_TEMP数据更新到增加的字段 T_CONTENT中
update "数据库名"."表名" set T_CONTENT =trim(T_CONTENT_TEMP);
update test1 set test_id = trim(employee_id);
--更新完,删除原字段 T_CONTENT_TEMP
alter table "数据库名"."表名" drop column T_CONTENT_TEMP;
-- 补充达梦其他sql
--创建索引(单字段)
create index "索引名" on 表名("索引字段");
--创建索引(多字段)
create index "索引名" on 表名("索引字段1","索引字段2");
--添加主键
alter table "数据库名"."表名" add PRIMARY KEY ("主键字段");
--增加一个字段 varchar类型等
alter table "数据库名"."表名" add "字段名" NVARCHAR2(8000) not null;
--修改字段类型长度 varchar类型等
alter table "数据库名"."表名" modify "字段名" NVARCHAR2(8000);
文章
阅读量
获赞