服务器字符集对DM7中List分区表使用中文的影响

1.在Linux平台上使用disql工具创建List分区表sales时对分区键指定英文字符时,当指定多个值时可以创建成功

SQL> CREATE TABLE sales
2   (
3   sales_id INT,
4   saleman CHAR(20),
5   saledate DATETIME,
6   city CHAR(10)
7   )
8   PARTITION BY LIST(city)
9   (
10  PARTITION p1 VALUES ('a','b'),
11  PARTITION p2 VALUES ('c','d','e'),
12  PARTITION p3 VALUES ('f','g'),
13  PARTITION p4 VALUES ('h','i')
14  );
warning: List partition not include default,partition may be not located
executed successfully
used time: 115.412(ms). Execute id is 2094.

2.在Linux平台上使用disql工具创建List分区表sales时对分区键指定中文时,当指定多个列表值时创建报错

SQL> drop table sales;
executed successfully
used time: 307.935(ms). Execute id is 2095.

SQL> CREATE TABLE sales
2   (
3   sales_id INT,
4   saleman CHAR(20),
5   saledate DATETIME,
6   city CHAR(50)
7   )
8   PARTITION BY LIST(city)
9   (
10  PARTITION p1 VALUES ('北京','天津'),
11  PARTITION p2 VALUES ('上海','南京','杭州'),
12  PARTITION p3 VALUES ('武汉','长沙'),
13  PARTITION p4 VALUES ('广州','深圳')
14  );
CREATE TABLE sales
(
sales_id INT,
saleman CHAR(20),
saledate DATETIME,
city CHAR(50)
)
PARTITION BY LIST(city)
(
PARTITION p1 VALUES ('北京','天津'),
PARTITION p2 VALUES ('上海','南京','杭州'),
PARTITION p3 VALUES ('武汉','长沙'),
PARTITION p4 VALUES ('广州','深圳')
);

PARTITION p2 VALUES ('上海','南京','杭州'),
                             *             
