达梦8——单机上线
零、准备工作
向客户询问
- 环境相关:生产环境还是测试环境;硬软件信息;
- 初始化实例相关:页大小设置为多少、大小写是否敏感、字符集、char 按字节还是字符存储等;
- 修改参数相关:是否兼容oracle数据库等;
用户无明确要求时:默认页大小 PAGE_SIZE 为 32K
一、安装
1.无secadm用户
无secadm用户,说明不需要签名,直接在root用户下使用命令:
rpm -ivh 软件包名
就可以直接安装,更加方便;安装完后,即可初始化实例等后面步骤;
2.有secadm用户
-
- 传文件到/opt目录下,因为这个目录,secadm用户和root用户都可以访问到
- 切换到secadm用户,打开专用机自带的 ‘配置管理工具’,添加签名文件
- 切换到root用户,打开 ‘配置管理工具’ ,添加apm包或者deb包,等待添加完成后,直接一键安装即可。专用机安装软件时间较长,请耐心等待;
二、初始化实例
- 安装好后,去/opt/dmdbms/bin/bin目录下,初始化实例,如果不知道参数例如case_sensitive怎么写,可以输入./dminit help
- 初始化实例后,记得正常启停一次数据库服务;./DmServiceDMSERVER start stop
三、注册服务
注意:zjy安装好达梦数据库后,由于zyj的特殊性,在第一次初始化实例时,会自动注册服务;
但是,初始化第二个实例的时候,如果还想注册服务,就必须打包了或者迁移数据文件了;
(1)打包服务方式
打包服务,目的就是用来给zyj注册服务的。
(2)不打包迁移数据文件方式
下面介绍的是单机数据库实例不在默认路径下,不采用打包方式,用迁移数据文件的方式,还是使用默认的启动脚本启动数据库。
①先初始化数据文件到默认路径下/opt/dmdbms/data下
./dminit path=/opt/dmdbms/data page_size=32 log_size=2048 case_sensitive=y charset=1
②修改dm.ini文件里面的路径,将/opt/dmdbms/data改为根目录下的/data,如下:
sed -i "s#/opt/dmdbms/data#/data#g" dm.ini
③去/opt/dmdbms/bin/bin目录下,利用dmctlcvt转换工具,将dm.ctl文件转换成txt类型进行修改,修改里面的路径,如下:
./dmctlcvt TYPE=1 SRC=/opt/dmdbms/data/DAMENG/dm.ctl DEST=/opt/dmdbms/data/dmctl.txt
修改路径:sed -i "s#/opt/dmdbms/data#/data#g" dmctl.txt
④修改完成之后,再将dmctl.txt转换成dm.ctl格式
./dmctlcvt TYPE=2 SRC=/opt/dmdbms/data/dmctl.txt DEST=/opt/dmdbms/data/dm.ctl
⑤将DAMENG下的原来的dm.ctl 备份成dmbak.ctl
cd /opt/dmdbms/data
cp dm.ctl dmbak.ctl
将新生成的拷贝到DAMENG下,
cp dm.ctl ./DAMENG/dm.ctl
然后将整个DAMENG目录中除了dm.ini,其他都拷贝到/data下,
mv DAMENG/ /data/
mkdir DAMENG
mv /data/DAMEG/dm.ini ./DAMENG/
/opt/dmdbms/data/DAMENG目录下只保留dm.ini文件,如下:
cd DAMENG/;ll
⑥之后启动服务得时候,
还是用/opt/dmdbms/bin/bin目录下的DmServiceDMSERVER脚本即可,
即
cd /opt/dmdbms/bin/bin
./DmServiceDMSERVER start|stop|restart
四、数据库参数调整
1、常见参数配置
打开disql,默认用户应该是SYSDBA/SYSDBA123
declare v_mem_mb int; v_cpus int; mem_per int:=80; begin SELECT TOP 1 N_CPU,TOTAL_PHY_SIZE/1024/1024 INTO v_cpus,v_mem_mb FROM V$SYSTEMINFO; print v_cpus; print v_mem_mb; --修改线程数 IF v_cpus < 8 THEN v_cpus := 8; END IF; IF v_cpus > 64 THEN v_cpus := 64; END IF; SP_SET_PARA_VALUE(2,'WORKER_THREADS',v_cpus); SP_SET_PARA_VALUE(2,'TASK_THREADS',v_cpus); v_mem_mb := v_mem_mb * (mem_per/100.0); --修改内存 SP_SET_PARA_VALUE(2,'MAX_OS_MEMORY', 100); SP_SET_PARA_VALUE(2,'MEMORY_POOL', cast(v_mem_mb * 0.015 as int)); SP_SET_PARA_VALUE(2,'BUFFER', cast(v_mem_mb * 0.5 as int)); SP_SET_PARA_VALUE(2,'MAX_BUFFER', cast(v_mem_mb * 0.5 as int)); SP_SET_PARA_VALUE(2,'BUFFER_POOLS', 67); --只能为质数7,11,19,37,67,101 (4G-128G) 需要保证BUFFER/BUFFER_POOLS>=500MB ; SP_SET_PARA_VALUE(2,'RECYCLE', cast(v_mem_mb * 0.032 as int)); SP_SET_PARA_VALUE(2,'RECYCLE_POOLS', 11); --需要保证RECYCLE/RECYCLE_POOLS>=500MB SP_SET_PARA_VALUE(2,'HJ_BUF_GLOBAL_SIZE', cast(v_mem_mb * 0.0625 as int)); SP_SET_PARA_VALUE(2,'HJ_BUF_SIZE', cast(v_mem_mb * 0.004 as int)); SP_SET_PARA_VALUE(2,'HAGR_BUF_GLOBAL_SIZE',cast(v_mem_mb * 0.05 as int)); SP_SET_PARA_VALUE(2,'HAGR_BUF_SIZE', cast(v_mem_mb * 0.004 as int)); SP_SET_PARA_VALUE(2,'SESS_POOL_SIZE', cast(v_mem_mb * 0.004 as int)); SP_SET_PARA_VALUE(2,'CACHE_POOL_SIZE', cast(v_mem_mb * 0.016 as int)); SP_SET_PARA_VALUE(2,'USE_PLN_POOL', 1); SP_SET_PARA_VALUE(2,'OLAP_FLAG', 2); SP_SET_PARA_VALUE(2,'VIEW_PULLUP_FLAG', 1); SP_SET_PARA_VALUE(2,'SORT_BUF_SIZE', 10); SP_SET_PARA_VALUE(2,'TEMP_SIZE', 1024); SP_SET_PARA_VALUE(2,'MAX_SESSIONS', 500); --询问客户,每秒500的连接数能否处理应用并发。有效值(1-65000) SP_SET_PARA_VALUE(2,'MAX_SESSION_STATEMENT', 2000); SP_SET_PARA_VALUE(2,'DICT_BUF_SIZE', 50); SP_SET_PARA_VALUE(1,'PK_WITH_CLUSTER', 0); SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE', 2); --根据客户要求修改;这个和客户要从哪个数据库迁移到dm有关。 end;
这几个参数需要去dm.ini文件手动修改;
- vm_pool_size 64 256
- MEMORY_MAGIC_CHECK 2 2
- OPTIMIZER_MODE 0 1
- ENABLE_MONITOR 2 0
- SVR_LOG 0 0
最后,
l 参数修改完有些参数可能是静态参数,所以要重启一次数据库服务;
l 脚本文件不能留在客户机器里,所以在DM管理工具执行完后需删除,如果无法删除,取/tool/workspace里删除;
2、其他参数配置
- REDO 日志:一般应用将两个 REDO 都扩展到 2GB 即可
- 表空间 :建议用户使用的表空间不要使用 main 表空间,新建一个表空间
- 用户权限:一般分配 resource 的权限即可。
- 归档日志大小限制:大于 2048,但不可以不设置或者超过磁盘大小
- 口令有效期:不建议设置口令有效期,或者 DBA 设置有效期
- 备份:确认备份策略,开启定时备份
- Ha 环境部署:HA 要配置 IP 互斥(HA_INST_CHECK_IP,HA_INST_CHECK_PORT)
五、管理工具调整
问题:
如何查询初始化实例时指定的字符集、大小写是否敏感等参数?
方法一:打开DM管理工具,右键连接,有一个查询服务器,这里面有;
方法二:打开disql,
--获得系统建库时指定字符集
SELECT SF_GET_UNICODE_FLAG ();
--0 表示 GB18030,1 表示 UTF-8,2 表示 EUC-KR
--获得系统建库时指定的页大小
SELECT SF_GET_PAGE_SIZE ();
--获得系统建库时指定的簇大小
SELECT SF_GET_EXTENT_SIZE ();
--获得大小写敏感信息
SELECT SF_GET_CASE_SENSITIVE_FLAG();
--1:敏感 0:不敏感