今天在测试undo表空间特性是发现自己新建的数据文件命名错误,把undotbs2.dbf写成undotbs2,很明显不符合数据文件命名方式,虽然对数据库运行没什么影响,但身为DBA,为了防止在维护过程中产生不必要的干扰,还是应该将其更正的。
创建undo表空间语句
create undo tablespace undotbs2
datafile '/u01/app/oracle/oradata/orcl/undotbs2.dbf'
size 50M autoextend on;
上面是正确创建的语句
可以通过两个视图查看表空间的信息 v$datafile 和 dba_data_files;
sql>select name,status from v$datafile;
name status
------------------------------------------------------------
/u01/app/oracle/oradata/orcl/undotbs2 online
我们的目的就是把上面的name修改为/u01/app/oracle/oradata/orcl/undotbs2.dbf
首先我们不能对online的数据文件操作,所以必须offline
sql>alter database datafile '/u01/app/oracle/oradata/orcl/undotbs2' offline;
Database altered.
然后在操作系统直接复制一份undotbs2并更改名字为undotbs2.dbf
[oracle@lin orcl]$pwd
/u01/app/oracle/oradata/orcl
[oracle@lin orcl]$cp undotbs2 undotbs2.dbf
sql>alter database rename file '/u01/app/oracle/oradata/orcl/undotbs2' to '/u01/app/oracle/oradata/orcl/undotbs2.dbf';
Database altered.
修改后需要回复下数据文件
sql>recover datafile '/u01/app/oracle/oradata/orcl/undotbs2.dbf';
Media recovery complete.
再把修改后的数据文件改为online即可
sql>alter datafile '/u01/app/oracle/oradata/orcl/undotbs2.dbf' online;
Database altered;
当再次查询的时候就发现已经改回来了
总结
方法一
1、把数据文件offline
2、更改操作系统文件名为自己想要的名
3、rename数据库文件名
4、恢复数据文件
5、把数据文件online
方法二
1、shutdown immediate 关闭数据库
2、更改操作系统文件名为自己想要的名
3、startup mount 启动到mount状态
4、rename数据库文件名
5、open数据库
虽然两张方法都可以达到修改数据文件名字的效果,但是从影响数据库性能方面考虑,直接关闭整个数据库的影响相对于只是offline一个数据文件影响较大,所以在更改时需注意下是否要考虑到数据库的性能。