注册
DM8数据库移动数据文件
专栏/培训园地/ 文章详情 /

DM8数据库移动数据文件

克鲁鲁 2024/05/24 642 0 0
摘要

1、说明

  在生产环境可能会因为各种原因需要移动数据文件的位置,比如想把当前数据文件移动到性能更好的磁盘上,或者当前磁盘存在某些隐患,此时我们需要移动数据文件的位置。
  本文主要介绍两种方案移动数据文件,第一个方案是停库移动,第二个方式是不停库离线表空间移动。

2、构造环境

2.1、创建表空间

SQL> CREATE TABLESPACE "TBS_TEST" DATAFILE '/dmdata/dmdb/TBS01.DBF' SIZE 128 AUTOEXTEND ON NEXT 100 MAXSIZE 10240, '/dmdata/dmdb/TBS02.DBF' SIZE 128 AUTOEXTEND ON NEXT 100 MAXSIZE 10240;
操作已执行
已用时间: 216.200(毫秒). 执行号:700.

2.2、创建用户指定默认表空间

SQL> CREATE USER "SHEN" IDENTIFIED BY "Dameng123" DEFAULT TABLESPACE "TBS_TEST";
操作已执行
已用时间: 152.101(毫秒). 执行号:701.
SQL> GRANT RESOURCE TO SHEN;
操作已执行
已用时间: 3.555(毫秒). 执行号:702.

2.3、构造测试数据

SQL> conn shen/Dameng123;
SQL> create table TEST (id int,name varchar(20));
操作已执行
已用时间: 53.432(毫秒). 执行号:800.
SQL> begin
for i in 1..100 loop
insert into TEST(id, name)
values(i, DBMS_RANDOM.RANDOM_STRING('U',5)||':'|| lpad(i,4, '0'));
end loop;
end;
/

2.4、创建新的目录

[root@localhost ~]# mkdir /datanew
[root@localhost ~]# chown dmdba:dinstall /datanew/

3、方案一:停库移动数据文件

3.1、需求说明

  将/dmdata/dmdb/TBS01.DBF、/dmdata/dmdb/TBS02.DBF两个数据文件移动至/datanew下。

3.2、停止数据库服务

[dmdba@localhost ~]$ DmServicedmdb stop
Stopping DmServicedmdb: [ OK ]

3.3、转换控制文件为文本文件

[dmdba@localhost ~]$ dmctlcvt TYPE=1 SRC=/dmdata/dmdb/dm.ctl DEST=/dmdata/dmdb/dm.txt
DMCTLCVT V8
convert ctl to txt success!
编辑dm.txt文件,修改数据文件路径
[dmdba@localhost ~]$ vim /dmdata/dmdb/dm.txt
fil_path=/dmdata/dmdb/TBS01.DBF修改为fil_path=/datanew/TBS01.DBF
fil_path=/dmdata/dmdb/TBS02.DBF修改为fil_path=/datanew/TBS02.DBF

3.4、文本文件转换为控制文件

将修改后的文本文件转换为控制文件

[dmdba@localhost ~]$ dmctlcvt TYPE=2 SRC=/dmdata/dmdb/dm.txt DEST=/dmdata/dmdb/dm.ctl
DMCTLCVT V8
convert txt to ctl success!

3.5、移动数据文件位置

[dmdba@localhost ~]$ mv /dmdata/dmdb/TBS01.DBF /datanew/
[dmdba@localhost ~]$ mv /dmdata/dmdb/TBS02.DBF /datanew/

3.6、启动数据库服务

[dmdba@localhost ~]$ DmServicedmdb start
Starting DmServicedmdb: [ OK ]

3.7、检查数据文件位置

SQL> select group_id,path,status$ from v$datafile where group_id=5;
1 5 /datanew/TBS02.DBF 1
2 5 /datanew/TBS01.DBF 1

3.8、检查数据

[dmdba@localhost ~]$ disql shen/Dameng123:5236
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.939(ms)
disql V8
SQL> select count() from test;
行号 COUNT(
)
1 100
已用时间: 8.497(毫秒). 执行号:500.

4、方案二:不停库移动数据文件

4.1、需求说明

  将/datanew/TBS01.DBF、/datanew/TBS02.DBF移动至/datanew2路径下。

4.2、表空间脱机

SQL> ALTER TABLESPACE TBS_TEST OFFLINE;
操作已执行
已用时间: 111.951(毫秒). 执行号:702.

4.3、查询表空间状态

SQL> select tablespace_name,status,contents from
2 dba_tablespaces where tablespace_name='TBS_TEST';
行号 TABLESPACE_NAME STATUS CONTENTS
1 TBS_TEST 1 PERMANENT
注意:STATUS为0时是联机状态,为1时是脱机状态

4.4、查看数据文件路径

SQL> select file_name,file_id,tablespace_name,status
from dba_data_files where tablespace_name='TBS_TEST';2
1 /datanew/TBS02.DBF 1 TBS_TEST AVAILABLE
2 /datanew/TBS01.DBF 0 TBS_TEST AVAILABLE

4.5、移动数据文件

SQL> ALTER TABLESPACE TBS_TEST RENAME DATAFILE '/datanew/TBS01.DBF' TO '/datanew2/TBS01.DBF';
操作已执行
已用时间: 00:00:14.741. 执行号:705.
SQL> ALTER TABLESPACE TBS_TEST RENAME DATAFILE '/datanew/TBS02.DBF' TO '/datanew2/TBS02.DBF';
操作已执行
已用时间: 00:00:11.996. 执行号:706.

4.6、表空间ONLINE

SQL> ALTER TABLESPACE TBS_TEST ONLINE;
操作已执行
已用时间: 5.897(毫秒). 执行号:707.

4.7、检查数据文件位置

SQL> select file_name,file_id,tablespace_name,status
from dba_data_files where tablespace_name='TBS_TEST';2
1 /datanew2/TBS02.DBF 1 TBS_TEST AVAILABLE
2 /datanew2/TBS01.DBF 0 TBS_TEST AVAILABLE

4.8、检查数据

SQL> conn shen/Dameng123;
SQL> select count(*) from test;
数据检查正常。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服