注册
达梦数据库安装(命令行)
培训园地/ 文章详情 /

达梦数据库安装(命令行)

身边 2023/01/06 822 0 0

安装准备(root用户执行)

创建用户

groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
id dmdba
passwd dmdba
Dameng123

创建安装目录

mkdir /dm8
chown dmdba:dinstall /dm8
挂载安装包
mkdir -p /mnt/dm
cd /mnt
mount /opt/dm8_20220525_x86_rh6_64.iso /mnt/dm

数据库安装

tmp内存处理(root用户执行)
mkdir -p /opt/tmp
chmod 777 /opt/tmp
文件打开数过小(root用户执行)
ulimit -a
ulimit -n
vim /etc/security/limits.conf
dmdba soft nofile 102400
dmdba hard nofile 204800

root soft nofile 102400
root hard nofile 202800

执行安装(dmdba用户)

df -h
# 重新指定过tmp,dmdba用户安装前执行
export DM_INSTALL_TMPDIR=/opt/tmp

cd /mnt/dm
./DMInstall.bin -i
安装目录:/dm8
# 根据安装提示,用root用户执行
 /dm8/script/root/root_installer.sh

创建数据库实例(dmdba用户)

cd /dm8/bin
./dminit path=/dm8/data db_name=DMHR instance_name=DMHRSVR port_num=5238 sysdba_pwd=dameng123

# 查看数据进程
ps -ef|grep dmserver
systemctl status DmServiceDMHRSVR

注册服务(root用户)

cd /dm8/script/root

./dm_service_installer.sh -t dmserver -p DMHRSVR -dm_ini /dm8/data/DMHR/dm.ini
 systemctl enable DmServiceDMHRSVR.service
 systemctl start DmServiceDMHRSVR.service

#卸载服务
./dm_service_uninstaller.sh -n DmServiceDMHRSVR

设置防火墙端口(root用户执行)

firewall-cmd --add-port=5236/tcp --permanent --zone=public
firewall-cmd --reload
firewall-cmd --list-ports

数据库启动关闭

启动顺序:shutdown ->mount->open

select status$ from v$instance;
select * from sysobjects limit 10;
select path from v$datafile;

alter database mount;#可读控制文件、内存数据;不可数据文件中数据
alter database open;# 正常状态,可读可写。
alter database suspend;# 只能读不能写

select table_name from dba_tables limit 10;
select name from sysobjects limit 10;

方式二:dmdba用户启动

# 前台启动
cd /dm8/bin/
./dmserver /dm8/data/DAMENG/dm.ini

shutdown immediate;




# 后台启动(需要注册为服务才能使用)
cd /dm8/bin/
ll Dm*
./DmServiceDMSERVER status
./DmServiceDMSERVER stop
./DmServiceDMSERVER start

方式二:服务启动(root用户)【推荐】

systemctl status DmServiceDMHRSVR
systemctl start DmServiceDMHRSVR
systemctl stop DmServiceDMHRSVR

方式三:服务查看器(root用户)

# 需要注册为服务才能使用
cd /dm8/tool/
./dmservice.sh

数据库连接

DM管理工具

export DISPLAY=:0.0
cd /dm8/tool/
./manager

disql命令

cd /dm8/bin
# 连接数据库(默认端口5236)
./disql sysdba/Dameng123

# 连接指定端口数据库
./disql sysdba/Dameng123:5238

vi /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
DM=(127.0.0.1:5236)

设置环境变量

vim .bash_profile
添加
export PATH=$PATH:$DM_HOME/BIN:$DM_HOME/tool
alias disql="rlwrap disql"
alias dmrman="rlwrap dmrman"

source ~/.bash_profile

参数修改

alter system set 'UNDO_RETENTION'=180 memory; -- 修改内存值
alter system set 'UNDO_RETENTION'=180 spfile; -- 修改配置文件值
alter system set 'UNDO_RETENTION'=180 both; -- 同时修改内存和配置文件值

# 修改数据库兼容性参数(静态参数,只能修改参数文件中的值, 重启才生效)
alter system set 'COMPATIBLE_MODE' =2 spfile;

# 修改 LIST_TABLE(会话级动态参数, 默认是 memory)
alter session set 'LIST_TABLE' = 0;

# 修改缓冲区BUFFER
alter system set 'BUFFER'= 500 spfile;

创建表空间

默认创建5个表空间:SYSTEM、ROLL、MAIN、TEMP、HMAIN
一个表空间至少有一个数据文件
只有空的表空间才能删除

create tablespace dmtbs DATAFILE 'DMTBS01.DBF' size 32; -- 表空间不支持指定单位,默认单位是M