line 11, column 30, nearby [藝娴穄 has error[-2007]:
Syntax error.
used time: 0.328(ms). Execute id is 0.

3.在Linux平台上使用disql工具创建List分区表sales时对分区键指定中文时,当指定一个列表值时创建成功

SQL> CREATE TABLE sales
2   (
3   sales_id INT,
4   saleman CHAR(20),
5   saledate DATETIME,
6   city CHAR(10)
7   )
8   PARTITION BY LIST(city)
9   (
10  PARTITION p1 VALUES ('北京'),
11  PARTITION p2 VALUES ('上海'),
12  PARTITION p3 VALUES ('武汉'),
13  PARTITION p4 VALUES ('广州')
14  );
warning: List partition not include default,partition may be not located
executed successfully
used time: 19.809(ms). Execute id is 2096.

4.在win平台使用disql工具创建List分区表sales时对分区键指定中文时,当指定多个列表值时创建成功

disql V7.1.6.48-Build(2018.03.01-89507)ENT
SQL> conn jy/abcd@10.10.10.1:5236

服务器[10.10.10.1:5236]:处于普通打开状态
登录使用时间: 14.001(毫秒)
SQL> drop table sales;
操作已执行
已用时间: 352.729(毫秒). 执行号:2118.
SQL> CREATE TABLE SALES(
2   SALES_ID INT,
3   SALEMAN CHAR(20),
4   SALEDATE DATETIME,
5   CITY CHAR(10)
6   )
7   PARTITION BY LIST(CITY)
8   SUBPARTITION BY RANGE(SALEDATE) SUBPARTITION TEMPLATE(
9   SUBPARTITION P11 VALUES LESS THAN ('2012-04-01'),
10  SUBPARTITION P12 VALUES LESS THAN ('2012-07-01'),
11  SUBPARTITION P13 VALUES LESS THAN ('2012-10-01'),
12  SUBPARTITION P14 VALUES EQU OR LESS THAN (MAXVALUE))
13  (
14  PARTITION P1 VALUES ('北京','天津')
15  (
16  SUBPARTITION P11_1 VALUES LESS THAN ('2012-10-01'),
17  SUBPARTITION P11_2 VALUES EQU OR LESS THAN (MAXVALUE)
18  ),
19  PARTITION P2 VALUES ('上海','南京','杭州'),
20  PARTITION P3 VALUES (DEFAULT)
21  );
操作已执行
已用时间: 26.710(毫秒). 执行号:2119.
SQL>

5.在Linux平台上使用管理工具创建List分区表sales时对分区键指定中文时,当指定多个列表值时创建也能成功

6.查看操作系统字符集为UTF-8

[root@shard1 /]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

7.修改操作系统字符集

[root@shard1 /]# vi /etc/locale.conf
#LANG="en_US.UTF-8"
LANG="zh_CN.gb2312"

[root@shard1 ~]# locale
LANG=zh_CN.gb2312
LC_CTYPE="zh_CN.gb2312"
LC_NUMERIC="zh_CN.gb2312"
LC_TIME="zh_CN.gb2312"
LC_COLLATE="zh_CN.gb2312"
LC_MONETARY="zh_CN.gb2312"
LC_MESSAGES="zh_CN.gb2312"
LC_PAPER="zh_CN.gb2312"
LC_NAME="zh_CN.gb2312"
LC_ADDRESS="zh_CN.gb2312"
LC_TELEPHONE="zh_CN.gb2312"
LC_MEASUREMENT="zh_CN.gb2312"
LC_IDENTIFICATION="zh_CN.gb2312"
LC_ALL=

8.当修改字符集后在Linux平台使用disql工具创建List分区表sales时对分区键指定中文时,当指定多个列表值时创建成功

[dmdba@shard1 bin]$ ./disql jy/abcd@10.10.10.1:5236

Server[10.10.10.1:5236]:mode is normal, state is open
login used time: 9.677(ms)
disql V7.1.6.46-Build(2018.02.08-89107)ENT 
Connected to: DM 7.1.6.46
SQL> drop table sales;
executed successfully
used time: 351.233(ms). Execute id is 2120.
SQL> CREATE TABLE SALES(
2   SALES_ID INT,
3   SALEMAN CHAR(20),
4   SALEDATE DATETIME,
5   CITY CHAR(10)
6   )
7   PARTITION BY LIST(CITY)
8   SUBPARTITION BY RANGE(SALEDATE) SUBPARTITION TEMPLATE(
9   SUBPARTITION P11 VALUES LESS THAN ('2012-04-01'),
10  SUBPARTITION P12 VALUES LESS THAN ('2012-07-01'),
11  SUBPARTITION P13 VALUES LESS THAN ('2012-10-01'),
12  SUBPARTITION P14 VALUES EQU OR LESS THAN (MAXVALUE))
13  (
14  PARTITION P1 VALUES ('北京','天津')
15  (
16  SUBPARTITION P11_1 VALUES LESS THAN ('2012-10-01'),
17  SUBPARTITION P11_2 VALUES EQU OR LESS THAN (MAXVALUE)
18  ),
19  PARTITION P2 VALUES ('上海','南京','杭州'),
20  PARTITION P3 VALUES (DEFAULT)
21  );
executed successfully
used time: 22.411(ms). Execute id is 2121.

从上面的测试来看,字符集对List分区表使用中文存在影响。

Linux 恢复rm -rf命令所删除的达梦数据文件

LINUX系统中被删除的文件,只要其句柄没有被关闭,可以在/proc//fd中找到其对应的文件副本。其中指打开该文件的进程id。利用该方法,结合OS命令,DM7提供失效文件的恢复方案,下面用示例来演示:
1.创建一个表空间cs,给其创建两个数据文件

SQL> create tablespace cs datafile '/dm_home/dmdba/dmdbms/data/jydm/cs1.dbf' size 128,'/dm_home/dmdba/dmdbms/data/jydm/cs.dbf' size 128;
executed successfully
used time: 00:00:21.941. Execute id is 90.

2.找出达梦服务器进程ID

[root@cs1 jydm]# ps -ef | grep dmserver
dmdba     2467     1  0 10月15 ?       00:05:53 /dm_home/dmdba/dmdbms/bin/dmserver /dm_home/dmdba/dmdbms/data/jydm/dm.ini -noconsole
root     18893 18058  0 21:45 pts/1    00:00:00 grep --color=auto dmserver

3.显示达梦服务器进程所打开的文件列表

[root@cs1 jydm]# ls /proc/2467/fd -l
总用量 0
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 0 -> /dev/null
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 1 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 10 -> /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 11 -> /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 12 -> /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 13 -> /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 14 -> pipe:[21853]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 15 -> pipe:[21853]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 16 -> pipe:[21854]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 17 -> pipe:[21854]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 18 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 19 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 2 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 20 -> pipe:[21856]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 21 -> pipe:[21856]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 22 -> socket:[297043807]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 23 -> /dm_home/dmdba/dmdbms/data/jydm/cs1.dbf
lrwx------ 1 dmdba dinstall 64 10月 25 21:42 24 -> /dm_home/dmdba/dmdbms/data/jydm/cs.dbf
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 3 -> socket:[20041]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 4 -> socket:[20042]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 5 -> /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 6 -> /dm_home/dmdba/dmdbms/data/jydm/dminst.sys
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 7 -> /dm_home/dmdba/dmdbms/data/jydm/TEMP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 8 -> /dm_home/dmdba/dmdbms/data/jydm/jydm01.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 9 -> /dm_home/dmdba/dmdbms/data/jydm/jydm02.log

4.删除表空间cs中的一个数据文件

[root@cs1 jydm]# rm -rf cs.dbf

5.通过调用系统过程SP_FILE_SYS_CHECK()来手动的对表空间失效文件进行检查。

SQL> call SP_FILE_SYS_CHECK();
DMSQL executed successfully
used time: 0.690(ms). Execute id is 93.

6.在表空间cs中创建一个测试表cs,命令执行出错,显示表空间cs中的cs.dbf文件已经被删除了。

SQL> create table cs(cs_id number) tablespace cs;
create table cs(cs_id number) tablespace cs;
[-3430]:tablespace[CS] file[/dm_home/dmdba/dmdbms/data/jydm/cs.dbf] has been deleted.
used time: 31.462(ms). Execute id is 0.

7.调用系统过程SP_TABLESPACE_PREPARE_RECOVER(tablespace_name)准备进行恢复

SQL> call SP_TABLESPACE_PREPARE_RECOVER('CS');
DMSQL executed successfully
used time: 16.121(ms). Execute id is 95.

8.显示达梦服务器进程所打开的文件列表,可以看到cs.dbf文件被标示为deleted了。

[root@cs1 jydm]# ls /proc/2467/fd -l
总用量 0
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 0 -> /dev/null
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 1 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 10 -> /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 11 -> /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 12 -> /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 13 -> /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 14 -> pipe:[21853]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 15 -> pipe:[21853]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 16 -> pipe:[21854]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 17 -> pipe:[21854]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 18 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 19 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 2 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 20 -> pipe:[21856]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 21 -> pipe:[21856]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 22 -> socket:[297043807]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 23 -> /dm_home/dmdba/dmdbms/data/jydm/cs1.dbf
lrwx------ 1 dmdba dinstall 64 10月 25 21:42 24 -> /dm_home/dmdba/dmdbms/data/jydm/cs.dbf (deleted)
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 3 -> socket:[20041]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 4 -> socket:[20042]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 5 -> /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 6 -> /dm_home/dmdba/dmdbms/data/jydm/dminst.sys
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 7 -> /dm_home/dmdba/dmdbms/data/jydm/TEMP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 8 -> /dm_home/dmdba/dmdbms/data/jydm/jydm01.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 9 -> /dm_home/dmdba/dmdbms/data/jydm/jydm02.log

9.使用操作系统的cp命令将文件(cs.dbf)复制到原位置

[root@cs1 jydm]# cp /proc/2467/fd/24 /dm_home/dmdba/dmdbms/data/jydm/cs.dbf
[root@cs1 jydm]# ls -lrt
总用量 1365112
drwxr-xr-x 2 dmdba dinstall         6 7月  23 22:12 bak
-rw-r--r-- 1 dmdba dinstall       479 7月  23 22:12 sqllog.ini
-rw-r--r-- 1 dmdba dinstall       633 7月  23 22:13 dm_service.prikey
drwxr-xr-x 2 dmdba dinstall         6 7月  23 22:14 HMAIN
-rw-r--r-- 1 dmdba dinstall       908 7月  23 22:14 dminit20180723221249.log
-rw-r--r-- 1 dmdba dinstall       890 7月  23 22:14 dmarch_example.ini
-rw-r--r-- 1 dmdba dinstall      1966 7月  23 22:14 dmdcr_cfg_example.ini
-rw-r--r-- 1 dmdba dinstall       631 7月  23 22:14 dmdcr_example.ini
-rw-r--r-- 1 dmdba dinstall      2070 7月  23 22:14 dmmal_example.ini
-rw-r--r-- 1 dmdba dinstall      1537 7月  23 22:14 dminit_example.ini
-rw-r--r-- 1 dmdba dinstall      1277 7月  23 22:14 dmmonitor_example.ini
-rw-r--r-- 1 dmdba dinstall      1679 7月  23 22:14 dmtimer_example.ini
-rw-r--r-- 1 dmdba dinstall       288 7月  23 22:14 dmmpp_example.ini
-rw-r--r-- 1 dmdba dinstall      1241 7月  23 22:14 dmwatch_example.ini
-rw-r--r-- 1 dmdba dinstall      2146 7月  23 22:14 dmwatcher_example.ini
-rw-r--r-- 1 dmdba dinstall       522 7月  23 22:14 dmwmon_example.ini
-rw-r--r-- 1 dmdba dinstall       636 7月  23 22:14 sqllog_example.ini
drwxr-xr-x 2 dmdba dinstall         6 7月  23 22:14 trace
-rw-r--r-- 1 dmdba dinstall        12 7月  23 22:14 rep_conflict.log
-rw-r--r-- 1 dmdba dinstall 157286400 7月  23 22:16 BOOKSHOP.DBF
-rw-r--r-- 1 dmdba dinstall 134217728 7月  23 22:16 DMHR.DBF
-rw-r--r-- 1 dmdba dinstall     40859 8月  20 15:20 dm.ini
-rw-r--r-- 1 dmdba dinstall  10485760 10月 15 12:21 TEMP.DBF
-rw-r--r-- 1 dmdba dinstall 268435456 10月 15 12:21 jydm02.log
-rw-r--r-- 1 dmdba dinstall 134217728 10月 25 21:24 MAIN.DBF
-rw-r--r-- 1 dmdba dinstall 134217728 10月 25 21:43 cs1.dbf
-rw-r--r-- 1 dmdba dinstall      7168 10月 25 21:43 dm.ctl
drwxr-xr-x 2 dmdba dinstall      4096 10月 25 21:43 ctl_bak
-rw-r--r-- 1 dmdba dinstall 134217728 10月 25 21:43 ROLL.DBF
-rw-r--r-- 1 dmdba dinstall  22020096 10月 25 21:59 SYSTEM.DBF
-rw-r--r-- 1 dmdba dinstall 268435456 10月 25 21:59 jydm01.log
-rw-r--r-- 1 root  root     134217728 10月 25 21:59 cs.dbf
-rw-r--r-- 1 dmdba dinstall       220 10月 25 21:59 dminst.sys

10.复制成功后,调用系统过程SP_TABLESPACE_RECOVER(ts_name)完成表空间失效文件的恢复。注意,要保证数据文件正确修复,需要保证在SP_TABLESPACE_PREPARE_RECOVER后进行数据文件的复制。

SQL> call SP_TABLESPACE_RECOVER('CS');
DMSQL executed successfully
used time: 46.532(ms). Execute id is 96.

11.再次在表空间cs中创建测试表cs命令成功执行

SQL> create table cs(cs_id number) tablespace cs;
executed successfully
used time: 36.913(ms). Execute id is 97.

到此,在Linux系统中恢复被删除的表空间文件恢复成功了。

DM7修改数据库参数

在DM7中可以DBA可以在DM数据库运行过程中执行SF_GET_PARA_VALUE、SF_GET_PARA_DOUBLE_VALUE和SF_GET_PARA_STRING_VALUE这三个函数来获取系统的当前配置参数,并且可以使用SP_SET_PARA_VALUE,SP_SET_PARA_DOUBLE_VALUE和SP_SET_PARA_STRING_VALUE过程来修改静态/动态配置参数.

SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64)该过程用于修改整型静态配置参数和动态配置参数。SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,
此时可用来修改静态配置参数和动态配置参数。当SCOPE等于1,试图修改静态配置参数时服务器会返回错误信息。只有具有DBA角色的用户才有权限调用SP_SET _PARA_VALUE。

