达梦数据库の修改文件路径

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 219 18:02 bak
drwxr-xr-x. 2 dmdba dinstall   44 227 20:34 cqsoft
drwxr-xr-x. 2 dmdba dinstall 4.0K 227 20:31 ctl_bak
-rw-r--r--. 1 dmdba dinstall 256M 227 20:33 DCA01.log
-rw-r--r--. 1 dmdba dinstall 256M 227 20:28 DCA02.log
-rw-r--r--. 1 dmdba dinstall 6.0K 227 20:31 dm.ctl
-rw-r--r--. 1 dmdba dinstall  49K 222 22:20 dm.ini
-rw-r--r--. 1 dmdba dinstall  848 219 18:02 dminit20210219180206.log
-rw-r--r--. 1 dmdba dinstall  633 219 18:02 dm_service.prikey
drwxr-xr-x. 2 dmdba dinstall    6 219 18:02 HMAIN
-rw-r--r--. 1 dmdba dinstall 128M 223 23:01 MAIN.DBF
-rw-r--r--. 1 dmdba dinstall   12 219 18:03 rep_conflict.log
-rw-r--r--. 1 dmdba dinstall 128M 227 20:33 ROLL.DBF
-rw-r--r--. 1 dmdba dinstall  479 219 18:02 sqllog.ini
-rw-r--r--. 1 dmdba dinstall  43M 227 20:31 SYSTEM.DBF
-rw-r--r--. 1 dmdba dinstall  26M 227 20:28 TEMP.DBF
drwxr-xr-x. 2 dmdba dinstall    6 219 18:03 trace

/dm8/dmdata/data/DCA/cqsoft:
总用量 134M
-rw-r--r--. 1 dmdba dinstall 64M 227 20:31 cqsoft1.dbf
-rw-r--r--. 1 dmdba dinstall 70M 227 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 227 20:52 cqsoft1.dbf
-rw-r--r--. 1 dmdba dinstall 70M 227 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 227 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 227 21:51 redo01.log
-rw-r--r--. 1 dmdba dinstall 256M 227 21:52 redo02.log
-rw-r--r--. 1 dmdba dinstall 128M 227 21:45 ROLL.DBF
-rw-r--r--. 1 dmdba dinstall  43M 227 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 227 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 227 23:43 /dm8/dmdata/data/DCA/SYS/TEMP.DBF

# 删除原路径下的旧临时文件
SQL> host rm -fv /dm8/dmdata/data/


1.4.6 归档日志文件

修改本地归档日志文件的路径,先将数据库置为mount状态后修改。

注意:

  1. delete archivelog 删除归档配置操作必须在非归档模式下进行。
  2. modifty archivelog 谨记不能直接修改本地归档路径。
  3. 所有的归档配置操作须先将数据库切为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>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值