当前位置: 首页 > news >正文

DCA培训心得笔记(二)

DCA培训心得笔记

  • DM8产品使用
    • 删除归档日志文件
    • ODBC配置
    • 故障模拟:表空间数据文件丢失
    • 故障模拟:SYSTEM表空间数据文件丢失

DM8产品使用

删除归档日志文件

#开启归档
alter database mount;
alter database ARCHIVELOG;
alter database add ARCHIVELOG 'type=local, dest=/dm8/arch, file_size=64,space_limit=10240';
alter database open;

归档开启后会生成一个归档日志文件,该归档文件运行在active状态下,可以用如下语句查询:

SQL> select * from SYS."V$ARCH_FILE";

在这里插入图片描述
参数ARCH_LSN可以理解为归档文件的头,CLSN理解为归档文件的尾。一头一尾记录了归档文件的记录的片段。
使用: SF_ARCHIVELOG_DELETE_BEFORE_LSN参数可以删除归档日志文件。

当归档文件处于active状态下,该参数无法删除正在运行的归档文件,所以需要先将归档文件变为inactive状态:将数据库转换为mount状态再转换为开启状态,此时之前的归档文件则会变成inactive状态,同时由于开启了归档,会自动生成一个新的active状态的归档文件。
在这里插入图片描述

此时可以删除inactive的归档文件。
可以看到第一个归档文件的ARCH_LSN为82820,CLSN为84324。
当我这样删除时:

select sf_archivelog_delete_before_lsn(82820);

在这里插入图片描述
参数返回值为0,代表没有删除任何归档文件,这是因为该参数的作用是删除该lsn值之前的归档文件,所以其实上面的语句删除的是82820之前的归档文件,所以删不掉这里的第一条归档。那么将语句改为:

select sf_archivelog_delete_before_lsn(84324);

在这里插入图片描述
结果仍然返回1,我理解为要删除一个归档文件,不能删除其片段,只能整个删除,这一行语句实际操作的是删除84324之前的归档文件也就是把LSN值为1至84323之间的归档文件删除,但是我们的第一个归档文件的尾是84324,所以该语句没有完全删除我们的第一条归档文件,也就默认不删除。
此时将语句改成:

select sf_archivelog_delete_before_lsn(84325);

在这里插入图片描述
成功删除了第一条inactive的归档文件。
再尝试:看看能否删除active的归档文件

select sf_archivelog_delete_before_lsn(100000);

在这里插入图片描述证实无法删除正在运行的归档文件。
此时关闭归档:

#关闭归档
alter database mount;
alter database NOARCHIVELOG;
alter database delete ARCHIVELOG 'type=local, dest=/dm8/arch, file_size=64,space_limit=10240';
alter database open;

可以发现查不到任何归档文件记录:
在这里插入图片描述重新开启归档:

在这里插入图片描述由于之前的归档文件因为数据库转换过mount状态而变成inactive,同时因为开启了归档,生成了一个新的归档文件,同时因为关闭过归档,会发现两个归档文件的LSN值不是连续的,而之前没有关闭归档时,inactive和active的归档文件之间得LSN值都是连续的。如果LSN值不连续,当进行归档文件备份的时候会报错:归档文件不连续,这个时候就需要删除不需要的归档文件,保证归档文件的连续性。

backup ARCHIVE LOG ALL to ARCHFULLBAK backupset '/dm8/backup/ARCHFULLBAK';

ODBC配置

将odbc安装包放在opt目录下解压:

tar -xzvf unixODBC-2.3.0.tar.gz
#进入unixODBC-2.3.0目录下源码安装
./configure
make
make install
#安装好后配置驱动信息和数据源信息
#配置信息文件默认在usr/local/etc下
cat odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236

cat odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so

#测试数据源
odbcinst -j

#启动
isql dm8 -v

#退出
quit 或ctrl+c

故障模拟:表空间数据文件丢失

#创建表空间
create tablespace tbs DATAFILE 'TBS01.DBF' SIZE 32;
#备份表空间
backup tablespace tbs to TBSFULLBAK01 backupset '/dm8/backup/TBSFULLBAK01';
#删除表空间数据文件模拟故障
rm TBS01.DBF
#关闭数据库
./DmServiceDMSERVER stop
#表空间还原 dmrman
restore database '/dm8/data/DAMENG/dm.ini' tablespace tbs from backupset  '/dm8/backup/TBSFULLBAK01';
#表空间恢复 dmrman
recover database '/dm8/data/DAMENG/dm.ini' tablespace tbs;

故障模拟:SYSTEM表空间数据文件丢失

#数据库备份
backup DATABASE;
backup DATABASE full to FULLBAK01 BACKUPSET '/dm8/backup/FULLBAK01';
backup database INCREMENT to INCRBAK01 BACKUPSET '/dm8/backup/INCRBAK01';
backup database INCREMENT to INCRBAK02 BACKUPSET '/dm8/backup/INCRBAK02';
backup database INCREMENT CUMULATIVE to INCRBAK03 BACKUPSET '/dm8/backup/INCRBAK03';
backup database INCREMENT WITH BACKUPDIR '/dm8/backup/full' to INCRBAK04 BACKUPSET '/dm8/backup/INCRBAK04';

#删除数据文件
rm SYSTEM.DBF
#关闭数据库
./DmServiceDMSERVER stop
#还原
recover database '/dm8restore database '/dm8/data/DAMENG/dm.ini' from backupset  '/dm8/backup/FULLBAK01';
#恢复
 recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';

相关文章:

  • TB-RK1808M0最新固件烧录和驱动更新
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • C语言被创造出来的基础是什么?它的主要结构是什么?
  • error: Unexpected console statement (no-console) 解决办法
  • 神经系统分类和组成图表,神经系统的组成概念图
  • [Swift学习] 访问控制 Access Control, private、public、filePrivate等修饰符
  • [SQL]数据库语言学习
  • 软考高频考点——项目中标了以后该怎么做?
  • 基于注意力机制的LSTM液体管道非稳态工况检测
  • Oracle VM VirtualBox安装CentOS 7系统
  • windows hello人脸识别设置没反应的解决办法
  • 企业级容器云PaaS解决方案【厚PaaS+轻应用+微服务】---(2)
  • dubbo 利用分组区分同一个服务的不同实现
  • npm下载的包分类
  • 在绩效评估中使用 360 反馈
  • 网络传输文件的问题
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • JavaScript HTML DOM
  • Java的Interrupt与线程中断
  • Java深入 - 深入理解Java集合
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • node.js
  • python大佬养成计划----difflib模块
  • REST架构的思考
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 大数据与云计算学习:数据分析(二)
  • 前端自动化解决方案
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​比特币大跌的 2 个原因
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (3)llvm ir转换过程
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十六)Flask之蓝图
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (译) 函数式 JS #1:简介
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 中 GetProcess 相关方法的性能
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .netcore 获取appsettings
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • /3GB和/USERVA开关