注册
DM8技术分享
培训园地/ 文章详情 /

DM8技术分享

新开普---曹志善 2022/11/18 1580 0 0

01准备工作

安装好linux操作系统:
cat /etc/redhat-release
cat /etc/issue
关闭防火墙和selinux
service iptables stop
chkconfig iptables off

cat /etc/selinux/config
SELINUX=disable

配置系统限制,在/etc/security/limits.conf文件中添加如下内容:
cat /etc/security/limits.conf
dmdba soft nofile 65536
dmdba hard nofile 65536

ulimit -n 65536

创建DM用户:
groupadd dinstall #创建组
useradd -g dinstall dmdba #创建用户
passwd dmdba

创建目录:
mkdir -p /dm
chown -R dmdba:dinstall /dm/
chmod -R 775 /dm/

02开始安装DM数据库

复制安装文件:将DM的ISO上传到Linux系统,并挂载
[root@dm1 ~]#mount dm7_setup_centos7_64_ent_7.6.0.145_20190325.ios /mnt

[root@dm1 /]#cd /mnt
[root@dm1 mnt]#ls
DMInstall.bin DM_Install_en.pdf DM_Install_zh.pdf release_en.txt release_zh.txt

将安装文件复制到/dm 目录下并修改安装文件权限:
[root@dm1 mnt]#cp DMInstall.bin /dm/
[root@dm1 mnt]#cd /dm
[root@dm1 dm]#chown dmdba:dinstall DMInstall.bin

用dmdba用户执行./DMInstall.bin程序,开始图形安装。

03添加环变量

[dmdba@dw1 ~ ]$vim ~/.bash_profile
[dmdba@dw1 ~ ]$cat ~/.bash_profile

export
LD_LIBRARY_PATH=“$LD_LIBRARY_PATH:/dm7/dmdbms/bin”
export DM_HOME=“/dm7/dmdbms”
export PATH=“$PATH:$HOME/bin:$DM_HOME/tool”

alias disql=“rlwrap disql”
alias dmrman=“rlwrap dmrman”
[dmdba@dw1 ~ ]$source ~/.bash_proflie

04DM实例创建和管理

1.DBCA工具管理实例
2.DMINIT工具创建实例
3.注册达梦实例服务
4.启动和关闭数据库
5.切换实例状态

注释:
达梦默认数据库名:DAMENG
实例名:DMSERVER
服务名:DmServiceDMSERVICE
端口号:5236
数据库创建目录:/dm/dmdbms/data/DAMENG

注意:在此需要注意,Oracle是利用ORACLE_SID来识别(区分)实例,而达梦是利用端口号来识别(区分)实例。因此不可能出现相同端口号的两个不同实例。

01DBCA工具使用

直接运行DBCA脚本(图形化界面创建实例—推荐!!!):
[dmdba@dw1 tool]$pwd
/dm/dmdbms/tool
[dmdba@dw1 tool]$./dbca.sh

02DMINIT工具创建实例

直接运行dminit命令:
[dmdba@dw1 tool]$ dminit PATH=/dm/dmdbms/data DB_NAME=cndba INSTANCE_NAME=dave PORT_NUM=5236 sysdba_pwd=‘sysdba的密码’

注意:
*DBCA工具创建实例会自动注册服务(服务指的是:注册到linux系统服务)
*DMINIT工具不会自动创建服务,需要单独注册实例的服务

03注册达梦数据库实例服务

方法1:使用DBCA工具注册
方法2:使用DM_HOME/script/root/dm_service_installer.sh脚本:
dm8:
使用DM_HOME/script/root/dm_service_installer.sh
[root@dw1 root]#./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/data/cndba/dm.ini -p DAVE

[root@dw1 root]#service DmServiceDAVE start
[root@dw1 root]#service DmServiceDAVE status

例:
dminit PATH=/dm/dmdbms/data DB_NAME=dmdba INSTANCE_NAME=dmdba PORT_NUM=5238

./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/data/cndba/dm.ini -p DAVE

