重命名与重定位数据文件¶
重命名与重定位用户数据文件¶
在神通数据库中可以使用以下SQL语句的RENAME子句来重命名和重定位用户数据文件(包括用户普通文件和用户临时文件)。
示例1: 将数据文件 /home/ShenTongoscar/TESTDBF.DBF 重命名到 /home/ShenTongoscar/test/TESTDBF.DBF 上
- 将数据文件状态调成为 OFFLINE
alter tablespace TESTDBF offline;
- 将数据文件复制或移动到新的位置
cp /home/ShenTongoscar/TESTDBF.DBF /home/ShenTongoscar/test/TESTDBF.DBF 上
- 重命名数据文件(a或b)
a.alter database rename file '/home/ShenTongoscar/TESTDBF.DBF' to '/home/ShenTongoscar/test/TESTDBF.DBF';
b.alter tablespace TESTDBF rename DATAFILE '/home/ShenTongoscar/TESTDBF.DBF' TO '/home/ShenTongoscar/test/TESTDBF.DBF';
- 恢复数据文件状态
alter tablespace TESTDBF online;
注解
新的路径下文件必须已经存在,否则无法重定位数据文件。另外,应当提供完整的数据文件路径来标识数据文件。该信息可以由V_SYS_DATAFILE_INFO视图的PATH列获得。
重命名数据文件后应恢复数据文件状态为ONLINE才可使用数据文件。
重命名与重定位系统临时文件¶
在神通数据库中还可以通过配置 TEMPFILE_RECREATE_OPTION 和 TEMPFILE_PATH 来重命名和重定位系统临时文件。
TEMPFILE_PATH 用于指定新的系统临时文件的路径。
TEMPFILE_RECREATE_OPTION 参数作用如下:
- TEMPFILE_RECREATE_OPTION=1 时,根据 TEMPFILE_PATH 指定的路径重建系统临时文件。
- TEMPFILE_RECREATE_OPTION=2 时,系统临时文件保持现状。
- TEMPFILE_RECREATE_OPTION=3 时,将系统临时文件收缩回初始大小。
示例1: 将系统临时文件 OSRDBtmp01.dbf 从原来的目录 /home/ShenTongoscar 重建到新的目录 /home/ShenTongoscar/test
- 启库前在配置文件中设置 TEMPFILE_RECREATE_OPTION=1 ,TEMPFILE_PATH='/home/ShenTongoscar/test'
- 启动数据库, 执行以下 sql 查看系统临时文件当前所在的位置:
-- 查询结果应为 /home/ShenTongoscar/test/OSRDBtmp01.dbf
select path from v_sys_datafile_info where fileid=(select tsid from sys_tablespace where tsname='TEMP');
注解
若想将系统临时文件 OSRDBtmp01.dbf 创建到 /home/ShenTongoscar/test 目录下,应设置 TEMPFILE_PATH='/home/ShenTongoscar/test' ,而不是 TEMPFILE_PATH='/home/ShenTongoscar/test/OSRDBtmp01.dbf'。
若 TEMPFILE_PATH='/home/ShenTongoscar/test/OSRDBtmp01.dbf',从 v_sys_datafile_info 中查询出的结果就为 /home/ShenTongoscar/test/OSRDBtmp01.dbf/OSRDBtmp01.dbf
示例2: 将系统临时文件收缩回初始大小
- 创建临时表并插入数据,使系统临时文件扩展
create global temporary table t1(v varchar(8000));
begin
for i in 1..20000 loop
insert into t1 values(repeat('a',8000));
end loop;
end;
/
-- 查看当前系统临时文件的大小,结果应该大于系统临时文件的初始大小
select size from v_sys_datafile_info where fileid=(select tsid from sys_tablespace where tsname='TEMP');
- 停库,在配置文件中设置 TEMPFILE_RECREATE_OPTION=3,重新启动数据库
-- 查看当前系统临时文件的大小,结果应该等于系统临时文件的初始大小
select size from v_sys_datafile_info where fileid=(select tsid from sys_tablespace where tsname='TEMP');