oracle文件夹可以改名字吗,Oracle文件改名实验记录

在日常工作中,我们经常会遇到诸如空间被回收、某个磁盘损坏或者需要更换的情况。这个时候,往往需要我们将数据文件转移到其他存储位置上。本篇主要介绍常用的两种处理手段,权当记录,供自己和有需要的朋友不时之需。

1、环境准备

我们选择11g进行试验。

SQL> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE11.2.0.1.0Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 – Production

创建一个实验的表空间用于测试。

SQL> create tablespace mvtbltest datafile '/u01/oradata/WILSON/datafile/mvtbltest01.dbf' size 10m autoextend off

2extent management local uniform. size 1m

3segment space management auto;

Tablespace created

SQL> col file_name for a45;

SQL> select file_name, tablespace_name from dba_data_files where tablespace_name='MVTBLTEST';

FILE_NAMETABLESPACE_NAME

--------------------------------------------- ------------------------------

/u01/oradata/WILSON/datafile/mvtbltest01.dbfMVTBLTEST

创建一些实验对象。

SQL> create table t tablespace mvtbltest as select * from dba_objects ;

Table created

SQL> select tablespace_name, bytes from dba_segments where wner='SYS' and segment_name='T';

TABLESPACE_NAMEBYTES

------------------------------ ----------

MVTBLTEST9437184

我们通过mvtbltest表空间进行试验。

常用的处理方法有两个,一个是在线online进行文件的rename操作,另一个是需要停库,在启动过程中进行rename操作。

2、Online文件重命名操作

首先我们进行online的文件重命名。首先,我们需要明确,无论是online还是停库操作,表空间文件都会有一定时间不能使用。两者的差异在于是否会影响到其他表空间使用。

第一步,我们需要将表空间进行offline操作,此时所有文件对象将不能被访问。

SQL> alter tablespace mvtbltest offline;

Tablespace altered

SQL> select count(*) from t;

select count(*) from t

ORA-00376:此时无法读取文件10

ORA-01110:数据文件10: '/u01/oradata/WILSON/datafile/mvtbltest01.dbf'

第二步,需要在操作系统层面进行文件的拷贝操作。此时,最推荐的是使用mv命令操作。如果没有把握而且空间不紧张,copy也是比较稳妥的方案。

[oracle@bspdev ~]$ cd /u01/oradata/WILSON/datafile/

[oracle@bspdev datafile]$mv mvtbltest01.dbf /u01/oradata/WILSON/

[oracle@bspdev datafile]$ ls -l | grep mv

[oracle@bspdev datafile]$ cd ..

[oracle@bspdev WILSON]$ ls -l | grep mv

-rw-r----- 1 oracle oinstall 10493952 Apr 23 05:38 mvtbltest01.dbf

第三步,修改表空间对应文件的连接。

SQL> select file_name, status, online_status from dba_data_files where tablespace_name='MVTBLTEST';

FILE_NAMESTATUSONLINE_STATUS

--------------------------------------------- --------- -------------

/u01/oradata/WILSON/datafile/mvtbltest01.dbfAVAILABLE OFFLINE

SQL> alter tablespace mvtbltest rename datafile '/u01/oradata/WILSON/datafile/mvtbltest01.dbf' to '/u01/oradata/WILSON/mvtbltest01.dbf';

Tablespace altered

SQL> select file_name, status, online_status from dba_data_files where tablespace_name='MVTBLTEST';

FILE_NAMESTATUSONLINE_STATUS

--------------------------------------------- --------- -------------

/u01/oradata/WILSON/mvtbltest01.dbfAVAILABLE OFFLINE

最后,将表空间进行online操作。

SQL> alter tablespace mvtbltest online;

Tablespace altered

SQL> select count(*) from t;

COUNT(*)

----------

72722

应该说,online文件重命名是很简单的操作。过程消耗时间主要在OS层面的文件拷贝。

3、停库文件重命名

停库文件重命名是另一种情况。在进行数据还原(从冷备份)过程中,我们经常需要在启动过程中进行文件信息的替换。

我们首先进行停库处理。

SQL> conn / as sysdba

Connected.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

在OS层面进行文件拷贝。

[oracle@bspdev WILSON]$ ls -l | grep mv

-rw-r----- 1 oracle oinstall 10493952 Apr 23 05:55 mvtbltest01.dbf

[oracle@bspdev WILSON]$mv mvtbltest01.dbf /u01/oradata/WILSON/datafile/mvtbltest01.dbf

[oracle@bspdev WILSON]$ ls -l | grep mv

[oracle@bspdev WILSON]$ cd datafile/

[oracle@bspdev datafile]$ ls -l | grep mv

-rw-r----- 1 oracle oinstall10493952 Apr 23 05:55 mvtbltest01.dbf

[oracle@bspdev datafile]$

重新启动数据库,进入mount状态。

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup mount

ORACLE instance started.

Total System Global Area849530880 bytes

Fixed Size1339824 bytes

Variable Size587206224 bytes

Database Buffers255852544 bytes

Redo Buffers5132288 bytes

Database mounted.

SQL>

使用rename file命令进行转换。

SQL> alter database rename file '/u01/oradata/WILSON/mvtbltest01.dbf' to '/u01/oradata/WILSON/datafile/mvtbltest01.dbf';

Database altered.

最后成功启动数据库。

SQL> alter database open;

Database altered.

SQL> select count(*) from t;

COUNT(*)

----------

72722

4、结论

数据文件重命名是一个很简单的过程,伴随着OS层面和控制文件之间的协调处理。在很多业务处理场景下,很有意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值