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

dmctlcvt工具介绍数据文件路径变化后如何拉起数据库

文章目录

  • 1 dmctlcvt介绍
  • 2 场景模拟
    • 2.1 场景1:移动整个数据文件父目录
      • 2.1.1 关停数据库
      • 2.1.2 更换数据文件存放目录
      • 2.1.3 修改参数文件
      • 2.1.4 修改控制文件
      • 2.4.5 启动数据库
    • 2.2 场景2:以表空间为单位移动数据文件
      • 2.2.1 创建测试数据
      • 2.2.2 表空间OFFLINE
      • 2.2.3 更新控制文件
      • 2.2.4 表空间ONLINE

1 dmctlcvt介绍

dmctlcvt 位于$DM_HOME/bin目录下
使用 dmctlcvt 工具将控制文件转换为文本文件,编辑文本文件 中要修改的文件的路径后再使用 dmctlcvt 工具将文本文件转换为控制文件即可。
帮助内容
该工具实现的作用与Oracle数据库手写控制文件类似

SQL> alter database backup controlfile to trace as '/home/oracle/controlfile.trc';vi ctl.txtSTARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  NOARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 1 '/data/app/oracle/fast_recovery_area/orcl/redo01.log'  SIZE 200M BLOCKSIZE 512,GROUP 2 '/data/app/oracle/fast_recovery_area/orcl/redo02.log'  SIZE 200M BLOCKSIZE 512,GROUP 3 '/data/app/oracle/fast_recovery_area/orcl/redo03.log'  SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE'/data/app/oracle/fast_recovery_area/orcl/system01.dbf','/data/app/oracle/fast_recovery_area/orcl/sysaux01.dbf','/data/app/oracle/fast_recovery_area/orcl/undotbs01.dbf','/data/app/oracle/fast_recovery_area/orcl/users01.dbf'
CHARACTER SET AL32UTF8
;

2 场景模拟

假设生产环境数据库磁盘空间不足或者性能不足需要更换磁盘,
将当前数据文件目录转移至空间更充足或磁盘性能更好的目录。

2.1 场景1:移动整个数据文件父目录

2.1.1 关停数据库

[dmdba@localhost bin]$ ps -ef | grep dms
dmdba      8675      1  0 21:21 pts/0    00:00:15 /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/bin/dm.ini -noconsole[dmdba@localhost bin]$ pwd
/home/dmdba/dmdbms/bin
[dmdba@localhost bin]$ ./dmserverd stop
Stopping dmserverd:                                        [ OK ]

2.1.2 更换数据文件存放目录

-- 当前安装目录为
[dmdba@localhost DAMENG]$ pwd
/dmdata/data/DAMENG
[dmdba@localhost DAMENG]$ ls
bak  ctl_bak  DAMENG01.log  DAMENG02.log  dm.ctl  dm.ini  dminit20250807212058.log  dm_service.prikey  dmtemp.ctl  HMAIN  MAIN.DBF  ROLL.DBF  sqllog.ini  SYSTEM.DBF  TEMP.DBF  trace-- 假设移动至DAMENG_NEW
[dmdba@localhost data]$ mv DAMENG DAMENG_NEW

2.1.3 修改参数文件

修改前

[dmdba@localhost bin]$ vim dm.ini 
-- 字符串替换
:%s/DAMENG/DAMENG_NEW/g

修改后
如仅修改参数文件相关文件路径启动报错如下:

[dmdba@localhost bin]$ ./dmserver path=/home/dmdba/dmdbms/bin/dm.ini 
file dm.key not found, use default license!
version info: develop
Server key decrypt failed!!
Server exit!!

2.1.4 修改控制文件

使用dmctlcvt工具-【帮助】
dmctlcvt help
转换控制文件,由二进制转为文本格式

[dmdba@localhost bin]$ ./dmctlcvt TYPE=1 SRC=/dmdata/data/DAMENG_NEW/dm.ctl DEST=/dmdata/data/DAMENG_NEW/dm.txt
dmctlcvt V8
convert ctl to txt success!

同样将控制文件内数据文件相关路径调整为新的路径,注意仅修改fil_path和huge_path包含的DAMENG

[dmdba@localhost bin]$ cat  /dmdata/data/DAMENG_NEW/dm.txt | grep DAMENG
dbname=DAMENG
fil_path=/dmdata/data/DAMENG/SYSTEM.DBF
fil_path=/dmdata/data/DAMENG/ROLL.DBF
fil_path=/dmdata/data/DAMENG/DAMENG01.log
fil_path=/dmdata/data/DAMENG/DAMENG02.log
fil_path=/dmdata/data/DAMENG/MAIN.DBF
huge_path=/dmdata/data/DAMENG/HMAIN-- 使用sed命令可以精准匹配相应字符串,确认无误后加上-i参数
sed  's|/dmdata/data/DAMENG|/dmdata/data/DAMENG_NEW|g' /dmdata/data/DAMENG_NEW/dm.txt[dmdba@localhost bin]$ sed  -i 's|/dmdata/data/DAMENG|/dmdata/data/DAMENG_NEW|g' /dmdata/data/DAMENG_NEW/dm.txt

修改完成后,备份原有dm.ctl文件,将dm.txt文件通过dmctlcvt工具转换为dm.ctl

[dmdba@localhost bin]$ mv /dmdata/data/DAMENG_NEW/dm.ctl /dmdata/data/DAMENG_NEW/dm.ctl.old
[dmdba@localhost bin]$ ./dmctlcvt TYPE=2 SRC=/dmdata/data/DAMENG_NEW/dm.txt DEST=/dmdata/data/DAMENG_NEW/dm.ctl

