软件包:
NeoKylin Linux A 6.0 x86_64bit(中标麒麟)
dm7_setup_rh6_64_ent_7.6.0.197_20190917
unixODBC-2.3.0.tar.gz

1.安装

1.1.安装环境检查

[root@localhost ~]# lsb_release -a            //查看操作系统
[root@localhost ~]# rpm -aq|grep glibc        //查看包
[root@localhost ~]# cat /proc/cpuinfo         //查看cpu
[root@localhost ~]# fdisk -l                  //查看磁盘信息
[root@localhost ~]# df -h                   //查看空间大小

1.2.创建用户和安装目录

[root@localhost ~]# mkdir /dm7             //创建安装目录
[root@localhost ~]# id dmdba               //规划用户dmdba,不建议使用root
id: dmdba:无此用户
[root@localhost ~]# groupadd dinstall
[root@localhost ~]# useradd -g dinstall dmdba
[root@localhost ~]# id dmdba
uid=500(dmdba) gid=503(dinstall) 组=503(dinstall)
[root@localhost ~]# passwd dmdba
更改用户 dmdba 的密码。
Enter new password:
Re-type new password:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]# chown -R dmdba:dinstall /dm7

1.3.环境变量配置

[dmdba@localhost ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export DM_HOME=/dm7
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH:$HOME/bin
[dmdba@localhost ~]$ source .bash_profile

1.4.设置文件最大打开数目

[root@localhost ~]# ulimit -n 65536
[root@localhost ~]# vi /etc/security/limits.conf
dmdba soft nofile 4096
dmdba hard nofile 65536
[root@localhost /]# su dmdba
[dmdba@localhost /]$ ulimit -a

1.5.安装数据库软件

[root@localhost /]# ls -l /dev|grep cdrom      //光盘驱动器
lrwxrwxrwx  1 root root           3  4月 16 15:21 cdrom -> sr
crw-irw----  1 root cdrom    21,   1  4月 16 15:15 sg1
brw-rw----+ 1 root cdrom    11,   0  4月 16 15:21 sr0
[root@localhost /]# mount -o loop /dev/cdrom /mnt/  //挂载安装盘
[root@localhost /]# cd mnt/
[root@localhost mnt]# ll
总用量 575058
-r-xr-xr-x 1 root root 584382798  9月 16 2019 DMInstall.bin
-r-xr-xr-x 1 root root   2266249  9月 12 2019 DM_Install_en.pdf
-r-xr-xr-x 1 root root   2207674  9月 12 2019 DM_Install_zh.pdf
-r-xr-xr-x 1 root root       868  9月 12 2019 release_en.txt
-r-xr-xr-x 1 root root       973  9月 12 2019 release_zh.txt
[dmdba@localhost root]$ cd /mnt
[dmdba@localhost mnt]$ export DISPLAY=192.168.116.1:0.0   //配置远程图形化显示
[dmdba@localhost mnt]$ xhost +
access control disabled, clients can connect from any host
xhost:  must be on local machine to enable or disable access control.
[dmdba@localhost mnt]$ ./DMInstall.bin

1.6.卸载软件
已经存数据库,停止数据库,执行uninstall.sh
只安装了软件,可以直接执行uninstall.sh
脚本uninstall.sh在安装目录下

1.7.初始化数据库

[dmdba@localhost bin]$ ./dminit path=/dm7/data DB_NAME=DM02 instance_name=DM02 PORT_NUM=5239
[root@localhost /]# cd /dm7/script/root/
[root@localhost root]# ./dm_service_installer.sh -t dmserver -i /dm7/data/DM02/dm.ini -p DM02
移动服务脚本文件(/dm7/bin/DmServiceDM02 到 /etc/rc.d/init.d/DmServiceDM02)
创建服务(DmServiceDM02)完成
[root@localhost root]# service DmServiceDM02 start

1.8.图形界面工具介绍

[root@localhost tool]# ./console      //DM控制台工具
[root@localhost tool]# ./dbca.sh      //数据库配置助手
[root@localhost tool]# ./dmservice.sh  //服务查看器
[root@localhost tool]# ./dts          //DM数据迁移工具
[root@localhost tool]# ./manager     //DM管理工具
[root@localhost tool]# ./monitor      //DM性能监视工具

2.DM7日常操作

2.1.数据库实例登录

[dmdba@localhost ~]$ source .bash_profile      //环境变量生效
[dmdba@localhost ~]$ disql sysdba/dameng123@localhost:5236   //目录在/dm7/bin/disql
服务器[localhost:5236]:处于普通打开状态
登录使用时间: 17.723(毫秒)
disql V7.6.0.197-Build(2019.09.12-112648)ENT
SQL>

2.2.数据库实例状态切换

SQL> select status$ from v$instance;
行号     STATUS$
---------- -------
1          OPEN
已用时间: 11.844(毫秒). 执行号:3.
SQL> alter database mount;
操作已执行
已用时间: 00:00:01.859. 执行号:0.
SQL> select status$ from v$instance;
行号     STATUS$
---------- -------
1          MOUNT
已用时间: 0.526(毫秒). 执行号:4.

2.3.启动数据库实例

[dmdba@localhost bin]$ ./dminit path=/dm7/data DB_NAME=DM03 instance_name=DM03 PORT_NUM=5237
[root@localhost /]# cd /dm7/script/root/
[root@localhost root]# ./dm_service_installer.sh -t dmserver -i /dm7/data/DM03/dm.ini -p DM03
移动服务脚本文件(/dm7/bin/DmServiceDM03 到 /etc/rc.d/init.d/DmServiceDM03)
创建服务(DmServiceDM03)完成
[root@localhost root]#
[root@localhost root]# service DmServiceDM03 start
Starting DmServiceDM03:                                    [ OK ]
[root@localhost root]#
[root@localhost root]# netstat -ntl|grep 523*      //判断数据库是否启动
tcp        0      0 :::5236                     :::*                        LISTEN
tcp        0      0 :::5237                     :::*                        LISTEN
tcp        0      0 :::5239                     :::*                        LISTEN
tcp        0      0 :::5240                     :::*                        LISTEN
[root@localhost root]# ps -ef|grep dmserver     //判断数据库是否启动
dmdba      2176      1  0 21:40 ?        00:00:02 /dm7/bin/dmserver /dm7/data/DM02/dm.ini -noconsole
dmdba      2294      1  0 21:40 ?        00:00:02 /dm7/bin/dmserver /dm7/data/DAMENG/dm.ini -noconsole
dmdba     12042      1  1 22:25 pts/2    00:00:05 /dm7/bin/dmserver /dm7/data/DM04/dm.ini -noconsole
dmdba     13140      1  2 22:29 pts/0    00:00:03 /dm7/bin/dmserver /dm7/data/DM03/dm.ini -noconsole
root      13720   4293  0 22:32 pts/0    00:00:00 grep dmserver

2.4.重做日志文件

SQL> select path from v$rlogfile;
行号     PATH
---------- -----------------------------
1          /dm7/data/DAMENG/DAMENG01.log
2          /dm7/data/DAMENG/DAMENG02.log
已用时间: 11.391(毫秒). 执行号:365.
SQL> alter database add logfile '/dm7/data/DAMENG/DAMENG04.log' size 128;
操作已执行
已用时间: 569.746(毫秒). 执行号:367.
SQL> select path,rlog_size/1024/1024 from v$rlogfile;
行号     PATH                          RLOG_SIZE/1024/1024
---------- ----------------------------- --------------------
1          /dm7/data/DAMENG/DAMENG01.log 256
2          /dm7/data/DAMENG/DAMENG02.log 256
3          /dm7/data/DAMENG/DAMENG04.log 128
已用时间: 0.360(毫秒). 执行号:368.
SQL>
SQL> alter database resize logfile '/dm7/data/DAMENG/DAMENG04.log' to 256;
操作已执行
已用时间: 640.713(毫秒). 执行号:369.
SQL> select path,rlog_size/1024/1024 from v$rlogfile;行号     PATH                          RLOG_SIZE/1024/1024
---------- ----------------------------- --------------------
1          /dm7/data/DAMENG/DAMENG01.log 256
2          /dm7/data/DAMENG/DAMENG02.log 256
3          /dm7/data/DAMENG/DAMENG04.log 256已用时间: 0.369(毫秒). 执行号:370.
SQL>

注意:重做日志不能删除,所有日志文件大小要求一致。

3.DM7的体系结构

3.1.DM逻辑存储结构
3.2.DM物理存储结构

[dmdba@localhost ~]$ cd /dm7/data/DAMENG/
[dmdba@localhost DAMENG]$ ll *.ini              //配置文件,以ini结尾
-rw-r--r-- 1 dmdba dinstall   907  4月 16 15:52 dmarch_example.ini
-rw-r--r-- 1 dmdba dinstall  2147  4月 16 15:52 dmdcr_cfg_example.ini
-rw-r--r-- 1 dmdba dinstall   631  4月 16 15:52 dmdcr_example.ini
-rw-r--r-- 1 dmdba dinstall 45283  4月 16 15:52 dm.ini
-rw-r--r-- 1 dmdba dinstall  1537  4月 16 15:52 dminit_example.ini
-rw-r--r-- 1 dmdba dinstall  2070  4月 16 15:52 dmmal_example.ini
-rw-r--r-- 1 dmdba dinstall  1277  4月 16 15:52 dmmonitor_example.ini
-rw-r--r-- 1 dmdba dinstall   288  4月 16 15:52 dmmpp_example.ini
-rw-r--r-- 1 dmdba dinstall  1679  4月 16 15:52 dmtimer_example.ini
-rw-r--r-- 1 dmdba dinstall  2146  4月 16 15:52 dmwatcher_example.ini
-rw-r--r-- 1 dmdba dinstall   635  4月 16 15:52 sqllog_example.ini
-rw-r--r-- 1 dmdba dinstall   479  4月 16 15:52 sqllog.ini
[dmdba@localhost DAMENG]$ ll *.ctl    //控制文件是一个二进制文件,以ctl结尾
-rw-r--r-- 1 dmdba dinstall 9728  4月 20 21:44 dm.ctl
查看控制文件内容:
[dmdba@dca01 DAMENG]$ dmctlcvt help
[dmdba@dca01 DAMENG]$ dmctlcvt type=1
src=/dm7/data/DAMENG/dm.ctl  dest=/tmp/dmctl.txt
[dmdba@dca01 tmp]$ cat dmctl.txt
--------------------------------------------------------------------------
[dmdba@localhost DAMENG]$ ll *.DBF
//数据文件,数据文件的大小范围:4096*页大小------2147483647*页大小
表空间中数据文件的总数不超过256个
-rw-r--r-- 1 dmdba dinstall 134217728  4月 16 19:30 DMHR.DBF
-rw-r--r-- 1 dmdba dinstall 134217728  4月 20 11:41 MAIN.DBF
-rw-r--r-- 1 dmdba dinstall 134217728  4月 20 21:49 ROLL.DBF
-rw-r--r-- 1 dmdba dinstall  22020096  4月 20 22:14 SYSTEM.DBF
-rw-r--r-- 1 dmdba dinstall  10485760  4月 20 21:44 TEMP.DBF
[dmdba@localhost DAMENG]$ ll DAMENG*.log  //重做日志文件,以实例名*.log结尾的文件
-rw-r--r-- 1 dmdba dinstall 268435456  4月 20 22:10 DAMENG01.log
-rw-r--r-- 1 dmdba dinstall 268435456  4月 20 21:44 DAMENG02.log
-rw-r--r-- 1 dmdba dinstall 268435456  4月 20 21:44 DAMENG03.log

4.表空间管理

表空间是由一个或多个数据文件构成的,表空间是数据库的一个容器,存放数据库中的数据对象(表,索引等)
达梦数据库默认的表空间

[dmdba@localhost ~]$ disql SYSDBA/dameng123@localhost:5236
服务器[localhost:5236]:处于普通打开状态
登录使用时间: 4.439(毫秒)
disql V7.6.0.197-Build(2019.09.12-112648)ENT
SQL> select tablespace_name,status from dba_tablespaces;
行号     TABLESPACE_NAME STATUS
---------- --------------- -----------
1          SYSTEM          0
2          ROLL            0
3          TEMP            0
4          MAIN            0
5          DMHR            0
6          HMAIN           NULL
6 rows got
已用时间: 10.549(毫秒). 执行号:1833.
SQL>

SYSTEM:数据字典和全局的系统数据。
ROLL:存放了数据库运行过程中产生的回滚记录
Temp:临时表空间
Main:数据库默认表空间,创建数据对象的时候,如果不指定存放的位置,默认存放在该表空间。
HMAIN:HUGE表空间
相关参数:
UNDO_RETENTION 单位:秒

SQL> select para_name,para_value from v$dm_ini where para_name='UNDO_RETENTION';行号     PARA_NAME      PARA_VALUE
---------- -------------- ----------
1          UNDO_RETENTION 90.000000已用时间: 17.995(毫秒). 执行号:1834.
SQL>

4.1.查询表空间
相关的视图:

v$tablespace,  dba_tablespaces ,v$huge_tablespace, dba_data_files;
SQL> select name from v$huge_tablespace union select name from v$tablespace;
行号     NAME
---------- ------
1          HMAIN
2          SYSTEM
3          ROLL
4          TEMP
5          MAIN
6          DMHR
6 rows got
已用时间: 0.659(毫秒). 执行号:1835.
SQL>

4.2.规划表空间
案例1:

SQL> create tablespace tbs1 datafile '/dm7/data/DAMENG/tbs1_01.dbf' size 31;
create tablespace tbs1 datafile '/dm7/data/DAMENG/tbs1_01.dbf' size 31;
第1 行附近出现错误[-2410]:数据文件[/dm7/data/DAMENG/tbs1_01.dbf]大小无效.
已用时间: 0.311(毫秒). 执行号:0.
SQL> create tablespace tbs1 datafile '/dm7/data/DAMENG/tbs1_01.dbf' size 32;
操作已执行
已用时间: 29.885(毫秒). 执行号:1836.

初始文件大小是页的4096倍, 4096*8K=32M
案例2:
创建一个表空间,初始大小50M,最大100M

SQL> create tablespace tbs2 datafile '/dm7/data/DAMENG/tbs2_01.dbf' size 50 autoextend on maxsize 100;
操作已执行
已用时间: 22.760(毫秒). 执行号:1837.

案例3:
创建一个表空间,初始大小50M,表空间由2个数据文件组成,分别存储在不同的磁盘上,每次扩展1m,每个数据文件最大100M

SQL> create tablespace tbs3 datafile '/dm7/data/DAMENG/tbs3_01.dbf' size 50 autoextend on next 1 maxsize 100,'/dm7/data/tbs3_02.dbf' size 50 autoextend on next 1 maxsize 100;
操作已执行
已用时间: 30.510(毫秒). 执行号:1838.
SQL> select file_name,status,tablespace_name from dba_data_files;行号     FILE_NAME                    STATUS    TABLESPACE_NAME
---------- ---------------------------- --------- ---------------
1          /dm7/data/DAMENG/SYSTEM.DBF  AVAILABLE SYSTEM
2          /dm7/data/tbs3_02.dbf        AVAILABLE TBS3
3          /dm7/data/DAMENG/tbs3_01.dbf AVAILABLE TBS3
4          /dm7/data/DAMENG/tbs2_01.dbf AVAILABLE TBS2
5          /dm7/data/DAMENG/tbs1_01.dbf AVAILABLE TBS1
6          /dm7/data/DAMENG/DMHR.DBF    AVAILABLE DMHR
7          /dm7/data/DAMENG/MAIN.DBF    AVAILABLE MAIN
8          /dm7/data/DAMENG/TEMP.DBF    AVAILABLE TEMP
9          /dm7/data/DAMENG/ROLL.DBF    AVAILABLE ROLL9 rows got
已用时间: 7.240(毫秒). 执行号:1839.

4.3.维护表空间
表空间不足,如何去扩展表空间:
1、创建大表空间,数据导出,导入。
2、Resize数据文件大小。
3、增加数据文件。

SQL> alter tablespace tbs1 add datafile '/dm7/data/DAMENG/tbs1_02.dbf' size 32;
操作已执行
已用时间: 13.008(毫秒). 执行号:1840.

4.4.更换存储位置
达梦表空间的状态
0:----online
1:------offline
注意:system,roll,temp不能offline
案例4:更换tbs3数据文件的存储位置。

SQL> select file_name,status,tablespace_name from dba_data_files;行号     FILE_NAME                    STATUS    TABLESPACE_NAME
---------- ---------------------------- --------- ---------------
1          /dm7/data/DAMENG/SYSTEM.DBF  AVAILABLE SYSTEM
2          /dm7/data/tbs3_02.dbf        AVAILABLE TBS3
3          /dm7/data/DAMENG/tbs3_01.dbf AVAILABLE TBS3
4          /dm7/data/DAMENG/tbs2_01.dbf AVAILABLE TBS2
5          /dm7/data/DAMENG/tbs1_02.dbf AVAILABLE TBS1
6          /dm7/data/DAMENG/tbs1_01.dbf AVAILABLE TBS1
7          /dm7/data/DAMENG/DMHR.DBF    AVAILABLE DMHR
8          /dm7/data/DAMENG/MAIN.DBF    AVAILABLE MAIN
9          /dm7/data/DAMENG/TEMP.DBF    AVAILABLE TEMP
10         /dm7/data/DAMENG/ROLL.DBF    AVAILABLE ROLL10 rows got已用时间: 1.034(毫秒). 执行号:1841.
SQL> alter tablespace tbs3 offline;
操作已执行
已用时间: 90.477(毫秒). 执行号:1842.
SQL> select tablespace_name,status from dba_tablespaces;
行号     TABLESPACE_NAME STATUS
---------- --------------- -----------
1          SYSTEM          0
2          ROLL            0
3          TEMP            0
4          MAIN            0
5          DMHR            0
6          TBS1            0
7          TBS2            0
8          TBS3            1
9          HMAIN           NULL9 rows got
已用时间: 0.666(毫秒). 执行号:1843.
SQL> alter tablespace tbs3 rename datafile '/dm7/data/tbs3_02.dbf' to '/dm7/data/DAMENG/tbs3_02.dbf';
操作已执行
已用时间: 96.313(毫秒). 执行号:1844.
SQL> alter tablespace tbs3 online;
操作已执行
已用时间: 13.137(毫秒). 执行号:1845.
SQL> select file_name,status,tablespace_name from dba_data_files;
行号     FILE_NAME                    STATUS    TABLESPACE_NAME
---------- ---------------------------- --------- ---------------
1          /dm7/data/DAMENG/SYSTEM.DBF  AVAILABLE SYSTEM
2          /dm7/data/DAMENG/tbs3_02.dbf AVAILABLE TBS3
3          /dm7/data/DAMENG/tbs3_01.dbf AVAILABLE TBS3
4          /dm7/data/DAMENG/tbs2_01.dbf AVAILABLE TBS2
5          /dm7/data/DAMENG/tbs1_02.dbf AVAILABLE TBS1
6          /dm7/data/DAMENG/tbs1_01.dbf AVAILABLE TBS1
7          /dm7/data/DAMENG/DMHR.DBF    AVAILABLE DMHR
8          /dm7/data/DAMENG/MAIN.DBF    AVAILABLE MAIN
9          /dm7/data/DAMENG/TEMP.DBF    AVAILABLE TEMP
10         /dm7/data/DAMENG/ROLL.DBF    AVAILABLE ROLL10 rows got
已用时间: 1.000(毫秒). 执行号:1846.

4.5.删除表空间

SQL> drop tablespace tbs1;

4.6.临时表空间
4.7.roll表空间
保留时间:Undo_retention
Roll表空间不足:
Alter tablespace roll resize datafile ‘/dm7/data/DAMENG/ROLL.DBF’ TO …

5.用户管理

5.1.相关概念
在dm数据库中用户管理主要涉及到三块:用户,权限,角色
权限:执行特定类型sql或是访问其他模式对象的权利。
系统权限:数据库对象的创建,删除,修改等等
对象权限:对数据库对象的数据的操作权限。
角色:是将具有相同权限的用户组织在一起,这一组具有相同权限的用户称为角色。角色是一组权限的集合,一个权限可以赋给不同的角色。
数据库预定义角色有三个,DBA,PUBLIC,RESOURCE
三权分立和四权分立
三权分立:
数据库管理员(sysdba)
数据库安全员(syssso)
数据库审计员(sysauditor)
四权分立:
数据库管理员(sysdba)
数据库安全员(syssso)
数据库审计员(sysauditor)
数据库对象操作员(sysdbo)
所有账号的默认口令都与用户名大写一致。

SQL> select username from dba_users;行号     USERNAME
---------- ----------
1          SYSSSO
2          DMHR
3          SYSDBA
4          SYS
5          SYSAUDITOR已用时间: 5.648(毫秒). 执行号:1847.

Syssso:安全员
Sysdba:数据库管理员
Sys:数据库内置管理账号(不能登录数据库)
Sysauditor:审计员

5.2.如何规划用户

名字:字母开头,a-z,0-9,$#_
位置:对应的表空间
密码:口令策略
0:无策略
1:禁止与用户名相同
2:口令长度不小于9
4:至少包含一个大写字母
8:至少包含一个数字
16:至少包含一个标点符号(英文的状态下输入 除空格和“”)
口令可以单独使用,也可以组合使用。比如说:要求口令策略禁止用户名相同,并且口令长度不小于9
则设置口令策略为3:
创建用户语句password policy 子句来指定口令策略,用户密码最长为48个字节。
Faild_login_attemps:密码尝试登录次数
Password_lock_time:密码失败后锁定时间
Password_life_time:密码过期时间
案例1:建立用户test,用户可以创建自己的表,有属于自己的表空间,用户密码要求每60天变更一次。

SQL> create tablespace test datafile '/dm7/data/DAMENG/test_01.dbf' size 32;
操作已执行
已用时间: 33.113(毫秒). 执行号:1848.
SQL> create user test identified by dameng123 limit password_life_time 60 default tablespace test;
操作已执行
已用时间: 3.231(毫秒). 执行号:1849.
SQL> select * from all_users;行号     USERNAME   USER_ID     CREATED
---------- ---------- ----------- ---------------------------
1          SYSDBA     50331649    2020-04-21 10:30:05.734007
2          SYS        50331648    2020-04-21 10:30:05.734007
3          SYSAUDITOR 50331650    2020-04-21 10:30:05.734007
4          SYSSSO     50331651    2020-04-21 10:30:05.734007
5          DMHR       50331748    2020-04-21 10:30:19.774883
6          TEST       50331749    2020-04-21 11:04:00.2469896 rows got已用时间: 1.541(毫秒). 执行号:1850.
SQL> conn test/dameng123服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 4.120(毫秒)
SQL> conn sysdba/dameng123服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 4.238(毫秒)
SQL> select grantee,granted_role from dba_role_privs where grantee='TEST';行号     GRANTEE GRANTED_ROLE
---------- ------- ------------
1          TEST    PUBLIC已用时间: 3.003(毫秒). 执行号:1851.
SQL> select grantee,privilege from dba_sys_privs where grantee='PUBLIC';行号     GRANTEE PRIVILEGE
---------- ------- ----------------
1          PUBLIC  INSERT TABLE
2          PUBLIC  UPDATE TABLE
3          PUBLIC  DELETE TABLE
4          PUBLIC  SELECT TABLE
5          PUBLIC  REFERENCES TABLE
6          PUBLIC  GRANT TABLE
7          PUBLIC  INSERT VIEW
8          PUBLIC  UPDATE VIEW
9          PUBLIC  DELETE VIEW
10         PUBLIC  SELECT VIEW
11         PUBLIC  GRANT VIEW行号     GRANTEE PRIVILEGE
---------- ------- ------------------------
12         PUBLIC  EXECUTE PROCEDURE
13         PUBLIC  GRANT PROCEDURE
14         PUBLIC  SELECT SEQUENCE
15         PUBLIC  GRANT SEQUENCE
16         PUBLIC  EXECUTE PACKAGE
17         PUBLIC  GRANT PACKAGE
18         PUBLIC  SELECT ANY DICTIONARY
19         PUBLIC  SELECT MATERIALIZED VIEW
20         PUBLIC  GRANT DOMAIN
21         PUBLIC  USAGE DOMAIN
22         PUBLIC  DUMP TABLE22 rows got已用时间: 1.241(毫秒). 执行号:1852.
SQL> grant create table to test;
操作已执行
已用时间: 1.397(毫秒). 执行号:1853.

案例2:规划一个用户test1,用户每60天变更一次密码,密码尝试连接2次失败,账号锁定5分钟,用户能查询dmhr.employee表。

SQL> create user test1 identified by dameng123 limit password_life_time 60,failed_login_attemps 2,password_lock_time 5;
操作已执行
已用时间: 2.984(毫秒). 执行号:1854.
//尝试登录2次后
SQL> select username,account_status,lock_date from dba_users;                     行号     USERNAME   ACCOUNT_STATUS LOCK_DATE
---------- ---------- -------------- -------------------
1          SYSSSO     OPEN           NULL
2          TEST       OPEN           NULL
3          DMHR       OPEN           NULL
4          SYSDBA     OPEN           NULL
5          TEST1      LOCKED         2020-04-21 11:07:45
6          SYS        OPEN           NULL
7          SYSAUDITOR OPEN           NULL7 rows got已用时间: 19.225(毫秒). 执行号:1855.SQL>alter user test1 account unlock;
操作已执行
已用时间: 17.614(毫秒). 执行号:1856.
SQL> select username,account_status,lock_date from dba_users;   行号     USERNAME   ACCOUNT_STATUS LOCK_DATE
---------- ---------- -------------- ---------
1          SYSSSO     OPEN           NULL
2          TEST       OPEN           NULL
3          DMHR       OPEN           NULL
4          SYSDBA     OPEN           NULL
5          TEST1      OPEN           NULL
6          SYS        OPEN           NULL
7          SYSAUDITOR OPEN           NULL7 rows got已用时间: 5.447(毫秒). 执行号:1857.SQL> grant select on dmhr.employee to test1;   //赋权限
操作已执行
已用时间: 9.692(毫秒). 执行号:1858.
SQL> revoke select on dmhr.employee from test1;    //发现权限过大
操作已执行
已用时间: 2.304(毫秒). 执行号:1859.
SQL> grant select(employee_name,hire_date) on dmhr.employee to test1;  //赋权限
操作已执行
已用时间: 1.563(毫秒). 执行号:1860.
SQL> conn test1/dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 3.566(毫秒)
SQL> select user;行号     USER()
---------- ------
1          TEST1已用时间: 1.760(毫秒). 执行号:1863.
SQL> select employee_name,hire_date from dmhr.employee limit 10;行号     EMPLOYEE_NAME HIRE_DATE
---------- ------------- ----------
1          马学铭     2008-05-30
2          程擎武     2012-03-27
3          郑吉群     2010-12-11
4          陈仙        2012-06-25
5          金纬        2011-05-12
6          李慧军     2010-05-15
7          常鹏程     2011-08-06
8          谢俊人     2014-03-02
9          苏国华     2010-10-26
10         强洁芳     2011-07-1610 rows got已用时间: 0.984(毫秒). 执行号:1864.

案例3:企业招聘一批录入人员,权限固定,只能录入city表。

SQL> create role r1;
create role r1;
第1 行附近出现错误[-5514]:没有创建角色权限.
已用时间: 0.252(毫秒). 执行号:0.
SQL> conn sysdba/dameng123服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 3.438(毫秒)
SQL> create role r1;
操作已执行
已用时间: 2.622(毫秒). 执行号:1865.
SQL> grant insert on dmhr.city to r1;
操作已执行
已用时间: 2.905(毫秒). 执行号:1866.
SQL> create user test2 identified by dameng123;
操作已执行
已用时间: 3.116(毫秒). 执行号:1867.
SQL> grant r1 to test2;
操作已执行
已用时间: 9.779(毫秒). 执行号:1868.
SQL> conn test2/dameng123服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 3.439(毫秒)
SQL>  insert into dmhr.city values('sdf','dfdss',7);insert into dmhr.city values('sdf','dfdss',7);
[-5506]:没有引用表[REGION]上的权限.
已用时间: 2.148(毫秒). 执行号:0.
SQL> conn sysdba/dameng123服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 11.033(毫秒)
SQL> grant references any table to test2;
操作已执行
已用时间: 2.129(毫秒). 执行号:1870.
SQL> conn test2/dameng123服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 4.003(毫秒)
SQL> insert into dmhr.city values('aaa','bbbb',6);
影响行数 1已用时间: 8.698(毫秒). 执行号:1871.
SQL> commit;
操作已执行
已用时间: 1.062(毫秒). 执行号:1872.

5.3.用户维护

收回权限:revoke
SQL> revoke select on dmhr.employee from test1;
赋权限:
SQL> grant references any table to test2;
修改用户密码
SQL> alter user test identified by 123456789;
锁定用户
SQL> alter user test account lock;
解锁用户
SQL> alter user test account unlock;
删除用户:
SQL> drop user test;
SQL> drop user test cascade;-------慎重,最好先备份
删除角色:
SQL> drop role r1;

6.模式对象管理

模式是所有对象的集合(表,视图,索引,同义词,自增列)。
DM创建用户的时候,会默认去创建一个同名的模式。如果你创建的用户,模式名已存在,用户无法创建。

6.1.表的管理

6.1.1.达梦支持那些表
默认的表是索引组织表,支持堆表,临时表,分区表,外部表等。
6.1.2.如何去规划表
1、命名:字母开头,a-z,0-9,$#_
2、数据类型 int char varchar date clob blob number 等等。
3、存储位置:自已规划的表空间,如果没有指定表空间,则会存储在main表空间中。
4、约束(5大约束)非空约束,唯一约束,主键,外键,检查约束。
5、注释:comment.
遵循3范式。
案例1.规划一张学员信息表。
表名:STU
学号:id char(10)
姓名:sname varchar(20) not null
性别:sex char(1)
年龄:age int
电话:tel varchar(15) not null
家庭住址:address varchar(50)
表空间 STU
约束:主键列—学号,非空—姓名和电话。
备注:student info

create table "TEST1"."STU"
("ID" CHAR(10) ,"SNAME" VARCHAR(20) not null ,"SEX" CHAR(1) ,"AGE" INT,"TEL" VARCHAR(15) not null ,"ADDRESS" VARCHAR(50),primary key("ID")
)
storage(initial 1, next 1, minextents 1, fillfactor 0, on "STU")
;
comment on table "TEST1"."STU" is 'STUDENT INFO';

6.1.3.创建表的时候指定约束

1、非空约束
SQL> create table test1.t1(id int);
SQL> alter table test1.t1 modify id int not null;
2、唯一约束
SQL> create table test1.t2(id int unique);
唯一约束遇到null,忽略,可录入多个。
3、主键约束(一张表只能有一个主键约束)
SQL> create table test1.t3(id int primary key);
SQL> create table test1.t4(id int);
SQL> alter table test1.t4 add constraint t4_pri primary key(id);
4、检查约束
SQL> create table test1.t5(id int check(id>=5));
外键约束
SQL> create table test1.t6(sid int primary key ,pid int);
SQL> create table test1.t7(id int primary key,sid int foreign key references test1.t6(sid));
7、对列加备注
SQL> comment on column test1.t6.sid is '编号';

6.1.4.导入数据到表中
1、insert into () values();
2、通过脚本把数据导入
Oracle:@?
Dm: start

[dmdba@localhost ~]$ cat a.sql
insert into test1.t1 values(1);
insert into test1.t1 values(2);
insert into test1.t1 values(3);
insert into test1.t1 values(4);
insert into test1.t1 values(5);
insert into test1.t1 values(6);
insert into test1.t1 values(7);
commit;SQL> start /home/dmdba/a.sqlSQL> select * from test1.t1;行号     ID
---------- -----------
1          1
2          2
3          3
4          4
5          5
6          6
7          77 rows got已用时间: 0.561(毫秒). 执行号:1947.

也通过数据迁移工具导入
6.1.5.如何去维护表

1、重命名:
SQL> alter table test1.t1 rename to tt;
2、增加删除列
SQL> alter table test1.tt add name varchar(10) default 'aaaa';
SQL> alter table test1.tt drop name;
3、启用和禁用约束
SQL> select  table_name,constraint_name,constraint_type from dba_constraints where table_name='T5';
SQL> alter table test1.t5 enable constraint CONS134218779;
删除表:
SQL> drop table  test1.tt;
如何去查看表结构
语法:sp_tabledef(‘模式名’,’表名’);
SQL> sp_tabledef('TEST','T1');
语法:DBMS_METADATA.GET_DDL(‘类型’,‘表名’,‘模式名’)
SQL> select dbms_metadata.get_ddl('TABLE','STU','TEST1');

6.2.视图的管理
视图分类:简单视图,复杂视图,物化视图
注意:简单视图和复杂视图不占磁盘空间,物化视图占磁盘空间。
6.2.1.简单视图

创建create view() as select() from () where();
SQL>create view test1.v1 as select * from dmhr.employee;
SQL>create view test1.v2 as select employee_name,hire_date,salary from dmhr.employee where hire_date >='2010-01-01';
相关数据字典:
Dba_views;

6.2.2.删除视图

SQL> drop view test1.v1;

6.3.索引的管理
索引的作用:加快表的查询,增加数据库查询性能,对数据库做DML操作的时候,数据库会自动维护索引。索引占空间。
索引是一棵倒置的树,使用索引,就是对这棵树做遍历。
达梦支持的索引:二级索引,位图索引,唯一索引,复合索引,函数索引,分区索引等。
6.3.1.建立索引的规则
适合建索引的情况:
1、经常查询的列
2、连接条件列
3、谓词经常出现的列(where)
4、查询是返回表的一小部分数据。

不适合建索引的情况
1、列上有大量的null
2、列上的数据是有限的(性限)

查看表的索引

SQL> select table_name,index_name from dba_indexes where table_name='STU';
行号     TABLE_NAME INDEX_NAME
---------- ---------- -------------
1          STU        INDEX33555469
已用时间: 253.392(毫秒). 执行号:1956.

6.3.2.创建表的索引
规划索引表空间,表的数据无序的,索引的数据是有序

SQL> create tablespace index1 datafile '/dm7/data/DAMENG/index1_01.dbf' size 32; //创建索引表空间
操作已执行
已用时间: 96.426(毫秒). 执行号:1957.
SQL> create table test1.emp(id int);
操作已执行
已用时间: 57.330(毫秒). 执行号:1959.
SQL> select table_name,index_name from dba_indexes where table_name='EMP';行号     TABLE_NAME INDEX_NAME
---------- ---------- -------------
1          EMP        INDEX33555471已用时间: 4.661(毫秒). 执行号:1966.
SQL> create index ind_emp on test1.emp(id) tablespace index1;
操作已执行
已用时间: 8.171(毫秒). 执行号:1967.
SQL> select table_name,index_name from dba_indexes where table_name='EMP';行号     TABLE_NAME INDEX_NAME
---------- ---------- -------------
1          EMP        INDEX33555471
2          EMP        IND_EMP已用时间: 4.786(毫秒). 执行号:1968.
SQL> explain select * from test1.emp where id<10;1   #NSET2: [0, 1, 12]
2     #PRJT2: [0, 1, 12]; exp_num(2), is_atom(FALSE)
3       #SSEK2: [0, 1, 12]; scan_type(ASC), IND_EMP(EMP), scan_range(null2,10)//没出效果,需要重做实验已用时间: 0.613(毫秒). 执行号:0.
SQL> begin  //没有走我们自己建的索引,统计信息是旧的,需要重新收集
收集统计信息:
2   dbms_stats.gather_table_stats('TEST1','EMP');
3   end;
4   /
DMSQL 过程已成功完成
已用时间: 8.743(毫秒). 执行号:1969.
SQL> explain select * from test1.emp where id<10;1   #NSET2: [0, 1, 12]
2     #PRJT2: [0, 1, 12]; exp_num(2), is_atom(FALSE)
3       #SSEK2: [0, 1, 12]; scan_type(ASC), IND_EMP(EMP), scan_range(null2,10)已用时间: 0.416(毫秒). 执行号:0.
SQL>

注意:创建索引,删除索引,重建索引和收集统计信息,不要在业务高峰期去做。
6.3.3.维护索引
重建索引:

SQL> alter index test1.ind_emp rebuild;
SQL> alter index test1.ind_emp rebuild online; //online的作用?
删除索引:
SQL> drop index test1.ind_emp;

注意:达梦默认不会自动收集统计信息,需要手动收集。
6.4.序列的管理
预分配的一组内存空间,可以将序列作为自增列。
创建:

SQL> create sequence test1.s1
2   start with 1    -----序列的起始
3   increment by 1  ---自增多少
4   maxvalue  5  ----最大值
5   nocache  ---是否缓存
6   nocycle   ---是否循环
7   ;

应用:

SQL> create table test1.t10(id int primary key);
SQL> insert into test1.t10 values(test1.s1.nextval);
SQL> insert into test1.t10 values(test1.s1.nextval);
SQL> insert into test1.t10 values(test1.s1.nextval);
SQL> insert into test1.t10 values(test1.s1.nextval);
SQL> insert into test1.t10 values(test1.s1.nextval);
SQL> insert into test1.t10 values(test1.s1.nextval);

修改序列:

SQL> alter sequence test1.s1 maxvalue 10;
SQL> insert into test1.t10 values(test1.s1.nextval);

删除序列:

SQL> drop sequence test1.s1;

6.5.同义词的管理
同义词是对象的别名,可以代替模式下的表,视图,序列,函数,存储过程等等。
同义词分为公共同义词和普通同义词
公共同义词:所有用户都可以使用的,使用的时候不用加上任何的模式名。
普通同义词:在某个模式下定义的同义词,引用的时候的需要加上模式名。
创建同义词:
普通同义词:SQL> create synonym test1.sy1 for dmhr.employee;
公共同义词:SQL> create public synonym sy2 for dmhr.city;
查询同义词

SQL> select table_name,synonym_name from dba_synonyms where synonym_name in ('SY1','SY2');

删除同义词:

SQL> drop public synonym sy2;
SQL> drop synonym sy2;

6.6.自增列
一个有序的数列,一个表只能有一个自增列
语法:identity[(种子,增量)]
种子:装载到表中的第一个行所使用的值。
增量:增量值,可以正数,也可以为负数,但不能为0

SQL> create table test1.t12(id int primary key identity(1,2),
name varchar(20));

7.DMSQL

DMSQL 基于sql92,部分sql99
SQL语句的分类
DQL:数据查询语句 select … from …where 组成的查询块。
DDL:数据定义语句 用来创建数据库的各种对象,包括数据库模式,表,视图,索引,同义词等。它的基本语句 create table,create view,create index等等。
DML:数据操作语句 用来改变数据库中的数据,它有3个基本的语句
Insert ,update, delete.
DCL:数据控制语句 用来授予或回收访问数据库的某种特权,控制数据操纵事务,对数据库进行监视等。基本语句:grant, revoke,commit,rollback,lock,unlock等。
7.1.简单查询
语法:select () from ()
第一个括号:*,column_name, alias, exprt || distinct
第二个括号:table_name,view_name
Select * from dmhr.city;
Select city_name,city_id from dmhr.city;
Select city_name cn from dmhr.city;
SQL> select employee_name||‘的工资是:’||salary as desc1 from dmhr.employee limit 10;
SQL> select distinct department_id from dmhr.employee;
7.2.过滤查询
where 子句的格式:
Where <搜索条件>
Where 子句常用的查询条件

谓词种类 谓词
比较 > < >= <= <> != not
确定范围 Between and >= and <=
确定集合 In ,not in
字符匹配 Like, not like
空值 Is null ,is not null
多重条件 And or

Like % _

SQL> select employee_name,salary from dmhr.employee where employee_name like '马%';
SQL> select employee_name,salary from dmhr.employee where employee_name like '马_';
SQL> select employee_name,salary from dmhr.employee where salary between 20000 and 30000;
等价于:
SQL> select employee_name,salary from dmhr.employee where salary>=20000 and salary<=30000;

IN 枚举

SQL> select employee_name,salary from dmhr.employee where employee_name in ('宋建青','程海忠','戴明','陈继军','王迪玉');
等价于:
SQL> select employee_name,salary from dmhr.employee where employee_name='宋建青' or employee_name='程海忠' or employee_name='戴明' or employee_name='陈继军' or employee_name='王迪玉';

集函数:
1、sum(),avg(),max(),min(),count()
2、Listagg lower() upper()
3、Add_weeks,add_days,curdate()
4、Abs,ascII,char()
案例1:求各个部门的最高工资

SQL> select department_id,max(salary) from dmhr.employee group by department_id;

案例2:找出部门平均工资大于10000的所有部门

SQL> select department_id,avg(salary) av1 from dmhr.employee group by department_id having avg(salary)>10000;

注意:having 表示分组后的数据进行过滤,having不能单独使用,一定是和group by 一起使用。聚合函数不能出现在where子句中。

排序 升序asc 降序desc 默认升序

SQL> select department_id,avg(salary) av1 from dmhr.employee group by department_id having avg(salary)>10000 order by av1 desc;

单行函数
数值函数
Round() trunc(), abs() mod()

SQL> select round(456.789,2)

字符串函数

Upper  lower  initcap  instr  substr  lpad rpad  trim  concat ||
SQL> select substr(email,1,(instr(email,'@')-1)),employee_name from dmhr.employee limit 10;

日期和字符串的转换

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss');
SQL> select to_date('2020-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss');

12.3多表联接查询
语法:select() from join() on()
第三个括号:表名
第四个括号:关联字段
1、内连接:结果集显示全部满足连接条件的记录 inner join

SQL> select employee_name,department_name from dmhr.employee e join dmhr.department d on e.department_id=d.department_id limit 10;

2、外连接
左外连接:把left join 左边的全部显示出来,右边的只显示满足条件的,不满足条件的用null 代替

SQL> update dmhr.employee set department_id=null where employee_id=1001;
SQL> select employee_name,department_name from dmhr.employee e left join dmhr.department d on e.department_id=d.department_id limit 10;

右外连接: 把写在right join右边的全部显示出来,左边的只显示满足条件的,不满足条件的用null代替

SQL> insert into dmhr.department values('1106','aaaa','9002',9);
SQL> select employee_name,department_name from dmhr.employee e right join dmhr.department d on e.department_id=d.department_id;

全外连接:返回所有的记录,包括不满足条件

select employee_name,department_name from dmhr.employee full join dmhr.department d on e.department_id=d.department_id;

全外连接=左外连接 union 右外连接
总结:
1、查询两个表的关联列相磁的数据用内连接
2、Col_l 是col_r的子集的时候用右外连接
3、Col_r 是col_l的子集的时候用左外连接
4、Col_r和col_l彼此有交集,但是彼此又不互为子集的时候,用全外连接。

8.备份还原

备份作用?
1、防止误操作
2、软件硬件故障的时候,做恢复
3、防止天灾。
备份的方式:物理备份和逻辑备份
备份的介质:磁盘,磁带,光盘
集群:数据守护,dsc(rac)
也支持第三方的备份软件:上海爱数,鼎甲。
8.1.物理备份
冷备和热备
冷备:dmap服务是打开的,数据库实例是关闭的。
备份的方式
1、利用控制台工具去备份

[dmdba@localhost tool]$ cd /dm7/backup/
[dmdba@localhost backup]$ ll
总用量 6280
-rw-r--r-- 1 dmdba dinstall 6318592  4月 21 12:40 backup.bak
-rw-r--r-- 1 dmdba dinstall  107008  4月 21 12:40 backup.meta
[dmdba@localhost backup]$

3、DMRMAN工具备份

[dmdba@localhost backup]$ cd /dm7/bin
[dmdba@localhost bin]$ ./dmrman
dmrman V7.6.0.197-Build(2019.09.12-112648)ENT
RMAN> backup database '/dm7/data/DAMENG/dm.ini';
backup database '/dm7/data/DAMENG/dm.ini';
file dm.key not found, use default license!
checking if the database under system path [/dm7/data/DAMENG] is running...[4].
checking if the database under system path [/dm7/data/DAMENG] is running...[3].
checking if the database under system path [/dm7/data/DAMENG] is running...[2].
checking if the database under system path [/dm7/data/DAMENG] is running...[1].
checking if the database under system path [/dm7/data/DAMENG] is running...[0].
checking if the database under system path [/dm7/data/DAMENG] is running, write dmrman info.
EP[0] max_lsn: 44552
BACKUP DATABASE [DAMENG],execute......
CMD CHECK LSN......
BACKUP DATABASE [DAMENG],collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
total 9 packages processed...
total 10 packages processed...
total 11 packages processed...
total 12 packages processed...
total 13 packages processed...
DBF BACKUP MAIN......
BACKUPSET [/dm7/data/DAMENG/bak/DB_DAMENG_FULL_20200421_124303_000878] END, CODE [0]......
META GENERATING......
total 17 packages processed...
total 17 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 7021.769(ms)
RMAN>
[dmdba@localhost bak]$ ll
总用量 4
drwxr-xr-x 2 dmdba dinstall 4096  4月 21 12:43 DB_DAMENG_FULL_20200421_124303_000878
[dmdba@localhost bak]$

冷备份:要停止数据库,如果不停止造成数据丢失
热备份:(dmap服务是打开的,数据库实例是打开的,数据库是归档模式)

开归档:
1、命令方式:

SQL> alter database mount;
SQL> alter database add archivelog
'type=local,dest=/dm7/arch,file_size=64,space_limit=0';
SQL> alter database archivelog;
SQL> alter database open;
SQL> select name,status$,arch_mode from v$database;

2、利用管理工具去开归档

命令行方式下全备,增量备

SQL> backup database full backupset '/dm7/backup/full_bak2';

增量备:

SQL> backup database increment backupset '/dm7/backup/incr_bak';

利用管理工具做热备
1、指定工作目录



还原:模拟表空间损坏tbs3
[dmdba@dca01 DAMENG]$ mv tbs3_01.dbf tbs3_01bak.dbf
重启服务,数据库处于mount状态,手动open

SQL> restore tablespace tbs3 from backupset '/dm7/backup/full_bak2/';
SQL> alter tablespace tbs3 online;

8.2.逻辑备份
导入导出(dexp,dimp)
分为四种级别:分别独立,互斥不能同时存在
数据库级别:导出或导入整个数据库的访问对象
用户:导入或导出一个或多个用户所拥有的所有对象
模式:导入或导出一个或多个模式下的所有的对象
表级:导出或导入一个或多个指定表或表分区

1、逻辑导出

[dmdba@dca01 tool]$ mkdir /dm7/backup/dexp
[dmdba@dca01 bin]$ ./dexp sysdba/dameng123@localhost:5236 file=dexp01.dmp log=dexp01.log directory=/dm7/backup/dexp full=y

2、逻辑导入

[dmdba@dca01 bin]$ ./dimp sysdba/SYSDBA@localhost:5239 file=/dm7/backup/dexp/dexp01.dmp log=/dm7/backup/dexp/dimp01.log

9.作业

定时去执行一组任务
1、创建代理环境(会自动创建一个sysjob模式)

3、创建作业
作业1:每天晚上10:00去更新统计信息


作业2:每周三每六晚上10:00去做全备


作业3:自动清理过期备份文件


查看作业
Sysjobs:作业信息
Sysjobschedules:作业的调度信息
Sysjobhistories:作业的历史信息
SQL> select * from sysjob.sysjobs;

10.DM开发

达梦支持那些语言做开发
C,c++, java,python ,php,perl
定义一个DM jdbc 的驱动串:
String jdbcstring=”dm.jdbc.driver.DmDriver”
DM URL连接串
String urlstring=”jdbc:dm://ip:5236”

10.1.配置ODBC
Linux环境中配置ODBC环境
检查:[root@dca01 ~]# rpm -aq|grep gcc 有没有gcc包,如果没有,配置yum源去安装。
解压安装包

[root@dca01 installdoc]# tar -xzvf unixODBC-2.3.0.tar.gz

配置odbc

[root@dca01 unixODBC-2.3.0]# cd unixODBC-2.3.0
[root@dca01 unixODBC-2.3.0]# ./configure --enable-gui=no

编译ODBC

[root@dca01 unixODBC-2.3.0]# make
[root@dca01 unixODBC-2.3.0]# make install

查看odbc的版本

[root@dca01 unixODBC-2.3.0]# odbc_config --version

查看ODBC配置文件的路径

[root@dca01 unixODBC-2.3.0]# odbc_config --odbcini
[root@dca01 unixODBC-2.3.0]# odbcinst -j

配置odbc.ini 和odbcinst.ini

[root@localhost ~]# cd /usr/local/etc/
[root@localhost etc]# cat odbc.ini
[dm7]
Description = DM ODBC DSND
Driver = DM7 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = dameng123
TCP_PORT = 5236
[root@localhost etc]#
[root@localhost etc]# cat odbcinst.ini
[DM7 ODBC DRIVER]
Description = ODBC DRIVER FOR DM7
DRIVER = /dm7/bin/libdodbc.so
[root@localhost etc]#

测试连接

[dmdba@localhost ~]$ isql dm7
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

10.2.存储过程
1、写匿名块
Declare (可选项)
Begin
Body;
exception
End;
SQL> set serveroutput on

SQL> set serverputput on
未知的 SET 选项 serverputput
SQL> set serveroutput on
SQL> begin
2   print('hello world');
3   end;
4   /
hello worldDMSQL 过程已成功完成
已用时间: 0.352(毫秒). 执行号:363.
SQL>
SQL> begin
2   for i in 1..5 loop
3   print(i);
4   end loop;
5   end;
6   /
1
2
3
4
5DMSQL 过程已成功完成
已用时间: 0.452(毫秒). 执行号:364.
SQL>

2、存储过程
案例:根据员工的编号找出员工所在部门

SQL> CREATE PROCEDURE "TEST1"."FD"("BH" IN INT)
ASDEPT INT;
BEGINSELECT department_id into DEPT FROM DMHR.EMPLOYEE WHERE EMPLOYEE_ID = BH;print(DEPT);
END;
CALL TEST1.FD(1003);
CALL TEST1.FD(1003)
执行成功, 执行耗时2毫秒. 执行号:557
103
影响了1条记录
1条语句执行成功

10.3.触发器
分类:表级别,库级别,模式级别,视图
表级别的触发器
create trigger “TEST1”.“T1”
before UPDATE of “SALARY”
on “TEST1”.“EMP”
for each row
BEGIN
insert into TEST1.TAB2 VALUES(:OLD.SALARY,:NEW.SALARY);
END;
UPDATE TEST1.EMP SET SALARY=1 WHERE EMPLOYEE_ID=1003

11.常见问题处理
11.1.DMAP启动失败

[dmdba@localhost log]$ cat DmAPService.log
os_pipe2_create_server_with_name, name:[/dm7/bin/DM_PIPE_DMAP_LSNR_RD], error:[17]
dmap V7.6.0.197-Build(2019.09.12-112648)ENT
dmap init failed, code[-7157]: 管道文件已存在bin下的这2个管道文件删掉后启动DMAP
DM_PIPE_DMAP_LSNR_WR
DM_PIPE_DMAP_LSNR_RD

达梦DCA学习笔记202004相关推荐

  1. 国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令

    国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令 以VMware Workstation Pro 15环境下的NeoKylin7.0与DM8为例 中标麒麟系统NeoKyli ...

  2. 达梦DM8-DCA学习笔记

    学习感想 达梦数据库是一款完全自主原创的国产数据库.近些年来随着国际型式不断恶化,国产的操作系统及国产的数据库在国内使用不断扩大,升级及发展也日新月异,其中达梦数据库在中国政府及事业单位就得到广泛应用 ...

  3. 达梦DCA考试笔记(部分)

    DM8 安装规划: 软件的安装路径 数据库实例的创建路径 归档文件存储路径(归档的开启是可选的) 备份集存储路径(和源库存储分开) //创建用户组 groupadd dinstall //创建用户dm ...

  4. 达梦DCA培训笔记20220810-20220812

    注意事项 数据库创建完成后,如果没有初始化,可以通过使用达梦数据库配置助手创建一个数据库实例. 创建数据库时,默认情况下勾选字符串比较大小写敏感. 可以通过达梦服务查看器查看当前系统中存在的服务,包含 ...

  5. 我的达梦DCA培训小记

    @达梦 我的达梦DCA培训笔记 感谢达梦大学给予我三天时间的培训.新冠疫情期间,不能到现场开展面对面的学习,单依然无法阻挡我们学习达梦数据库基础运维的热情. 感谢我们的王文欢老师.李梦等老师的辛勤付出 ...

  6. 达梦DCA认证培训考试心得体会

    一.概述 达梦数据库DCA认证是属达梦数据库入门级认证,主要针对在实际工作中系统维护实操不多的学员.线上培训三天即可预约报名参加认证考试,考试全部为机考.主要考试的知识点如下: 机试(95 分):安装 ...

  7. 圆你国产数据库DBA之梦,达梦DCA培训考试券免费拿

    2020首届达梦数据库精英挑战赛是在工信部等各级单位指导下,达梦公司联合国内信创产业知名企业共同打造信创人才"万人培养计划". 活动报名 报名时间:2020年7月22日-8月5日 ...

  8. 逐梦旅程学习笔记 DirectX开发入门02:旋转的彩色立方体

    本文是 系列笔记DirectX部分的第2篇,上一篇参见 逐梦旅程学习笔记 DirectX开发入门01:应用程序基本框架 这个示例增加了一些实际的内容,首先是绘制一个颜色随机变幻的彩色立方体,其二是显示 ...

  9. 【DM】达梦DCA培训及考试认证

    达梦DCA 安装前准备 安装达梦数据库 创建数据库实例 使用DM管理工具 SQL 开启归档 数据库备份与还原 作业管理 ODBC DCA考试 达梦数据库是一款全自主的国产数据库,近年来在信息创新项目中 ...

  10. 达梦DCA培训及认证总结

    有幸参加了达梦DCA培训课程及认证考试,培训为期3天,培训老师对国产数据库的现状及未来做了精彩的介绍,然后对整个达梦数据库的产品线做了详细的讲解,后面开始对DM8数据库安装及各类基本操作进行实操培训, ...

最新文章

  1. DataTable中数据记录的统计
  2. Nature Human Behavior:大脑对不公平的反应有助预测抑郁症
  3. PelleeNet_SSD
  4. Mac开发 - 使用CCMenu和CCMenuItem添加菜单、右击菜单、Dock菜单
  5. 开发者应具备的产品设计意识
  6. c语言源程序要求每行只能书写一条语句,C语言章节习题集(全)
  7. Java 开发Web Service的几种方式
  8. Android 更改签名
  9. 【Java】探究自增运算符++的原理
  10. BGP——Peer Group(讲解+配置)
  11. 19、SOAP安装,运用与比对结果解释
  12. Mac OSX 下 mysql 影响关系的问题处理
  13. 安卓帧数监测软件_手机帧数测试软件-手机fps帧数显示软件1.6 免root版-东坡下载...
  14. Kafka AKHQ 安装部署
  15. windows无法格式化u盘_U盘修复无法格式化的解决方法
  16. Android应用程序四大组件分别是什么?各个组件所起到的作用是什么?
  17. 中国新能源汽车行业十四五展望规划与投资决策建议报告2022版
  18. 二极管的工作原理,什么是二极管?
  19. 王家林大数据资源共享
  20. DNS域名解析错误解决

热门文章

  1. TiDB v5.3.0->v5.4.2->v6.1.0升级、TiDB/PD/TiKV/TiFlash扩缩容、TiSpark部署指北
  2. java时间戳 时分秒_orale获取两个时间戳字符串之间的时间差(时分秒)(含java实现)...
  3. html和css中盒子大小,CSS大小设置实例——盒子模型
  4. Linux入门(14)——系统启动修复
  5. 人力资源实习生是什么岗位
  6. matlab 拟合 画图,用MatLab画图(最小二乘法做曲线拟合)
  7. 【 FlutterUnit 食用指南】 开源篇
  8. webSpider----request
  9. Bias-variance trade off
  10. java实现微信定时发送消息