达梦数据库修改实例的路径

达梦数据库数据文件路径迁移

学习过程参考了:参考文章,这篇文章

单机修改数据文件路径

旧路径新路径
/dmdata/dmbak
  • 查看旧路径
[dmdba@dmdb03 dmdb]$ ps -ef | grep dmdb
dmdba       1621       1  0 10:21 ?        00:00:01 /home/dmdba/dmdbms/bin/dmap
dmdba       1627       1  0 10:21 ?        00:00:35 /home/dmdba/dmdbms/bin/dmserver path=/dmdata/dmdb/dm.ini -noconsole
root        4016    3967  0 22:16 pts/0    00:00:00 su - dmdba
dmdba       4017    4016  0 22:16 pts/0    00:00:00 -bash
dmdba       4163    4017  0 22:17 pts/0    00:00:00 ps -ef
dmdba       4164    4017  0 22:17 pts/0    00:00:00 grep dmdb
[root@dmdb02 ~]# find / -name dm.ini
/dmdata/dmdb/dm.ini

停止服务

[dmdba@dmdb03 dmdb]$ DmServicedw stop
Stopping DmServicedw:                                      [ OK ]

复制文件

[dmdba@dmdb03 dmdata]$ cp -r  /dmdata/dmdb /dmbak/
[dmdba@dmdb03 dmdata]$ cd /dmbak/
[dmdba@dmdb03 dmbak]$ ll
total 4
drwxrwxr-x 6 dmdba dmdba 4096 Mar 29 22:20 dmdb

转换控制文件为txt,修改路径

  • 控制文件转换为txt文件
[dmdba@dmdb03 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb03 bin]$ ./dmctlcvt type=1 src=/dmdata/dmdb/dm.ctl dest=/dmdata/dmdb/dm.txt
DMCTLCVT V8
convert ctl to txt success!
  • 修改路径
[dmdba@dmdb03 dmdb]$ cat dm.txt |grep dmdata
fil_path=/dmdata/dmdb/SYSTEM.DBF
fil_path=/dmdata/dmdb/ROLL.DBF
fil_path=/dmdata/dmdb/dmdb01.log
fil_path=/dmdata/dmdb/dmdb02.log
fil_path=/dmdata/dmdb/MAIN.DBF
htspath=/dmdata/dmdb/HMAIN
[dmdba@dmdb03 dmdb]$ sed -i "s#/dmdata/dmdb#/dmbak/dmdb#g" dm.txt
[dmdba@dmdb03 dmdb]$ cat dm.txt |grep dmdb
dbname=dmdb
fil_path=/dmbak/dmdb/SYSTEM.DBF
fil_path=/dmbak/dmdb/ROLL.DBF
fil_path=/dmbak/dmdb/dmdb01.log
fil_path=/dmbak/dmdb/dmdb02.log
fil_path=/dmbak/dmdb/MAIN.DBF
htspath=/dmbak/dmdb/HMAIN
  • 转换回控制文件
[dmdba@dmdb03 dmdb]$ pwd
/dmbak/dmdb
[dmdba@dmdb03 dmdb]$ mv dm.ctl dm.ctl.bk
[dmdba@dmdb03 bin]$ ./dmctlcvt type=2 src=/dmdata/dmdb/dm.txt dest=/dmbak/dmdb/dm.ctl
DMCTLCVT V8
convert txt to ctl success!

修改dm.ini文件

[dmdba@dmdb03 dmdb]$ pwd
/dmbak/dmdb
[dmdba@dmdb03 dmdb]$ cat dm.ini | grep /dmdata
CTL_PATH         = /dmdata/dmdb/dm.ctl     #ctl file path
CTL_BAK_PATH     = /dmdata/dmdb/ctl_bak    #dm.ctl backup path
SYSTEM_PATH      = /dmdata/dmdb            #system path
CONFIG_PATH      = /dmdata/dmdb            #config path
TEMP_PATH        = /dmdata/dmdb            #temporary file path
BAK_PATH         = /dmdata/dmdb/bak        #backup file path
[dmdba@dmdb03 dmdb]$ sed -i "s#/dmdata/dmdb#/dmbak/dmdb#g" /dmbak/dmdb/dm.ini
[dmdba@dmdb03 dmdb]$ cat dm.ini | grep /dmbak
CTL_PATH         = /dmbak/dmdb/dm.ctl     #ctl file path
CTL_BAK_PATH     = /dmbak/dmdb/ctl_bak    #dm.ctl backup path
SYSTEM_PATH      = /dmbak/dmdb            #system path
CONFIG_PATH      = /dmbak/dmdb            #config path
TEMP_PATH        = /dmbak/dmdb            #temporary file path
BAK_PATH         = /dmbak/dmdb/bak        #backup file path

修改服务器启动脚本

[dmdba@dmdb03 bin]$ pwd
/home/dmdba/dmdbms/bin
[dmdba@dmdb03 bin]$ cat DmServicedw | grep /dmdata
INI_PATH="/dmdata/dmdb/dm.ini"
[dmdba@dmdb03 bin]$ sed -i "s#/dmdata/dmdb#/dmbak/dmdb#g" DmServicedw
[dmdba@dmdb03 bin]$ cat DmServicedw | grep /dmbak
INI_PATH="/dmbak/dmdb/dm.ini"

启动服务测试