2.4.5 启动数据库

还原成功

[dmdba@localhost bin]$ ./dmserverd  start
Starting dmserverd:                                        [ OK ][dmdba@localhost bin]$  disql SYSDBA/"Sysdba%_025"服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.951(ms)
disql V8SQL> select * from test01;行号     id         
---------- -----------
1          1已用时间: 4.280(毫秒). 执行号:601.SQL> select ID,PATH from v$datafile;行号     ID          PATH                              
---------- ----------- ----------------------------------
1          0           /dmdata/data/DAMENG_NEW/MAIN.DBF
2          0           /dmdata/data/DAMENG_NEW/ROLL.DBF
3          0           /dmdata/data/DAMENG_NEW/TEMP.DBF
4          0           /dmdata/data/DAMENG_NEW/SYSTEM.DBF已用时间: 2.691(毫秒). 执行号:603.

2.2 场景2:以表空间为单位移动数据文件

2.2.1 创建测试数据

-- 创建表空间
SQL> create tablespace yichu datafile '/dmdata/data/yichu.dbf' size 128 autoextend on CACHE = NORMAL;
操作已执行
已用时间: 33.015(毫秒). 执行号:504.-- 创建用户指定默认表空间
SQL>  create user yichu identified by "Dameng123" default tablespace yichu;
操作已执行
已用时间: 6.041(毫秒). 执行号:507.-- 查询当前数据文件路径
SQL> select id,path from v$datafile;行号     ID          PATH                                
---------- ----------- ------------------------------------
1          0           /dmdata/data/DAMENG_bak/MAIN.DBF
2          0           /dmdata/data/yichu.dbf
3          0           /dmdata/data/DAMENG_bak/ROLL.DBF
4          0           /dmdata/data/DAMENG_bak/TEMP.DBF
5          0           /dmdata/data/DAMENG_bak/SYSTEM.DBF
6          0           /dmdata/data/DAMENG_bak/BOOKSHOP.DBF
7          0           /dmdata/data/DAMENG_bak/DMHR.DBF7 rows got

2.2.2 表空间OFFLINE

SQL> alter tablespace yichu offline;
操作已执行
已用时间: 22.080(毫秒). 执行号:509.SQL> select name,status$ from v$tablespace;行号     NAME     STATUS$    
---------- -------- -----------
1          SYSTEM   0
2          ROLL     0
3          TEMP     0
4          MAIN     0
5          BOOKSHOP 0
6          DMHR     0
7          YICHU    17 rows got

2.2.3 更新控制文件

直接更新控制文件,数据文件会相应移动到指定目录

[dmdba@localhost data]$ disql  SYSDBA/Dameng123:5237服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间 : 4.452(ms)
disql V8
SQL> alter tablespace yichu rename datafile '/dmdata/data/yichu.dbf' to '/dmdata/data/DAMENG_bak/yichu.dbf';
操作已执行
已用时间: 378.729(毫秒). 执行号:1001.[dmdba@localhost DAMENG_bak]$ pwd
/dmdata/data/DAMENG_bak
[dmdba@localhost DAMENG_bak]$ ll yichu.dbf 
-rw-r--r--. 1 dmdba dinstall 134217728 Aug  7 23:12 yichu.dbf

2.2.4 表空间ONLINE

SQL> alter tablespace yichu online;
操作已执行
已用时间: 8.551(毫秒). 执行号:1201.
http://www.lryc.cn/news/612759.html

相关文章:

  • 范数的定义、分类与 MATLAB 应用实践
  • agno fastapi对外接口案例
  • 北京JAVA基础面试30天打卡04
  • Node.js特训专栏-实战进阶:21.Nginx反向代理配置
  • 使用Spring Boot + Angular构建安全的登录注册系统
  • 剧本杀小程序系统开发:推动社交娱乐产业创新发展
  • GitCode 7月:小程序积分商城更名成长中心、「探索智能仓颉!Cangjie Magic 体验有奖征文活动」圆满收官、深度对话栏目持续热播
  • qt系统--事件
  • OpenAI推出开源GPT-oss-120b与GPT-oss-20b突破性大模型,支持商用与灵活部署!
  • Numpy科学计算与数据分析:Numpy数组操作入门:合并、分割与重塑
  • 水库大坝安全监测系统主要概述
  • Python 数据类型及数据类型转换
  • Python Socket 脚本深度解析与开发指南
  • 目标检测数据集 - 自动驾驶场景道路异常检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • Jenkins全链路教程——Jenkins用户权限矩阵配置
  • 东莞立晟精密硅胶科技有限公司将携重磅产品亮相 AUTO TECH China 2025 广州国际汽车技术展
  • oracle 11G安装大概率遇到问题
  • 计算机网络:固定网络位长度子网划分flsm和可变长子网掩码划分vlsm的区别
  • QT项目 -仿QQ音乐的音乐播放器(第五节)
  • 全局异常处理器
  • [特殊字符] 未来图钉式 AI 时代的智能生态布局:副脑矩阵与人机共振的系统构想
  • Linux->信号
  • 如何在 VS Code 中进行 `cherry-pick`
  • 计算机毕业设计java疫情防控形势下的高校食堂订餐管理系统 高校食堂订餐管理系统在疫情防控背景下的设计与实现 疫情防控期间高校食堂线上订餐管理平台
  • 【已解决】-bash: mvn: command not found
  • 2025数字马力一面面经(社)
  • [优选算法专题一双指针——两数之和](双指针和哈希表)
  • git branch -a无法查看最新的分支
  • 垃圾桶满溢识别准确率↑32%:陌讯多模态融合算法实战解析
  • 计算机基础·linux系统