达梦数据库DCA培训课程笔记

说明:本笔记根据达梦培训课程整理,笔记内容仅供交流和参考,如内容有误请指正;如侵权,请联系本人处理,谢谢!
ps:如果需要视频录播的话,可以私信我哈

一、达梦数据库安装

  • 查看cpu:lscpu或者cat /proc/cpuinfo
  • 查看操作系统:uname -a或者cat /proc/version
  • 查看磁盘信息:df -h
  • 查看内存:free -m cat /proc/meminfo
  • 创建group:groupadd dinstall
  • 创建user:useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
  • 创建目录/dm8 chown dmdba:dinstall /dm8
  • 解压iso:mount /opt/dm.iso /mnt/dm(/dm8为安装目录,/mnt/dm为解压目录)
  • 文件打开数:ulimit -n vim /etc/security/limit.conf
    指定tmp空间:DM_INSTALL_TMPDIR = /
  • 图形化:
[root] xhost +
[root] echo %DISPLAY
:0.0
[dmdba] export DISPLAY=:0.0
  • 卸载:/dm8/uninstall.sh 或者-i
  • 配置环境变量,就是在原来环境变量后追加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dm8/bin
vim .bash_profile
source .bash_profile

二、创建数据库

  • 命令行方式:
cd /dm8/bin
./dminit path=/dm8/data db_name=数据库名 instance_name=实例名 port_num=5236 page_size=16
  • 图形化的方式:
[dmdba] cd /dm8/tool
./dbca.sh(图形化)
记得用root执行三个操作

三、注册数据库服务

  • 图形化:
[dmdba] cd /dm8/tool
./dbca.sh(图形化)
选中dm.ini文件后确定,执行三个命令
systemctl enable/enable 注册/关闭自启动
systemctl start 启动服务
  • 命令行:
[root] cd /dm8/script/root
./dm_service_install.sh -t dmserver -p {?实例名} -dm_ini {?dm.ini 路径}
systemctl start DmService{?达梦实例名}.service

四、连接数据库

  • 命令行:
bin/disql
cd /dm8/bin
./disql sysdba/SYSDBA:5236
  • 图形化:配置DISPLAY后 /dm8/tool/manager,比较常用,不记录了

五、达梦服务查看器

[root] 配置DISLPAY
root  /dm8/tool/dmservice.sh启动停止服务

六、SQL语法

  • cross join: 交叉笛卡尔积
  • natural join:会议两个表中具有相同名字的列为条件,两个表中列的类型不同会报错
  • using 在natural join基础上指定连接列
  • join on常用:hash join 、 inner hash join,默认就是inner
  • 外连接:left | right |full outer join
  • 子查询:
    in/exists
    any将值与子查询中的任意一个进行比较
    all与子查询的每个值进行比较 where salay > all (select salay from…)
    exists和in:当结果集特别大时候in的效率没有exists高
  • union和union all区别:union去重

七、内存结构&参数管理

  • 数据库和线程:数据库是指磁盘上数据文件的集合,线程是指一组正在运行的线程/进程的内存集合,达梦是单进程多线程
  • 逻辑存储:
    表空间是数据存储的地方,所有数据都存放在表空间中,存放系统数据和业务数据
    表空间包括段、段包括簇,簇包括数据页,数据页会映射到磁盘块
    簇是连续的数据页的集合、数据页会映射到磁盘块
    簇和数据页不能跨数据文件,段可以
  • 物理存储:一个表空间可以有多个数据文件,但是一个数据文件只能属于一个表空间
  • /dm8/data/DAMENG/dm.ctl
    控制文件,控制文件自动备份,控制文件都是二进制文件
    dmctlcvt可以将控制文件转化为文本文件
    dmctlcvt type=1 src=dm.ini dest=dmctl.txt
    控制文件记录表空间和数据文件信息
    控制文件可以用作数据迁移,把数据文件路径指定为新的路径
  • dm.ini配置文件:初始化参数管理
  • 显示参数类型:
desc v$parameter;
desc v$dm_ini;
select distinct type from v$parameter;
v$parameter中value指当前会话的值,sys_value是内存中的值,file_value是文件中的值,description是配置描述
  • 四种类型:
    1、READ_ONLY:只读参数,只能通过修改dm.ini修改,不能通过函数护着方法
    2、sys:动态参数,系统级参数,可以在数据库运行时修改
    3、session:动态(会话级)参数,可以在数据库运行时生效,只对当前会话
    4、IN-FILE:静态参数,可以在数据库运行时修改,只能修改文件中的值,不能修改内存中的值
  • 静态参数:不能修改内存中的值,需要重启数据库
  • 动态参数:可以修改内存中的值,不需重启就生效
  • 修改参数1(必考)
    alter system set ‘COMPATIBLE_MODE’ = 2 both;–both为生效范围
    生效范围选项:MEMORY|SPFILE|BOTH 内存|文件|前两个,如果不指定范围,默认修改的是内存中的值
    alter session set …改变当前会话(终端连接)
  • 系统函数修改系统配置2:
    select name,id,arg_num from v i f u n w h e r e n a m e l i k e ′ s e l e c t ∗ f r o m v ifun where name like '%SET%PARA%'; select *from v ifunwherenamelikeselectfromvifun_arg where id = 584;
    sp_set_para_value(scope, param , value);
    scope:0:内存中 1:both 2文件中
  • ./console工具中修改配置:服务器配置->示例配置->实例
  • *.DBF:数据库业务数据文件
  • 联机日志:DAMENG1.log和DAMENG2.log是循环写的,用来记录DML的redo日志
  • *.ini:配置文件

八:内存结构

  • 数据缓冲区buffer:内存区域,占据数据库内存的40——60%的空间,用来存放从磁盘读取出来的数据页,为了提高IO性能。
  • 分为四个类型:normal、fast、recycle、keep默认为normal,创建表空间时候只能指定noramal和keep,fast和recycle是dm系统自己使用
  • 对应的配置变量名为:buffer、fast_pool_pages、recycle、keep,一般说修改数据缓冲区大小就是指normal类型的缓冲区,即对应的buffer值
  • noraml常用算法为lru算法:最近最少使用的淘汰算法,latest recently used
  • 重做日志缓冲区:
    commit时候做日志的刷盘
    rlog_buf_size=
    会暂存dml,然后放在重做日志缓冲区,待提交的时候把数据库操作刷盘
  • SQL缓冲区:cache_pool_size
  • SQL CACHE POOL,建成SCP,用来存放包信息、执行计划,结果集默认不缓存
  • 一条查询sql,
    1、先进入SQL缓冲区,如果SQL缓冲区中没有对应SQL语句,如果有查找执行计划缓冲,
    2、如果执行计划缓冲也没有,就分析SQL并生成和加入缓存,
    3、查找结果集缓存,如果结果集缓存中有,则直接返回SQL结果集,否则从数据库磁盘中查找
    RS_CAN_CACHE:是否开启rs结果集缓存
    USE_PLN是否开启执行计划
  • 如果没有缓存,SQL解析过程称为硬解析,要用缓冲区减少硬解析
  • SQL缓冲表空间:
select * from sys.v$cacheitem;缓存的项目
select * from sys.v$cachepln;缓存的执行计划
select * from sys.v$cachesql;缓存的sql
select * from sys.v$cachers;缓存的结果集
select * from v$bufferpool;数据缓冲区,记录4种类型的bufferpool的命中率情况
select *from v$mem_pool;内存池,大的内存占用
select * from v$dict_cache
select * from sys.v$dynamic_tables;  动态视图的名称,存放的是系统监控视图的名称,例如sys.v$开头的视图
对于动态sql,尽量使用绑定变量的方式插入,using关键词
  • 字典缓冲区:主要用来判断表、字段等存在不存在,有没有数据表的查询权限等,缓存的数据字典dict_buf_size
  • 主内存池:
    数据库共享内存池,
    单位:MB
    memory_pool:初始化内存值大小
    memory_extent_size:如果memory_pool不够,每次扩容的大小
    memory_target:最大值
  • 运行时其他内存池:
    vm_pool:虚拟内存池
    sess_pool:会话池
    rt_heap:
    排序区:
    hash区:
    每个会话都会占用vm和sess_pool

