达梦笔记
# 1. 下载地址
http://www.dameng.com/down.aspx
# 2. 新建用户
CREATE USER "HUBEI" IDENTIFIED BY "2020@abcd" DEFAULT TABLESPACE "DATA_TBS" DEFAULT INDEX TABLESPACE "DATA_TBS";
create user jiangxi;
alter user jiangxi identified by "2020@abcd";
# 3. 新建表空间
CREATE TABLESPACE TESTUSER_DATA DATAFILE 'TESTUSER_DATA01.dbf' SIZE 10240;
ALTER TABLESPACE TESTUSER_DATA ADD DATAFILE 'TESTUSER_DATA02.dbf' SIZE 10240;
ALTER TABLESPACE TESTUSER_DATA ADD DATAFILE 'TESTUSER_DATA03.dbf' SIZE 10240;
ALTER TABLESPACE TESTUSER_DATA ADD DATAFILE 'TESTUSER_DATA04.dbf' SIZE 10240;
ALTER TABLESPACE TESTUSER_DATA ADD DATAFILE 'TESTUSER_DATA05.dbf' SIZE 10240;
CREATE TABLESPACE DATA_TBS DATAFILE 'DATA_TBS_IDX01.dbf' SIZE 2048;
# 4. 授权
grant ALTER DATABASE,RESTORE DATABASE,CREATE USER,ALTER USER,DROP USER,CREATE ROLE,CREATE SCHEMA,CREATE TABLE,CREATE VIEW,CREATE PROCEDURE,CREATE SEQUENCE,CREATE TRIGGER,CREATE INDEX,CREATE CONTEXT INDEX,BACKUP DATABASE,CREATE LINK,CREATE REPLICATE,CREATE PACKAGE,CREATE SYNONYM,CREATE PUBLIC SYNONYM,ALTER REPLICATE,DROP REPLICATE,DROP ROLE,ADMIN ANY ROLE,ADMIN ANY DATABASE PRIVILEGE,GRANT ANY OBJECT PRIVILEGE to "JIANGXI";
GRANT DBA TO HUBEI;
# 5. 一键新建用户和表空间
su - dmdba -c "disql SYSDBA/SYSDBA<<EOF
CREATE TABLESPACE DATA_TBS DATAFILE 'DATA_TBS_IDX01.dbf' SIZE 2048;
CREATE USER "HUBEI" IDENTIFIED BY "2020@abcd" DEFAULT TABLESPACE "DATA_TBS" DEFAULT INDEX TABLESPACE "DATA_TBS";
GRANT DBA TO HUBEI;
quit
EOF"
# 6. 查询操作
select * from dba_role_privs where GRANTEE='HUBEI';
disql SYSDBA/SYSDBA
# #查看所有角色:
SQL> select * from dba_roles;
#查看所有用户的信息:
SQL> select username,user_id,account_status from dba_users;
#查看系统中所有用户对应的角色:
SQL> select * from dba_role_privs;
#通过dba_sys_privs视图可以查看系统中角色对应的权限。
SQL> select distinct grantee from dba_sys_privs;
SQL> select * from dba_sys_privs where grantee='DBA' and rownum<10;
--查看表空间:
select * from v$tablespace;
--查看大表空间:
select * from v$huge_tablespace;
--查询表,当前用户拥有的表:
select table_name from user_tables;
--查询表,所有用户的表:
select table_name from all_tables;
--查询表,包括系统表:
select table_name from dba_tables;
--查询表:
select table_name from dba_tables where owner='用户名';
# 7. 导入和导出数据库
FULL=Y
./dimp HUBEI/Aa123456.@192.168.10.100:5236 file="/root/hubei.dmp"
/data/dmdbms/bin/dimp HUBEI/'"2020@abcd"'@192.168.10.100:5236 file="/opt/imp.dmp" FULL=Y REMAP_SCHEMA=JIANGXI:HUBEI
REMAP_SCHEMA=LA:HA表示将LA模式的数据导入到HA模式中。
这样以来,就实现了LA用户到HA用户的导入。
库级备份
/home/dmdba/bin/dexp USERID=SYSDBA/SYSDBA FILE=db.dmp LOG=db.log DIRECTORY=/home/dmdba/data/ FULL=y
库级导入
/home/dmdba/bin/dimp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=/home/dmdba/data/db.dmp DIRECTORY=/home/dmdba/data/ FULL=y REMAP_SCHEMA=LA:HA
SCHEMAS="JIANGXI"
D:\softwares\dmdbms\bin\dimp.exe """HUBEI"""/"""2020@abcd"""@192.168.10.100:5236 DIRECTORY=D:\迅雷下载\download FILE=imp.dmp SCHEMAS="JIANGXI" REMAP_SCHEMA="JIANGXI:HUBEI"
dimp hubei/'"2020@abcd"'@localhost:5236 DIRECTORY=/opt FILE=huibei.dmp SCHEMAS="HUBEI"
./disql hubei/'"2020@abcd"'@localhost
# 8. dminit命令行
达梦数据库入门之:初始化数据库(dminit命令行)
达梦数据库初始化有两种方式:
图形化界面,采用图形界面方式安装完成达梦数据库以后会自动弹出初始化数据库界面(也可以手动执行$DM_HOME/tool/dbca.sh脚本进行图形化界面的达梦数据库初始化)
命令行方式,即执行$DM_HOME/bin/dminit进行命令行方式的数据库初始化
dminit的具体用法如下:
./dminit help
initdb V7.6.0.142-Build(2019.03.12-103811)ENT
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2020-03-12
格式: ./dminit KEYWORD=value
例程: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=16
关键字 说明(默认值)
--------------------------------------------------------------------------------
INI_FILE 初始化文件dm.ini存放的路径
PATH 初始数据库存放的路径
CTL_PATH 控制文件路径
LOG_PATH 日志文件路径
EXTENT_SIZE 数据文件使用的簇大小(16),可选值:16、32,单位:页
PAGE_SIZE 数据页大小(8),可选值:4、8、16、32,单位:K
LOG_SIZE 日志文件大小(256),单位为:M,范围为:64M ~ 2G
CASE_SENSITIVE 大小敏感(Y),可选值:Y/N,1/0
CHARSET/UNICODE_FLAG 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
LENGTH_IN_CHAR VARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0
SYSDBA_PWD 设置SYSDBA密码(SYSDBA),密码长度为9到48
SYSAUDITOR_PWD 设置SYSAUDITOR密码(SYSAUDITOR),密码长度为9到48
DB_NAME 数据库名(DAMENG)
INSTANCE_NAME 实例名(DMSERVER)
PORT_NUM 监听端口号(5236)
TIME_ZONE 设置时区(+08:00)
PAGE_CHECK 页检查模式(0),可选值:0/1/2
EXTERNAL_CIPHER_NAME 设置默认加密算法
EXTERNAL_HASH_NAME 设置默认HASH算法
EXTERNAL_CRYPTO_NAME 设置根密钥加密引擎
RLOG_ENC_FLAG 设置日志文件是否加密(N),可选值:Y/N,1/0
USBKEY_PIN 设置USBKEY PIN
ENCRYPT_NAME 设置全库加密算法
BLANK_PAD_MODE 设置空格填充模式(0),可选值:0/1
SYSTEM_MIRROR_PATH SYSTEM数据文件镜像路径
MAIN_MIRROR_PATH MAIN数据文件镜像
ROLL_MIRROR_PATH 回滚文件镜像路径
MAL_FLAG 初始化时设置dm.ini中的MAL_INI(0)
ARCH_FLAG 初始化时设置dm.ini中的ARCH_INI(0)
MPP_FLAG Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0)
CONTROL 初始化配置文件(配置文件格式见系统管理员手册)
AUTO_OVERWRITE 是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖
USE_NEW_HASH 是否使用改进的字符类型HASH算法(1)
DCP_MODE 是否是DCP代理模式(0)
DCP_PORT_NUM DCP代理模式下管理端口
ELOG_PATH 指定初始化过程中生成的日志文件所在路径
AP_PORT_NUM ECS模式下AP协同工作的监听端口
HELP 打印帮助信息
复制代码
特别需要注意的地方
dminit可以不带任何参数直接执行,但是不能设置INSTANCE_NAME,如下:
./dminit
initdb V7.6.0.142-Build(2019.03.12-103811)ENT
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2020-03-12
input system dir:
input db name:
input port num:
复制代码
从上面可以看出,DM_NAME设置完成后就是PORT_NUM,并没有INSTANCE_NAME的设置(达梦数据库默认实例名为:DMSERVER)
因此不建议采用不带参数的方式直接执行dminit,原因除了不能自定义实例名之外,你还会发现有些参数虽然有默认值,但还是必须要选择后才能进行到下一步,没有直接执行dbca.sh方便。
建议采用带参数的方式执行dminit
dminit虽然有很多参数,但大多数情况下默认值即是最佳的选择,所以我们在使用dminit初始化数据库时,只要指定:
初始数据库存放的路径:PATH
数据库名:DB_NAME(默认为:DAMENG)
实例名:INSTANCE_NAME(默认为:DMSERVER)
监听端口号:PORT_NUM(默认为:5236)
[root@dmlab bin]# su - dmdba
[dmdba@dmlab ~]$ cd $DM_HOME/bin
[dmdba@dmlab bin]$ ./dminit PATH=/数据库存放绝对路径 DB_NAME=数据库名 INSTANCE_NAME=实例名 PORT_NUM=监听端口号
复制代码
根据我的测试,在使用完图形化界面完成数据库初始化以后,再次使用dminit进行实例创建,只要PATH不一样,数据库名和实例名与已经存在的数据库和实例相同也没有影响,但是PORT_NUM必须不一样,达梦数据库是通过PORT_NUM来区分不同实例的
注册数据库服务
采用dminit创建的实例没有对应的服务,不能使用DM服务查看器(包含service或者systemctl命令)进行管理。所以必须在使用命令行创建实例之后进行服务注册,将其注册成系统服务,方便用户管理与控制。
注册数据库服务同样可以采用图形化界面和命令行两种方式:
手动执行$DM_HOME/tool/dbca.sh脚本进行图形化界面的数据库服务注册
手动执行$DM_HOME/script/root/dm_service_installer.sh脚本通过命令行方式注册数据库服务(该脚本必须以root用户执行)
dm_service_installer.sh 用法如下:
[root@dmlab root]# ./dm_service_installer.sh -h
Usage: dm_service_installer.sh -t service_type [-p service_name_postfix] [-i ini_file] [-d dcr_ini_file] [-m open|mount] [-y dependent_service]
or dm_service_installer.sh [-s service_file_path]
or dm_service_installer.sh -h
-t 服务类型,包括dmimon,dmap,dmserver,dmwatch,dmrww,dmwmon,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr
-p 服务名后缀,对于dmimon,dmap服务类型无效
-i ini文件路径,对于dmimon,dmap服务类型无效
-d dmdcr.ini文件路径,只针对dmserver服务类型生效,可选
-m 设置服务器启动模式open或mount,只针对dmserver服务类型生效,可选
-y 设置依赖服务,此选项只针对systemd服务环境下的dmserver和dmasmsvr服务生效
-s 服务脚本路径,设置则忽略除-y外的其他参数选项
-h 帮助
复制代码
举例:
./dm_service_installer.sh -t dmserver -i /path_to_dm.ini -p DCA
复制代码
注册完数据库服务以后既可通过以下方式进行管理:
\1. DM服务查看器
\2. serivce DmServiceDCA status/start/stop (LINUX 6)
\3. systemctl status/start/stop DmServiceDCA.service (LINUX 7)
# 9. 达梦数据使用DBLINK,实现DM到DM的跨库访问
配置环境
IP 操作系统 数据库版本
192.168.10.11 centos 7.4 DM8
192.168.10.12 centos 7.4 DM8
修改两个实例数据目录下的dmmal.ini文件,如果没有这个文件则创建,修改内容如下:
[DMSERVER1]
MAL_INST_NAME = DMSERVER1 #实例名和dm.ini中的INSTANCE_NAME保持一致
MAL_INST_HOST = 192.168.10.11 #对外开放的服务IP地址
MAL_INST_PORT = 5236 #对外开放的服务端口和dm.ini中的PORT_NUM保持一致
MAL_HOST = 192.168.10.11 #系统监听TCP连接IP地址
MAL_PORT = 61142 #系统监听TCP连接端口
[DMSERVER2]
MAL_INST_NAME = DMSERVER2
MAL_INST_HOST = 192.168.10.12
MAL_INST_PORT = 5236
MAL_HOST = 192.168.10.12
MAL_PORT = 61142
分别修改两个实例数据目录下的dm.ini文件,修改内容如下:
将MAL_INI = 0 修改成 MAL_INI = 1 #启用MAL系统
重启两个数据库实例使参数修改生效:
[dmdba@localhost ~]$ DmServiceDMSERVER restart
Stopping DmServiceDMSERVER: [ OK ]
Starting DmServiceDMSERVER: [ OK ]
打开达梦数据库客户端登陆需要创建DBLINK的实例执行如下SQL语句:
create link <实例用户>.<自定义外部连接名> connect '<数据库类型>' with <登陆用户> identified by <用户密码> using '外部连接实例的IP地址/端口号'
示例:disql登录192.168.10.11的实例创建DBLINK
create link "SYSDBA"."LINK1" connect 'DAMENG' with "SYSDBA" identified by "SYSDBA" using '192.168.10.12/61142';
测试连接:
select * from <外部连接实例中的模式名>.<外部连接实例中的表名>@<外部连接名>
示例:连接192.168.10.11的实例,查询192.168.10.12实例上的test表
SQL> select * from test@LINK1;
行号 ID
1 1
注意事项:
1.dmmal.ini 中必须设置不同的实例名
2.注意防火墙是否关闭
3.DBLINK两个实例的的数据库大版本必须一致,DM7和DM7或者DM8和DM8之间可以配置成功,DM7和DM8之间会报错
4.如果是在同一台机器上的两个实例间进行配置,DMSERVER1和DMSERVER2的MAL_INST_PORT 、MAL_PORT 需要配置成不同的端口,否则会端口冲突。
# 10.达梦表空间管理
1、创建表空间
SQL: CREATE TABLESPACE TBS5 DATAFILE 'D:\dmdbms\data\DAMENG\TBS5.DBF' SIZE 50;
2、创建表空间,表空间可自动扩展,每次扩展1M,表空间最大空间为100M
SQL:CREATE TABLESPACE TBS6 DATAFILE 'D:\dmdbms\data\DAMENG\TBS6.DBF' SIZE 50 AUTOEXTEND ON NEXT 1 MAXSIZE 100;
3、修改表空间名称
SQL:ALTER TABLESPACE TBS6 RENAME TO TBS66;
4、修改表空间状态
SQL:ALTER TABLESPACE TBS66 OFFLINE;
5、查询表空间对应的数据文件
SQL:SELECT FILE_NAME,STATUS,TABLESPACE_NAME,ONLINE_STATUS FROM DBA_DATA_FILES;
6、表空间添加数据文件
SQL:ALTER TABLESPACE TBS66 ADD DATAFILE 'D:\dmdbms\data\DAMENG\TBS66.DBF' SIZE 50;
7、修改表空间数据文件大小
SQL:ALTER TABLESPACE TBS66 RESIZE DATAFILE 'D:\dmdbms\data\DAMENG\TBS66.DBF' TO 200;
8、修改表空间数据文件的路径
SQL:ALTER TABLESPACE TBS66 RENAME DATAFILE 'D:\dmdbms\data\DAMENG\TBS66.DBF' TO 'D:\dmdbms\data\DAMENG\TBS77.DBF';
9、关闭表空间扩展功能
SQL:ALTER TABLESPACE TBS66 DATAFILE 'D:\dmdbms\data\DAMENG\TBS6.DBF' AUTOEXTEND OFF;
10、删除表空间
SQL:DROP TABLESPACE TBS66;
# 11. 报错
安装swt-gtk报错
sudo apt install libswt-gtk-3-java
yum -y install gtk2.i686 gtk2-engines.i686 PackageKit-gtk-module.i686 PackageKit-gtk-module.x86_64 libcanberra-gtk2.x86_64 libcanberra-gtk2.i686