安装好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/
复制安装文件:将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程序,开始图形安装。
[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
1.DBCA工具管理实例
2.DMINIT工具创建实例
3.注册达梦实例服务
4.启动和关闭数据库
5.切换实例状态
注释:
达梦默认数据库名:DAMENG
实例名:DMSERVER
服务名:DmServiceDMSERVICE
端口号:5236
数据库创建目录:/dm/dmdbms/data/DAMENG
注意:在此需要注意,Oracle是利用ORACLE_SID来识别(区分)实例,而达梦是利用端口号来识别(区分)实例。因此不可能出现相同端口号的两个不同实例。
直接运行DBCA脚本(图形化界面创建实例—推荐!!!):
[dmdba@dw1 tool]$pwd
/dm/dmdbms/tool
[dmdba@dw1 tool]$./dbca.sh
直接运行dminit命令:
[dmdba@dw1 tool]$ dminit PATH=/dm/dmdbms/data DB_NAME=cndba INSTANCE_NAME=dave PORT_NUM=5236 sysdba_pwd=‘sysdba的密码’
注意:
*DBCA工具创建实例会自动注册服务(服务指的是:注册到linux系统服务)
*DMINIT工具不会自动创建服务,需要单独注册实例的服务
方法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
方法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
[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:挂起状态
01.连接默认的DM实例
02.使用ip地址和端口连接
03.使用service name连接
04.执行脚本
05.执行系统命令行
DISQL默认连接的端口是5236端口,如果是非5236端口则必须指定对应的端口号。
[dmdba@dw1 ~]$disql SYSDBA/SYSDBA
默认密码直接回车:
[dmdba@dw1 ~]$disql
disql V7.6.0.93-Bulild(2018.09.13-07108)ENT
用户名:
密码:
[dmdba@dw1 ~]$disql SYSDBA/SYSDBA@localhost:5236
[dmdba@dw1 ~]$disql SYSDBA/SYSDBA@localhost:6236
[root@dw1 root]# vim /etc/dm_svc.conf
插入下面一行
dave=(IP:实例的端口)
[dmdba@dw1 ~]$disql SYSDBA/SYSDBA@dave
SQL > start /opt/dm.sql
SQL > ` /opt/dm.sql
SQL > host
[dmdba@db8 dmhr]$exit
exit
SQL > host df
SQL > host df -lh
SQL > host ls -lrt /
01.连接Manager工具
02.修改DM Manager 工具显示语言
03.启用SQL助手(SQL Assist)功能
DM Manager 是达梦数据库自带的图像化安装工具,在安装达梦数据库之后会自动安装
该命令在DM_HOST/tool目录下:
[dmdba@dm8 tool]$pwd
/dm/dmdbms/tool
[dmdba@dm8 tool]$./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
…
启动DM manager工具
窗口—>选项—>查询分析器—>编辑器—>启用SQL输入法助手
01.DMSQL的概述
02.创建示例用户
03.简单查询
04.where过滤查询
05.集函数
06.分析函数
DM还兼容Oracle 11g和SQL Server 2008的部分语言特性
SQL:结构化查询语言
DDL:定义 create drop alter truncate(不可回滚!)
DML:管理 select update delete insert
DCL:控制 grant revoke
TCL:事务控制:commit rollback
/dm/dmdbms/samples/instance_script
select () from ();
第一个括号:*,column_name,alias,expr,||,distinct
第二个括号:table_name
where 子句常用的申请条件由谓词和逻辑运算符组成。谓词指明了一个条件,该条件求解后,结果为一个布尔值;真假或未知
逻辑运算符有:AND、OR、NOT
谓词包括比较谓词(=、>、<、>=、<=、<>),BETWEEN谓词、IN谓词、LIKE谓词、NULL谓词、EXISTS谓词
count(*)
DM分析函数为用户分析数据提供了一种更加简单高效的处理方式。如果不使用分析函数,则必须使用连接查询、子查询或者视图,甚至复杂的存储过程实现
引入分析函数后,只需要简单的sql语句,并且执行效率方面也会有大幅度提高
count(*);
首位函数FIRST_VALUE、LAST_VALUE;
相邻函数LAG、LEAD;
分组函数NTILE;
排序函数RANK、DENSE_RANK、ROW_NUMBER;
字符串函数LISTAGG;
01创建表空间
02扩展表空间
03修改数据文件扩展属性
04修改表空间名
05移动数据文件
06删除表空间
备注:在数据库里通常是先建表空间再建用户!!!
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;
(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’;
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;
#将表空间dm修改为dave
alter tablespace dm rename to dave;
在表空间脱机的状态下,可以修改数据文件的位置
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’;
注意:这里的移动是操作系统物理上的移动
只可以删除用户创建的表空间并且只能删除未使用过的表空间,删除表空间时会删除其拥有的所有数据文件。
drop tablespace dava;
01.用户管理
02.表管理
03.索引管理
04.视图管理
注释:在DM和oracle中模式和用户是两个概念,通常创建一个用户时,数据库同时也会创建一个相同的schema。用户是与权限相关的,通常是提供给数据库连接器连接数据库时使用的,一个用户也可以同时管理多个schema
在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;
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”);
索引分类:二级索引、位图索引、唯一索引、复合索引、函数索引、分区索引等
达梦默认的表是索引组织表,利用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;
视图是从用户的实际需要中抽取出来的虚表
#创建视图
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;
01.创建系统表
02.创建作业
03.查看作业
#通常用dm manager操作—>代理
作业:通常来讲就是一个定时任务如:数据库的定时备份
通过系统过程SP_INIT_JOB_SYS()来创建和删除,这些表被建在SYSJOB模式下:
语法如下:
SP_INIT_JOB_SYS(1);
删除SYSJOB模式及11张系统表的语句:
SP_INIT_JOB_SYS(0);
方法1,DM Magager 工具中创建
方法2,命令行创建
select * from sysjob.sysjobs;
select * from sysjob.sysjobschedules;
select * from sysjob.sysjobhistories;
01.归档管理
02.逻辑备份与还原
03.联机备份与还原
04.脱机备份与还原
注:
达梦数据库做的任何操作都是先写日志后执行动作
在联机备份和脱机备份都需要开启归档模式
方法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 管理端—>找到对应的数据库—>右键(管理服务器)—>系统管理—>转换状态(配置)—>归档模式—>归档—>添加文件—>确定即可
注释:
默认是非归档模式!
是否开启在线日志到归档日志的这个过程叫归档!
逻辑导出(dexp)和逻辑导入(dimp)支持如下四种级别操作:
数据库级(FULL):导出或导入整个数据库中的所有对象
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象
模式级(schemas):导出或导入一个或多个模式下的所有对象
表级(TABLE):导出或导入一个或多个指定的表或表分区
###注意:导出或导入过程数据库要保持OPEN状态
按表导出、导入
导出:
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
联机备份在数据库级别只支持备份操作,不支持还原,数据库级别的还原必须在脱机下进行
默认的备份路径为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’;
创建数据库完全备份:
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;
文章
阅读量
获赞