SP_SET_PARA_DOUBLE_VALUE (scope int, paraname varchar(8187),alue double)该过程用于修改浮点型静态配置参数和动态配置参数。SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。当SCOPE等于1,试图修改静态配置参数时服务器会返回错误信息。只有具有DBA角色的用户才有权限调用SP_SET_PARA_DOUBLE_VALUE。

SF_SET_SYSTEM_PARA_VALUE (paraname varchar(256), value int64\double\varchar(256), deferred int, scope int64)该过程用于修改系统整型、double、varchar的静态配置参数或动态配置参数。DEFERRED参数,为0表示当前session修改的参数立即生效,为1表示当前session不生效,后续再生效,默认为0。SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。只有具有DBA角色的用户才有权限调用SF_SET_SYSTEM_PARA_VALUE。

DM的动态INI参数分为系统级和会话级两种级别。会话级参数在服务器运行过程中被修改时,之前创建的会话不受影响,只有新创建的会话使用新的参数值。
1. SF_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint) 设置某个会话级INI参数的值,设置的参数值只对本会话有效。
2. SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187)) 重置某个会话级INI参数的值,使得这个INI参数的值和系统INI参数的值保持一致。
3. SF_GET_SESSION_PARA_VALUE (paraname varchar(8187)) 获得当前会话的某个会话级INI参数的值。

