oracle 更改数据文件名,[Oracle] oracle修改数据文件名称

【问题现象】

在给表空间添加文件后,发现数据文件的添加的位置或名字不规范,需要规范性的更正

如下述场景:

sys@ora10g> col tablespace_name for a15

sys@ora10g> col file_name for a50

sys@ora10g> select tablespace_name,file_name from dba_data_files where tablespace_name = 'TBS_SEC_D';

TABLESPACE_NAME FILE_NAME

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

TBS_SEC_D       /oracle/oradata/ora10g/tbs_sec_d01dbf

细心地您应该看到这个数据文件名字应该为tbs_sec_d01.dbf,这里少了一个点。(另外一种场景是错误的将数据文件添加到了不正确的路径中需要修改)

这种错误也许您也会遇到。

首先声明一下:如果保持这个错误名字不变,不会影响到数据库的正常运行,但为了防止在维护过程中产生不必要的干扰,还是应该将其更正的。

【处理方法1】OFFLINE数据文件 --> 修改操作系统上的文件名 --> 修改数据库中的文件名 --> 对数据文件进行恢复 --> ONLINE数据文件

特别强调:需要归档模式!因为需要对数据文件进行恢复

1.OFFLINE数据文件

sys@ora10g> alter databasedatafile'/oracle/oradata/ora10g/tbs_sec_d01dbf' offline;

Database altered.

2.修改操作系统上的文件名

ora10g@testdb /oracle/oradata/ora10g$ mv tbs_sec_d01dbf tbs_sec_d01.dbf

3.修改数据库中的文件名

sys@ora10g> alter databaserenamefile '/oracle/oradata/ora10g/tbs_sec_d01dbf' to '/oracle/oradata/ora10g/tbs_sec_d01.dbf';

Database altered.

4.对数据文件进行恢复

sys@ora10g> recover datafile '/oracle/oradata/ora10g/tbs_sec_d01.dbf';

Media recovery complete.

5.ONLINE数据文件

alter database datafile '/oracle/oradata/ora10g/tbs_sec_d01.dbf' online;

6.确认修改成功

sys@ora10g> select tablespace_name,file_name from dba_data_files where tablespace_name = 'TBS_SEC_D';

TABLESPACE_NAME FILE_NAME

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

TBS_SEC_D       /oracle/oradata/ora10g/tbs_sec_d01.dbf

【处理方法2】OFFLINE表空间 --> 修改操作系统上的文件名 --> 修改数据库中的文件名 --> ONLINE表空间

1.OFFLINE表空间

sys@ora10g> alter tablespace tbs_sec_d offline;

Tablespace altered.

2.修改操作系统上的文件名

ora10g@testdb /oracle/oradata/ora10g$ mv tbs_sec_d01dbf tbs_sec_d01.dbf

3.修改数据库中的文件名

sys@ora10g> alter database rename file '/oracle/oradata/ora10g/tbs_sec_d01dbf' to '/oracle/oradata/ora10g/tbs_sec_d01.dbf';

Database altered.

4.ONLINE表空间

sys@ora10g> alter tablespace tbs_sec_d online;

Tablespace altered.

5.确认修改成功

sys@ora10g> select tablespace_name,file_name from dba_data_files where tablespace_name = 'TBS_SEC_D';

TABLESPACE_NAME FILE_NAME

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

TBS_SEC_D       /oracle/oradata/ora10g/tbs_sec_d01.dbf

【处理方法3】SHUTDOWN数据库 --> 修改操作系统上的文件名 --> 数据库启动到MOUNT --> 修改数据库中的文件名 --> OPEN数据库

1.SHUTDOWN数据库

sys@ora10g> shutdown immediate;

Database closed.

Database dismounted.

ORACLEinstance shut down.

2.修改操作系统上的文件名

ora10g@testdb /oracle/oradata/ora10g$ mv tbs_sec_d01dbf tbs_sec_d01.dbf

3.数据库启动到MOUNT

NotConnected@> startup mount;

ORACLE instance started.

Total System Global Area  562036736 bytes

Fixed Size                  2022312 bytes

Variable Size             171967576 bytes

Database Buffers          381681664 bytes

Redo Buffers                6365184 bytes

Database mounted.

4.修改数据库中的文件名

NotConnected@> alter database rename file '/oracle/oradata/ora10g/tbs_sec_d01dbf' to '/oracle/oradata/ora10g/tbs_sec_d01.dbf';

Database altered.

5.OPEN数据库

NotConnected@> alter database open;

Database altered.

6.确认修改成功

sys@ora10g> select tablespace_name,file_name from dba_data_files where tablespace_name = 'TBS_SEC_D';

TABLESPACE_NAME FILE_NAME

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

TBS_SEC_D       /oracle/oradata/ora10g/tbs_sec_d01.dbf

【总结】

以上三个实验是按照对数据库运行影响加深的顺序进行的。很显然,需要停起数据库对数据库的可用性影响是最大的,单独对特定数据文件进行修改的影响最小,对表空间offline的方法影响介于其之间。

希望屏幕前的您,可以根据不同的场景具体问题具体分析之。

好运!

-- The End --

注:查看数据库归档模式:select name,log_mode from v$database;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值