- 数据库状态和模式
- 数据守护集群基本归档模式:实时归档
- 读写分离集群基本归档模式:即时归档
- 实时归档:redo日志写入日志文件前,先发送给备机并等待返回确认消息,备机接受redo日志后,马上通知自己已经接受到日志了,在进行重演
- 即时归档:redo日志写入日志文件后,再发送redo日志到备机,等备机进行完日志重演后,再通知主机返回消息。
- 数据库模式
- 所有模式转换,必须在mount状态下进行
- normal:服务正常,操作无限制(常用于单机)
- primary:服务正常,修改对象强制生成redo日志
- standby:只读访问,实时归档失效,根据配置向本地归档写redo日志
- primary和standby的区别:primary模式是可读可写的,standby不支持实时归档
- 数据库状态
- 三种状态可以相互切换,mount不能直接切换成suspend,只能先切换到open再切换到suspend
- open:可读可写
- mount:不能修改数据,不能访问表,视图之类操作,可以查询动态性能
- suspend:挂起状态,可以访问、修改数据库对象,但是不建议提交数据,否则整个页面都会被挂起
- startup:数据库启动后的状态,在进行redo日志重做,在redo日志重做完成之后,回滚活动事务之前,处于after redo状态
- shutdown:数据库关闭状态
- 数据库和数据库集群原理
数据库
dm数据库指的是磁盘上存放在DM数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时数据文件等。
实例
一般是由一组正在运行的 DM 后台进程/线程以及一个大型的共享内存组成。简单来说,实例就是操作 DM 数据库的一种手段,是用来访问数据库的内存结构以及后台进程的集合。
DM 数据库存储在服务器的磁盘上,而 DM 实例则存储于服务器的内存中
数据守护集群
1.数据守护集群的概述
DM数据守护(Data Watch)是一种集成化的高可靠性解决方案,同时满足用户对数据安全性和高可用性的要求。解决由于硬件故障、
自然灾害等原因导致的数据库服务长时间中断问题,满足用户不间断提供数据库服务的要求,即双机热备。
2.数据守护集群实现原理
将主库产生的 Redo日志传输到备库,备库接收并重演Redo日志,从而实现备库与主库的数据同步。
DM数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况,为 Redo 日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。
读写分离集群
1.读写分离集群概述
读写分离集群是基于即时归档实现的高性能数据库集群,不但提供数据保护、容灾等数据守护基本功能,还具有读写操作自动分离、负载均衡等特性。
2.读写分离集群特点
1)纯读操作的事务全部在备机执行
2)纯写操作的事务全部在主机执行
3)既有读又有写的事务,从写事务开始全部在主机执行
3.读写分离集群实现过程
1)接口收到用户请求
2)接口优先将sql发送到备库执行
3)备库执行并返回执行结果,如果接口收到的是备库执行成功消息,则转到第6步,如果接口收到的是备库执行失败的消息,则转到第4步
4)重新将执行失败的sql发送到主库执行,只要第3步中的sql在备库执行失败,则同一个事务后续的所有操作都会直接发送到主库执行
5)主库执行并返回执行结果给接口。一旦主库上执行的写事务提交,则下次继续从第1步开始执行
6)接口响应用户并将执行结果返回给用户
DSC集群
1.dsc集群概述
dsc集群是一个多实例,单数据库的集群,多个数据库实例可以访问、修改一个数据库里的数据,用户可以登录集群中任意
一个数据库实例,或得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,集群中的多个节点同时使用这些文件
数据文件和控制文件等存放在共享磁盘上,每个节点都有自己独立的日志文件和归档文件,在节点本地存储。
2.dsc集群组件
1)数据库和数据库实例:数据库是一个文件的集合,数据库是一组可以操纵数据库的操作系统进程(单进程或单进程多线程)
2)共享存储:集群中,为了实现多个数据库实例可以同时访问、修改数据,要求将数据文件、控制文件、日志文件存放在共享存储中。
3)本地存储:用来保存配置文件(dm.ini、dmmal.ini、dmarch.ini),本地归档日志,远程归档日志。
4)通信网络:集群中,网络分为内部网络和公共网络两个部分。内部网络用于数据库实例间的互相交互信息和数据,如mal系统使用的内部网络,公共网络用于对外提供数据库服务
5)集群控制软件DMCSS:负责监控集群中各个节点的运行状态,主要功能包括:管理集群的启动和关闭,控制节点故障切换,管理节点重新加入集群。
3.dsc集群特点
1)高可用性:集群中,只要有一个节点在运行,就可以正常对外提供数据库服务。
2)高吞吐量:多个节点同时提供数据库服务,有效提升集群事务处理能力。
3)负载均衡:用户连接请求,被平均分配到集群中各个节点,确保各个节点的负载大致平衡。
4.dsc集群实现原理
DMDSC是一个共享存储的数据库集群系统,多个数据库实例同时访问、修改同一个书库,因此带来了全局并发问题,DMDSC集群基于单节点数据库管理系统之上
改造了buffer缓冲区、事务系统、封锁系统和日志系统等,来适应共享存储集群节点间的全局并发访问控制要求,同事,引入缓冲交换技术,来提升数据在节点间的传递效率。
归档配置
本地归档:最多配置8个,写入redo日志到本地归档文件,在redo日志写入日志文件后触发
实时归档:最多配置8个,在redo日志写入到日志文件前,通过mal系统发送redo日志到远程备机并等待返回消息
即时归档:最多配置8个,在redo日志写入到日志文件后,通过mal系统发送reod日志到远程备机并等待重演完成后返回消息
异步归档:最多配置8个,由主备机定时同步日志到异备
单机采用本地归档
数据守护集群采用实时归档
读写分离集群采用即时归档
DMDSC集群采用本地归档和远程归档
即时归档分为事务一致模式和高性能模式,通过dmarch.ini中ARCH_WAIT_APPLY配置项来确定,1表示事务一致模式,0表示高性能模式
事务一致模式:主库事务提交触发redo日志刷盘和即时归档,备库收到主库发送的redo日志,并重演完成后再响应主库,主库收到备库响应消息后
再响应用户的提交请求,事务一致模式下,同一个事务的select语句无论是在主库执行,还是在备库执行,查询结果到满足read commit隔离级别要求。
高性能模式:和实时归档一样,备库收到主库发送的redo日志后,马上响应主库,再进行重演,高性能模式下,备库与主库的数据同步存在一定延时
(一般情况下延迟时间非常短暂,用户几乎感觉不到),不能严格保证事务一致性。
keep_pkg作用:用于存放备库收到的主库通过mal系统发送的redo日志包,并不马上进行重演,防止在主库发送完redo日志后,主库故障,等主库修复后,主备库数据不统一的问题,而即时归档不存在这种机制。
3.事务锁
3.1锁模式
1.共享锁(S)
用于读操作,防止其他事务修改正在访问的对象。
s锁允许多个事务同时读取相同的资源,但是不允许任何事务修改这个资源。
2.排它锁(X)
用于写操作,以独占的方式访问对象,不允许任何其他事务访问被封锁对象;防止多个事务同时修改相同的数据,避免引发数据错误,防止其他事务访问一个正在修改的对象,避免数据不一致。
3.意向锁
意向锁(Intent Lock)用于读取或修改被访问对象数据时使用,多个事务可以同时
对相同对象上意向锁,DM 支持两种意向锁:
意向共享锁(IS)
一般在只读访问对象时使用;
不允许其他事务独占修改该表。意向共享锁定后,不同事务可以同时增、删、改、查该表的数据,也支持在该表上创建索引,但不支持修改该表的定义。
意向排它锁(IX)
一般在修改对象数据时使用;
不允许其他事务独占访问和独占修改该表。被意向排他后,不同事务可以同时增、删、改、查该表的数据,不支持在该表上创建索引,也不支持修改该表定义。
3.2锁粒度
按照封锁对象的不同,锁可以分为 TID 锁和对象锁。
1.TID锁
数据库每一行记录隐含一个TID字段,用于事务可见性判断。执行 insert delete update操作时,设置事务的事务号到TID字段,会隐式地为该行上TID锁。
同一事务的增删改,不会导致对该行重新加锁,提升了性能。
不同事务操作相同行时,第二个事务会加锁,其锁对象为第一个事务的TID号。
DM使用多版本并发控制机制,因此不再存在行锁的概念。
2.对象锁
DM取消了传统数据库的数据字典锁和表锁,引入对象锁用以减少事务冲突,提升并发性能。为提供与表锁同样的功能,从逻辑上将对象锁的动作分为四类:
1.独占访问(EXCLUSIVE ACCESS),不允许其他事务修改对象,不允许其他事务访问对象,使用 X 方式封锁
2.独占修改(EXCLUSIVE MODIFY),不允许其他事务修改对象,允许其他事务共享访问对象,使用 S + IX 方式封锁
3.共享修改(SHARE MODIFY),允许其他事务共享修改对象,允许其他事务共享访问对象,使用 IX 方式封锁
4.共享访问(SHARE ACCESS),允许其他事务共享修改对象,允许其他事务共享访问对象,使用 IS 方式封锁
3.显示锁定表
用户可以根据自己的需要显式的对表对象进行封锁。显式锁定表的语法如下:
LOCK TABLE <table_name> IN <lock_mode> MODE [NOWAIT];
Lock_mode的取值:
SHARE 加共享锁
EXCLUSIVE 加排它锁
INTENT SHARE 意向共享锁
INTENT EXCLUSIVE 意向排它锁
参数nowait,若提供,则表示对表加锁时若不能立即上锁,就返回加锁失败错误。
3.3查看锁
命令:
select * from v$lock;
列含义
字段 | 含义 |
ADDR | 表示锁的内存地址 |
TRX_ID | 表示锁所属的事务 ID |
LTYPE | 表示锁的类型,OBJECT(对象锁)或者 TID(TID 锁) |
LMODE | 锁的模式,S(共享锁)X(排他锁)IS(意向共享锁)IX(意向排它锁) |
BLOCKED | 表示锁是否处于上锁等待状态(0表示上锁成功,1处于上锁等待状态) |
TABLE_ID | 对于对象锁,表示表对象或字典对象的 ID,对于 TID 锁,表示封锁记录对应的表 ID |
ROW_IDX | TID 锁封锁记录的行信息 |
TID | TID 锁对象事务 ID |
3.4阻塞和死锁
1.阻塞
insert产生阻塞原因:当多个事务同时试图向有主键或UNIQUE约束的表中插入相同的数据时,前一个事务未提交,后面的事务将被阻塞,直到前一个事务提交或回滚。
update和delete产生阻塞原因:操作执行时,如果有别的事务正在对操作的行进行相同类型的操作,则在别的事务提交,或者回滚前,操作一直会阻塞。
2.死锁
死锁与阻塞的不同之处在于死锁包括两个或者多个已阻塞事务,它们之间形成了等待环,每个都等待其他事务释放锁。
例如事务1给表T1上了排他锁,第二个事务给表T2上了排他锁,此时事务1请求T2的排他锁,就会处于等待状态,被阻塞。若此时T2再请求表T1的排他锁,则T2也处于阻塞状态。此时这两个事务发生死锁,DM数据库会选择牺牲掉其中一个事务。
3.5锁等待解决方法
- 获取表id
select name, id from sysobjects where name = '表名';
注:此命令的表名需要大写
- 查询处于等待的锁
方法一:
select TRX_ID, LTYPE, LMODE, BLOCKED, BLOCKED TABLE_ID, TID from v$lock where table_id = 表的id;
例:
BLOCKED为1是处于上锁等待状态
方法二:
Select * from v$trxwait;
例:
- 根据事务id找到会话id
select sess_id, sql_text, trx_id from v$sessions where trx_id=10035;
例:
- 通过会话id结束会话
sp_close_session(会话id);
3.物理备份
- 1备份还原工具
命令行:
Disql:联机数据备份与还原,包括库备份、表空间备份与还原、表备份与还原
Dmrman:脱机数据库备份还原与恢复
图形化:
Manager:联机数据备份与还原,包括库备份、表空间备份与还原、表备份与还原
Console:脱机数据库备份还原与恢复
1.2创建实例
初始化实例
1.3归档配置
在进行备份前,首先要设置归档配置
1.3.3Sql配置
登录disql工具
Alter database mount;
修改数据库模式为mount
alter database add archivelog 'dest = /dm8/dm_arch/arch, type = local, file_size = 1024, space_limit = 2048';
配置本地归档,存放路径在/dm8/dm_arch/arch,文件大小为1024M,最大上限2048M
Alter database archivelog;
开启归档
开启归档后将数据库的状态改回open
1.3.2手动配置
手动编辑dmarch.ini文件,保存在dm.ini文件所在路径
注:dm.ini文件中需要设置ARCH =1,表示启用归档
1.4disql联机备份
1.4.1数据库备份
完全备份:
FULL参数可省略,默认为完全备份
Backup database full backupset 'db_bak_03'
Backup database backupset 'db_bak_03';
完全备份中,可指定DDL_CLONE(数据库克隆)参数,只备份定义不备份数据。该参数只用于数据库级完全备份中。
增量备份:
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/dm8/dm_arch/arch/db_increment_bak_02';
在数据库中新建表,添加数据,进行备份
进行备份
再添加数据进行增备
进行增备
1.4.2表空间备份
完全备份:
Backup tablespace main backupset '/dm8/dm_arch/ts_bak/ts_bak_01';
注:备份目录自己生成,不用创建
增量备份:
backup tablespace main increment with backupdir '/dm8/dm_arch/ts_bak' backupset '/dm8/dm_arch/ts_bak/ts_bak_02';
注:备机状态/MOUNT状态/MPP和RAC环境均不允许表空间备份。
1.4.3表备份
表备份均为联机完全备份,不需要备份归档日志,不存在增量备份之说。
Backup table test backupset 'tab_bak_01'
注:备机状态/MOUNT状态/MPP和RAC环境均不允许表备份还原。
1.4.4归档备份
归档备份拷贝指定归档目录下的所有的归档文件到备份集中。
备份归档需要服务器配置归档。
Bakcup archive log all backupset 'arch_bak_01';
1.4.5数据库加密备份
例:数据库完全备份,创建加密密码为“1111111111”,加密算法为“rc4”,复杂数据库加密备份:backup database backupset '/dm8/dm_arch/dm_bak/dm_bak_01' identified by "111111111" with encryption 2 encrypt with rc4;
其中, 参数WITH ENCRYPTION(默认值为 1 ,简单加密) 和 ENCRYPT WITH(默认加密算法AES256_CFB)可不指定。
1.5disql还原
注:DIsql只能进行表空间和表的还原,库还原使用脱机工具DMRMAN。
1.5.1表还原
先删除一条数据,进行还原测试
restore table test from backupset 'tab_bak_01';
查看数据是否还原
还原完成
备份文件与目标表中都包含索引或约束该如何还原
1) 保证数据库为 OPEN 状态;
2) 创建待备份的表;
- 创建索引
- 备份表
5)执行表结构还原,表备份和目标表中都包含索引,如果直接执行表数据还原会报错:
还原表中存在二级索引或冗余约束;
STRUCT:执行表结构还原,若未指定,则认为是表中数据还原;表数据还原要求还原
目标表结构与备份集中完全一致,否则报错,所以表结构还原可以在表数据还原之前执行,
减少报错
6)执行表数据还原。
1.5.2表还原高级主题
DIsql 工具仅支持对表进行还原。
指定还原时不重建索引
表备份时会默认备份表中的索引,还原时使用RESTORE TABLE...WITHOUT INDEX...语句可选择不还原索引。完整示例如下:
1) 保证数据库为 OPEN 状态;
2) 准备数据,创建待备份的表及索引
- 备份表数据
- 还原表数据,但不重建索引。
指定还原时不重建约束
表备份时会默认备份表中的索引定义,还原时使用 RESTORE TABLE...WITHOUT
CONSTRAINT...语句可选择还原时不重建约束。完整示例如下
1) 保证数据库为 OPEN 状态;
2) 准备数据,创建待备份的表及索引;
3) 备份表数据;
4)还原表数据,但不还原约束。
1.6dmrman脱机备份
数据库出入关闭状态
使用dmrman工具
1.6.1数据库备份
完成备份:
backup database '/home/dmdba1/dmdbms/data/dm02/dm.ini' backupset '/home/dm_bak/db_bak_01';
增量备份:
backup database '/home/dmdba1/dmdbms/data/dm02/dm.ini' increment with backupdir '/home/dm_bak' backupset '/home/dm_bak/db_increment_02';
1.6.2归档备份
创建归档备份
backup archive log all database '/home/dmdba1/dmdbms/data/dm02/dm.ini' backupset '/home/dm_bak/arch_all_bak_01';
创建设置条件的归档备份:
通过设置 LSN 或者时间点,控制需要备份归档的范围。
backup archive log lsn between 50000 and 20000 database '/home/dmdba1/dmdbms/data/dm02/dm.ini' backupset '/home/dm_bak/db_increment_bak_02';
1.6.3加密备份
例:数据库完全备份,创建加密密码为“cdb546”,加密算法为“rc4”,复杂数据库加密备份:
backup database '/home/dmdba1/dmdbms/data/dm02/dm.ini' backupset '/home/dm_bak/db_bak_for_encrypt_04' identified by "111111111" with encryption 2 encrypt with rc4;
其中, 参数WITH ENCRYPTION(默认值为 1 ,简单加密) 和 ENCRYPT WITH(默认加密算法AES256_CFB)可不指定。
1.6.4备份管理
备份集查看
备份集校验
备份集删除
- 查看备份集
show backupset '/home/dm_bak/db_bak_01';
- 校验特定备份集
ckeck backupset 'db_bak_01' database '/home/dmdba1/dmdbms/data/dm02/dm.ini';
- 删除备份集
REMOVE BACKUPSET '/home/dm_bak/db_bak_for_remove_01';
批量删除所有备份集:
REMOVE BACKUPSETS WITH BACKUPDIR '/home/dm_bak';
批量删除指定时间之前的备份集:
REMOVE BACKUPSETS WITH BACKUPDIR '/home/dm_bak' UNTIL TIME'2015-11-1 00:00:00';
4.逻辑备份
4.1dexp命令行式导出
Cd /dm8/bin
进入dm数据库的安装目录中的bin目录中
执行:./dexp help
查看dexp工具所有参数的详细介绍
./dexp SYSDBA/SYSDBA@LOCALHOST:5239 DIRECTORY=/dm/dmexp FILE=dexp_SYSDBA_1_%U.dmp OWNER=SYSDBA LOG=dexp_SYSDBA_1_%U.log FILESIZE=200M
DIRECTORY=/dm/dmexp:导出目录为/dm/dmexp
FILE=dexp_emp_1_%U.dmp:导出文件为dexp_emp_1_%U.dmp
OWNER=SYSDBA
LOG=dexp_emp_1_%U.log:日志文件名为dexp_emp_1_%U.log
FILESIZE=200M:每个转储文件的最大大小为200M
导出成功
4.2dimp命令行式导入
进入dm数据库的安装目录中的bin目录中
执行:./dimp help
查看dimp工具所有参数的详细介绍
./dimp SYSDBA/SYSDBA@LOCALHOST:5239 DIRECTORY=/dm/dmexp FILE=dexp_SYSDBA_1_01.dmp LOG=dimp_SYSDBA_1.log TABLE_FIRST=Y
DIRECTORY=/dm/dmexp :导入文件的目录是/dm/dmexp
FILE=dexp_SYSDBA_1_01.dmp:导入文件名称是dexp_SYSDBA_1_01.dmp
LOG=dimp_SYSDBA_1.log:日志文件为dimp_SYSDBA_1.log
TABLE_FIRST=Y:Y是先导入表
导入完成
5.常用查询语句
查看数据库实例信息
SELECT "NAME" "实例名称" ,"INSTANCE_NUMBER" "实例ID" ,"HOST_NAME" "主机名称" ,"SVR_VERSION" "服务器版本" ,"DB_VERSION" "数据库版本" ,"START_TIME" "服务器启动时间" ,"STATUS$" "系统状态" ,"MODE$" "数据库模式" ,"OGUID" "控制文件的 OGUID",SF_GET_PARA_VALUE(2,'PORT_NUM') "端口号"FROM V$INSTANCE;
字符集
select '字符集',DECODE(UNICODE,'0','GB18030','1','UTF-8','2','EUC-KR');
大小写是否敏感
select '大小写敏感',DECODE(SF_GET_CASE_SENSITIVE_FLAG,'0','不敏感','1','敏感');
varchar以字符为单位
select 'char是否以字符为单位', DECODE(PARA_VALUE,0,'否',1,'是') from V$DM_INI WHERE "V$DM_INI".PARA_NAME='LENGTH_IN_CHAR';
页大小
select '页大小',page()/1024||'KB';
兼容性要求
select '数据库兼容',DECODE(PARA_VALUE,0,'不兼容',1,'SQL92',2,'Oracle',3,'MS SQL Server',4,'MySQL',5,'DM6',6,'Teradata') from v$dm_ini where para_name='COMPATIBLE_MODE';
关键字过滤
select '关键字过滤',PARA_VALUE from v$dm_ini where para_name ='EXCLUDE_RESERVED_WORDS';
同时核实dm_svc.conf
cat /etc/dm_svc.conf grep KEYWORDS
查询表空间名称和大小
select name, total_size * sf_get_page_size() / 1024 / 1024 || 'M' from v$tablespace;
查看控制文件所在路径
select para_value name from v$dm_ini where para_name='CTL_PATH';
查看日志文件大小
select PATH, RLOG_SIZE / 1024 / 1024 || 'M' from v$rlogfile;
查看数据库创建日期和归档方式
select create_time,case when arch_mode = 'n' then '非归档模式' else '归档模式' end arch from v$database;
查询活动会话数
select count(*) from v$sessions where state='ACTIVE';
查询已执行超过 2 秒的活动 SQL
select * from (select SESS_ID, SQL_TEXT, DATEDIFF(SS,LAST_RECV_TIME,SYSDATE) Y_EXETIME, SF_GET_SESSION_SQL(SESS_ID) FULLSQL, CLNT_IP FROM V$SESSIONS WHERE STATE='ACTIVE') WHERE Y_EXETIME >=2;
锁查询
SELECT O.NAME,L.* FROM V$LOCK L,SYSOBJECTS O WHERE L.TABLE_ID=O.ID AND BLOCKED=1;
阻塞查询
WITH LOCKS
AS (SELECT O.NAME,L.*,S.SESS_ID,S.SQL_TEXT,S.CLNT_IP,S.LAST_SEND_TIME
FROM V$LOCK L, SYSOBJECTS O, V$SESSIONS S
WHERE L.TABLE_ID = O.ID AND L.TRX_ID = S.TRX_ID),
LOCK_TR
AS (SELECT TRX_ID WT_TRXID, TID BLK_TRXID
FROM LOCKS
WHERE BLOCKED = 1),
RES
AS (SELECT SYSDATE STATTIME,T1.NAME,T1.SESS_ID WT_SESSID,S.WT_TRXID,
T2.SESS_ID BLK_SESSID,S.BLK_TRXID,T2.CLNT_IP,
SF_GET_SESSION_SQL (T1.SESS_ID) FULSQL,
DATEDIFF (SS, T1.LAST_SEND_TIME, SYSDATE) SS,
T1.SQL_TEXT WT_SQL
FROM LOCK_TR S, LOCKS T1, LOCKS T2
WHERE T1.LTYPE = 'OBJECT'
AND T1.TABLE_ID <> 0
AND T2.LTYPE = 'OBJECT'
AND T2.TABLE_ID <> 0
AND S.WT_TRXID = T1.TRX_ID
AND S.BLK_TRXID = T2.TRX_ID)
SELECT DISTINCT WT_SQL,CLNT_IP,SS,WT_TRXID,BLK_TRXID
FROM RES;
查看数据库运行时长
SELECT (SYSDATE-START_TIME)*24 db_lifetime FROM V$INSTANCE;
查看表空间使用情况
select a.tablespace_name,
a.total_mb,
round(b.free_mb, 2) free_mb,
TO_CHAR(ROUND((a.total_mb - b.free_mb) / a.total_mb * 100, 2),
'990.99') || '%' "usage %"
from (select tablespace_name, sum(bytes) / 1024 / 1024 total_mb
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, sum(bytes) / 1024 / 1024 free_mb
from dba_free_space
group by tablespace_name) b,
dba_tablespaces d where a.tablespace_name = b.tablespace_name(+)
and a.tablespace_name = d.tablespace_name(+)order by 4 desc;
6常用命令
主备集群注册服务:
server主:./dm_service_installer.sh -t dmserver -m mount -dm_ini /home/dmdba/dmdbms/data/DAMENG/dm.ini -p DM22
server备:./dm_service_installer.sh -t dmserver -m mount -dm_ini /home/dmdba/dmdbms/data/DAMENG/dm.ini -p DM23
watcher主:./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini -p DM22
watcher备:./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini -p DM23
查看所有会话
select count(*) from v$sessions;
达梦统计信息变化的查询方法
dbms_stats.INDEX_STATS_SHOW('模式名','索引名'):展示索引统计信息
dbms_stats.TABLE_STATS_SHOW('模式名','表名'):展示表统计信息
dbms_stats.COLUMN_STATS_SHOW('模式名','表名', '列名'):展示列统计信息
disql中查看归档信息
select arch_mode from v$database;
select * from v$dm_arch_ini;
查看已注册系统服务的实例
systemctl list-unit-files |grep DmService
删除服务
cd /home/dmdba1/dmdbms/script/root
./dm_service_uninstaller.sh -n 服务名
创建表空间
create tablespace "test" datafile 'test.dbf' size 128 autoextend on next 2048;
创建用户
create user 用户 identified by '密码' defalut tablespace "test" default index tablespace"test"
创建聚集索引
create clustered index on table(id);
赋予权限
grant "public","resource","vti","soi" to "用户";
取消用户限制
alter user "用户" limit failed_login_attemps unlimited, password_lock_time unlimited, password_grace_time unlimited;
删除用户
drop user "用户" cascade;
删除表空间
drop tablespace "表空间名"
disql
数据库备份:
全备命令:backup database backupset '备份路径'
增备命令:backup database increment with backupdir '备份文件所存目录' backupset '新生成的备份文件';
表空间备份:
全备命令:backup tablespace 表空间 backupset '备份路径'
增备命令:backup tablespace 表空间 increment with backupdir '备份文件所在目录' backupset '新生成的备份文件名';
归档备份:
Bakcup archive log all backupset 'arch_bak_01';
数据库加密备份:
backup database backupset '备份路径' identified by "密码" with encryption 2 encrypt with rc4;
disql表还原:
restore table test from backupset '备份文件';
表结构还原:
restore table t1 struct from backupset '备份文件'; --struct:执行表结构还原,若未指定,则是还原表数据。
dmrman脱机备份:
库全备:
backup database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' backupset '/home/dm_bak/db_bak_01';
库增备:
backup database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' increment with backupdir '/home/dm_bak backupset /home/dm_bak/db_increment_02';
归档备份:
backup archive log all database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' backupset '/home/dm_bak/arch_all_bak_01';
有条件的归档备份:通过设置LSN或时间点,控制需要备份归档的范围
backup archive log lsn between 50000 and 20000 database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' backupset '/home/dm_bak/db_increment_bak_02';
查看备份集
select * from v$backupset;
查看备份集
show backupset '/home/dm_bak/db_bak_01';
删除备份集
remove backupset '/home/dm_bak/db_bak_for_remove_01';
dmrman还原数据库:
restore database '/home/dmdba/dmdbms/data/DAMENGdm.ini' from backupset '备份文件所在目录';
更新db_magic恢复:
recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' update db_magic;
恢复数据库:
recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '备份文件所在目录';
利用归档恢复数据库:
recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' with archivedir '归档备份文件所在目录'