下面修改动态参数enable_auidt,scope=1同时修改内存和dm.ini文件

SQL> call sp_set_para_value(1,'ENABLE_AUDIT',1);
DMSQL executed successfully
used time: 87.566(ms). Execute id is 199.

SQL> select sf_get_para_value(1,'ENABLE_AUDIT');

LINEID     SF_GET_PARA_VALUE(1,'ENABLE_AUDIT')
---------- -----------------------------------
1          1

used time: 10.131(ms). Execute id is 200.

查询v$dm_ini视图可以看到,当前dm.ini文件中也被修改了因为file_value=1

SQL> select * from v$dm_ini where para_name='ENABLE_AUDIT';

LINEID     PARA_NAME    PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION                                                                             PARA_TYPE
---------- ------------ ---------- --------- --------- ------- ---------- ---------- --------------------------------------------------------------------------------------- ---------
1          ENABLE_AUDIT 1          0         2         N       1          1          Flag For Allowing Audit, 0: no audit 1: normal audit  2:normal audit and realtime audit SYS

used time: 201.366(ms). Execute id is 206.

查询v$parameter视图可以看到,当前内存中也被修改了因为sys_value=1

SQL> select * from v$parameter where name='ENABLE_AUDIT';

LINEID     ID          NAME         TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION                                                                            
---------- ----------- ------------ ---- ----- --------- ---------- ---------------------------------------------------------------------------------------
1          385         ENABLE_AUDIT SYS  1     1         1          Flag For Allowing Audit, 0: no audit 1: normal audit  2:normal audit and realtime audit

used time: 7.130(ms). Execute id is 207.

下面修改动态参数enable_auidt,scope=2只修改dm.ini文件

SQL> call sp_set_para_value(2,'ENABLE_AUDIT',0);
DMSQL executed successfully
used time: 29.707(ms). Execute id is 208.

SQL> select sf_get_para_value(1,'ENABLE_AUDIT');

LINEID     SF_GET_PARA_VALUE(1,'ENABLE_AUDIT')
---------- -----------------------------------
1          0

查询v$dm_ini视图可以看到,当前dm.ini文件中也被修改了因为file_value=0,sess_value=1

SQL>  select * from v$dm_ini where para_name='ENABLE_AUDIT';

LINEID     PARA_NAME    PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION                                                                             PARA_TYPE
---------- ------------ ---------- --------- --------- ------- ---------- ---------- --------------------------------------------------------------------------------------- ---------
1          ENABLE_AUDIT 1          0         2         N       1          0          Flag For Allowing Audit, 0: no audit 1: normal audit  2:normal audit and realtime audit SYS

used time: 5.207(ms). Execute id is 209.

查询v$parameter视图可以看到,当前内存中也被修改了因为sys_value=1

SQL> select * from v$parameter where name='ENABLE_AUDIT';

LINEID     ID          NAME         TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION                                                                            
---------- ----------- ------------ ---- ----- --------- ---------- ---------------------------------------------------------------------------------------
1          385         ENABLE_AUDIT SYS  1     1         0          Flag For Allowing Audit, 0: no audit 1: normal audit  2:normal audit and realtime audit


SQL> call sp_set_para_value(1,'SQL_TRACE_MASK',2);
call sp_set_para_value(1,'SQL_TRACE_MASK',2);
[-3503]:Invalid procedure parameter.
used time: 115.071(ms). Execute id is 0.

这里报错了,是因为SQl_TRACE_MASK参数值为字符串类型,如是可以使用以下函数来执行

SQL> call sp_set_para_string_value(1,'SQL_TRACE_MASK','2');
DMSQL executed successfully
used time: 377.128(ms). Execute id is 194.

修改成功后可以执行以下函数来验证是否成功

SQL> select sf_get_para_string_value(1,'SQL_TRACE_MASK');

LINEID     SF_GET_PARA_STRING_VALUE(1,'SQL_TRACE_MASK')
---------- --------------------------------------------
1          2

used time: 246.480(ms). Execute id is 198.

如果想要简单可以直接使用sf_set_system_para_value来修改参数就不用管参数的类型

SQL> call sf_set_system_para_value('SQL_TRACE_MASK','1',0,1);
DMSQL executed successfully
used time: 23.178(ms). Execute id is 212.

SQL> select sf_get_para_string_value(1,'SQL_TRACE_MASK');

LINEID     SF_GET_PARA_STRING_VALUE(1,'SQL_TRACE_MASK')
---------- --------------------------------------------
1          1

used time: 5.660(ms). Execute id is 214.

达梦DIsql

DIsql工具是一款类似于SQL*Plus的工具,这里介绍如何启动DIsql并成功登录到数据库、如何远程登录到其他数据库、如何使用以及如何退出DIsql。
启动DIsql
为了使用DIsql,必须首先要启动DIsql。DIsql工具可以广泛用于各种操作系统,如WINDOWS、LINUX等。启动之后,当出现“SQL&gt”符号时,用户就可以利用DM提供的SQL语句和数据库进行交互操作了,需要注意的是,在DIsql中SQL语句应以分号“;”结束。对于执行语句块,创建触发器,存储过程,函数,包,模式等时需要用“/”结束。
1.1在WINDOWS系统中启动DIsql
WINDOWS环境下,有两种启动DIsql的方式。第一种是启动安装软件后生成的程序菜单,第二种是启动安装目录下自带的DIsql工具。
1.1.1程序菜单启动
如果在WINDOWS环境中安装了DM数据库产品,那么可以在应用菜单中找到SQL交互式查询工具,直接双击即可启动。然后使用LOGIN或CONN命令登录到指定数据库。LOGIN或CONN命令下文有详细介绍。以LOGIN为例,登录到IP地址为10.18.30.190的机器上,用户名和密码为:SYSDBA/SYSDBA,端口号为5236。其他全部敲回车,采用缺省输入。密码不会回显到屏幕上。