九、线程

  • 监听线程:处理客户端的链接请求,生成一个会话线程
  • 会话线程:
    • IO线程:读写数据页,物理读,执行检查点,检查点是用来将数据缓冲区的数据写入数据文件
    • 日志刷新线程:将redo日志写入日志文件中,
    • 日志重做线程:如果数据库突然宕机,一部分数据缓冲区没有进行commit然后刷盘,这时候日志重做线程会从rlog中比对lsn和当前检查点的lsn,然后进行恢复
    • 调度线程:线程调度的线程,计划器
    • 工作线程:核心线程
  • 查看线程:
先看进程:ps -ef | grep dmserver
再看线程:ps -T -p pid,pid为线程号
其中dm_sql_thd就是客户端会话线程,会话越多,这个越多,一个会话会对应一个dm_sql_thd
top -H -p pid,监控线程内存使用情况
select * from v$process;进程
select * from v$thread;线程
select * from v$session;会话
select * from v$sql_history order by time_used desc;SQL历史执行时间倒序
  • 内存分配推荐的方案:
/dm8/samples/sql_script/UTF-8/
MAX_SESSION_STATEMENT 句柄  相当于ORACLE的open_cursors

十、表空间管理

system:系统表空间,存放数据字典的定义,例如表定义、字段声明等
roll:回滚表空间,保证数据的一致性,在一个会话提交数据之前,另一个会话中读取的数据为roll表空间的数据
main:users的空间,如果创建用户时候,没有指定用户表空间,就会使用main表空间
temp:临时表空间,
hmain:huge表空间

  • 查看表空间:
user_tablespaces
v$tablespace
select * from dba_data_files;
  • 联机脱机状态
