0
点赞
收藏
分享

微信扫一扫

达梦笔记

_LEON_ 2023-09-22 阅读 25

一、达梦安装

#!/bin/bash

# just for dm database install!

echo "please ensure cpu and mem is enough!"

echo "please use root login"

read -p "continue"

export DISPLAY=:0.0

xhost +


mkdir /home/dmdba

groupadd dinstall

useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

echo "dmdba" |passwd dmdba --stdin

echo "user dmdba paaword is dmdba"

read -p "continue"

echo "

dmdba soft nofile 4096

dmdba hard nofile 65536

" >> /etc/security/limits.conf

ulimit -n 65536

mkdir /opt/dm

echo "ensure dm iso like dm*.iso"

read -p "continue"

mount ./dm*.iso /opt/dm

cp /opt/dm/* /home/dmdba/

chmod 755 /home/dmdba/*

chown dmdba:dinstall  /home/dmdba/

su dmdba -c "

export DISPLAY=:0.0

xhost +

~/DMInstall.bin"

按提示root 执行脚本


PATH=$PATH:~/dmdbms/bin

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/dmdbms/bin



~/DMInstall.bin  -i 命令行安装



二、达梦WEB管理


http://localhost:8080/dem




环境准备:

1. DM数据库~ 本文档使用的是DM8


2. tomcat


步骤内容:

1. 安装DM8数据库~ (安装请参考安装手册)


2. 创建一个数据库作为DEM后台数据库, 数据库dm.ini参数配置进行优化, 推荐配置:

MEMORY_POOL          =  200

BUFFER               =  1000

KEEP                 =  64

MAX_BUFFER           =  2000

SORT_BUF_SIZE        =  50


端口号和 密码这里都选择默认。


3.打开 manager工具 并找到达梦数据库安装路径下的 /web/dem_init.sql   ,并执行。 执行后可以看到新模式 DEM       




4. 找到 达梦安装路径下的 web文件夹,将文件夹下的dem.war 复制到tomcat 中间件路径下的 webapps下。




5. 配置tomcat:


切换到tomcat 路径:


(1)在conf/server.xml中  <Connector port="8080" protocol="HTTP/1.1"... 追加属性字段  maxPostSize="-1";

(2)修改jvm启动参数,

Linux:bin/catalina.sh ->     JAVA_OPTS="-server -Xms256m -Xmx1024m -XX:MaxPermSize=512m -Djava.library.path=/opt/dmdbms/bin" 注意这里改成达梦安装路径的bin路径

Windows:bin/catalina.bat -> set java_opts= -server -Xms40m -Xmx1024m -XX:MaxPermSize=512m -Djava.library.path=D:\dmdbms\bin  注意这里改成达梦安 装路径的bin路径




6     .切换到bin路径下 ,双击startup.bat 启动tomcat 服务器。(注意,linux运行 startup.sh)


会弹出一个命令行,稍等一会 浏览器访问页面  可以出现tomcat 主页 即可。(第一次启动报错不用担心,因为没有修改数据库连接)




7. 双击 shutdown.bat 停止服务器,并切换到 webapps/dem/WEB-INF 下修改 db.xml  修改为数据库连接串(可连接远程数据库)






8 .再次启动tomcat ,启动成功后再浏览器访问 http://localhost:8080/dem  




9. 使用默认密码 admin/888888 登入:


dem 管理系统可以监控实例,连接实例,迁移数据,部署集群,等功能~


10. 监控主机 dmagent代理。


在安装达梦数据库时,在安装路径 有一个~ tool/dmagent   这个就是达梦数据库的代理工具。


我们打开dmagent文件夹下的 config.properties文件  修改url


这里可以是其它主机的数据库,地址写部署dem的主机ip地址即可,然后点击DMAgentRunner.bat


此时打开主机,可以监控到这台机器的情况~

三、常用sql语句解析

1. 常用


select* fromv$version; 大版本


selectid_code; 发行日期



Select * from v$instance   版本(版本信息同$version),状态等信息

Select * from v$database 启动时间,启动次数等数据

Host clear;                 host+命令 执行linux系统命令并返回


Select x,y from a1 order by 2 desc;  说明:此处 order by 2 是以查询结果的第二列排序,也就是y列。

disql sysdba/888888888@localhost:6236

 -- current time, sysdatetime

 select curdate(),sysdate fromdual;

 -- time interval

 select (time'19:02:30'-time'11:04:40')second; 

 -- function

 select power(2,3) ,cos(30),greatest(14,56),least(13,544,688,3),pi()

 -- char to  number

 select to_number('2,222,222.22','9G999G999D99')

 select to_number('-343234543.01')

 select to_number('2,222,222.22','9,999,999.99')

 select to_number('$2,222,222.22','$9,999,999.99')

 select to_number('2,222,222.22','9G999G999D99')

 select to_number('2,222,222.22','9G999G999D99')

 select to_number('1,234','XXXX')

 select trunc('123.456',-2)

 select trunc('123.456',2)

Select substr(var,5,7) --截取var从五到7的字符


 select to_char(-1000,'L9G999D99MI');


 ---------------------------------------------------------------

 ---------------------------------------------------------------

 alter database add logfile '/tmp/dm_log_0.log' size200;

 alter database resize logfile'/tmp/dm_log_0.log' to300;


 alter database mount;

 alter database rename logfile'/tmp/dm_log_0.log' to'/tmp/dm_log_1.log'; ---  只允许在MOUNT状态NORMAL模式下执行

 alter database open;


 alter database mount;

 alter database primary; ---primary  / standby

 alter database open force;


 alter database mount;

 alter database normal;

 alter database open ;


 alter database mount;

 alter database archivelog; ----归档模式 


 alter database mount;

 alter database noarchivelog; ----  非归档模式








create databasetest datafile'/opt/test.dbf' size512;----error





-----------------------------------------------------

create schematest;


create tablespace"ts" datafile '/opt/dmdbms/tspace.dbf' size100 autoextend on maxsize16777215 CACHE=NORMAL;

create tablespace"TS2" datafile '/opt/dmdbms/test2.dbf' size32 ;


select user;

commit;

drop tablespace"ts";

create huge tablespace"hts1" path '/opt/dmdbms/hts1.dbf';

commit;rollback;

create huge tabletest.ht3(id int,name varchar(12)) storage(section(65536),filesize(64),onhts1) compress level1(name)log all;--error --why hts1 cann't store  hfs???

drop huge tabletest.ht1;

create huge tabletest.ht2(id int,name varchar(12)) storage(section(65536),filesize(64)) compress level1(name)log all;-----ok!!!

create tablet1(id int,name varchar(12)) partition by range(id)(partitionp1 values less than (500),partitionp2 values less than (1000));


1. 公用表表达式

嵌套查询过多不易读,放在临时表里又增加io 开销

Cte 则避免上述情况


SQL> with

cte1(m) AS (select id from t1 where id > 1),

cte2(n) AS (select id from t2 where id > 5)

select m,n from cte1,cte2;

等价于

Select t1.id , t2.id from t1,t2 where t1.id >1 and t2.id >5;



2. Rollup 和cube,grouping sets统计的使用

Select 部门,职务,count(*) from t6 where id < ‘521’group by rollup(id,name);

结果:

部门

职务

计数

1

11

1

2

21

2

1

12

4

2

22

8

1

Null

5

2

Null

10

null

null

15



处理后结果:


部门

职务

计数

1

11

1

12

4

Null  (小计)

5

2

21

2

22

8

Null (小计)

10

Null   (合计)             null

15



Rollup只对部门进行小计,而cube对部门,职务都进行统计。

Grouping sets

....... group by grouping sets (id,job),year(hir_date);相当于把id,job看成一个整体分组

id

job

hirdate

1

3

null

4

6

null

null

null

2012

null

null

2013



Select id from c1 for update

Select top 5 id ,name...前5行

Select top 2,6 id name...第2条之后的6条记录(3到8)

Limit 类似于mysql分页

3. 全文检索

Create contextindex index1 on emp(name) lexer chinese_vgram_lexer;

Create context index index1 on emp   lexer chinese_vgram_lexer;

... ... where contains(name, ’琳’and ‘静’);







四、达梦结构


五、创建桌面快捷方式

1. 脚本

dmdba用户安装,dmdba用户桌面会有快捷方式,但是Applications和root桌面都不会有快捷方式,所以需要去dmdbms/script下手动执行脚本创建。root桌面创建桌面快捷方式不再赘述同1,只需用root用户去执行./makedesktopdir.sh create即可。

而创建Applications中快捷方式需要再root用户执行dmdbms/script/下脚本./gnomemenu.sh insert

2. 如果没有该文件,可以自己创建

1. 创建桌面文件touch myapp.desktop

2. 编辑此文件写入以下内容

1

2

3

4

5

[Desktop Entry]

Name = 达梦管理工具

Exec = /usr/bin/xxxx/xxx.sh

Icon = /usr/bin/xxxx/xxx.png

Type = Application


3.  返回桌面 右键编辑这个文件,然后双击测试是否可以正常启动

六、



七、


八、


九、


十、

十一、达梦的备份

1. dmrman冷备

1.1 备份

./dmrman ctlstmt="backup database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' full backupset '/home/dmdba/backup2021_5_17'"全量备份


RMAN> BACKUP DATABASE '/data/dmdbms/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/data/dmdbms/' BACKUPSET '/data/dmdbms/backup/full_bak_20210917';增量备份


SQL > BACKUP DATABASE '/data/dmdbms/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/data/dmdbms/' BACKUPSET '/data/dmdbms/backup/full_bak_20210917';SQL语句备份



1.2 恢复

./dmrman ctlstmt="restore database

'/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/backup2021_5_17'"

1.3 还原

./dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/backup2021_5_17'"

1.4 更新魔数

./dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' update db_magic"



1.5  或者直接用RMAN工具

RMAN >   backup  database; 备份全库

RMAN >   configure controfile autoback on;自动备份控制文件

RMAN >   list backup;查看备份

RMAN >   restore controlfile from autobackup;恢复控制文件

RMAN >   restore database;恢复数据文件

RMAN >   recover database; 还原数据库

Ex:    RMAN >   run {

Set until scn 1335543;

Recover database;

}



1.6  恢复到指定节点

restore database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '2021-5-24


recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' with archivedir ' /home/dmdba/dmdbms/data/DAMENG/arch' until time '2021-05-24 16:20:50';


recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' update db_magic;

2.  达梦数据库开启归档日志(热备)

登入数据库。2.1 启动归档ALTER DATABASE MOUNT;ALTER DATABASE ARCHIVELOG;2.2 添加归档(参数值)ALTER DATABASE ADD ARCHIVELOG‘DEST=/dm7/arch,TYPE=LOCAL,FILE_SIZE=64,SPACE_LIMIT=20480’;2.3 最后打开数据库open模式ALTER DATABASE OPEN;



备份数据库:


SQL> backup database;

备份表空间:表空间备份只能联机,还原只能脱机

SQL> backup tablespace DMHR;

备份表:

SQL> backup table emp;

备份归档:

SQL> backup archivelog;



2.4 表空间还原

创建表空间:创建表空间TEST,数据文件初始大小为50m,每次自动扩展

2m,最大可扩展1024m;

create tablespace "TEST" datafile '/dm8/data/DAMENG/TEST01.DBF' size

50 autoextend on next 2 maxsize 1024 CACHE = NORMAL;

备份表空间

backup tablespace "TEST" full to "TS_TEST_FULL_2021_01_07_14_40_19" backupset '/dm8/backup';

表空间脱机

Alter tablespace test offline;

关闭数据库服务

表空间还原

RMAN> restore database '/dm8/data/DAMENG/dm.ini'  tablespace TEST from backupset '/dm8//backup/'

表空间恢复:

RMAN> recover database '/dm8/data/DMDB/dm.ini' tablespace TEST;


3.  逻辑导入和导出

3.1逻辑导出

要求数据库打开

逻辑导出数据库:

[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA file=/dm8/backup/full.dmp full=y

备份表:

[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA file=/dm8/backup/emp.dmp tables=sysdba.emp

备份模式:

[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA file=/dm8/backup/dmhr.dmp  schemas=dmhr

备份用户:

[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA file=/dm8/backup/tast.dmp owner=test

3.2逻辑导入

假设emp表损坏:dimp还原

[dmdba@localhost bin]$ ./dimp SYSDBA/SYSDBA file=/dm8/backup/emp.dmp tables=emp.dmp  ignore=y

如果表存在注意参数IGNORE

如果表不存在:

[dmdba@localhost bin]$ ./dimp SYSDBA/SYSDBA file=/dm8/backup/emp.dmp   tables=sysdba.emp



十二、达梦数据守护

1. 注意事项

注意,按照文档操作即可,,主从上用 ifconfig ens33:0  0.0.0.0  netmask 255.255.255.0配置内部通讯ip(也可添加网卡)

主从不要dmwatcher.ctl 文件,两处地方省略。



2. 启停顺序

2.1 停止顺序


I.    停止

II.   停止从库

III.  停止主库

IV. 关闭主库数据库

V.  关闭备库




2.2 启动顺序

启动顺序逆序进行




3. 部署参考



十三、达梦服务注册


1. 参数说明


-t  服务类型,包括dmimon,dmap,dmserver,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr,dmdcs,dmdrs,dmdras,dmdss

服务名后缀,对于dmimon,dmap服务类型无效

文件路径

文件路径.

文件路径.

文件路径.

文件路径.

文件路径.

文件路径.

文件路径.

文件路径.

文件路径.

文件路径.

文件路径.

文件路径.

服务器信息(IP:PORT)

设置服务器启动模式open或mount,只针对dmserver服务类型生效,可选

设置依赖服务,此选项只针对systemd服务环境下的dmserver和dmasmsvr服务生效

服务脚本路径,设置则忽略除-y外的其他参数选项

帮助


2. 举个栗子

/dm/script/root/dm_service_installer.sh  -t dmmonitor   -monitor_ini  ../dmmonitor.ini   -p  DM3

十四、存储过程

---------------------------------------- example 1 -------------------------------------------------------

--创建表,作为数据源备用

create  table tb1(id int);

insert into tb1 values(1);

insert into tb1 values(2);

create  table tb2(id int);

insert into tb2 values(3);

insert into tb2 values(4);


create  table tb3(id VARCHAR);

insert into tb3 values('tb1');

insert into tb3 values('tb2');


select * from tb2;




--创建存储过程

create or replace procedure SYSDBA.pc1("res" out int) is

id int;

begin

....

end loop;

end pc1;



create temporary table aaa(id int);--创建临时表






---------------------------------------- example 2 -------------------------------------------------------

create or replace  procedure  SYSDBA.pc2(id in int) is

--此处可定义变量

name varchar(20);


cursor my_cs is  select id from tb3;

begin

open my_cs;

loop

fetch  my_cs into  name;

exit when my_cs%notfound;

print id;

id:=id+1;

print 'name:' || name;

end loop;

close my_cs;

end pc2;


--执行

--调用过程(call pc1;pc1;如下函数调用三种方法)

begin

sysdba.PC1;

end


pc2(145262);


call PC1;



举报

相关推荐

0 条评论