disql V7.1.6.48-Build(2018.03.01-89507)ENT
SQL> login
服务名:10.18.30.190
用户名:sysdba
密码:
端口号:5236
SSL路径:
SSL密码:
UKEY名称:
UKEY PIN码:
MPP类型:
是否读写分离(y/n):n
协议类型:

服务器[10.18.30.190:5236]:处于普通打开状态
登录使用时间 :380.428(ms)
SQL>

也可以全部直接回车,采用缺省输入,登录到本地DM数据库。缺省值请参考下文LOGIN命令
1.1.2自带DIsql工具启动
DIsql工具位于DM数据库安装目录的bin子目录下,例如DM数据库的安装目录为E:\dmdbms,则DIsql位于E:\dmdbms\bin\DIsql.exe。双击启动,然后输入用户名、密码,就可登录到本地DM数据库实例。密码不会回显到屏幕上。也可以全部直接回车,采用缺省输入,缺省值为SYSDBA/SYSDBA。

disql V7.1.6.48-Build(2018.03.01-89507)ENT
用户名:sysdba
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 58.363(毫秒)
Connected to: DM 7.1.6.48
SQL>

如果后续操作想登录到其他DM数据库实例,可使用LOGIN或CONN命令。

SQL> conn sysdba/sysdba@10.18.30.190:5236

服务器[10.18.30.190:5236]:处于普通打开状态
登录使用时间: 23.443(毫秒)

1.2命令行启动DIsql
命令行启动DIsql适用于任何操作系统平台。

1.2.1命令行启动
从命令行启动DIsql并登录到数据库。在命令行工具中找到DIsql所在安装目录D:\dmdbms\bin,输入DIsql和登录方式后回车。登录方式在下一节详细介绍。登录界面如下:
windows平台

C:\Users\Administrator>E:

E:\>cd dmdbms\bin

E:\dmdbms\bin>disql sysdba/xxzx@10.18.30.190:5236

服务器[10.18.30.190:5236]:处于普通打开状态
登录使用时间: 17.195(毫秒)
disql V7.1.6.48-Build(2018.03.01-89507)ENT
Connected to: DM 7.1.6.46
SQL>

Linux平台

[dmdba@cs1 bin]$ ./disql sysdba/xxzx@10.18.30.190:5236

Server[10.18.30.190:5236]:mode is normal, state is open
login used time: 10.709(ms)
disql V7.1.6.46-Build(2018.02.08-89107)ENT 
Connected to: DM 7.1.6.46
SQL> 

1.2.2 DIsql登录方式
DIsql的登录方式。
语法如下:

DIsql [ [<option>] [<logon> | /NOLOG] [<start>] ]
<option>::=HELP|-H|-S
<logon>::=<username>[/<password>][*<MPP_TYPE>][@<server>][:<port>][?{UDP|TCP}]

