备份还原
备份作用?
1、防止误操作。
2、软硬件故障,做恢复
3、防止天灾。
备份的方式:物理备份和逻辑备份
备份的介质:磁盘,磁带,光盘
集群:数据守护 ,dsc(rac)
也支持第三方的备份软件:上海爱数,鼎甲
物理备份
冷备和热备
冷备:DMAP服务是打开的,数据库实例是关闭的);
方式:
- 利用控制台工具去备
- DMRMAN工具备份:
- 冷备份,要停止数据库,如果不停止造成数据丢失。
- 热备份(DMAP服务是打开的,数据库实例是打开的,数据库是归档模式)
开归档:命令方式:
SQL> alter database mount;
SQL> alter database add archivelog 'type=local,dest=/dm7/arch,file_size=64,space_limit=0';
SQL> alter database archivelog;
SQL> alter database open;
SQL> select name,status$,arch_mode from v$database;
利用管理工具去开归档
[dmdba@dca01 ~]$ disql sysdba/SYSDBA@localhost:5238
SQL> select name,status$,arch_mode from v$database;
命令行方式下全备,增量备(考试的时候建议用热备)
# 全备:
SQL> backup database full backupset '/dm7/backup/full_bak';
# 增量备:
SQL> backup database increment backupset '/dm7/backup/incr_bak';
3、利用管理工具作热备
还原:
模拟表空间损坏:
[dmdba@dca01 DAMENG]$ mv tbs1_02.dbf tbs1_02.dbf.bak
# 重启服务
# 数据库处于mount状态,手动open
SQL> restore tablespace tbs1 from backupset '/dm7/backup/full_bak/';
SQL> alter database open;
SQL> alter tablespace tbs1 online;
逻辑备份
导入导出(DIMP,DEXP)分为四种级别:
数据库级别,用户级别,模式级别和表级别,四种级别独立互斥,不能同时存在,四种级别提供的功能:
- 数据库级别:导出或导入整个数据库的访问对象。
- 用户:导入或导出一个或多个用户所拥有的所有对象。
- 模式:导入或导出一个或多个模式下的所有对象。
- 表级:导出或导入一个或多个指定表或表分区。
1、逻辑导出
[dmdba@dca01 bin]$ ./dexp
sysdba/dameng123@localhost:5236 file=dexp01.dmp
log=dexp01.log directory=/dm7/backup/dexp full=y
2、导入:
[dmdba@dca01 bin]$ ./dimp sysdba/SYSDBA@localhost:5238 file=/dm7/backup/dexp/dexp01.dmp log=/dm7/backup/dexp/dimp02.log;
作业
定时去执行的一组任务
考试时尽量使用管理工具来做。命令多且繁杂。
定期去备份
- 创建代理环境(达梦会创建一个sysjob模式)
- 创建作业:
call SP_CREATE_JOB('JOB1',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB1');
call SP_ADD_JOB_STEP('JOB1', 'JOB1', 5, '01000/dm7/backup/JOB', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB1', 'JOB1', 1, 2, 1, 64, 0, '22:00:00', NULL, '2020-02-19 14:48:01', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB1');
定时增量备份
call SP_CREATE_JOB('JOB2',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB2');
call SP_ADD_JOB_STEP('JOB2', 'JOB2', 5, '11000/dm7/backup/full_bak|/dm7/backup/JOB', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB2', 'JOB2', 1, 2, 1, 63, 0, '22:00:00', NULL, '2020-02-19 14:53:32', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB2');
DM 开发
支持 C 、 C++ 、 Java、Python、PHP、Perl 进行开发
/** 定义一个 DM JDBC 驱动串 */
String jdbcStr = "dm.jdbc.driver.DmDriver";
/** DM url 连接串 */
String urlString = "jdbc:dm://ip:5236";
配置 ODBC (考试要考)
# 检查是否安装了 gcc
rpm -aq|grep gcc
yum -y install gcc
tar -xzvf unixODBC-2.3.0.tar.gz
cd ./unixODBC-2.3.0
# 配置ODBC
./ configure --enable-gui=no
# 编译ODBC
make
make install
# 检查是否装好了
odbc_config --version
# 下面两个,都是获取控制文件的路径
odbc_config --odbcini
odbcinst -j
# 配置 ODBC.ini 和 odbcinst.ini
# 测试ODBC
isql dm7
存储过程
写匿名块
declare (可选项)
begin
print("hello")
end;
set serveroutput on
begin
for i in 1..5 loop
print(i);
end loop;
end;
/
SQL> begin
2 for i in 1..5 loop
3 print(i);
4 end loop;
5 end;
案例 1:根据员工编号找其所在部门
CREATE PROCEDURE "TEST"."SNO"("BH" IN INT)
AS
DEPT INT;
BEGIN
SELECT DEPARTMENT_ID INTO DEPT FROM DMHR.EMPLOYEE WHERE EMPLOYEE_ID=BH;
PRINT(DEPT);
END;
触发器
BEGIN
INSERT INTO TEST.T VALUE(:OLD.SALARY,NEW.SALARY)
END;