尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

DM表空间与数据文件管理

DM表空间与数据文件管理 一 表空间基础概念1.1 表空间定义表空间是 DM8 数据库最大的逻辑存储单元是所有数据库对象的统一归属容器数据库中所有用户表、索引、系统元数据、回滚事务数据、临时运算数据都必须存储在对应的表空间中。表空间核心作用实现数据分层隔离区分系统数据、业务数据、临时数据、事务回滚数据支持独立扩容、收缩、离线、备份恢复等精细化运维操作极大提升数据库存储管理的灵活性与安全性。1.2 表空间分类DM8 数据库根据存储特性与适配数据表类型可将表空间划分为普通表空间和混合表空间两类二者核心差异为是否支持存储 HUGE 超大表具体特性如下普通表空间为 DM8 默认表空间类型仅支持存储普通非 HUGE 数据表、索引、LOB 常规字段等业务对象无法存储 HUGE 超大表适用于绝大多数常规业务场景。混合表空间是兼容型表空间可同时存储普通非 HUGE 表和HUGE 超大表适配海量超大数据存储场景。混合表空间中的 HUGE 数据会独立存储在表空间定义时指定的 HUGE 专属数据文件路径下与普通数据物理隔离优化超大表读写性能与存储管理。同时 DM8 支持平滑升级可通过为已有普通表空间新增指定 HUGE 数据文件路径的方式将普通表空间直接升级为混合表空间无需重建表空间、迁移原有业务数据。1.3 表空间状态数据库依据表空间状态控制读写权限、运维权限、故障恢复逻辑是日常运维巡检、故障排查的核心依据。DM8 共定义 4 种标准表空间状态包含联机状态、手动脱机状态、还原脱机状态、介质损坏状态四大状态具体分类及详细说明如下ONLINE联机状态 该状态下的表空间可以正常执行增删改查、建表、建索引、扩容、增加数据文件等全部操作。处于 ONLINE 状态的表空间数据库可正常触发全量备份、增量备份。OFFLINE手动脱机状态该状态为手动触发表空间停止所有IO读写无法执行增删改查及各类业务操作如果该表空间存在未提交活动事务脱机直接失败必须等待事务结束。仅用户自定义表空间支持该操作SYSTEM、ROLL、TEMP 不能脱机。RES_OFFLINE还原脱机状态该状态为数据库故障或物理还原后的专属中间状态表空间禁止所有业务读写与新增备份操作。一般执行RMAN还原数据文件后自动进入该状态需通过介质恢复补齐归档与事务数据修复完成后可切换为联机状态。CORRUPT介质损坏状态该状态为表空间故障状态表空间及关联数据文件存在物理损坏、文件丢失或元数据异常。该状态下表空间无法读写、无法直接备份、无法手动联机仅能通过RMAN备份集还原或重建表空间的方式修复。1.4 表空间缓存模式表空间缓存CACHE属性用于控制表空间的数据页加载至哪一类数据缓冲区决定内存页面淘汰策略是热点业务调优、内存规划的核心配置项。与表空间相关的缓冲区包含 NORMAL、KEEP、RECYCLE 三类其中仅 NORMAL、KEEP 可通过表空间语法手动指定具体分类及详细说明如下NORMAL普通缓冲区该模式为表空间默认缓存模式数据页使用BUFFER参数配置的普通内存池采用标准 LRU 冷热页淘汰算法冷页会被置换出内存。处于 NORMAL 模式的表空间支持完整的 DML、DDL 业务操作适用于绝大多数普通业务表空间。语法书写直接写CACHENORMAL不需要添加引号。KEEP保留缓冲区该模式面向高频热点业务场景数据页使用KEEP参数独立配置的内存池会尽量保留热点数据页减少页面被内存置换淘汰提升热点数据访问性能。KEEP 为数据库保留字语法书写必须使用双引号CACHE“KEEP”。RECYCLE回收缓冲区该缓冲区用户无法通过 CREATE/ALTER TABLESPACE 语法手动指定专门供 TEMP 临时表空间内部使用排序、分组、临时结果集产生的数据页放入该缓冲区使用完成后快速回收避免挤占业务缓冲区内存。1.5 系统预置表空间在创建 DM8 数据库实例时系统会自动初始化创建 5 个基础表空间分别为 SYSTEM 表空间、ROLL 表空间、RLOG 表空间、MAIN 表空间和 TEMP 表空间覆盖系统元数据、事务回滚、日志存储、默认业务数据、临时运算数据全场景各表空间核心作用如下SYSTEM 系统表空间存储数据库数据字典、系统元数据、内核配置、用户权限等核心系统信息是数据库启动运行的核心基础不可删除、不可离线禁止存放业务数据。ROLL 回滚表空间对应传统 UNDO 机制存储事务 DML 操作修改前的原始数据支撑事务回滚、多版本并发控制MVCC、读写一致性等核心事务功能。RLOG 日志表空间专门存储数据库联机重做日志数据记录所有数据变更操作用于数据库故障重启恢复、事务重做保障数据持久化与一致性。MAIN 默认用户表空间数据库默认的用户永久表空间普通用户创建数据表、索引等业务对象时若未指定表空间默认存储在 MAIN 表空间中。TEMP 临时表空间专门承载数据库排序、分组、哈希连接、临时结果集等运算产生的临时数据仅服务于瞬时运算实例重启后自动清空数据无持久化存储需求。二 数据文件基础概念2.1 数据文件定义数据文件是DM8数据库的物理存储单元后缀默认.dbf是表空间数据的实际载体。所有表空间的逻辑数据最终都会以数据块的形式写入对应的数据文件中是数据库持久化存储的核心文件。数据文件与表空间强绑定关系一个表空间可包含多个数据文件一个数据文件只能隶属于一个表空间二者归属关系固定是数据库存储运维的核心关联依据。所有表空间扩容、迁移、修复、收缩操作最终都会转化为对数据文件的物理操作。2.2 数据文件分类DM8数据文件按照存储数据类型、功能定位、生命周期差异可划分为普通数据文件、UNDO回滚数据文件、TEMP临时数据文件三类。三类文件各司其职、相互配合分别承载业务持久化存储、事务一致性保障、临时运算支撑的核心能力是数据库完整运行的物理存储基础具体分类说明如下普通数据文件归属用户自定义表空间、MAIN表空间存储业务表、索引、常量数据等持久化业务数据。UNDO数据文件归属ROLL表空间专门存储事务回滚段数据是事务一致性、数据回滚的核心载体。TEMP临时数据文件归属TEMP表空间仅存储临时运算数据无持久化数据库重启后自动清空。2.3 数据文件属性2.3.1 自动扩展DM8核心空间自动管理属性包含开关状态AUTOEXTEND、单次扩展步长NEXT、最大扩容上限MAXSIZE三个子参数适配业务数据动态增长场景开启自动扩展AUTOEXTEND ON后当数据文件剩余空闲空间不足时数据库会自动按照NEXT设定值扩容直至达到MAXSIZE最大容量上限。关闭自动扩展AUTOEXTEND OFF后文件容量固定空间耗尽后直接抛出表空间已满报错。2.3.2 FILE ID文件ID是数据文件在所属表空间内的全局唯一标识由数据库自动分配是DM8管理多数据文件、文件排序、合法性校验、删除管控的核心索引全程无需人工干预且具备永久固化特性。DM8对数据文件ID存在严格的强制管控规则文件ID的分配、删除、复用均有固定机制具体约束分类说明如下文件ID分配规则表空间内首个创建的数据文件ID固定为0作为表空间的基础锚点文件严禁执行删除、迁移、缩容至最小容量等高危操作后续新增的数据文件将按照递增规则自动分配唯一文件ID保证同表空间内文件ID有序、不重复。文件ID删除规则运维删除数据文件时必须严格遵守「ID从大到小」倒序删除原则不允许跨ID、跳序删除。若跳过中间ID直接删除小号ID文件会造成数据文件索引结构紊乱、表空间状态异常严重时导致数据库启动失败。文件ID复用规则文件ID具备永久固化特性一经分配便永久占用即便对应数据文件已删除、移除该ID资源也无法释放、无法重复复用。2.3.3 数据文件状态数据文件状态用于标识物理数据文件的当前运行有效性通过 V$DATAFILE 视图 STATUS 字段数值判定文件健康状态包含 0、1 两种合法取值。该属性会根据操作系统平台、文件完整性、文件恢复状态动态变化是数据库巡检文件是否丢失、是否异常、是否处于恢复流程的核心判断依据不同平台判定规则存在明显差异具体标准释义如下0数据文件状态异常当前数据文件处于异常状态包含两种场景物理文件被操作系统删除、数据文件正在执行恢复操作句柄恢复/介质恢复。 平台触发规则仅 Linux/Unix 类平台可出现该状态Windows 平台无法触发该状态值。1数据文件状态正常 数据文件物理存在、文件校验正常、无删除标记、无正在执行的恢复任务数据库可正常读写该数据文件。 平台触发规则所有平台文件完好时均返回1Windows 平台特殊约束Windows 系统对正在被进程占用的文件存在保护机制不支持在操作系统层面直接删除运行中的数据文件因此 Windows 平台下数据文件 STATUS 取值恒为1不会出现0异常状态。三 表空间和数据文件维护管理3.1 表空间维护管理3.1.1 创建表空间理论上达梦数据库最大支持 65535 个表空间。其中用户可创建的表空间 ID 取值范围为0~32767ID 大于 32767 的表空间仅允许系统内部使用由数据库自动分配。表空间 ID 不可复用即便删除已有表空间其对应的 ID 也不会回收重用。因此当累计创建表空间的次数达到 32768 次后用户将无法继续新建用户表空间。示例–创建 TBS_DATA 表空间 包含2个128 M 数据文件SQL create tablespace TBS_DATA datafile ‘TBS_DATA_01.DBF’ size 128, ‘TBS_DATA_02.DBF’ size 128 ;操作已执行3.1.2 扩展表空间表空间由一个或多个数据文件组成表空间总大小等于其下属全部数据文件的大小之和。因此实现表空间扩容有两种方式一是向表空间中新增数据文件二是对表空间内已存在的数据文件进行容量扩展。示例–TBS_DATA 表空间添加一个 128M 的数据文件SQL alter tablespace TBS_DATA add datafile ‘TBS_DATA_03.DBF’ size 128;操作已执行3.1.3 删除表空间仅支持删除用户创建的表空间且要求待删除表空间处于未被使用的状态。删除表空间的同时会移除其所包含的全部数据文件。SYSTEM、RLOG、ROLL、TEMP这四类系统表空间不允许执行删除操作。示例–删除 TBS_DATA 表空间SQL DROP TABLESPACE TBS_DATA;操作已执行–如果表空间非空删除会报 -3412 错误SQL DROP TABLESPACE TBS_DATA;DROP TABLESPACE TBS_DATA;[-3412]:试图删除已经使用的表空间.3.1.4 修改表空间名称重命名仅修改数据库元数据中的表空间名称不会变更磁盘上的数据文件文件名。系统表空间 SYSTEM、RLOG、ROLL、TEMP不支持重命名若业务脚本中硬编码旧表空间名称重命名后需要同步修改相关脚本。示例–把 TBS_DATA 表空间改名为 TBS_DATA_NEWSQL ALTER TABLESPACE TBS_DATA RENAME TO TBS_DATA_NEW;操作已执行3.1.5 修改表空间状态用户表空间支持联机ONLINE与脱机OFFLINE两种状态。系统表空间 SYSTEM、RLOG、ROLL、TEMP不允许设置为脱机状态。执行表空间脱机操作时如果该表空间存在未提交的活动事务脱机操作将会失败并返回报错。表空间脱机之后可以针对其数据文件开展备份操作。示例–1. 把 TBS_DATA 表空间 OFFLINESQL ALTER TABLESPACE TBS_DATA OFFLINE;操作已执行–2. 把 TBS_DATA 表空间 ONLINESQL ALTER TABLESPACE TBS_DATA ONLINE;操作已执行–3. 表空间存在活跃事务无法进行OFFLINE–表空间上的表执行事务未提交SQL DELETE from APP_USER.TEMP_INFO where id100;–执行表空间OFFLINE操作SQL ALTER TABLESPACE TBS_DATA OFFLINE;[-6407]:锁超时.–4. 表空间 OFFLINE 状态下进行数据库备份SQL ALTER TABLESPACE TBS_DATA OFFLINE;操作已执行SQL SELECT TABLESPACE_NAME,STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME‘TBS_DATA’;行号 TABLESPACE_NAME STATUS---------- --------------- -------1 TBS_DATA OFFLINE已用时间: 0.354(毫秒). 执行号:1711.SQL backup database full to “DB_DAMENG_FULL” backupset ‘/dmbak/DB_DAMENG_FULL’;操作已执行3.2 数据文件维护管理3.2.1 添加数据文件新增数据文件的最小容量为 4096 × 页大小。例如数据库页大小为 8KB 时数据文件最小可设置为 4096 × 8KB 32MB。 在同一个表空间内数据文件与镜像文件的总数量不能超过 dm.ini 参数TS_FIL_MAX_ID所配置的上限值。示例– TBS_DATA 表空间添加 128M的数据文件SQL alter tablespace TBS_DATA add datafile ‘/dm/data/DAMENG/TBS_DATA_03.DBF’ size 128;操作已执行3.2.2 删除数据文件删除表空间内的数据文件时必须遵循文件 ID 从大到小的原则需要优先删除文件 ID 最大的数据文件。同时表空间中文件 ID 为 0 的数据文件不允许执行删除操作。示例–1. 删除TBS_DATA_03数据文件SQL alter tablespace TBS_DATA drop datafile ‘/dm/data/DAMENG/TBS_DATA_03.DBF’;操作已执行–2.无法删除非ID最大的数据文件SQL alter tablespace TBS_DATA drop datafile ‘/dm/data/DAMENG/TBS_DATA_02.DBF’;[-3463]:只允许删除ID最大的文件.–3. 无法删除空间0号文件SQL alter tablespace TBS_DATA drop datafile ‘/dm/data/DAMENG/TBS_DATA_01.DBF’;[-3462]:禁止删除表空间0号文件.3.2.3 修改数据文件大小数据库支持通过 RESIZE 方式修改数据文件大小既可以对数据文件进行扩容扩展也可以对数据文件执行缩容缩小。缩小数据文件存在两项限制调整后的文件大小不能小于该数据文件当前已占用的实际空间同时不能小于数据文件最小容量下限4096 × 页大小若设置的目标大小低于上述阈值缩容操作将会报错失败。示例–1. 对 TBS_DATA_02.DBF 数据文件进行扩容SQL alter TABLESPACE TBS_DATA resize DATAFILE ‘/dm/data/DAMENG/TBS_DATA_02.DBF’ TO 56;操作已执行–2. 对 TBS_DATA_02.DBF 数据文件进行缩容SQL alter TABLESPACE TBS_DATA resize DATAFILE ‘/dm/data/DAMENG/TBS_DATA_02.DBF’ TO 42;操作已执行3.2.4 修改数据文件扩展属性数据文件自动扩展属性是管控文件动态扩容的核心参数包含扩展开关、单次扩展大小、最大限制大小三个核心配置项详细释义与生效规则如下1.扩展开关AUTOEXTEND分为 ON 和 OFF 两种状态OFF 表示文件关闭自动扩展容量固定不可动态扩容空间耗尽后业务写入报错ON 表示文件开启自动扩展空间不足时数据库自动扩容适配业务数据持续增长场景。2.单次扩展大小NEXT文件空间不足时单次扩容的增量大小取值范围为 1~2048单位为 MB。实际生效的扩容大小并非完全等于指定值需结合 dm.ini 中 TS_AUTO_EXTEND_SIZE 参数联动判定最终扩展大小需同时满足大于等于 TS_AUTO_EXTEND_SIZE、且为手动指定 NEXT 值。3.默认扩展规则未指定NEXT场景创建或修改文件属性时若未手动指定扩展大小系统将自动适配默认扩容步长分两类场景差异化生效自定义新建表空间默认扩展大小取创建时刻的 TS_AUTO_EXTEND_SIZE 参数值参数后续修改不会改变该表空间已固化的扩展步长参数相互独立系统预定义表空间SYSTEM、ROLL、TEMP、MAIN等默认扩展大小始终跟随 TS_AUTO_EXTEND_SIZE 参数动态变化INI参数更新后系统表空间扩容步长实时同步更新。4.最大限制大小MAXSIZE用于限定数据文件可扩容的最大空间上限单位为 MB。取值为 0 或 UNLIMITED 时表示文件无扩容上限可无限扩容系统默认配置为无限制。生产环境建议合理设置最大容量避免单文件无限扩容占满磁盘导致数据库故障。示例–1. 开启自动扩展自定义步长20MB、最大上限2048MBSQL ALTER TABLESPACE TBS_DATA DATAFILE ‘/dm/data/DAMENG/TBS_DATA_02.DBF’ AUTOEXTEND ON NEXT 20 MAXSIZE 2048;操作已执行–2. 关闭自动扩展SQL ALTER TABLESPACE TBS_DATA DATAFILE ‘/dm/data/DAMENG/TBS_DATA_02.DBF’ AUTOEXTEND OFF;操作已执行3.2.5 修改数据文件路径支持修改用户表空间下已有数据文件的存储路径。执行路径修改操作时待修改数据文件所属的表空间必须处于脱机OFFLINE状态并且仅允许修改用户创建的表空间内的数据文件路径系统表空间的数据文件路径不支持修改。示例–1.数据文件所属表空间 TBS_DATA OFFLINESQL alter tablespace TBS_DATA offline;操作已执行–2. 修改 TBS_DATA_02.DBF 的数据文件路径SQL alter TABLESPACE TBS_DATA rename DATAFILE ‘/dm/data/DAMENG/TBS_DATA_02.DBF’ TO ‘/dmdata/TBS_DATA_02.DBF’;操作已执行3.2.6 添加HUGE 数据文件路径普通表空间可以通过添加 HUGE 数据文件路径升级为混合表空间混合表空间也可继续新增 HUGE 数据文件路径。单个混合表空间最多支持添加 127 个 HUGE 数据文件路径。示例–为普通表空间 TBS_DATA 添加 HUGE 数据文件路径执行命令前 /dmdata/tbs_data_huge 路径需在服务器上不存在SQL ALTER TABLESPACE TBS_DATA ADD HUGE PATH ‘/dmdata/tbs_data_huge’;操作已执行四 数据文件误删修复该恢复方式仅适用于Linux 环境数据库进程尚未重启的场景。文件被 rm 删除但数据库进程仍然持有该文件句柄一旦数据库重启文件句柄被操作系统释放该方法失效只能依靠备份进行恢复。4.1 实验环境说明本次故障修复基于如下环境进行操作环境参数 参数详情CPU架构 x86_64操作系统 Kylin Linux Advanced Server V10 (Sword)数据库版本 03134284552-20260414-322369-20221归档状态 未开启4.2 模拟误操作删除数据文件1.创建业务表模拟业务操作create table APP_USER.TEMP_USER(ID INT,NAME VARCHAR(30)) TABLESPACE TBS_DATA;insert into APP_USER.TEMP_USER(ID, NAME) values(0, ‘邵意歌’);insert into APP_USER.TEMP_USER(ID, NAME) values(1, ‘成绮琼’);insert into APP_USER.TEMP_USER(ID, NAME) values(2, ‘郑滢’);insert into APP_USER.TEMP_USER(ID, NAME) values(3, ‘卓朗’);insert into APP_USER.TEMP_USER(ID, NAME) values(4, ‘鲍甫’);insert into APP_USER.TEMP_USER(ID, NAME) values(5, ‘卓贵’);insert into APP_USER.TEMP_USER(ID, NAME) values(6, ‘常衡冲’);insert into APP_USER.TEMP_USER(ID, NAME) values(7, ‘浦启杨’);insert into APP_USER.TEMP_USER(ID, NAME) values(8, ‘卞保’);insert into APP_USER.TEMP_USER(ID, NAME) values(9, ‘修越’);1.服务器物理删除数据文件[dmdbadm8 DAMENG]$ ll TBS_DATA_0*-rw-r–r-- 1 dmdba dinstall 134217728 8月 26 14:02 TBS_DATA_01.DBF-rw-r–r-- 1 dmdba dinstall 134217728 8月 26 14:02 TBS_DATA_02.DBF[dmdbadm8 DAMENG]$ rm -f TBS_DATA_0*[dmdbadm8 DAMENG]$ ll TBS_DATA_0ls: 无法访问 TBS_DATA_0’: 没有那个文件或目录1.删除后业务影响被误删除数据文件的表空间上的对象可以正常进行查询、DML操作。SQL SELECT COUNT(*) from APP_USER.TEMP_USER;行号 COUNT(*)---------- --------------------1 10SQL insert into APP_USER.TEMP_USER(ID, NAME) values(10, ‘柳礼’);影响行数 1SQL update APP_USER.TEMP_USER set NAME‘保珊嫦’ where id 9;影响行数 1SQL delete from APP_USER.TEMP_USER where id8;影响行数 1SQL commit;操作已执行1.检查表空间和数据文件状态–1. 表空间状态 SQL SELECT TABLESPACE_NAME,STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME‘TBS_DATA’;行号 TABLESPACE_NAME STATUS---------- --------------- ------1 TBS_DATA ONLINE–2. 数据文件状态SQL SELECT FILE_NAME,FILE_ID,TABLESPACE_NAME,STATUS from DBA_DATA_FILES WHERE TABLESPACE_NAME‘TBS_DATA’;行号 FILE_NAME FILE_ID TABLESPACE_NAME STATUS---------- --------------------------------- ----------- --------------- ---------1 /data/dmdata/mydb/TBS_DATA_01.DBF 0 TBS_DATA AVAILABLE2 /data/dmdata/mydb/TBS_DATA_02.DBF 1 TBS_DATA AVAILABLE4.3 误操作恢复1.表空间文件失效检查调用系统存储过程SP_FILE_SYS_CHECK()可用于检测数据库中是否存在被误删除的失效数据文件。若该存储过程检测到某表空间的数据文件已被删除后续针对该表空间的所有操作均会执行失败并抛出报错提示该表空间存在已被删除的数据文件。注意该操作后业务对该表空间上的对象操作将执行异常。–表空间文件失效检查SQL SP_FILE_SYS_CHECK();DMSQL 过程已成功完成此时数据库运行日志检测到数据文件丢失checkpoint end, 0 pages flushed, used_space[270336], free_space[536592384].fil_sys check file [/data/dmdata/DAMENG/TBS_DATA_01.DBF] error, Can’t find filefil_sys check file [/data/dmdata/DAMENG/TBS_DATA_02.DBF] error, Can’t find filecheckpoint requested by INI_INTERVAL, rlog free space[536555520], used space[307200]继续进行业务操作提示表空间文件已损坏SQL SELECT COUNT(*) from APP_USER.TEMP_USER;[-3469]:表空间文件已被删除或已损坏.SQL insert into APP_USER.TEMP_USER(ID, NAME) values(11, ‘祁鲁顺’);[-3469]:表空间文件已被删除或已损坏.检查表空间和数据文件状态–1. 表空间状态SQL SELECT TABLESPACE_NAME,STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME‘TBS_DATA’;行号 TABLESPACE_NAME STATUS---------- --------------- ------1 TBS_DATA ONLINE–2. 数据文件状态SQL SELECT FILE_NAME,FILE_ID,TABLESPACE_NAME,STATUS from DBA_DATA_FILES WHERE TABLESPACE_NAME‘TBS_DATA’;行号 FILE_NAME FILE_ID TABLESPACE_NAME STATUS---------- --------------------------------- ----------- --------------- -------1 /data/dmdata/mydb/TBS_DATA_01.DBF 0 TBS_DATA INVALID2 /data/dmdata/mydb/TBS_DATA_02.DBF 1 TBS_DATA INVALID1.执行恢复准备调用存储过程SP_TABLESPACE_PREPARE_RECOVER(表空间名)进入表空间恢复准备状态。SQL SP_TABLESPACE_PREPARE_RECOVER(‘TBS_DATA’);DMSQL 过程已成功完成1.查找数据库服务进程号通过 ps 命令查询数据库服务进程ID号。[dmdbadm8 DAMENG]$ ps -ef|grep dmserverdmdba 2673 2478 0 13:47 pts/2 00:00:13 dmserver path/data/dmdata/DAMENG/dm.ini1.定位已删除文件句柄复制还原数据文件进入/proc/2673/fd/目录找到标记为(deleted)的对应文件句柄使用cp命令将句柄副本复制还原至数据文件原始路径。复制完成后确认还原文件的属主、权限与其他数据文件保持一致。[dmdbadm8 DAMENG]$ cd /proc/2673/fd[dmdbadm8 fd]$ ll |grep deletelrwx------ 1 dmdba dinstall 64 8月 26 14:56 29 - /data/dmdata/DAMENG/TBS_DATA_01.DBF (deleted)lrwx------ 1 dmdba dinstall 64 8月 26 14:57 30 - /data/dmdata/DAMENG/TBS_DATA_02.DBF (deleted)[dmdbadm8 fd]$ cp 29 /data/dmdata/DAMENG/TBS_DATA_01.DBF[dmdbadm8 fd]$ cp 30 /data/dmdata/DAMENG/TBS_DATA_02.DBF[dmdbadm8 fd]$ ll /data/dmdata/DAMENG/TBS_DATA*-rw-r–r-- 1 dmdba dinstall 134217728 8月 26 15:07 /data/dmdata/DAMENG/TBS_DATA_01.DBF-rw-r–r-- 1 dmdba dinstall 134217728 8月 26 15:08 /data/dmdata/DAMENG/TBS_DATA_02.DBF1.执行表空间恢复完成操作调用SP_TABLESPACE_RECOVER(表空间名)完成失效文件恢复。SQL SP_TABLESPACE_RECOVER(‘TBS_DATA’);DMSQL 过程已成功完成1.校验恢复结果数据文件被删除期间的DML操作数据文件恢复后可以查询出更改的数据。–1. 查看表空间和数据文件状态SQL select NAME,STATUS$ from V$TABLESPACE WHERE NAME ‘TBS_DATA’;行号 NAME STATUS$---------- -------- -----------1 TBS_DATA 0SQL SELECT TABLESPACE_NAME,STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME‘TBS_DATA’;行号 TABLESPACE_NAME STATUS---------- --------------- ------1 TBS_DATA ONLINESQL SELECT FILE_NAME,FILE_ID,TABLESPACE_NAME,STATUS from DBA_DATA_FILES WHERE TABLESPACE_NAME‘TBS_DATA’;行号 FILE_NAME FILE_ID TABLESPACE_NAME STATUS---------- --------------------------------- ----------- --------------- ---------1 /data/dmdata/mydb/TBS_DATA_01.DBF 0 TBS_DATA AVAILABLE2 /data/dmdata/mydb/TBS_DATA_02.DBF 1 TBS_DATA AVAILABLE–2. 测试业务操作SQL insert into APP_USER.TEMP_USER(ID, NAME) values(11, ‘祁鲁顺’);影响行数 1SQL commit;操作已执行1.必须严格按顺序执行SP_TABLESPACE_PREPARE_RECOVER需要在操作系统复制文件之前调用SP_TABLESPACE_RECOVER在复制文件之后调用。2.数据库一旦重启操作系统释放已删除文件句柄本套非备份恢复流程不再生效只能使用备份恢复。社区地址https://eco.dameng.com
返回列表