[#<sslpath>@ssl_pwd]
<start>::=<`运行脚本>|<start运行脚本>|<直接执行语句>
<`运行脚本>::=`<file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
<start运行脚本>::=START <file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
<直接执行语句>::= -E “<SQL语句>{;<SQL语句>}”

文中语法符号规定:<>内的内容是必选项;
[]内的内容是可选项;{}内的内容可以出现一次或多次
|为或者;::=为定义符。后文语法用法与此相同。

DIsql登录方式参数介绍
HELP|-H|-S
HELP或-H表示显示DIsql版本信息和帮助信息;-S表示设置DIsql界面为隐藏模式,隐藏命令的<SQL&gt标识符。

[dmdba@cs1 bin]$ ./disql -h
disql V7.1.6.46-Build(2018.02.08-89107)ENT 
DISQL usage1:disql -h  show disql version and help message

DISQL usage2:disql [ [<option>] [{logon | /nolog}] [<start>] ]

<option>:-S set no show model, hidden disql flag

 <logon> : {<username>[/<password>][*<MPP_TYPE>][@<connect_identifier>] | /} [AS <SYSDBA|SYSSSO|

SYSAUDITOR|AUTO>]
 <connect_identifier> :{[<SERVER>][:<PORT>][?{UDP|TCP|IPC|RDMA}][#<sslpath>][@<sslpwd>]}

 if ipv6 address,[] is needed. For example [fe80::1e6f:65ff:fed1:3724%6]

<start> : `<filename>[<parameter> ...] run disql bash

/NOLOG option can run disql, while not connected to DM server

<username>
指定数据库的用户名。缺省用户名为SYSDBA。

<password>
指定数据库的密码。缺省密码为SYSDBA。输入密码时,如遇到特殊字符需要特别处理。特殊字符包括关键字符和双引号等。特殊字符的处理见下文。

<MPP_TYPE>
指MPP类型。MPP 类型是MPP登录属性,此属性的设置对非MPP系统没有影响。此属性的有效值为GLOBAL和LOCAL,默认为GLOBAL。GLOBAL表示MPP环境下建立的会话为全局会话,对数据库的操作在所有节点进行;LOCAL表示MPP环境下建立的会话为本地会话,对数据库的操作只在本地节点进行。

<server>
指定服务器的IP地址或是在dm_svc.conf中配置的网络服务名。dm_svc.conf的配置请参考《DM7系统管理员手册》的2.1.1节。例如:在dm_svc.conf中配置服务名dmrac_svc =(192.168.0.38:5236, 192.168.0.38:5237)。然后就可以使用服务名登录了:
DIsql SYSDBA/SYSDBA@dmrac_svc使用服务名的好处是第一个IP连不通,会自动连接下一个。



UDP|TCP
指定使用UDP协议或TCP协议。缺省为TCP。例如:DIsql SYSDBA/SYSDBA@localhost:5236?UDP

[#<sslpath>@ssl_pwd]
通信加密中客户端证书存放的地址和客户端证书密钥。各用户只能使用自己的证书,例如SYSDBA账户只能使用\bin\CLIENT_SSL\SYSDBA下的证书和密码,如果证书没有密码可以用缺省或任意数字代替。例如:DIsql SYSDBA/SYSDBA@192.168.0.38:5236#D:\dmdbms\bin\client_ssl\SYSDBA@12345 缺省为不加密。


/NOLOG

表示启动DIsql 而不登录到服务器。此时可以进行DIsql的显示设置和本地变量操作。如果没有/NOLOG选项必须登录服务器,不带参数的时候提示输入用户名和密码,此时的用户名和密码用法参考<logon>。且登录三次失败后退出DIsql。

<start>
运行DIsql脚本文件。
例如,假设a.sql是路径为“c:\”的任意脚本文件:DIsql -S SYSDBA/SYSDBA@192.168.0.80:5236 `c:\a.sql。如果在linux环境下使用,<start>外需要加上单引号,如:'`" < file_path >"'。

<file_path>
运行DIsql脚本文件的绝对路径。

<PARAMETER_VALUE>
传给<file_path>脚本文件中本地变量的参数值,将其中的参数内容传给变了&1,&2,&3…以此类推。

<直接执行语句>
使用-E参数,将在运行DIsql时直接执行后续的一条或多条SQL语句。例如:DIsql SYSDBA/SYSDBA -e "SELECT TOP 1 * FROM SYSOBJECTS; SELECT TOP 1 * FROM V$CMD_HISTORY"。


<password>中特殊字符的处理方法,不同操作系统,处理方法不同。
1.不同操作系统
WINDOWS系统
DIsql的关键字符,DIsql的要求对连接串的特殊字符需要使用双引号括起来”aaaa/aaaa”, 操作系统的要求需要再在最外加双引号和转义”””aaaa/aaaa”””。例如:用户名为user01,密码为aaaa/aaaa,那么连接串要写成:DIsql user01/”””aaaa/aaaa”””
空格,需要使用双引号括起来作为一个整体(这是操作系统的要求)。例如:用户名为user01,密码为aaaa aaaa ,那么连接串要写成:DIsql user01/”aaaa aaaa”双引号,DIsql要求对双引号需要使用双引号括起来,同时双引号需要转义”aaaa””aaaa”;操作系统要求再对双引号转义和最外层加双引号”””aaaa””””aaaa”””。例如:用户名为user01,密码为aaaa”aaaa ,那么连接串要写成:DIsql user01/”””aaaa””””aaaa”””。


LINUX系统
LINUX环境下,密码中的特殊字符处理过程既要考虑操作系统的要求,又要考虑DIsql的要求。首先,操作系统的要求。
bash的引号设计为:在单引号中,所有的特殊字符都失去其特殊含义;在双引号中,特殊字符包括:美元符($)、反引号(`)、转义符(\)、感叹号(!)。如果密码中没有单引号的,应该都只有外面加单引号就可以解决了;如果密码只有单引号,那么可以将单引号用双引
号括起来;如果既有单引号又有美元符($)、反引号(`)、转义符(\)、感叹号(!)四个特殊字符,那么在特殊字符之前全部加\转义就好了。
例如: 'aaaa\aaaa' 传给disql为aaaa\aaaa。
"aaaa'aaaa" 传给disql为aaaa'aaaa。
"aaa'\$aaaa" 传给disql为aaa'$aaaa。

其次,在操作系统要求的基础上,增加DIsql对关键字和双引号的要求。
DIsql的关键字符,DIsql的要求对连接串的特殊字符需要使用双引号括起来。例如:密码为aaaa\aaaa,使用双引号括起来“aaaa\aaaa”,因为此密码中不含有单引号,根据操作系统的要求直接在最外面加单引号。例如:用户名为user01,密码为aaaa/aaaa,那么连接串要写成:./DIsql user01/’”aaaa/aaaa”’。

双引号,DIsql要求对双引号需要使用双引号括起来,同时双引号需要转义。例如:密码为aaa”\aaaa,那么根据DIsql的要求加双引号同时转义为”aaa””\aaaa”,因为没有单引号,根据操作系统的要求直接加单引号。例如:用户名为user01,密码为aaa”\aaaa,那么连接串要写成:./DIsql user01/’”aaa””\aaaa”’。


单引号,根据操作系统的要求,只能将单引号放入双引号中。例如:用户名为user01,密码为aaaa'aaaa,那么连接串要写成:./DIsql user01/”aaaa'aaaa”。

单引号+操作系统下的特殊字符,根据操作系统的要求,因为单引号只能放在双引号内,同时双引号中还有一些特殊字符不能被识别需要加反斜杠转义。例如: 用户名为user01,密码为aaa'$aaaa,使用双引号括起来,同时对$加反斜杠转义。那么连接串要写成:./DIsql user01/”aaa'\$aaaa”。


单引号+双引号,根据操作系统的要求,单引号需要放在双引号中,在双引号中表示双引号则使用反斜杠转义双引号。例如: 用户名为user01,密码为aaa”'aaaa,根据DIsql的要求双引号作为特殊字符,需要使用双引号在括起来,同时使用双引号对双引号转义”aaa””'aaaa”;同时考虑操作系统的要求,因为含有单引号,只能将整个密码放入双引号中,同时对双引号使用反斜杠转义,那么连接串要写成:./DIsql user01/”\”aaa\”\”'aaaa\””。

2.如何转义双引号
1) DIsql的要求使用双引号对双引号内的双引号转义。
2) WINDOWS命令行,使用双引号或者反斜杠对双引号内的双引号转义。
3) LINUX命令行,使用反斜杠对双引号内的双引号转义。



