一、达梦安装
#!/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中
(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:dmdbmsbin 注意这里改成达梦安 装路径的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
selectc服务器托管网urdate(),sysdatefromdual;
— time interval
select(time’19:02:30′–time’11:04:40′)second;
— function
selectpower(2,3),cos(30),greatest(14,56),least(13,544,688,3),pi()
— char to number
selectto_number(‘2,222,222.22’,‘9G999G999D99’)
selectto_number(‘-343234543.01’)
selectto_number(‘2,222,222.22’,‘9,999,999.99’)
selectto_number(‘$2,222,222.22’,‘$9,999,999.99’)
selectto_number(‘2,222,222.22’,‘9G999G999D99’)
selectto_number(‘2,222,222.22’,‘9G999G999D99’)
selectto_number(‘1,234’,‘XXXX’)
selecttrunc(‘123.456’,-2)
selecttrunc(‘123.456’,2)
Select substr(var,5,7) –截取var从五到7的字符
selectto_char(-1000,‘L9G999D99MI’);
—————————————————————
—————————————————————
alterdatabaseaddlogfile‘/tmp/dm_log_0.log’size200;
alterdatabaseresizelogfile‘/tmp/dm_log_0.log’to300;
alterdatabasemount;
alterdatabaserenamelogfile‘/tmp/dm_log_0.log’to‘/tmp/dm_log_1.log’;— 只允许在MOUNT状态NORMAL模式下执行
alterdatabaseopen;
alterdatabasemount;
alterdatabaseprimary;—primary / standby
alterdatabaseopenforce;
alterdatabasemount;
alterdatabasenormal;
alterdatabaseopen;
alterdatabasemount;
alterdatabasearchivelog;—-归档模式
alterdatabasemount;
alterdatabasenoarchivelog;—- 非归档模式
createdatabasetest datafile‘/opt/test.dbf’size512;—-error
—————————————————–
createschematest;
createtablespace“ts” datafile‘/opt/dmdbms/tspace.dbf’size100 autoextendonmaxsize16777215 CACHE=NORMAL;
createtablespace“TS2” datafile‘/opt/dmdbms/test2.dbf’size32 ;
selectuser;
commit;
droptablespace“ts”;
createhugetablespace“hts1” path‘/opt/dmdbms/hts1.dbf’;
commit;rollback;
createhugetabletest.ht3(id int,name varchar(12))storage(section(65536),filesize(64),onhts1)compresslevel1(name)logall;–error –why hts1 cann’t store hfs???
drophugetabletest.ht1;
createhugetabletest.ht2(id int,name varchar(12))storage(section(65536),filesize(64))compresslevel1(name)logall;—–ok!!!
createtablet1(id int,name varchar(12))partitionbyrange(id)(partitionp1 valueslessthan(500),partitionp2 valueslessthan(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
结果:
部门 |
职务 |
计数 |
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 tb1values(1);
insert into tb1values(2);
create table tb2(id int);
insert into tb2values(3);
insert into tb2values(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;
服务器托管,北京服务器托管,服务器租用 http://www.服务器托管网fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
@TOC 前言 一、字符指针初始化: 一般写法:char * str = “hello wyy”; 完美写法:const char * str = “hello wyy”; 注释:const 就是常的意思,常量指针,指向常量字符串,因为字符串就是自身的数组名字…