select * from dba_segments t where t.segment_name like '表名';
dba_segments中的bytes字段是表占用空间大小,表越大,占用空间越大
  • 创建表空间:(默认单位是MB
craete tablespace "TBS" datafile '/dm8/data/DAMENG/TBS01.DBF' size 32;
定义的表空间大小不可低于page大小的4096倍,即select 4096*page/1024/1024;
  • 扩表空间
添加数据文件:alter tablesapce"" add datafile '/dm8/data/DAMENG/TBS02.DBF' size 32;
改表空间大小:alter tablespace "" resize DATAFILE "" TO 128;
限制自动扩展的属性,默认是打开的:alter tablespace dmdbs "" datafile "" autoextend off;
修改每次扩展的大小(MB):alter tablespace dmdbs "" datafile "" autoextend on next 4 maxsize 10240;
  • 更换数据文件存储位置:
alter tablespace  "" rename datafile to "新路径"
删除表空间:
drop tablespaces "";有表结构的表空间不可删除
  • 界面操作:
./manager中,左侧打开链接后,表空间,右键新建表空间
右键脱机、联机、修改
  • 临时表空间:
收缩临时表空间方法:
1、重启
2、临时表空间的在线收缩sp_trunc_ts_file(group_id,file_id,收缩大小)
  • undo表空间:
v$parameter.undo_retation:闪回查询数据报表时长,dm默认闪回查询是关闭的,闪回查询可以找回误删操作,根据时间点找到数据
  • 快照过旧或者叫查询记录过旧问题解决:(A会话在查询表的过程中,B在更新表,就需要保证A查询到的是B更新之前的数据,这个就是快照过久问题)
    1、优化SQL
    2、扩大roll表空间
    3、调整undo_retention

十一、联机日志/重做日志

  • 联机日志默认两个日志循环使用:DAMENG01.LOG和dameng02.log,默认是256M,如果设置过小,会导致两个日志频繁切换,过大会浪费空间
  • 调整联机日志大小:alter database resize logfile “/aaa.log” to 500;
  • 增加联机日志文件;alter database add logfile “/aaa.log” size 500;
  • 联机日志大小查看:
v$rlogfile
v$log;cur_file对应v$rlogfile的id
  • 更改联机日志位置:只能在mount状态下更改:
alter database rename logfile "/aaa" to "新路径"
  • 界面操作:
./manager
数据库连接上右键->管理服务器->日志文件

十二、归档

  • 归档是对redo日志的归档,记录事务日志
  • 归档的功能主要用于数据还原与恢复,数据同步(数据同步主要就是redo日志的同步),也可以做日志分析和挖掘
select arch_mode from v$data_base;默认都是非归档状态
开启归档:(也可以直接改dm.ini,修改和arch相关的参数)
alter database mount
alter database archivelog;(noarchivelog为归档的关闭)
alter database add/(delete) archivelog "type=local, dest=/dm8/arch,file_size=64,space_limit=10240"
alter database open;

注意:设置归档的时候,不要设置空间大小过大,不然考试时候备份会提示空间不足

  • 图形化界面:
./manager管理服务器->归档配置(如果不能操作,需要切换成mount状态),点击,添加,为防止磁盘被撑爆,最好设置空间限制space_limit
转换为mount状态:管理服务器->状态转换,点击配置,再点转换
  • 查看归档设置和归档文件:
select * from  sys.v$archived_log;
select * from sys.v$arch_file;
  • arch_file中arch_lsn和clsn是开始和结束的序列,正常来讲,上一个结束的lsn和下个开始的lsn都是连续的。
    造成不连续的原因:数据库不是正常关闭(直接kill进程),可以用redo日志进行归档日志的修复 切换归档日志文件:(三个语句都可以
alter system switch logfile;
alter database archivelog current;
alter system archive log current;`在这里插入代码片`
  • 归档日志空间常常过大,怎么维护归档日志文件?,删除的前提是已经做了备份了,全备或者增量备份
select SF_ARCHIVELOG_DELETE_BEFORE_LSN();删除某个lsn之前的归档日志文件
select sf_archivelog_delete_before_time(sysdate-3);删除三天之前的归档日志文件

十三、用户管理

  • 创建用户
create/alter user 用户名 identified by "密码"
select * from v$parameter where name = 'PWD_POLICY';密码安全策略,默认是2(密码长度不小于9
  • 图形化:
    用户->管理用户->右键新建用户
    连接限制可以限制IP登陆
  • 修改pwd_policy:
alter system set 'PWD_POLICY' = 31 both;
alter user 用户名 limit failed_login_attemps 5, password_lock_time 3,session_per_user 2;--设置用户5次登陆尝试,冻结3分钟,2个连接会话
session_per_user和max_session结合起来,max_session系统级别如果到达最大连接,即使session_per_user不达到最大连接,也不可再发起会话,
当业务达到最大session,是预留了一个sysdba会话可以连接的
如果密码有特殊字符,需要用双引号括起来
disql需要用单引号加双引号:disql dmtest dmtest/'"DAMENG@123"'
select * from dba_users;可查看lock_date被锁定时间,默认表空间,密码策略
  • 删除用户
drop user 用户名
  • 系统权限(数据库权限):
创建表 create table
修改数据库 alter database
创建表空间 create tablespace
alter tablespace 修改表空间
创建用户、视图、存储过程、函数、角色、模式
  • 授权/收回权限:
grant create table to 用户名
grant select(id,lastname) on dmhr.employee to 用户名;--精确到表列的权限
revoke ... from  ..
  • 对象权限,对对象的操作权限:
表、视图、序列、存储过程的alter delete execute insert references select updategrant select on DMHR.CITY to 用户名,给用户名授予city表的select 权限
revoke select on 表明 from 用户名,收回权限
  • 系统角色:
select * from dba_roles;
DBA:具有几乎所有的权限,除了审计和强制访问之外的权限,默认赋给sysdba用户
public:具有对当前模式下对象的dml数据操作权限
resource:具有在当前模式下对象定义权限(创建表、索引、视图等)
soi:具有查询sys开头系统表的权限
vti:具有查询v$开头的动态视图权限
角色是一组权限的集合,方便给用户授权
create tole r1;
grant create table to r1;
grant r1 to user1;
启用禁用角色:sp_set_role('r1', 0/1); 1是启用

操作系统验证?DM8安全手册中讲到了(不是考点)
就是直接用disql / as sysdba

十四、模式对象管理(schema)

  • 模式定义:模式是一个特定的对象集合,在概念上可将其看作是包含表、视图、索引等若干对象的对象集。
  • 模式对象:表、视图、约束、索引、序列、触发器、存储过程/函数、包、同义词、类、域
  • 模式就是对象的属主,一个用户可以查看多个属主下的对象
  • 在ora中,模式和用户是一对一的关系,在DM中,一个用户可包含多个模式,默认模式和用户名一致。
  • 创建模式
create schema dameng autorization sysdba;
select * from sys.sysobjects ;--系统中的 所有对象信息
where type$ = 'SCH'--查看模式信息
sysobjects表中的pid对应的是自己表中的id
  • 查看当前模式:select sys_context(‘USERENV’,‘CURRENT_SCHEMA’);
  • 设置当前模式:set schema dmhr;设置后查询语句的对象名之前就不用加模式名+点了,仅对当前会话有效
    模式本身没有权限,权限是在用户上
  • 表:
select * fro user_tables;查所有表的信息,和表空间信息
desc user_tab_columns;查表列信息
alter table xx move tablespace xx;修改表的表空间,达梦中切换表空间、索引不会失效,oracle会失效
number(p,s)类型字段,DM中number(5,2)的格式为000.00,oracle中为00000,ora没有s的概念,唯一
DM中的varchar是以字节为保存,nvarchar是以字符保存
例如varchar(1)中保存不了1个汉字,但是nvarchar(1)就可以,默认国标中一个汉字是2个字符
新版本DM中支持nvarchar,但是老版本不行,可以修改字段类型为:varchar(2, char),括号中加char
timedate类型
布尔类型 bit
create table a as selct * from b;--oracle的方式,会丢失列索引,主键等
create table a as select * from b where 1=0;只复制了表结构
create table a like b;--mysql的方式
  • 约束:
select * from dba_constraints;所有的约束信息
select * from dba_cons_columns;所有的约束字段信息,constraint_name
主键primary key和唯一键unique key:
主键只能定义一个,唯一键可以定义多个
唯一键不一定是主键
not null + unique = primary key
定义主键时自动创建聚簇索引。相反,Unique键生成非聚集索引。
  • 外键:
设置外键索引后,字表中的pid字段插入时候会校验主表ID是否存在
alter table sonT add constraint 约束名 foreign key(pid) refereneces parentT(id);
设置外键时候,一定是要指向主表的主键或者唯一键,否则建立约束时候会报错
如果子表外键关联了主表,删除主表时候也会校验主表这条数据是否被外键引用
  • check:
例如最低工资标准,不得低于3000
alter table ..... check(salary >= 3000);

十五、数据导入导出

1、导出为sql文件:表名上右键->浏览数据->选中所有,右键导出为sql
2、切换至目标用户conn hrtest/12345
3、用1前面的符号执行脚本:`sql文件
4、也可以用start xx.sql文件命令导入
5、界面客户端中的窗口要commit(很多容易在这里丢分)

十六、视图

select * from user_views;
create view if not exists xx as select xx
drop view if exists xx

十七、索引

  • 索引优势:
    • 通过指针加速查询速度
    • 通过快速定位数据的方法,减少磁盘IO
    • 索引与表互相独立
    • 服务器自动使用和维护索引
  • 索引相关操作:
create index xx on tablname(col) tablespace sbspname
 - 删除索引:drop index xx
alter index xx rebuild;--重建,删除数据后会产生索引随便,可以考虑重建索引
explain sql语句; 查看sql语句执行计划
创建完索引后,执行计划中可以看到要走二级索引,就是secondary index seek
执行计划视图中,代价字段是耗时(ms),结果集是行数(预估),行数据处理长度是网络消耗
执行计划中的结果集是预估的,需要手动收集信息后执行
dbms_stats.gather_table_stats("模式名","表明")
dbms_stats.table_stats_show("模式名","表明");
dbms_stats.index_stats_show("模式名","索引名")
  • DM默认的索引类型是聚簇索引,表默认的是索引组织表:全表扫描,ORA默认的表是堆表
  • 索引组织表:查询效率可能没有堆表的高,索引组织表按照rowid排序,rowid是逻辑的,如果创建主键,主键是默认的聚簇索引键
  • 堆表:排序的字段是物理的
  • 监控索引:
ALTER INDEX XX MONITORING USAGE;-- 开启索引监控
ALTER INDEX XX MONITORING USAGE;--关闭索引监控
select * from sys."v$object_usage";--used字段为yes时候,就表示索引在sql中用到过
增删改操作会更新索引,所以发现经常更新的表会查询变慢,这种的表不该建立过多索引

十七、数据字典

  • 数据字典表:
user_* 用户所拥有的对象信息;
all_* 用户能访问的对象信息
dba_* 整个数据库中的对象信息
select *from sysobjects 系统中所有对象的信息
sysindexes 所有索引定义信息
syscolumns 所有列定义信息
  • 动态性能视图:
内存中或控制文件中的数据以表的形式展现出来,都是虚拟表,
select * from v$buffer;缓冲池动态性能表
select * from v$datafile;显示数据文件信息
select * from v$process;显示当前进程信息 
  • 查询事务的等待,例如两个会话同时往一张表查同样的数据,但是其中一个会话中没有commit,另一个会话就会等待
select * from sys."v$traxwait";--等待事务,id在等待wait_for_id的事务,thrd_id当前事务的ID
select * from v$lock t where t.blocked=1;table_id为被锁的ID
select * from sys."v$sessions";--会话线程
select * from sys.sysobjects t where id = ?table_id
sp_close_session(thrd_id);关闭某个线程会话
  • grant create any table to xx;会报错,因为DM默认没有权限把create any的权限转授权给其他
    需要修改sys.v$parameter中的enable_ddl_any_priv为1

十八、数据库的备份与还原

  • 冷备:数据库关机状态下的备份
  • 热备:数据库运行状态下的备份
  • 累积增量备份:备份集一定要是全量的
  • 差异增量备份(默认):备份集可以是全量也可以是增量
  • 备份过程会产生备份集,是个文件夹:
    • 包含元数据信息和备份片信息,
    • 备份片是个.bak结尾的文件,备份片又包含数据备份片和日志备份片,数据备份片是备份数据页,日志备份片是备份在备份过程中的redo日志信息
    • .bak是数据备份片
    • _1.bak是日志备份片
    • 元数据信息存放备份集信息,是个.meta结尾的数据文件,描述了备份的信息,例如是什么级别的备份?是增量还是全量
  • 恢复:一致性恢复,如果是冷备,那恢复时候就是恢复了全部状态
  • 备份、还原和恢复三个的关系(引用博客):

DM 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的
有效数据页包括数据文件的描述页和被分配使用的数据页。而在备份的过程中,如果数据库
系统还在继续运行,这期间的数据库操作并不是都会立即体现到数据文件中,而是首先以日
志的形式写到归档日志中,因此,为了保证用户可以通过备份集将数据恢复到备份结束时间
点的状态,就需要将备份过程中产生的归档日志也保存到备份集中。
还原与恢复是备份的逆过程。还原是将备份集中的有效数据页重新写入目标数据文件的
过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复 到指定时间点和指定
LSN。恢复结束以后,数据库中可能存在处于未提交状态的活动事务, 这些活动事务在恢复结束后的第一次数据库系统启动时,会由 DM
数据库自动进行回滚。 ———————————————— 版权声明:本文为CSDN博主「蝶恋玉儿」的原创文章,遵循CC 4.0
BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44842658/article/details/124438825

  • 联机备份:
    • 首先是要开归档的,归档日志可以保留所有重做历史记录,当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库
    • 联机备份可以备份数据库,表空间,表和归档文件
    • 表备份必须是联机备份和还原
    • 表空间联机备份,但是要脱机还原
    • 库备份支持联机和脱机,但是还原只支持脱机还原
  • 联机备份操作:
    • ./manager 表空间备份->新建表空间,备份路径一定是要dmdba要有权限写入
    • ORA的RMAN支持联机和脱机,DM的RMAN只支持脱机
  • 脱机备份操作:
    • 两个数据库魔术
    • select dm_magic from v$rlog;每做一次库级还原和恢复后,就会变化,在集群环境中db_magic用来区分主备
    • select permanent_magic;永久魔术,一旦生成就不会变化
    • 集群环境中,永久魔术都一样,但是db_magic不一样
  • 查看默认备份目录和备份还原策略
select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');
  • 备份数据库:
backup database;--前提是要开启归档日志,如果没有开启归档或者归档过晚,要执行checkpoint(100)函数,更新检查点,或者直接重启数据库
dmrman;--切换到rman,要查看备份集信息
show backupset '备份数据集路径';查看数据库对应备份集信息
check backupset 'xx';校验备份集
select * from sys."v$backupset";查看备份集
backupset中默认只能查看默认路径下的备份集,如果想看到其他路径下的备份集,可以使用函数进行添加路径:sf_backset_backup_dir_add('DISK', '其他路径')
  • dmrman常用命令:
show backupset '结果集'
remove backupset '结果集'
check backupset '结果集'
  • 操作界面中是右击库备份->指定工作目录->添加
  • 备份时AP服务要打开:
/dm8/bin/DmAPService status
开关:/dm8/bin/DmAPService start/stop
  • 全量备份:
backup database full to FULLBACK01 BACKUPSET '生成路径'
  • 差异增量备份:
如果不指定路径,默认是会去默认全量备份路径下找最近一次全备文件
backup database increment with backupdir '全量备份依据路径' to incrback01   backupset '生成路径';
增量备份之后,如果v$backupset中找不到备份结果集,也需要执行sp_bakset_backup_dir_add()
v\$backupset 中的base_name就是差异增量备份中依据的备份结果集
 多个差异备份时,如果第一个差异备份丢了,后边的都不可用,依次类推
  • 累积增量备份语法多了个cummulative:
backup database increment cummulative with backupdir。。。
累积增量备份会依据默认的备份路径及注册的备份路径,找到最新的一个全备结果集作为基础,进行备份
v$backupset 中可以查到base_name为最新的全备结果集名称
  • 表空间级别备份:
    backup tablespace xx full to 备份名称 backupset ‘结果集生成路径’;
    语法和库级的差不多
  • 表的备份:表的备份只有全量备份
    backup table 表名 to tabback01 backupset ‘生成路径’;
  • 归档的全量备份:
    backup archivelog all;
  • 查看数据库实例当前状态:select status$ from v$databse;
  • 脱机备份:
先停止服务:bin/DmService实例名 stop
或disql中关机:shutdown immediate;
或bin/dmserver 实例名中的dm.ini
备份:backup database '/dm8/data/实例名/dm.ini' to 备份名称 backupset '结果集路径'
  • 数据库级别的恢复:
1 还原:
	restore databse '恢复目标实例dm.ini' from backupset '全备路径'2 恢复:	
	recover database '恢复目标实例dm.ini' with archivedir '归档路径'; 
	如果是不完全恢复,可以最后指定until time ''或者 until LSN ''
3 库级别的恢复是需要更新数据库魔术:重要,不然启动不了数据库
	recove databse '恢复目标实例dm.ini' update db_magic;
  • 表空间级别的还原和恢复:,最好是异库还原
1 还原:
	restore databse '恢复目标实例dm.ini' tablespace 表空间名 from backupset '源备份路径';

2 恢复:处理归档日志	
	recover database '恢复目标实例dm.ini' tablespace  表空间名;
  • 表的还原和恢复:

1、如果没有表结构,需要先恢复表结构:
restore table struct from backupset ‘源结果集’
2、再恢复表数据:
restore table 表名 from backupset ‘源结果集’

  • 控制台:
    tool/console
    恢复的时候,如果有归档日志,需要选择归档日志
  • 逻辑备份:
    数据库的迁移、历史数据归档、重新组织表、物理备份的辅助
    导出类型:FULL TABLES SHEMAS OWNER
    bin/dexp help
    bin/dexpdp 只能从服务器上导出
    dexp userid=sysdba/Dameng123 directory=/dm8/backup/dexp/ file=full.dmp log=full.log owner=用户名
    dimp 中有个参数是可以跨用户导入,需要做用户映射,remap_schema=oldUserNm:newUserNm

十九、作业管理

类似定时任务
select * from dba_jobs
dbms_job.run(jobid)
select * from sysjob.sysjobhistories2
dbms_scheduler;默认是没有的,需要创建的

二十、达梦开发

ODBC/JDBC/DPI/OLEDB
jdbc驱动放在/dm8/drivers/jdbc中
system status/stop firewalld防火墙关闭或查看
达梦HS环境搭建用的就是odbc

  • (会考)安装ODBC:
1、解压 tar -zxvf unixodbc.tar.gz
./configure -h查看帮助
--prefix指定安装目录,默认是安装在/usr/local下
2、编译 解压目录中执行./configure
3、安装 解压目录中执行make install 
4、查看配置文件信息odbcinst -j,找打配置文件odbcinst.ini和odbc.ini
5、vim odbcinst.ini 配置信息
6、vim odbc.ini 配置数据源
7、测试连接
dmdba中执行isql dm8 -v
执行查询sql,能出结果即可
注意:odbc.ini中的driver名字对应的是odbcinst.ini中[]中的名字
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值