select page*4096/1024/1024; --  表空间最小
alter tablespace "TBS" add datafile '/dm8/data/DAMENG/TBS02.DBF' size 32;
alter tablespace dmtbs DATAFILE 'DMTBS01.DBF' AUTOEXTEND off;
alter tablespace dmtbs resize DATAFILE 'DMTBS01.DBF' TO 64;
alter tablespace dmtbs add datafile 'DMTBS02.DBF' size 64 AUTOEXTEND on NEXT 2 MAXSIZE 10240;
​
-- 未设置自动扩展,默认扩展1M
-- 表空间最大:2的31次方
-- 工作中,数据表空间和索引表空间分开
​
select * from DBA_DATA_FILES;
select * from DBA_FREE_SPACE;
select a.TABLESPACE_NAME,a.FILE_NAME, a.BYTES, a.MAXBYTES,a.USER_BYTES from DBA_DATA_FILES a;

用户管理

系统口令策略

select * from v$parameter t where t.name='PWD_POLICY'; -- 默认为2
alter system set 'PWD_POLICY'=31 BOTH;
​
-- 创建用户
create user dmtest IDENTIFIED BY "Dameng@123" DEFAULT TABLESPACE dmtbs DEFAULT INDEX TABLESPACE DMTBSIDX;
select * from dba_users;
​
select b.name,a.* from SYS.SYSUSERS a,sysobjects b where a.id=b.id;
alter user dmtest ACCOUNT UNLOCK; -- 用户解锁

会话连接限制

-- 用户会话
alter user dmtest limit SESSION_PER_USER 3;
​
-- 数据库会话
select * from v$parameter t where t.name='MAX_SESSIONS';
alter system set 'MAX_SERSSIONS'=100 BOTH;
​
-- 限制用户密码错误,锁定3分钟
create PROFILE profile1 LIMIT FAILED_LOGIN_ATTEMPS 5,PASSWORD_LOCK_TIME 3;
alter user dmtest PROFILE profile1;

角色权限

select * from dba_roles;
-- 创建角色
create role r1;
grant create table to r1;
grant select on dmhr.department to r1;
grant r1 to dmtest;

sp_set_role('R1',0) --角色禁用和启用,禁用后角色权限将不在生效。

--授权
grant create table to dmtest;

-- 回收权限
revoke create table from dmtest;
revoke select on dmhr.department from dmtest CASCADE;


-- 客户端查看对象无权限
grant vti to dmtest;

创建表

create table dmtest.t_pid(pid int,pname varchar(50),sex bit) tablespace DMTBS;

-- 复制表
create table dmtest.t_emp as select * from dmhr.EMPOLYEE;
create table dmtest.t_emp01 like dmhr.EMPOLYEE;

-- CTAB_SEL_WITH_CONS 控制是否复制约束
select * FROM SYS."V$PARAMETER" t where t.NAME like 'CTAB_SEL_WITH_CONS';

约束

NOT NULL:非空约束
UNIQUE:唯一约束
PRIMARY KEY:主键约束 (唯一约束+非空约束)
FOREIGN KEY:外键约束
CHECK:检验约束

-- 非空约束
alter table dmtest.t_testpid modify pname not null;

-- 唯一约束
alter table dmtest.t_testpid add CONSTRAINT uk_testpid_email unique (email);

-- 主键约束
alter table dmtest.t_testpid ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid);

-- 检验约束
alter table dmtest.t_testpid add salary number(10,2);
alter table dmtest.t_testpid ADD CONSTRAINT ck_testpid_salary CHECK(salary>=2100);

-- 外键约束(外键引用两一张表的主键或者唯一键)
alter table dmtest.t_test add CONSTRAINT fk_test_id FOREIGN KEY(id) REFERENCES dmtest.t_testpid(pid);

--约束的禁用和启用、删除
alter table dmtest.t_test disable CONSTRAINT fk_test_id;
alter table dmtest.t_test enable CONSTRAINT fk_test_id;
alter table dmtest.t_test drop CONSTRAINT fk_test_id;

-- 批量禁用外键约束
select 'alter table '||owner||'.'||table_name||' disable constraint '|| t.CONSTRAINT_NAME ||';'
from DBA_CONSTRAINTS t 
where t.OWNER ='DMTEST' and t.CONSTRAINT_TYPE = 'R';

数据导入

cd /dm8/bin
./disql sysdba/Dameng123

set TIMING off;
set FEEDback off;
set echo off;
start /dm8/backup/t_emp.sql

