oracle rename数据文件的两种方法
2012-12-11 20:44
555 查看
第一种
alter tablespace users rename datafile '==' to ‘***';
这种方式需要数据库处于open状态,表空间在offline的状态下才能更改。
第二种
alter database rename file ‘===' to '***';
这种方式需要数据库处于mount状态
另外附上批量修改数据文件名的语句
备注:红色为原路径 紫色为目标路径
alter tablespace users rename datafile '==' to ‘***';
这种方式需要数据库处于open状态,表空间在offline的状态下才能更改。
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' ORA-27037: unable to obtain file status Linux-x86_64 Error: 2: No such file or directory Additional information: 3 SQL> ! [oracle@rac1 ~]$ cp /opt/ora10g/oradata/orcl/user0100.dbf /opt/ora10g/oradata/orcl/userrename1.dbf[oracle@rac1 ~]$ cp /opt/ora10g/oradata/orcl/user099.dbf /opt/ora10g/oradata/orc l/userrename2.dbf [oracle@rac1 ~]$ exit exit 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> 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' --这里不能open的原因是刚刚关闭数据库写了userrename2.dbf和userrename1.dbf这两个数据文件的scn,而user099.dbf和user0100.dbf的scn还是offline的时候的,这样控制文件的头和数据文件头不一致,所以数据库打不开。 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.
另外附上批量修改数据文件名的语句
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/%'
备注:红色为原路径 紫色为目标路径
相关文章推荐
- 用两种不同的方法导出ORACLE 查询数据为CSV 文件 (python 代码 与 使用 utl_file 包)
- 移动oracle数据文件的两种方法
- oracle中数据文件移动或者改名的两种方法
- Oracle找回误删除数据有两种方法
- ORACLE Linux 平台下 误删 oracle 数据文件的恢复方法
- iOS开发小技巧--边接受数据边写入文件的两种方法
- oracle学习 六 删除表空间,数据文件的语句以及导入导出dmp文件的方法(持续更新中)
- Oracle 移动数据文件的操作方法
- 几种导出oracle中的数据为dmp文件的方法
- ORACLE 回滚段表空间数据文件丢失或损坏处理方法(1)
- Oracle因删除库数据文件导致服务无法启动的处理方法
- oracle数据文件被误操作删除了恢复方法
- 误删Oracle数据文件的恢复方法
- oracle表数据用java导出为SQL文件的方法
- 微软BI 之SSIS 系列 - 两种将 SQL Server 数据库数据输出成 XML 文件的方法
- Oracle导出表(即DMP文件)的两种方法
- oracle删除表中数据的两种方法
- ORACLE 回滚段表空间数据文件丢失或损坏处理方法(2)
- Oracle 12.1新特性:在线rename或relocate数据文件
- Oracle意外删除数据文件恢复方法