[dmdba@dmdb03 bin]$ DmServicedw start
Starting DmServicedw:                                      [ OK ]
[dmdba@dmdb03 bin]$ disql
SQL> select group_id,file_id,path from v$rlogfile;
行号     GROUP_ID    FILE_ID     PATH                   
---------- ----------- ----------- -----------------------
1          2           0           /dmbak/dmdb/dmdb01.log
2          2           1           /dmbak/dmdb/dmdb02.log

主备集群修改数据文件路径

分离备库出来

##查看组名
show global info
##查看备库
show database grp_dw.dw02
##踢出集群
detach database grp_dw.dw02
将实例(DW02)分离出守护进程组GRP_DW成功

修改数据文件路径

  1. 同单机,注意关闭守护进程
  2. 主备正常使用

启动备库,重新加入集群

[dmdba@dmdb02 bin]$ DmServicedw start
Starting DmServicedw:                                      [ OK ]
[dmdba@dmdb02 bin]$ DmWatcherServicedw start
Starting DmWatcherServicedw:                               [ OK ]
##监控器查看
show database grp_dw.dw02
<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    
10.10.10.5          7436         2022-03-30 00:14:36  GLOBAL    VALID     OPEN           dw02             OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  INVALID  
EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG          
192.168.31.5        5236       OK        DW02             OPEN        STANDBY   0          0            REALTIME  INVALID  24588           91049           24588           91049           NONE                  
##加入集群
attach database grp_dw.dw02
实例(DW02)加回到守护进程组(GRP_DW)成功

手动切换主备库,重复操作

<think> 我们正在讨论达梦数据库(DM)中查看实例的方法。根据引用[1]中提到的“1.数据库自身信息”部分,特别是“1.1查询实例信息”,我们可以使用SQL语句来查询实例信息。 在达梦数据库中,实例信息可以通过查询系统视图来获取。常用的系统视图包括V$INSTANCE,该视图提供了当前数据库实例的信息。 具体步骤: 1. 使用达梦数据库的管理工具(如管理工具或命令行工具disql)连接到数据库。 2. 执行SQL查询语句:`SELECT * FROM V$INSTANCE;` 这将返回当前实例的详细信息,包括实例名、状态、启动时间等。 另外,引用[1]中还提到了“1.2查询数据库当前状态”,可以使用:`SELECT STATUS$ FROM V$INSTANCE;` 来获取实例的状态。 注意:这些系统视图需要一定的权限(通常DBA权限)才能查询。 因此,回答如下: </think> ### 达梦数据库查看实例的方法 在达梦数据库中查看实例信息主要通过系统视图实现,以下是具体操作步骤和常用命令(基于引用[1]整理): --- #### **1. 查看实例基本信息** ```sql SELECT * FROM V$INSTANCE; ``` **返回字段说明**: - `INSTANCE_NAME`:实例名称 - `HOST_NAME`:服务器主机名 - `STATUS$`:实例状态(`OPEN`表示运行中) - `START_TIME`:实例启动时间 - `DB_VERSION`:数据库版本 --- #### **2. 查看实例运行状态** ```sql SELECT STATUS$ FROM V$INSTANCE; ``` **状态说明**: - `OPEN`:正常运行 - `MOUNT`:已挂载(维护模式) - `SUSPEND`:暂停状态 --- #### **3. 查看所有实例的配置信息** ```sql SELECT * FROM V$DM_INI; ``` **关键参数**: - `PORT_NUM`:监听端口(默认为5236) - `MAX_SESSIONS`:最大连接数 - `BUFFER`:缓冲区大小 - `INSTANCE_NAME`:实例名称 --- #### **4. 查看实例的归档状态** ```sql SELECT ARCH_MODE FROM V$DATABASE; ``` - 返回 `Y` 表示开启归档,`N` 表示未开启[^1] --- #### **5. 查看实例文件位置** ```sql SELECT PARA_NAME, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME IN ('CTL_PATH', 'SYSTEM_PATH', 'TEMP_PATH'); ``` **返回路径**: - `CTL_PATH`:控制文件路径 - `SYSTEM_PATH`:系统表空间路径 - `TEMP_PATH`:临时表空间路径 --- #### **6. 查看实例连接数** ```sql SELECT COUNT(*) FROM V$SESSIONS; -- 当前连接数 SELECT VALUE FROM V$DM_INI WHERE PARA_NAME='MAX_SESSIONS'; -- 最大连接数 ``` --- ### **操作示例** ```sql -- 查看实例名称和状态 SELECT INSTANCE_NAME, STATUS$, START_TIME FROM V$INSTANCE; -- 结果示例: INSTANCE_NAME | STATUS$ | START_TIME ---------------|---------|---------------------- TDCB | OPEN | 2023-10-20 09:30:15 ``` --- ### **注意事项** 1. **权限要求**:需具有 `DBA` 或 `SELECT ANY TABLE` 权限 2. **工具支持**: - 命令行工具 `disql` - 图形化管理工具 `DM Management Studio` 3. **实例创建**:初始化实例可通过安装时的 `dbca.sh`(Linux)或图形化向导(Windows)实现[^2] --- ### **相关问题** 1. 如何修改达梦数据库实例的最大连接数? 2. 达梦实例启动失败常见原因及解决方法? 3. 如何查看达梦数据库实例日志文件? 4. 达梦多实例环境下如何切换连接?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

很Man的DM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值