-- 图形工具导入(注意:需要手动提交):
`/dm8/backup/t_emp.sql
commit;

索引

未指定表空间,默认为当前用户模式指定的索引表空间

创建索引

create index JOB_IND on DMHR.JOB
​
explain select * from dmtest.t_emp01 t where T.EMPLOYEE_NAME = '马学铭';
create index ix_emp01_employeename ON HRTEST.T_EMP01(EMPLOYEE_NAME);

开启索引监控

select * from USER_IND_COLUMNS;
​
alter index ix_emp_empname on t_emp(empployee_nam)
alter index ix_emp_empname MONITORING USAGE;--开启索引监控
alter index ix_emp_empname noMONITORING USAGE;--关闭索引监控
select * from v$object_usage;
​
alter table t_emp move tablespace DMTBSIDX; -- 达梦的索引不会失效,达梦会自动编译

视图

create view dmtest.v_emp as
select * from dmtest.t_emp t

归档日志

cat dm.ini|grep ARCH_INI
-- 开启归档
alter database mount;
alter database ARCHIVELOG;
alter database add ARCHIVELOG 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';
alter database open;

select * from SYS."V$ARCH_FILE"

-- 查看是否开启归档
select arch_mode from v$database;

-- 关闭归档日志
alter database mount;
alter database noarchivelog;
alter database delete archivelog 'type=local,dest=/dm8/arch';
alter database open;

备份还原

backup

backup DATABASE FULL; -- 
backup DATABASE INCREMENT;
backup DATABASE full to FULLBAK01 BACKUPSET '/dm8/backup/FULLBACK01';
​
backup TABLESPACE DMTBS;
backup TABLE dmtest.t_emp;
backup ARCHIVE LOG all;
​
select * from SYS."V$PARAMETER" t WHERE t.NAME in ('BAK_PATH','BAK_USE_AP');
select * from SYS."V$BACKUPSET";

dmrman

只支持脱机,不支持联机
cd /dm8/bin
./dmrman 
backup database '/dm8/data/DAMENG/dm.ini' to FULLBAK01 backupset '/dm8/backup/FULLBAK01';
backup database '/dm8/data/DAMENG/dm.ini' to FULLBAK03 backupset '/dm8/backup/FULLBAK03';
​
-- 备份表空间
restore database '/dm8/data/DAMENG/dm.ini' tablespace dmtbs from backupset '/dm8/backup/FULLBAK01';
recover database '/dm8/data/DAMENG/dm.ini' tablespace dmtbs;
​
-- 备份整个数据库
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/FULLBAK01'; -- 恢复到指定备份集
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch'; -- 恢复到归档
recover database '/dm8/data/DAMENG/dm.ini' update db_magic; -- 更新魔数
​
DmServiceDMSERVER restart
​
show backupset '/dm8/backup/FULLBAK01';

dexp

cd /dm8/bin
-- 导出
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=full.dmp log=full.log full=y

-- 导入
dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=full.dmp log=impfull.log 
full=y

-- 按模式导入(将 A 模式导入到 B 模式,使用 REMAP_SCHEMA 参数)
dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=DMHR.dmp 
log=impDMHR.log REMAP_SCHEMA=DMHR:DMTEST

DM作业

cd /dm8/tool/
./manager

# 图形
代理——创建代理环境——

# 命令
call SP_INIT_DBMS_SCHEDULER_SYS(1); 

# 全量
call SP_CREATE_JOB('job1',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('job1');
call SP_ADD_JOB_STEP('job1', 'FULLBAK', 6, '00000000', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('job1', 'FULLBAK', 1, 2, 1, 9, 0, '23:00:07', NULL, '2023-01-05 01:00:07', NULL, '');
call SP_JOB_CONFIG_COMMIT('job1');

# 增量
call SP_CREATE_JOB('job2',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('job2');
call SP_ADD_JOB_STEP('job2', 'INCRBAK', 6, '10000000/dm8/data/DAMENG/bak', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('job2', 'INCRBAK', 1, 2, 1, 118, 0, '23:57:46', NULL, '2023-01-05 00:57:46', NULL, '');
call SP_JOB_CONFIG_COMMIT('job2');

# 查看作业
select * from user_jobs;

ODBC配置

# root 用户执行
cd /opt
tar -zxvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0/
./configure
make
make install
odbcinst -j
 
vim /usr/local/etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
 
vim /usr/local/etc/odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236

# dmdba用户执行
isql dm8 -v

图形化

启动图形化

# 用root执行
xhost +
echo $DISPLAY

用dmdba账号执行
export DISPLAY=:0.0

数据库安装

cd /mnt/dm
./DMInstall.bin

创建数据库实例

cd /dm8/tool/
./dbca.sh

DM 管理工具(manager)

cd /dm8/tool/
./manager

DM 网络配置工具(nca.sh)

cd /dm8/tool/
./nca.sh
网络服务名:DM
网络服务地址:127.0.0.1:5236

DM 服务查看器(dmservice.sh)

cd /dm8/tool/
./dmservice.sh

DM 控制台工具(console)

cd /dm8/tool/
./console

DM 数据迁移工具(dts)

cd /dm8/tool/
./dts

DM 性能监视工具(monitor)

cd /dm8/tool/
./monitor

数据卸载

# 图形化
/dm8/uninstall.sh
/dm8/root_uninstaller.sh

# 命令行
/dm8/uninstall.sh -i
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服