达梦连接篇
连接主备服务名配置:
cat /etc/dm_svc.conf
# 全局配置区 GRP1=(192.168.43.131:32141,192.168.43.132:32142) TIME_ZONE=(+480) #表示+8:00 时区 LOGIN_ENCRYPT=(0) DIRECT=(Y) # 服务配置区 [GRP1] TIME_ZONE=(+540) #表示+9:00 时区 LOGIN_MODE=(0) #指定优先登录的服务器模式。0:优先连接 Primary 模式的库,Normal 模式次之, #最后选择 Stantby 模式;1:只连接主库;2:只连接备库;3:优先连接 Standby 模式 #的库,Primary 模式次之,最后选择Normal模式;4:优先连接Normal模式的库,Primary #模式次之,最后选择 Standby 模式。默认值为 0 SWITCH_TIMES=(3) #指定连接失败切换的次数 SWITCH_INTERVAL=(100) #连接失败切换的间隔,单位毫秒 RW_SEPARATE=(1) #是否启用读写分离 0 不启用1 启用 RW_PERCENT=(25) #读写分离分发比例,读事务向主库分发的比例
复制
连接dsc服务名配置:
cat /etc/dm_svc.conf
TIME_ZONE=(480) LANGUAGE=(cn) dm_dsc=(10.10.10.10:6236,1:6236) [dm_dsc] CLUSTER=(DSC) ##EP_SELECTION=(1) DO_SWITCH=(2) SWITCH_TIMES=(2000) SWITCH_INTERVAL=(300)
复制
连接失败问题:
1:查找服务是否正常;
ps -ef|grep dmserver
复制
2:端口是否正确;
cat /opt/dmdbms/data/DAMENG/dm.ini | grep PORT ./disql SYSDBA/SYSDBA@IP:PORT
复制
3:端口通不通;
telnet *.*.*.* 5236
复制
日常使用篇
查达梦进程
ps -ef|grep dmserver
复制
工具目录
ps -ef|grep dmserver
复制
里面有个bin路径,工具在和bin同级的tool目录里面
查参数
Select * from v$parameter where name like ‘%PWD%’;
复制
查归档状态
Select * from v$arch_file;
复制
查建库参数
#查页大小 SELECT cast(PAGE()/1024 as varchar); #查簇大小 SELECT cast(SF_GET_EXTENT_SIZE() as varchar) #查字符集 select substr(svr_version,instr(svr_version,'V')),svr_version FROM v$instance SELECT CASE SF_GET_UNICODE_FLAG() WHEN '0' THEN 'GBK18030' WHEN '1' then 'UTF-8' when '2' then 'EUC-KR' end #查大小写敏感 SELECT cast(SF_GET_CASE_SENSITIVE_FLAG() as varchar) #长度是否以字符为单位 select SF_GET_LENGTH_IN_CHAR();
复制
杀会话
begin for rec in ( select sess_id from v$sessions where sess_id <> sessid() ) loop sp_close_session(rec.sess_id); commit; end loop; end;
复制
查表上面的锁
SELECT * FROM V$LOCK WHERE table_id=( SELECT OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME='BDA_FP_T_A_ZDZJLMMX' );
复制
查表大小
1、创建一个表来存各表的大小
create table table_count (owner varchar(100),table_name varchar(100),used_space_MB varchar(100));
复制
2、执行语句块,查出各表的大小,存进table_count这个表里。
declare begin for rec in ( select owner, table_name from all_tables order by 1, 2 ) loop insert into table_count select rec.owner , rec.table_name, table_used_pages(rec.owner, rec.table_name)*(page()/1024)/1024 from dual; end loop; end;
复制
3、查询表table_count的信息,根据需求排序,就能看到各表的大小
select * from table_count order by used_space_mb desc;
复制
查单表大小:
select table_used_pages('SYS', 'POLICIES')*(page()/1024)/1024 from dual;
复制
sql执行篇
回滚段过旧
方法:优化sql,增加roll表空间
复制
数据迁移篇
迁移方法
用达梦自带的dts工具
打开dts工具。
新建一个工程
新建迁移任务
选择oracle->dm
image.png
填写oracle数据库信息
image.png
指定驱动版本并自定义URL(这里利用去官网下载的oracle11.2.0.4的驱动)
下载地址
image.png
填写目标库信息
image.png
指定要复制的模式(这里仅将HR和SCOTT模式的数据迁移过去)
image.png
选择要迁移的对象
完成。
image.png
迁移完成。
常见迁移报错解决
1.由于外键约束导致数据未导入(重新导入或者分批导入,先导表结构,再导数据,最后导约束)
2.超度超出上限,扩大表字段长度,然后再重新导入数据
备份恢复篇
备份失败解决
1:确保使用的是dmdba用户
2:确定dmap服务正常
ps -ef|grep dmap
复制
数据库升级
替换bin目录
1、正常关闭数据库服务
[dmdba@localhost /]$ cd /dmdbms/bin [dmdba@localhost bin]$ ./dmserver stop DmServiceDMSERVER
复制
2、检查目前数据库的版本
[dmdba@db1 bin]$ ./disql -id 1-1-156-21.01.13-133136-ENT
复制
3、备份当前bin目录
[dmdba@localhost dmdbms]$ mv bin bin_BAK
复制
4、另找一台新服务器安装新版的DM软件,
将新的bin文件夹上传至原来bin目录下。
5、修改文件夹所有者
[dmdba@localhost dmdbms]$ chown –R dinstall: dmdba bin/
复制
6、启动数据库:
注意:如果在新机器上只复制了bin目录,是无法注册后台服务的,需要将原本已注册
的服务文件(例如DmServiceDMSERVER01)进行编辑,确保里面的PATH路径与实际环境一致,才能后台启动这个脚本:
[dmdba@localhost bin]$ ./dmserver start DmServiceDMSERVER
复制
使用卡顿问题定位
sql执行慢
优化sql
内存不足
查找当前的内存使用情况:
select (select sum(n_pages * page_size)/1024/1024 from v$bufferpool)||'MB' as BUFFER_SIZE ,( select sum(total_size)/1024/1024 from v$mem_pool)||'MB' as mem_pool,(select sum(n_pages * page_size)/1024/1024 from v$bufferpool) + (select sum(total_size)/1024/1024 from v$mem_pool)||'MB' as TOTAL_SIZE from dual;
复制
一般都是由于mem_pool过大引起的。
常见的原因:
1:memory_target设置为0,导致会话使用的内存未释放,考虑设置memory_target参数。
2:会话执行的sql消耗大量的内存,此时根据下面sql找到最占用内存的sql,然后进行优化
SELECT "SESSID", MAX_MEM_USED||'KB',SQL_TXT FROM V$SQL_STAT order by MAX_MEM_USED DESC;
复制
评论