<start>命令中:<`运行脚本>既可以在DIsql启动时使用,也可以在进入DIsql界面之后使用。而<start运行脚本>只能在进入DIsql界面之后才能使用。


2切换登录
用户进入DIsql界面后,如果想切换到其他DM数据库实例。有两种实现方式:一是使用LOGIN命令;二是使用CONN命令。登录到远程数据库,必须在服务名处使用IP地址或网络服务名。
2.1 LOGIN /LOGOUT
1. LOGIN登录主库建立会话
disql V7.1.6.48-Build(2018.03.01-89507)ENT
SQL> login
服务名:10.138.130.190
用户名:sysdba
密码:
端口号:5236
SSL路径:
SSL密码:
UKEY名称:
UKEY PIN码:
MPP类型:
是否读写分离(y/n):n
协议类型:

服务器[10.138.130.190:5236]:处于普通打开状态
登录使用时间 :26.018(ms)

服务名:数据库服务名或IP地址。LOCALHOST表示本地服务器。默认为LOCALHOST。
用户名和密码:默认均为SYSDBA,密码不回显。
端口号:默认为5236。
SSL路径和SSL密码:用于服务器通信加密,不加密的用户不用设置,缺省为不设置。
UKEY名称和UKEY PIN码:供使用UKEY的用户使用,普通用户不用设置,缺省为不使用。
MPP 类型:参见上一节<MPP_TYPE&gt,MPP类型是MPP登录属性,此属性的设置对非MPP系统没有影响。此属性的有效值
为GLOBAL和LOCAL,默认为GLOBAL。
是否读写分离(y/n):默认n。如果输入y,会提示:读写分离百分比(0-100)。用户根据需要输入相应的百分比,如果
输入的百分比不合法,那就相当于没有设置。
登录成功后会显示登录时间。

2. LOGOUT从登录主库注销会话
LOGOUT命令从登录主库注销会话。断开连接而不退出DIsql

SQL> logout

2.2 CONN[ECT] /DISCONN[ECT]

1. CONN[ECT] 连接
CONN[ECT]命令与login命令相似,增加的功能是,可以在命令之后直接跟<username&gt[/<password&gt][*<MPP_TYPE&gt]

[@<server&gt],或者跟<username&gt,然后按照DIsql提示输入<password&gt来连接。
语法如下:

CONN[ECT] <username&gt[/<password&gt][*<MPP_TYPE&gt] [@<server&gt]
或者
CONN[ECT] <username&gt

<password&gt:密码。如果密码中有特殊字符,需要特别处理。特殊字符指密码串中含有的关键字符(/@:#*[]) 或双引号***221;。具体处理如下:

关键字符,需要用双引号括起连接串中的密码串。例如:用户名user01,密码为aaaa/aaaa,那么连接串要写成:

conn user01/"aaaa/aaaa"。

双引号,需要用双引号括起连接串中的密码串,同时双引号还需要用双引号***221;或反斜杠/转义。例如:用户名user01,密码为aaaa***221;aaaa ,那么连接串要写成conn user01/***221;aaaa***221;***221;aaaa***221;。

使用CONN[ECT]命令建立新会话时,会自动断开先前会话。


SQL> conn sysdba/xxzx7817600@10.18.30.190:5236

Server[10.18.30.190:5236]:mode is normal, state is open
login used time: 10.735(ms)

2. DISCONN[ECT] 断开连接
DISCONN[ECT]:断开连接而不退出DIsql。与logout功能一样。

SQL> disconnect
not connected

3使用DIsql
以一个简单的查询例子来说明如何使用DIsql。只需要输入一条SQL语句,回车即可。DIsql将SQL语句发送给DM数据库服务器并显示服务器返回的结果。SQL语句如何书写请参考《DM7_SQL语言使用手册》。

SQL> select top 5 name,id from sysobjects;

LINEID     NAME       ID         
---------- ---------- -----------
1          SYSOBJECTS 0
2          SYSINDEXES 1
3          SYSCOLUMNS 2
4          SYSUSER$   3
5          SYSCONS    4

used time: 2.961(ms). Execute id is 2096.

4退出DIsql
使用EXIT/QUIT命令,退出DIsql。
语法如下:
EXIT|QUIT

SQL> exit
[dmdba@cs1 bin]$ 

DIsql与SQL*Plus有很多类似,对于有Oracle学习经验的从业者来说还是很容易上手的。

Oracle Linux 7.1中安装达梦数据库DM7

一安装前准备工作
1.1检查Linux(Unix)系统信息
用户在安装DM前,需要检查当前操作系统的相关信息,确认DM安装程序与当前操作系统匹配,以保证DM能够正确安装和运行。用户可以使用以下命令检查操作系统基本信息。如下图所示:
#获取系统位数

[root@cs1 ~]# getconf LONG_BIT
64 

#查询操作系统release信息

[root@cs1 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.1

#查询系统信息

[root@cs1 ~]# cat /etc/issue
Oracle Linux Server release 7.1
Kernel \r on an \m 

#查询系统名称

[root@cs1 ~]# uname -a
Linux cs1.jy.net 3.8.13-55.1.6.el7uek.x86_64 #2 SMP Wed Feb 11 14:18:22 PST 2015 x86_64 x86_64 x86_64 GNU/Linux

1.2创建安装用户
为了减少对操作系统的影响,用户不应该以root系统用户来安装和运行DM。用户可以在安装之前为DM创建一个专用的系统用户。
1. 创建安装用户组dinstall。

[root@cs1 soft]# groupadd dinstall

2. 创建安装用户dmdba。

[root@cs1 soft]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba 

3. 初始化用户密码。

[root@cs1 soft]# passwd dmdba
Changing password for user dmdba.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.。

注意:创建安装系统用户完成后,安装手册之后的操作默认使用安装系统用户进行操作。

1.3 Linux(Unix)下检查操作系统限制
在Linux(Unix)系统中,因为ulimit命令的存在,会对程序使用操作系统资源进行限制。为了使DM能够正常运行,建议用户检查当前安装用户的ulimit参数。
运行ulimit -a进行查询。如下图所示:

[root@cs1 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 61672
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 61672
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

参数使用限制:
1.data seg size
data seg size (kbytes, -d) 建议用户设置为1048576(即1GB)以上或unlimited(无限制),此参数过小将导致数据库启动失败。
2. file size
file size(blocks, -f) 建议用户设置为unlimited(无限制),此参数过小将导致数据库安装或初始化失败。
3. open files
open files(-n)建议用户设置为65536以上或unlimited(无限制)。
4.virtual memory
virtual memory (kbytes, -v) 建议用户设置为1048576(即1GB)以上或unlimited(无限制),此参数过小将导致数据库启动失败。
如果用户需要为当前安装用户更改ulimit的资源限制,请修改文件/etc/security/limits.conf。

[root@cs1 ~]# su - dmdba
Last login: Mon Jul 23 21:22:56 CST 2018 on pts/1
su: cannot open session: Permission denied
[root@cs1 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 61672
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 61672
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


[root@cs1 ~]# vi /etc/security/limits.conf
dmdba soft data unlimited
dmdba hard data unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536

 [root@cs1 ~]# su - dmdba
Last login: Mon Jul 23 21:23:10 CST 2018 on pts/1
[dmdba@cs1 ~]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 61672
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

可以通过命令unlimit进行设置

[dmdba@cs1 ~]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 61672
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

[dmdba@cs1 ~]$ ulimit -c unlimited

[dmdba@cs1 ~]$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 61672
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

1.4检查系统内存与存储空间
1.检查内存
为了保证DM的正确安装和运行,要尽量保证操作系统至少1GB的可用内存(RAM)。如果可用内存过少,可能导致DM安装或启动失败。用户可以使用以下命令检查操作内存:
#获取内存总大小

[root@cs1 ~]# grep MemTotal /proc/meminfo
MemTotal:        7914692 kB

#获取交换分区大小

[root@cs1 ~]# grep SwapTotal /proc/meminfo
SwapTotal:       8257532 kB

#获取内存使用详情

[root@cs1 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        7914692     2736024      837368     2744456     4341300     2162354
Swap:       8257532     1132852     7124680

2.检查存储空间
1) DM完全安装需要1GB的存储空间,用户需要提前规划好安装目录,预留足够的存储空间。用户在DM安装前也应该为数据库实例预留足够的存储空间,规划好数据路径和备份路径。用户可使用以下命令检查存储空间:
#查询目录/mount_point/dir_name可用空间

[root@cs1 ~]# df -h /
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/ol-root   72G   47G   26G  65% /

2) DM安装程序在安装时将产生临时文件,临时文件需要1GB的存储空间,临时文件目录默认为/tmp。用户可以使用以下命令检查存储空间。如下图所示:

[root@cs1 ~]# df -h /tmp
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/ol-root   72G   47G   26G  65% /

如果/tmp目录不能保证1GB的存储空间,用户可以扩展/tmp目录存储空间或者通过设置环境变量DM_INSTALL_TMPDIR指定安装程序的临时目录。具体命令如下所示:
#以BASH为例:

mkdir -p /mount_point/dir_name 
DM_INSTALL_TMPDIR=/mount_point/dir_name 
export DM_INSTALL_TMPDIR

二.安装DM
用户应登录或切换到安装系统用户,进行以下安装步骤的操作(注:不建议使用root系统用户进行安装)。将DM上传到/soft目录中,然后解压软件包

[root@cs1 soft]# unzip DM_linux64.zip
Archive:  DM_linux64.zip
  inflating: dm7_setup_neokylin6_64_20180209.iso  
[root@cs1 soft]# ls -lrt
 
-rw-r--r--  1 root   root      493170688 Mar 19 11:24 dm7_setup_neokylin6_64_20180209.iso
-rw-r--r--  1 root   root      488814959 Jul 20 23:04 DM_linux64.zip

创建目录/soft/dm_soft用来存储挂载iso文件后来显示软件包中的文件

[root@cs1 soft]# mkdir dm_soft
[root@cs1 soft]# mount -t iso9660 -o loop dm7_setup_neokylin6_64_20180209.iso /soft/dm_soft

[root@cs1 dm_soft]# ls -lrt
total 481250
-r-xr-xr-x 1 root root   2207674 Feb  9 15:00 DM_Install_zh.pdf
-r-xr-xr-x 1 root root   2266249 Feb  9 15:00 DM_Install_en.pdf
-r-xr-xr-x 1 root root       959 Feb  9 15:01 release_zh.txt
-r-xr-xr-x 1 root root       854 Feb  9 15:01 release_en.txt
-r-xr-xr-x 1 root root 488322747 Feb  9 16:17 DMInstall.bin

在/soft/dm_soft目录下存在DMInstall.bin文件, DMInstall.bin文件就是DM的安装程序。在运行安装程序前,需要赋予DMInstall.bin文件执行权限。具体命令如下所示:

 
[root@cs1 dm_soft]#chmod 755  DMInstall.bin

2.1图形界面安装

[root@cs1 Desktop]# xhost +
access control disabled, clients can connect from any host
[root@cs1 Desktop]# su - dmdba
Last login: Mon Jul 23 21:47:18 CST 2018 on pts/0
[dmdba@cs1 ~]$ export DISPLAY=:1
[dmdba@cs1 dm_soft]$ ./DMInstall.bin

当安装进度完成时将会弹出对话框,提示使用root系统用户执行相关命令。用户可根据对话框的说明完成相关操作,之后可关闭此对话框,点击“完成”按钮结束安装

[root@cs1 /]# ./dm_home/dmdba/dmdbms/script/root/root_installer.sh
Move /dm_home/dmdba/dmdbms/bin/dm_svc.conf to /etc
Modify the files' mode of DM Server 
Create the DmAPService service
ln -s '/usr/lib/systemd/system/DmAPService.service' '/etc/systemd/system/multi-user.target.wants/DmAPService.service'
Finished to create the service (DmAPService)
Start the DmAPService service

2.2初始化数据库

[root@cs1 /]# mv /dm_home/dmdba/dmdbms/bin/DmServicejydm.service /usr/lib/systemd/system/DmServicejydm.service
[root@cs1 /]# systemctl enable DmServicejydm.service
ln -s '/usr/lib/systemd/system/DmServicejydm.service' '/etc/systemd/system/multi-user.target.wants/DmServicejydm.service'
[root@cs1 /]# systemctl start DmServicejydm.service

使用客户端工具来登录数据库来验证安装是否成功

到此,在Oracle Linux 7.1中安装达梦7就完成,对熟悉Oracle的朋友来说学习达梦数据库还是很容易上手的。

Proudly powered by WordPress | Indrajeet by Sus Hill.