1.4 达梦数据库の修改文件路径
1.4.1 前言
有时候因数据库服务器上磁盘空间快撑满,现刚好申请一个更大的磁盘空间,需要将其数据库搬移至新的路径下;
再有种情况是想将数据库中各类数据文件分别存储在不同的磁盘控制器组下,以此分担IO压力。
总而言之,它们这些初衷都会牵扯到文件路径的迁移。
达梦数据库中主要的文件分类:普通数据文件(普通表空间)、临时数据文件(临时表空间)、联机日志文件、归档日志文件、特殊数据文件(系统表空间/ROLL/)等,
考虑到数据库不同的工作状态,使用的迁移手段有所不同,以下将进入各类文件的迁移案例的讲解。
1.4.2 普通数据文件
切记:非SYSTEM/ROLL/TEMP表空间属于普通表空间,普通表空间的操作如下过程。
# 准备测试普通表空间
SQL> conn SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 10.814(ms)
SQL> create tablespace cqsoft datafile 'cqsoft1.dbf' size 32,'cqsoft2.dbf' size 40;
create tablespace cqsoft datafile 'cqsoft1.dbf' size 32,'cqsoft2.dbf' size 40;
第1 行附近出现错误[-2410]:数据文件[cqsoft1.dbf]大小无效.
已用时间: 2.452(毫秒). 执行号:0.
SQL> select sf_get_page_size()*4096/1024/1024 || ' MB';
行号 SF_GET_PAGE_SIZE()*4096/1024/1024||'MB'
---------- ---------------------------------------
1 64 MB #单个数据文件最小的大小
已用时间: 6.263(毫秒). 执行号:4.
SQL> create tablespace cqsoft datafile 'cqsoft1.dbf' size 64,'cqsoft2.dbf' size 70;
操作已执行
已用时间: 216.097(毫秒). 执行号:5.
SQL> create table cqsoft (id number) storage(on cqsoft) ;
操作已执行
已用时间: 19.970(毫秒). 执行号:6.
SQL> insert into cqsoft select level from dual connect by level<=5;
影响行数 5
已用时间: 6.665(毫秒). 执行号:7.
SQL> select * from cqsoft;
行号 ID
---------- --
1 1
2 2
3 3
4 4
5 5
已用时间: 1.405(毫秒). 执行号:8.
### 操作步骤:
## 1. 脱机表空间
SQL> SELECT
a.name "表空间名称" ,
CASE a.status$
WHEN 0 THEN 'ONLINE'
WHEN 1 THEN 'OFFLINE'
WHEN 2 THEN 'RES_OFFLINE'
ELSE 'CORRUPT'
END CASE "表空间状态",
CASE
WHEN a.type$=2 THEN '临时表空间'
ELSE
CASE
WHEN INSTR(a.name,'SYSTEM')=1 THEN '系统表空间'
WHEN INSTR(a.name,'ROLL')=1 THEN '回滚表空间'
ELSE '普通表空间'
END CASE
END CASE "表空间类型" ,
b.path "文件路径",
CASE b.status$
WHEN 1 THEN '联机'
ELSE '脱机'
END CASE "文件状态",
CASE b.rw_status
WHEN 1 THEN '只读'
ELSE '读写'
END CASE "文件读写状态"
FROM
SYS."V$TABLESPACE" a,
SYS."V$DATAFILE" b
WHERE
a.id = b.group_id;
行号 表空间名称 表空间状态 表空间类型 文件路径 文件状态 文件读写状态
---------- --------------- --------------- --------------- -------------------------------- ------------ ------------------
1 SYSTEM ONLINE 系统表空间 /dm8/dmdata/data/DCA/SYSTEM.DBF 联机 读写
2 CQSOFT ONLINE 普通表空间 /dm8/dmdata/data/DCA/cqsoft2.dbf 联机 读写
3 CQSOFT ONLINE 普通表空间 /dm8/dmdata/data/DCA/cqsoft1.dbf 联机 读写
4 MAIN ONLINE 普通表空间 /dm8/dmdata/data/DCA/MAIN.DBF 联机 读写
5 TEMP ONLINE 临时表空间 /dm8/dmdata/data/DCA/TEMP.DBF 联机 读写
6 ROLL ONLINE 回滚表空间 /dm8/dmdata/data/DCA/ROLL.DBF 联机 读写
# 迁移cqsoft表空间两个数据文件
SQL> alter tablespace cqsoft offline;
SQL> host mkdir -p /dm8/dmdata/data/DCA/cqsoft
行号 表空间名称 表空间状态 表空间类型 文件路径 文件状态 文件读写状态
---------- --------------- --------------- --------------- -------------------------------- ------------ ------------------
1 SYSTEM ONLINE 系统表空间 /dm8/dmdata/data/DCA/SYSTEM.DBF 联机 读写
2 CQSOFT OFFLINE 普通表空间 /dm8/dmdata/data/DCA/cqsoft2.dbf 联机 读写
3 CQSOFT OFFLINE 普通表空间 /dm8/dmdata/data/DCA/cqsoft1.dbf 联机 读写
4 MAIN ONLINE 普通表空间 /dm8/dmdata/data/DCA/MAIN.DBF 联机 读写
5 TEMP ONLINE 临时表空间 /dm8/dmdata/data/DCA/TEMP.DBF 联机 读写
6 ROLL ONLINE 回滚表空间 /dm8/dmdata/data/DCA/ROLL.DBF 联机 读写
6 rows got
************************************************************************************
# ** 踩雷区:用不着操作系统命令移动文件的操作。达梦rename datafile语句会帮我们移动文件。 **
SQL> host mv -v /dm8/dmdata/data/DCA/cqsoft*.dbf /dm8/dmdata/data/DCA/cqsoft
"/dm8/dmdata/data/DCA/cqsoft1.dbf" -> "/dm8/dmdata/data/DCA/cqsoft/cqsoft1.dbf"
"/dm8/dmdata/data/DCA/cqsoft2.dbf" -> "/dm8/dmdata/data/DCA/cqsoft/cqsoft2.dbf"
SQL> host ls -lh /dm8/dmdata/data/DCA/cqsoft /dm8/dmdata/data/DCA/
/dm8/dmdata/data/DCA/:
总用量 95M
drwxr-xr-x. 2 dmdba dinstall 6 2月 19 18:02 bak
drwxr-xr-x. 2 dmdba dinstall 44 2月 27 20:34 cqsoft
drwxr-xr-x. 2 dmdba dinstall 4.0K 2月 27 20:31 ctl_bak
-rw-r--r--. 1 dmdba dinstall 256M 2月 27 20:33 DCA01.log
-rw-r--r--. 1 dmdba dinstall 256M 2月 27 20:28 DCA02.log
-rw-r--r--. 1 dmdba dinstall 6.0K 2月 27 20:31 dm.ctl
-rw-r--r--. 1 dmdba dinstall 49K 2月 22 22:20 dm.ini
-rw-r--r--. 1 dmdba dinstall 848 2月 19 18:02 dminit20210219180206.log
-rw-r--r--. 1 dmdba dinstall 633 2月 19 18:02 dm_service.prikey
drwxr-xr-x. 2 dmdba dinstall 6 2月 19 18:02 HMAIN
-rw-r--r--. 1 dmdba dinstall 128M 2月 23 23:01 MAIN.DBF
-rw-r--r--. 1 dmdba dinstall 12 2月 19 18:03 rep_conflict.log
-rw-r--r--. 1 dmdba dinstall 128M 2月 27 20:33 ROLL.DBF
-rw-r--r--. 1 dmdba dinstall 479 2月 19 18:02 sqllog.ini
-rw-r--r--. 1 dmdba dinstall 43M 2月 27 20:31 SYSTEM.DBF
-rw-r--r--. 1 dmdba dinstall 26M 2月 27 20:28 TEMP.DBF
drwxr-xr-x. 2 dmdba dinstall 6 2月 19 18:03 trace
/dm8/dmdata/data/DCA/cqsoft:
总用量 134M
-rw-r--r--. 1 dmdba dinstall 64M 2月 27 20:31 cqsoft1.dbf
-rw-r--r--. 1 dmdba dinstall 70M 2月 27 20:30 cqsoft2.dbf
************************************************************************************
## 2. 修改文件路径,自动更新控制文件
SQL> alter tablespace CQSOFT rename datafile '/dm8/dmdata/data/DCA/cqsoft1.dbf' to '/dm8/dmdata/data/DCA/cqsoft/cqsoft1.dbf';
alter tablespace CQSOFT rename datafile '/dm8/dmdata/data/DCA/cqsoft1.dbf' to '/dm8/dmdata/data/DCA/cqsoft/cqsoft1.dbf';
第1 行附近出现错误[-2191]:无效的文件路径[/dm8/dmdata/data/DCA/cqsoft1.dbf].
已用时间: 0.805(毫秒). 执行号:0.
#以上错误是因为想当然的用操作系统命令移动后,再用DMSQL命令修改路径提示找不到这个文件。雷区:小心为好。Oracle固定操作思维。
SQL> alter tablespace cqsoft rename datafile '/dm8/dmdata/data/DCA/cqsoft1.dbf' to '/dm8/dmdata/data/DCA/cqsoft/cqsoft1.dbf';
alter tablespace cqsoft rename datafile '/dm8/dmdata/data/DCA/cqsoft1.dbf' to '/dm8/dmdata/data/DCA/cqsoft/cqsoft1.dbf';
[-7039]:数据库文件路径错误.
已用时间: 20.435(毫秒). 执行号:0
#以上报错原因是/dm8/dmdata/data/DCA/cqsoft/路径已经存在cqsoft1.dbf文件,它不会直接覆盖操作。
SQL> alter tablespace cqsoft rename datafile '/dm8/dmdata/data/DCA/cqsoft1.dbf' to '/dm8/dmdata/data/DCA/cqsoft/cqsoft1.dbf';
SQL> alter tablespace cqsoft rename datafile '/dm8/dmdata/data/DCA/cqsoft2.dbf' to '/dm8/dmdata/data/DCA/cqsoft/cqsoft2.dbf';
SQL> select a.name,a.status$,b.path from v$tablespace a left join v$datafile b on a.id=b.group_id;
行号 NAME STATUS$ PATH
---------- ------ ----------- ---------------------------------------
1 SYSTEM 0 /dm8/dmdata/data/DCA/SYSTEM.DBF
2 ROLL 0 /dm8/dmdata/data/DCA/ROLL.DBF
3 TEMP 0 /dm8/dmdata/data/DCA/TEMP.DBF
4 MAIN 0 /dm8/dmdata/data/DCA/MAIN.DBF
5 CQSOFT 1 /dm8/dmdata/data/DCA/cqsoft/cqsoft1.dbf
6 CQSOFT 1 /dm8/dmdata/data/DCA/cqsoft/cqsoft2.dbf
## 3. 联机表空间
SQL> alter tablespace cqsoft online;
SQL> select a.name,a.status$,b.path from v$tablespace a left join v$datafile b on a.id=b.group_id;
行号 NAME STATUS$ PATH
---------- ------ ----------- ---------------------------------------
1 SYSTEM 0 /dm8/dmdata/data/DCA/SYSTEM.DBF
2 ROLL 0 /dm8/dmdata/data/DCA/ROLL.DBF
3 TEMP 0 /dm8/dmdata/data/DCA/TEMP.DBF
4 MAIN 0 /dm8/dmdata/data/DCA/MAIN.DBF
5 CQSOFT 0 /dm8/dmdata/data/DCA/cqsoft/cqsoft1.dbf
6 CQSOFT 0 /dm8/dmdata/data/DCA/cqsoft/cqsoft2.dbf
6 rows got
## 4. 迁移收尾工作(验证数据)
SQL> select * from cqsoft;
行号 ID
---------- --
1 1
2 2
3 3
4 4
5 5
已用时间: 4.839(毫秒). 执行号:109
# 查看控制文件
[dmdba@dca01 ~]$ strings /dm8/dmdata/data/DCA/dm.ctl
SYSTEM
/dm8/dmdata/data/DCA/SYSTEM.DBF
ROLL
/dm8/dmdata/data/DCA/ROLL.DBF
RLOG
/dm8/dmdata/data/DCA/DCA01.log
/dm8/dmdata/data/DCA/DCA02.log
MAIN
/dm8/dmdata/data/DCA/MAIN.DBF
CQSOFT
NORMAL
/dm8/dmdata/data/DCA/cqsoft/cqsoft1.dbf
/dm8/dmdata/data/DCA/cqsoft/cqsoft2.dbf
HMAIN
/dm8/dmdata/data/DCA/HMAIN
[dmdba@dca01 ~]$
[dmdba@dca01 ~]$ ls -lh /dm8/dmdata/data/DCA/cqsoft/
总用量 134M
-rw-r--r--. 1 dmdba dinstall 64M 2月 27 20:52 cqsoft1.dbf
-rw-r--r--. 1 dmdba dinstall 70M 2月 27 20:47 cqsoft2.dbf
[dmdba@dca01 ~]$
注意:
表空间不仅可以脱机或联机状态,它还能置为损坏状态(前提:表空间先在脱机状态或者表空间损坏情况下)
alter tablespace cqsoft offline;
alter tablespace cqsoft corrupt;
<如果表空间存在模式对象,请先删除后再删除表空间>
drop tablespace cqsoft;
##、# 1.4.3 特殊数据文件
*主要是系统SYSTEM表空间文件、ROLL回滚表空间文件。*
#### 操作步骤:
## 1. 必须停机(停库)
SQL> select a.name,a.status$,b.path from v$tablespace a left join v$datafile b on a.id=b.group_id;
行号 NAME STATUS$ PATH
---------- ------ ----------- -------------------------------
1 SYSTEM 0 /dm8/dmdata/data/DCA/SYSTEM.DBF
2 ROLL 0 /dm8/dmdata/data/DCA/ROLL.DBF
3 TEMP 0 /dm8/dmdata/data/DCA/TEMP.DBF
4 MAIN 0 /dm8/dmdata/data/DCA/MAIN.DBF
## 准备一个目录存放将被迁移的文件
SQL> host mkdir -pv /dm8/dmdata/data/DCA/SYS
mkdir: 已创建目录 "/dm8/dmdata/data/DCA/SYS"
## 停库命令或服务脚本停止(任选方式)
## 2. dm.ctl转换成dmctl.ini文本文件
[dmdba@dca01 bin]$ dmctlcvt TYPE=1 SRC=/dm8/dmdata/data/DCA/dm.ctl DEST=/dm8/dmdata/data/DCA/dmctl.ini
DMCTLCVT V8
convert ctl to txt success!
[dmdba@dca01 bin]$ ls -l /dm8/dmdata/data/DCA/dmctl.ini
-rw-r--r--. 1 dmdba dinstall 5330 2月 27 21:34 /dm8/dmdata/data/DCA/dmctl.ini
## 3. 修改dmctl.txt中关于SYSTEM/ROLL表空间的文件路径
[dmdba@dca01 bin]$ cat /dm8/dmdata/data/DCA/dmctl.ini
##############################################################################
## please do not adjust parameter order, ensure the ctl have no difference ###
##########################################################################
# database name
dbname=DCA
# server mode
svr_mode=0
#OGUID
oguid=0
# db server version
version=117507966
# database version
db_version=458763
# pseg version
pseg_version=458762
#SGUID
sguid=2006702880
#NEXT_TS_ID
next_ts_id=5
#RAC_NODES
rac_nodes=1
#NEXT_HTS_ID
next_htsid=129
#TIME_FLAG
time_flag=170
#MDIR_FLAG
mdir_flag=31
#STARTUP_CNT
startup_cnt=2
#LAST_STARTUP_TIME
last_startup_time=DATETIME '2021-2-27 21:32:52'
#DM7_DCT_VERSION
dm7_dct_version=8
#DM8_DCT_VERSION
dm8_dct_version=20
#===============================================
#===============================================
# table space name
ts_name=SYSTEM
# table space ID
ts_id=0
# table space status
ts_state=0
# table space cache
ts_cache=
# DSC node number
ts_nth=0
# table space create time
ts_create_time=DATETIME '2021-2-19 18:2:8'
# table space modify time
ts_modify_time=DATETIME '2021-2-19 18:2:8'
# table space encrypt flag
ts_encrypt_flag=0
# table space copy num
ts_copy_num=0
# table space region size flag
ts_size_flag=0
#-----------------------------------------------
# file path
fil_path=/dm8/dmdata/data/DCA/SYS/SYSTEM.DBF
# mirror path
mirror_path=
# file id
fil_id=0
# whether the file is auto extend
autoextend=1
# file create time
fil_create_time=DATETIME '2021-2-19 18:2:8'
# file modify time
fil_modify_time=DATETIME '2021-2-19 18:2:8'
# the max size of file
fil_max_size=0
# next size of file
fil_next_size=0
#===============================================
# table space name
ts_name=ROLL
# table space ID
ts_id=1
# table space status
ts_state=0
# table space cache
ts_cache=
# DSC node number
ts_nth=0
# table space create time
ts_create_time=DATETIME '2021-2-19 18:2:8'
# table space modify time
ts_modify_time=DATETIME '2021-2-19 18:2:8'
# table space encrypt flag
ts_encrypt_flag=0
# table space copy num
ts_copy_num=0
# table space region size flag
ts_size_flag=0
#-----------------------------------------------
# file path
fil_path=/dm8/dmdata/data/DCA/SYS/ROLL.DBF
# mirror path
mirror_path=
# file id
fil_id=0
# whether the file is auto extend
autoextend=1
# file create time
fil_create_time=DATETIME '2021-2-19 18:2:8'
# file modify time
fil_modify_time=DATETIME '2021-2-19 18:2:8'
# the max size of file
fil_max_size=0
# next size of file
fil_next_size=0
#===============================================
# table space name
ts_name=RLOG
# table space ID
ts_id=2
# table space status
ts_state=0
# table space cache
ts_cache=
# DSC node number
ts_nth=0
# table space create time
ts_create_time=DATETIME '2021-2-19 18:2:8'
# table space modify time
ts_modify_time=DATETIME '2021-2-19 18:2:8'
# table space encrypt flag
ts_encrypt_flag=0
# table space copy num
ts_copy_num=0
# table space region size flag
ts_size_flag=0
#-----------------------------------------------
# file path
fil_path=/dm8/dmdata/data/DCA/DCA01.log
# mirror path
mirror_path=
# file id
fil_id=0
# whether the file is auto extend
autoextend=1
# file create time
fil_create_time=DATETIME '2021-2-19 18:2:8'
# file modify time
fil_modify_time=DATETIME '2021-2-19 18:2:8'
# the max size of file
fil_max_size=0
# next size of file
fil_next_size=0
# file path
fil_path=/dm8/dmdata/data/DCA/DCA02.log
# mirror path
mirror_path=
# file id
fil_id=1
# whether the file is auto extend
autoextend=1
# file create time
fil_create_time=DATETIME '2021-2-19 18:2:8'
# file modify time
fil_modify_time=DATETIME '2021-2-19 18:2:8'
# the max size of file
fil_max_size=0
# next size of file
fil_next_size=0
#===============================================
# table space name
ts_name=MAIN
# table space ID
ts_id=4
# table space status
ts_state=0
# table space cache
ts_cache=
# DSC node number
ts_nth=0
# table space create time
ts_create_time=DATETIME '2021-2-19 18:2:8'
# table space modify time
ts_modify_time=DATETIME '2021-2-19 18:2:8'
# table space encrypt flag
ts_encrypt_flag=0
# table space copy num
ts_copy_num=0
# table space region size flag
ts_size_flag=0
#-----------------------------------------------
# file path
fil_path=/dm8/dmdata/data/DCA/MAIN.DBF
# mirror path
mirror_path=
# file id
fil_id=0
# whether the file is auto extend
autoextend=1
# file create time
fil_create_time=DATETIME '2021-2-19 18:2:8'
# file modify time
fil_modify_time=DATETIME '2021-2-19 18:2:8'
# the max size of file
fil_max_size=0
# next size of file
fil_next_size=0
#===============================================
# HUGE table space name
htsname=HMAIN
# HUGE table space id
htsid=128
#HUGE table space share flag
htsflag=0
# HUGE table space copy num
hts_copy_num=0
# HUGE table space region size flag
hts_size_flag=0
# HUGE table space create time
hts_create_time=DATETIME '2021-2-19 18:2:8'
# HUGE table space modify time
hts_modify_time=DATETIME '2021-2-19 18:2:8'
# HUGE table space path
htspath=/dm8/dmdata/data/DCA/HMAIN
#===============================================
[dmdba@dca01 bin]$
## 4. 再次返回转换dmctl.txt文件成dm.ctl控制文件
[dmdba@dca01 bin]$ dmctlcvt TYPE=2 SRC=/dm8/dmdata/data/DCA/dmctl.ini DEST=/dm8/dmdata/data/DCA/dm.ctl
DMCTLCVT V8
convert txt to ctl success!
## 5.手工移动文件
[dmdba@dca01 DCA]$ mv -v SYSTEM.DBF ROLL.DBF SYS
"SYSTEM.DBF" -> "SYS/SYSTEM.DBF"
"ROLL.DBF" -> "SYS/ROLL.DBF"
## 6. 启动库,验证数据文件路径
[dmdba@dca01 data]$ dmserver $PWD/DCA/dm.ini
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-126-20.09.04-126608-ENT startup...
Database mode = 0, oguid = 0
License will expire on 2021-09-04
file lsn: 50845
ndct db load finished
ndct fill fast pool finished
iid page's trxid[20437]
NEXT TRX ID = 20438
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 mgr pages, 0 mgr recs!
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.
## 检查文件是否成功移动到目标位置
SQL> select a.name,a.status$,b.path from v$tablespace a left join v$datafile b on a.id=b.group_id;
行号 NAME STATUS$ PATH
---------- ------ ----------- -----------------------------------
1 SYSTEM 0 /dm8/dmdata/data/DCA/SYS/SYSTEM.DBF
2 ROLL 0 /dm8/dmdata/data/DCA/SYS/ROLL.DBF
3 TEMP 0 /dm8/dmdata/data/DCA/TEMP.DBF
4 MAIN 0 /dm8/dmdata/data/DCA/MAIN.DBF
已用时间: 19.914(毫秒). 执行号:4.
SQL>
PS:如果是想移动所有数据文件(包含特殊数据文件和普通数据文件),可以直接通过以上方式快速迁移,节省很多时间。
1.4.4 联机日志文件
前提:必须在mount状态才能执行修改日志文件路径的DMSQL语句,这个比较简单。谨慎在生产库操作,因为它不像Oracle那样方便增删日志文件的方式达到变更路径,目前它仅能增加日志文件,移动日志文件,改变日志文件大小。
### 操作步骤:
## 1. 将数据库改为mount配置状态
SQL> select group_id,path from v$rlogfile;
行号 GROUP_ID PATH
---------- ----------- ------------------------------
1 2 /dm8/dmdata/data/DCA/DCA01.log
2 2 /dm8/dmdata/data/DCA/DCA02.log
SQL> alter database mount;
操作已执行
已用时间: 00:00:01.790. 执行号:0.
SQL> select name,status$ from v$instance;
行号 NAME STATUS$
---------- ---- -------
1 DCA MOUNT
已用时间: 4.423(毫秒). 执行号:9.
## 2. 修改联机日志文件路径
SQL> alter database rename logfile '/dm8/dmdata/data/DCA/DCA01.log' to '/dm8/dmdata/data/DCA/SYS/redo01.log';
操作已执行
已用时间: 00:00:01.268. 执行号:10.
SQL> alter database rename logfile '/dm8/dmdata/data/DCA/DCA02.log' to '/dm8/dmdata/data/DCA/SYS/redo02.log';
操作已执行
已用时间: 992.596(毫秒). 执行号:11.
SQL> select group_id,path from v$rlogfile;
行号 GROUP_ID PATH
---------- ----------- -----------------------------------
1 2 /dm8/dmdata/data/DCA/SYS/redo01.log
2 2 /dm8/dmdata/data/DCA/SYS/redo02.log
已用时间: 1.866(毫秒). 执行号:12.
SQL> alter database open;
## 3. 文件系统层面确认迁移情况
[dmdba@dca01 DCA]$ ls -lh /dm8/dmdata/data/DCA/SYS
总用量 570M
-rw-r--r--. 1 dmdba dinstall 256M 2月 27 21:51 redo01.log
-rw-r--r--. 1 dmdba dinstall 256M 2月 27 21:52 redo02.log
-rw-r--r--. 1 dmdba dinstall 128M 2月 27 21:45 ROLL.DBF
-rw-r--r--. 1 dmdba dinstall 43M 2月 27 21:45 SYSTEM.DBF
[dmdba@dca01 DCA]$
# 做几组日志切换未报错,说明迁移成功
SQL> select cur_lsn,file_lsn from v$rlog;
行号 CUR_LSN FILE_LSN
---------- -------------------- --------------------
1 52102 52102
已用时间: 6.242(毫秒). 执行号:104.
SQL> alter system switch logfile;
操作已执行
已用时间: 3.523(毫秒). 执行号:0.
SQL> /
操作已执行
已用时间: 3.259(毫秒). 执行号:0.
SQL> select cur_lsn,file_lsn from v$rlog;
行号 CUR_LSN FILE_LSN
---------- -------------------- --------------------
1 52102 52102
已用时间: 2.880(毫秒). 执行号:105.
SQL> select checkpoint(100);
行号 CHECKPOINT(100)
---------- ---------------
1 0
已用时间: 10.845(毫秒). 执行号:106.
SQL> select cur_lsn,file_lsn from v$rlog;
行号 CUR_LSN FILE_LSN
---------- -------------------- --------------------
1 52102 52102
已用时间: 0.512(毫秒). 执行号:107.
1.4.5 临时表空间文件
临时表空间相较于其他表空间而言,管理非常简单。它依靠参数TEMP_PATH对路径进行指定维护,并且它还是一个手工参数(即必须重启数据库后生效)
,也就是说对它所属的文件路径进行迁移就是对它参数的修改,下次数据库启动的时候,它会直接在相应路径下创建一个临时文件。
### 操作步骤:
# 1. 修改dm.ini文件中参数TEMP_PATH
TEMP_PATH=/dm8/dmdata/data/DCA/SYS
# 2. 重启数据库,查验临时表空间的分配情况
[dmdba@dca01 data]$ dmserver $PWD/DCA/dm.ini
SQL> select a.name,a.status$,b.path from v$tablespace a join v$datafile b on a.id=b.group_id and a.type$=2;
行号 NAME STATUS$ PATH
---------- ---- ----------- -----------------------------
1 TEMP 0 /dm8/dmdata/data/DCA/TEMP.DBF
已用时间: 6.737(毫秒). 执行号:6.
SQL> select a.name,a.status$,b.path from v$tablespace a join v$datafile b on a.id=b.group_id and a.type$=2;
行号 NAME STATUS$ PATH
---------- ---- ----------- ---------------------------------
1 TEMP 0 /dm8/dmdata/data/DCA/SYS/TEMP.DBF
已用时间: 24.881(毫秒). 执行号:4.
SQL> select * from v$dm_ini where para_name like 'TEMP%';
行号 PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE
---------- ---------------- ------------------------ --------- ---------- ------- ------------------------
FILE_VALUE DESCRIPTION PARA_TYPE
------------------------ ----------------------------- ---------
1 TEMP_PATH /dm8/dmdata/data/DCA/SYS NULL NULL N /dm8/dmdata/data/DCA/SYS
/dm8/dmdata/data/DCA/SYS temporary database file path READ ONLY
2 TEMP_SIZE 10 10 1048576 N 10
10 temp file size IN FILE
3 TEMP_SPACE_LIMIT 500 0 4294967294 N 500
500 temp space limit in megabytes SYS
已用时间: 11.651(毫秒). 执行号:5.
SQL> host ls -lh /dm8/dmdata/data/DCA/SYS/TEMP.DBF
-rw-r--r--. 1 dmdba dinstall 26M 2月 27 23:43 /dm8/dmdata/data/DCA/SYS/TEMP.DBF
# 删除原路径下的旧临时文件
SQL> host rm -fv /dm8/dmdata/data/DCA/TEMP.DBF
已删除"/dm8/dmdata/data/DCA/TEMP.DBF"
### 操作步骤:
# 1. 修改dm.ini文件中参数TEMP_PATH
TEMP_PATH=/dm8/dmdata/data/DCA/SYS
# 2. 重启数据库,查验临时表空间的分配情况
[dmdba@dca01 data]$ dmserver $PWD/DCA/dm.ini
SQL> select a.name,a.status$,b.path from v$tablespace a join v$datafile b on a.id=b.group_id and a.type$=2;
行号 NAME STATUS$ PATH
---------- ---- ----------- -----------------------------
1 TEMP 0 /dm8/dmdata/data/DCA/TEMP.DBF
已用时间: 6.737(毫秒). 执行号:6.
SQL> select a.name,a.status$,b.path from v$tablespace a join v$datafile b on a.id=b.group_id and a.type$=2;
行号 NAME STATUS$ PATH
---------- ---- ----------- ---------------------------------
1 TEMP 0 /dm8/dmdata/data/DCA/SYS/TEMP.DBF
已用时间: 24.881(毫秒). 执行号:4.
SQL> select * from v$dm_ini where para_name like 'TEMP%';
行号 PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE
---------- ---------------- ------------------------ --------- ---------- ------- ------------------------
FILE_VALUE DESCRIPTION PARA_TYPE
------------------------ ----------------------------- ---------
1 TEMP_PATH /dm8/dmdata/data/DCA/SYS NULL NULL N /dm8/dmdata/data/DCA/SYS
/dm8/dmdata/data/DCA/SYS temporary database file path READ ONLY
2 TEMP_SIZE 10 10 1048576 N 10
10 temp file size IN FILE
3 TEMP_SPACE_LIMIT 500 0 4294967294 N 500
500 temp space limit in megabytes SYS
已用时间: 11.651(毫秒). 执行号:5.
SQL> host ls -lh /dm8/dmdata/data/DCA/SYS/TEMP.DBF
-rw-r--r--. 1 dmdba dinstall 26M 2月 27 23:43 /dm8/dmdata/data/DCA/SYS/TEMP.DBF
# 删除原路径下的旧临时文件
SQL> host rm -fv /dm8/dmdata/data/
1.4.6 归档日志文件
修改本地归档日志文件的路径,先将数据库置为mount状态后修改。
注意:
- delete archivelog 删除归档配置操作必须在非归档模式下进行。
- modifty archivelog 谨记不能直接修改本地归档路径。
- 所有的归档配置操作须先将数据库切为mount方可操作,它是首要前提。
SQL> select * from v$dm_arch_ini;
行号 ARCH_NAME ARCH_TYPE ARCH_DEST ARCH_FILE_SIZE ARCH_SPACE_LIMIT ARCH_HANG_FLAG ARCH_TIMER_NAME
---------- -------------- --------- ------------------------- -------------- ---------------- -------------- ---------------
ARCH_IS_VALID ARCH_WAIT_APPLY ARCH_INCOMING_PATH ARCH_CURR_DEST
------------- --------------- ------------------ -------------------------
1 ARCHIVE_LOCAL1 LOCAL /dm8/dmdata/data/DCA/arch 128 8192 1 NULL
N NULL NULL /dm8/dmdata/data/DCA/arch
已用时间: 4.048(毫秒). 执行号:8.
## 1. 切换数据库状态
SQL> alter database mount;
## 2. 修改归档路径
SQL> alter database add archivelog 'type=local,dest=/dm8/dmdata/data/DCA/arch2,file_size=256,space_limit=10240';
SQL> alter database noarchivelog;
-- 切记:删除归档配置必须在非归档模式下。
SQL> alter database delete archivelog 'type=local,dest=/dm8/dmdata/data/DCA/arch';
SQL> alter database archivelog;
## 3. 打开数据库
SQL> alter database open;
SQL> select arch_mode ,status$ from v$database;
行号 ARCH_MODE STATUS$
---------- --------- -----------
1 Y 4
SQL> select * from v$dm_arch_ini;
行号 ARCH_NAME ARCH_TYPE ARCH_DEST ARCH_FILE_SIZE ARCH_SPACE_LIMIT ARCH_HANG_FLAG ARCH_TIMER_NAME ARCH_IS_VALID ARCH_WAIT_APPLY
---------- -------------- --------- -------------------------- -------------- ---------------- -------------- --------------- ------------- ---------------
ARCH_INCOMING_PATH ARCH_CURR_DEST
------------------ --------------------------
1 ARCHIVE_LOCAL2 LOCAL /dm8/dmdata/data/DCA/arch2 256 10240 1 NULL Y NULL
NULL /dm8/dmdata/data/DCA/arch2
已用时间: 1.531(毫秒). 执行号:62.
SQL>