alter tablespace users rename datafile ‘==‘ to ‘***‘;
这种方式需要数据库处于open状态,表空间在offline的状态下才能更改。
[sql] view plain copy
SQL> alter tablespace users rename datafile ‘/opt/ora10g/oradata/orcl/user0100.dbf‘,‘/opt/ora10g/oradata/orcl/user099.dbf‘ to ‘/opt/ora10g/oradata/orcl/userrename1.dbf‘,‘/opt/ora10g/oradata/orcl/userrename2.dbf‘;
alter tablespace users rename datafile ‘/opt/ora10g/oradata/orcl/user0100.dbf‘,‘/opt/ora10g/oradata/orcl/user099.dbf‘ to ‘/opt/ora10g/oradata/orcl/userrename1.dbf‘,‘/opt/ora10g/oradata/orcl/userrename2.dbf‘
*
ERROR at line 1:
ORA-01525: error in renaming data files
ORA-01121: cannot rename database file 107 - file is in use or recovery
ORA-01110: data file 107: ‘/opt/ora10g/oradata/orcl/user0100.dbf‘
SQL> alter tablespace users offline;
Tablespace altered.
SQL> alter tablespace users rename datafile ‘/opt/ora10g/oradata/orcl/user0100.dbf‘,‘/opt/ora10g/oradata/orcl/user099.dbf‘ to ‘/opt/ora10g/oradata/orcl/userrename1.dbf‘,‘/opt/ora10g/oradata/orcl/userrename2.dbf‘;
alter tablespace users rename datafile ‘/opt/ora10g/oradata/orcl/user0100.dbf‘,‘/opt/ora10g/oradata/orcl/user099.dbf‘ to ‘/opt/ora10g/oradata/orcl/userrename1.dbf‘,‘/opt/ora10g/oradata/orcl/userrename2.dbf‘
*
ERROR at line 1:
ORA-01525: error in renaming data files
ORA-01141: error renaming data file 107 - new file ‘/opt/ora10g/oradata/orcl/userrename1.dbf‘ not found
ORA-01110: data file 107: ‘/opt/ora10g/oradata/orcl/user0100.dbf‘
SQL> alter tablespace users rename datafile ‘/opt/ora10g/oradata/orcl/user0100.dbf‘,‘/opt/ora10g/oradata/orcl/user099.dbf‘ to ‘/opt/ora10g/oradata/orcl/userrename1.dbf‘,‘/opt/ora10g/oradata/orcl/userrename2.dbf‘;
Tablespace altered.
SQL> alter tablespace users online;
Tablespace altered.
第二种
alter database rename file ‘===‘ to ‘***‘;
这种方式需要数据库处于mount状态
[sql] view plain copy
SQL> startup mount
ORACLE instance started.
Total System Global Area 788529152 bytes
Fixed Size 2087216 bytes
Variable Size 423626448 bytes
Database Buffers 356515840 bytes
Redo Buffers 6299648 bytes
Database mounted.
SQL> alter database rename file ‘/opt/ora10g/oradata/orcl/userrename2.dbf‘,‘/opt/ora10g/oradata/orcl/userrename1.dbf‘ to ‘/opt/ora10g/oradata/orcl/user099.dbf‘,‘/opt/ora10g/oradata/orcl/user0100.dbf‘;
Database altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 106 needs media recovery
ORA-01110: data file 106: ‘/opt/ora10g/oradata/orcl/user099.dbf‘
SQL> alter database rename file ‘/opt/ora10g/oradata/orcl/user099.dbf‘,‘/opt/ora10g/oradata/orcl/user0100.dbf‘ to ‘/opt/ora10g/oradata/orcl/userrename2.dbf‘,‘/opt/ora10g/oradata/orcl/userrename1.dbf‘;
Database altered.
SQL> alter database open;
Database altered.
另外附上批量修改数据文件名的语句
[sql] view plain copy
set pagesize 999
set linesize 999
select ‘alter database rename file ‘||‘‘‘‘||member||‘‘‘‘||‘ to ‘||chr(39)||replace(member,‘/paic/hq/bk/restore/data/oradata/lass/‘,‘/paic/z4ah8020/stg/lass/oradata/hs03lass/‘)||‘‘‘;‘
from v$logfile
where member like ‘/paic/hq/bk/restore/data/oradata/lass/%‘;
select ‘alter database rename file ‘||‘‘‘‘||name||‘‘‘‘||‘ to ‘||chr(39)||replace(name,‘/paic/hq/bk/restore/data/oradata/lass/‘,‘/paic/z4ah8020/stg/lass/oradata/hs03lass/‘)||‘‘‘;‘
from v$datafile
where name like ‘/paic/hq/bk/restore/data/oradata/lass/%‘
select ‘alter database rename file ‘||‘‘‘‘||name||‘‘‘‘||‘ to ‘||chr(39)||replace(name,‘/paic/hq/bk/restore/data/oradata/lass/‘,‘/paic/z4ah8020/stg/lass/oradata/hs03lass/‘)||‘‘‘;‘
from v$tempfile
where name like ‘/paic/hq/bk/restore/data/oradata/lass/%‘