[root@dm root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/data/dmdba/dm.ini -p dmdba
Created symlink /etc/systemd/system/multi-user.target.wants/DmServicedmdba.service → /usr/lib/systemd/system/DmServicedmdba.service.
创建服务(DmServicedmdba)完成

[root@dm root]# systemctl start DmServicedmdba
[root@dm root]# ps -ef | grep dmserver

04启动和停止达梦实例

方法1:在服务查看器中可以启动和停止服务。
[dmdba@dw1 tool]$pwd
/dm/dmdbms/tool
[dmdba@dw1 tool]$./dmservice.sh

方法2:通过系统服务
Linux6:
[dmdba@dw1 init.d]$service DmServiceDAVE stop
[dmdba@dw1 init.d]$service DmServiceDAVE start
[dmdba@dw1 init.d]$service DmServiceDAVE status
[dmdba@dw1 init.d]$ps -ef | grep dm.ini

Linux7:
[dmdba@dw1 init.d]$systemctl start DmServiceDAVE
[dmdba@dw1 init.d]$systemctl stop DmServiceDAVE
[dmdba@dw1 init.d]$systemctl status DmServiceDAVE

方法3:命令行模式
cd /dm/dmdbms/tool
./dmservice.sh

[dmdba@dw1 ~]$dmservice /dm/dmdbms/data/cndba/dm.ini
[dmdba@dw1 ~]$dmservice /dm/dmdbms/data/cndba/dm.ini mount

05切换实例状态

[dmdba@dw1 ~]$disql SYSDBA/SYSDBA
SQL > select status$ from v$database; #查看数据库实例状态
SQL > alter database mount;
SQL > select status$ from v$database;
SQL > alter database open;
SQL > select status$ from v$database;
注释:在达梦数据库v$database表中status值为4时 实例为开启状态;status值为3时 实例为关闭状态

open:开启状态
mount:配置状态
suspend:挂起状态

05DISQL工具使用

01.连接默认的DM实例
02.使用ip地址和端口连接
03.使用service name连接
04.执行脚本
05.执行系统命令行

01.连接默认的DM实例

DISQL默认连接的端口是5236端口,如果是非5236端口则必须指定对应的端口号。
[dmdba@dw1 ~]$disql SYSDBA/SYSDBA
默认密码直接回车:
[dmdba@dw1 ~]$disql
disql V7.6.0.93-Bulild(2018.09.13-07108)ENT
用户名:
密码:

02.使用ip地址和端口连接

[dmdba@dw1 ~]$disql SYSDBA/SYSDBA@localhost:5236
[dmdba@dw1 ~]$disql SYSDBA/SYSDBA@localhost:6236

03.使用service name连接

[root@dw1 root]# vim /etc/dm_svc.conf
插入下面一行
dave=(IP:实例的端口)

[dmdba@dw1 ~]$disql SYSDBA/SYSDBA@dave

04.执行脚本

SQL > start /opt/dm.sql
SQL > ` /opt/dm.sql

05.执行系统命令行

SQL > host
[dmdba@db8 dmhr]$exit
exit
SQL > host df
SQL > host df -lh
SQL > host ls -lrt /

06.DM Manager工具使用

01.连接Manager工具
02.修改DM Manager 工具显示语言
03.启用SQL助手(SQL Assist)功能

01.连接Manager工具

DM Manager 是达梦数据库自带的图像化安装工具,在安装达梦数据库之后会自动安装
该命令在DM_HOST/tool目录下:
[dmdba@dm8 tool]$pwd
/dm/dmdbms/tool
[dmdba@dm8 tool]$./manager

02.修改DM Manager 工具显示语言

如果安装系统是选择的语言是英文,那么DM的工具也会默认用英文显示
Windows平台下,DM Manager的配置文件是:DM_HOEM\tool\manager.ini
将参数从
-Dosgi.ni=en_US
改为:
-Dosgi.ni=zh_CN

Linux平台,直接修改脚本即可,如下:
[dmdba@dm8 tool]$cd /dm/dmdbms/tool
[dmdba@dm8 tool]$cat manager
#!/bin/sh

INSTALL_LANGUAGE=zh_CN

03.启用SQL助手(SQL Assist)功能

启动DM manager工具
窗口—>选项—>查询分析器—>编辑器—>启用SQL输入法助手

07DMSQL

01.DMSQL的概述
02.创建示例用户
03.简单查询
04.where过滤查询
05.集函数
06.分析函数

01DMSQL的概述

DM还兼容Oracle 11g和SQL Server 2008的部分语言特性
SQL:结构化查询语言
DDL:定义 create drop alter truncate(不可回滚!)
DML:管理 select update delete insert
DCL:控制 grant revoke
TCL:事务控制:commit rollback

02.创建示例用户

/dm/dmdbms/samples/instance_script

03.简单查询

select () from ();
第一个括号:*,column_name,alias,expr,||,distinct
第二个括号:table_name

04.where过滤查询

where 子句常用的申请条件由谓词和逻辑运算符组成。谓词指明了一个条件,该条件求解后,结果为一个布尔值;真假或未知
逻辑运算符有:AND、OR、NOT
谓词包括比较谓词(=、>、<、>=、<=、<>),BETWEEN谓词、IN谓词、LIKE谓词、NULL谓词、EXISTS谓词

05.集函数

count(*)

06.分析函数

DM分析函数为用户分析数据提供了一种更加简单高效的处理方式。如果不使用分析函数,则必须使用连接查询、子查询或者视图,甚至复杂的存储过程实现
引入分析函数后,只需要简单的sql语句,并且执行效率方面也会有大幅度提高

count(*);
首位函数FIRST_VALUE、LAST_VALUE;
相邻函数LAG、LEAD;
分组函数NTILE;
排序函数RANK、DENSE_RANK、ROW_NUMBER;
字符串函数LISTAGG;

08表空间管理

01创建表空间
02扩展表空间
03修改数据文件扩展属性
04修改表空间名
05移动数据文件
06删除表空间
备注:在数据库里通常是先建表空间再建用户!!!

01创建表空间

select tablespace_name from dba_tablespaces;

select tablespace_name,file_name,status from dba_data_file order by 1;

create tablespace dm datafile ‘/dm/dmdbms/data/cndba/DM01.DBF’ size 32, ‘/dm/dmdbms/data/cndba/DM02.DBF’ size 32

select tablespace_name,file_name,status from dba_data_file order by 1;

02扩展表空间

(1)扩展现有数据文件的大小
(2)增加新的数据文件

alter tablespace dm add datafile ‘/dm/dmdbms/data/cndba/DM03.DBF’ size 32;

select tablespace_name,file_id,bytes/1024/1023 as “size”,file_name from dba_data_file where tablespace_name=‘DM’;

alter tablespace dm resize datafile ‘/dm/dmdbms/data/cndba/DM01.DBF’ to 64;

select tablespace_name,file_id,byte/1024/1023 as “size”,file_name from dba_data_file where tablespace_name=‘DM’;

03修改数据文件扩展属性

create tablespace cndba datafile ‘/dm/dmdbms/data/cndba/CNDBA01.DBF’ size 32 autoextend on next 10 maxsize 200;

alter tablespace cndba datafile ‘/dm/dmdbms/data/cndba/CNDBA01.DBF’ autoextend on next 10 maxsize 200;

04修改表空间名

#将表空间dm修改为dave
alter tablespace dm rename to dave;

05移动数据文件

在表空间脱机的状态下,可以修改数据文件的位置

alter tablespace dave offline;
alter tablespace dave rename datafile ‘/dm/dmdbms/data/cndba/CNDBA01.DBF’ TO ‘/dm/dmdbms/data/CNDBA01.DBF’;

alter tablespace dava online;
select tablespace_name,file_id,byte/1024/1023 as “size”,file_name from dba_data_files where tablespace_name = ‘DAVA’;

注意:这里的移动是操作系统物理上的移动

06删除表空间

只可以删除用户创建的表空间并且只能删除未使用过的表空间,删除表空间时会删除其拥有的所有数据文件。
drop tablespace dava;

09用户和对象管理

01.用户管理
02.表管理
03.索引管理
04.视图管理

注释:在DM和oracle中模式和用户是两个概念,通常创建一个用户时,数据库同时也会创建一个相同的schema。用户是与权限相关的,通常是提供给数据库连接器连接数据库时使用的,一个用户也可以同时管理多个schema

01.用户管理

在DM数据库中用户管理主要涉及三块:用户、权限、角色
用户是连接数据库并进行相关操作的。
模式是一个用户拥有的所有数据库对象的集合,每一个用户都有自己默认的模式,用户默认的模式名和用户名相同。
权限是只执行特定的sql命令或访问其他模式对象的权利,它用于限制用户可执行的操作。
角色是将具有相同权限的用户组织在一起,这一组具有相同权限的用户成为角色
查看所有的角色:select * from dba_roles;
查看所有用户信息:select username,user_id,account_status from dba_users;
查看系统中所有用户对应的角色:select * from dba_role_privs;
创建用户:create user dm identified by “dameng123”;
对用户授权:grant public,resource to dave;
#登录dm用户
disql dm/“dameng123”
#查看当前用户
select username from user_users;
select user();
create table dava as select * from sysobjects;
select count(1) from dava;

02.表管理

create table dava as select * from sysobjects;
select count(1) from dava;
#重命名表
create table dm1 as select * from sysobjects;
alter table dm1 rename to dm2;
select count(1) from dm2;
#添加列
alter table dm2 add column(age int);
desc dm2;
#删除列
alter table “SYSDBA”.“DM2” drop column “NAME”;
#修改列类型和长度
alter table “SYSDBA”.“DM2” modify “VALID” VARCHAR(50);
#添加主键
alter table “SYSDBA”.“DM2” add primary key(“ID”);

03.索引管理

索引分类:二级索引、位图索引、唯一索引、复合索引、函数索引、分区索引等
达梦默认的表是索引组织表,利用rowid创建一个默认的索引,所以我们创建的索引,称为二级索引。

#查看索引:
select table_name,index_name from dba_indexes where table_name=‘XXX’;
#创建索引:
create table emp as select * from dmhr.employee;
create tablespace index1 datafile ‘/dm7/dmdbms/data/cndba/index01.dbf’ size 32;
create index ind_emp on emp(employee_id) tablespace index1;
select table_name,index_name from dba_indexes where table_name=‘EMP’;

#重建(索引失效时需要重建索引)
alter index IND_EMP rebuild;
#删除
drop index ind_emp;

04.视图管理

视图是从用户的实际需要中抽取出来的虚表
#创建视图
create view purchasing.vendor_excellent as
select * from
purchasing.vendor
where
credit = 1;

#查看视图定义
select view_name,text from dba_views where view_name=‘VENDOR_EXCELLENT’;
#编译视图
alter view purchasing.vendor_excellent compile;
#删除视图
drop view purchasing.vendor_excellent_read;

10作业管理

01.创建系统表
02.创建作业
03.查看作业

#通常用dm manager操作—>代理
作业:通常来讲就是一个定时任务如:数据库的定时备份

01.创建系统表

通过系统过程SP_INIT_JOB_SYS()来创建和删除,这些表被建在SYSJOB模式下:
语法如下:
SP_INIT_JOB_SYS(1);
删除SYSJOB模式及11张系统表的语句:
SP_INIT_JOB_SYS(0);

02.创建作业

方法1,DM Magager 工具中创建
方法2,命令行创建

03.查看作业

select * from sysjob.sysjobs;
select * from sysjob.sysjobschedules;
select * from sysjob.sysjobhistories;

11.DM数据库的备份和还原

01.归档管理
02.逻辑备份与还原
03.联机备份与还原
04.脱机备份与还原

注:
达梦数据库做的任何操作都是先写日志后执行动作
在联机备份和脱机备份都需要开启归档模式

01.归档管理

方法1.通过SQL命令
#创建归档日志目录
mkdir /dm/dmarch

alter database mount; #切换数据库到mount模式
alter database add archivelog ‘DEST=/dm/dmarch,TYPE=local,FILE_SIZE=128,space_limit=0’
alter database archivelog; #非归档模式切换到归档模式
alter database open;
select arch_mode from v$database;
select arch_name,arch_type,arch_dest,arch_file_size from v$da_arch_ini;

方法2.通过DM Manager
打开DM Manager 管理端—>找到对应的数据库—>右键(管理服务器)—>系统管理—>转换状态(配置)—>归档模式—>归档—>添加文件—>确定即可

注释:
默认是非归档模式!
是否开启在线日志到归档日志的这个过程叫归档!

02.逻辑备份与还原

逻辑导出(dexp)和逻辑导入(dimp)支持如下四种级别操作:
数据库级(FULL):导出或导入整个数据库中的所有对象
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象
模式级(schemas):导出或导入一个或多个模式下的所有对象
表级(TABLE):导出或导入一个或多个指定的表或表分区
###注意:导出或导入过程数据库要保持OPEN状态


全库导出:
dexp SYSDBA/SYSDBA file=full01.dmp log=full01.log directory=/dm/dmbak full=y
全库导入:
dimp SYSDBA/SYSDBA FILE=file01.dmp LOG=full02.log directory=/dm/dmbak full=y table_exists_action=replace

按用户导出、导入
导出用户:
dexp SYSDBA/SYSDBA file=user_01.dmp log=user01.log directory=/dm/dmbak owner=dexp
导入数据:
导入到原用户:
dimp SYSDBA/SYSDBA file=user_01.dmp LOG=user02.log directory=/dm/dmbak owner=dexp table_exists_action=replace
导入到其他用户:
create user dimp identified by dameng123;
grant resource,dba to dimp;
dimp SYSDBA/SYSDBA file=user_01.dmp LOG=user03.log directory=/dm/dmbak remap=DEXP:DIMP table_exists_action=replace

按模式导入、导出
导出模式:
dexp SYSDBA/SYSDBA file=schema01.dmp LOG=schema01.log directory=/dm/dmbak schemas=dexp
导入模式:
dimp dimp/dameng123 file=schema_01.dmp LOG=schema.log directory=/dm/dmbak remap_schema=DEXP:DIMP table_exist_action=replace

按表导出、导入
导出:
dexp dexp/dameng123 file=tables_01.dmp log=tables01.log directory=/dm/dmbak tables=表名1,表名2
导入:
导入原用户dexp下:
dimp dexp/dameng123 file=tables_01.dmp log=tables02.log directory=/dm/dmbak
tables=表名1,表名2 table_exist_action=replace
导入dimp用户下:
dimp dexp/dameng123 file=tables_01.dmp log=tables03.log directory=/dm/dmbak tables=表名1,表名2 table_exist_action=replace remap_schema=DEXP:DIMP

03.联机备份(SQL备份)

联机备份在数据库级别只支持备份操作,不支持还原,数据库级别的还原必须在脱机下进行

默认的备份路径为dm.ini中的BAK_PATH参数配置的路径,若未配置,则使用SYSTEM_PATH下的bak目录。

全备:full参数可以忽略,不指定备份类型默认为完全备份
backup database backupset ‘/dm/dmbak/full01’;

增量备份:
backup database increment with backupdir ‘/dm/dmbak’ backupset’/dm/dmbak/inc_back’;

========================================================================

备份表空间:
BACKUP TABLESPACE MAIN BACKUPSET ‘/dm/dmbak/ts_full_bak_01’;

校验表空间备份:
select sf_bakset_check(‘DISK’,‘/dm/dmbak/ts_full_bak_01’);

修改表空间为脱机:
alter tablespace main offline;

还原表空间:
restore tablespace main from backupset ‘/dm/dmbak/ts_full_bak_01’;

修改表空间为联机:
alter tablespace main online;

========================================================================

备份表:
backup table tbak2 backupset ‘/dm/dmbak/tbak2’;

还原表:
restore table tbak2 backupset ‘/dm/dmbak/tbak2’

如果表里牵扯到索引,所以只能先还原表结构后还原表数据!!!

执行表结构还原:
restore table tbak2 struct from backupset ‘/dm/dmbak/tbak2’;

执行表数据还原:
restore table tbak2 from backupset ‘/dm/dmbak/tbak2’;

04.脱机备份与还原

创建数据库完全备份:
cd /dm/dmdbms/bin
./dmran
脱机备份下必须指定实例对应的参数文件,然后正常备份!!!

RMAN > backup database ‘/dm/dmdbms/data/cndba/dm.ini’ full backupset ‘/dm/dmbak/db_full_bak_01’;
注意:执行脱机备份要求数据库必须处于脱机状态

创建数据库增量备份:
RMAN > backup database ‘/dm/dmdbms/data/cndba/dm.ini’ increment with backupdir ‘/dm/dm_bak’ backupset ‘/dm/dm_bak/db_increment_bak_02’;
注意:脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错

脱机备份的还原:
RMAN > restore database ‘/dm/dmdbms/data/dava_for_restore/dm.ini’ backupset ‘dm/dm_bak/db_full_bak_for_recover_dbmagic’;

恢复数据库(更新数据库模数):
RMAN > recover database ‘dm/dmdbms/data/dava_for_restore/dm.ini’ update db_magic;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服