sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

当前位置:Oracle研究中心 > 运维DBA >

【学习笔记】Oracle迁移 在线更改数据库文件的名字

时间:2016-07-24 21:33   来源:Oracle研究中心   作者:惜分飞   点击:

天萃荷净 运维DBA反映生产数据库的数据文件名称需要更改,在不影响应用业务使用的情况下在线更改数据文件名称

最近一段时间,发现不少pub上不少新手都因为一时大意,添加数据文件名称不规范,然后想重命名该数据文件(或者想删除该数据文件然后重建),处理思路有些不妥,导致一些悲剧的发现,我这里通过实验提供一个自认为比较合理的处理思路:处理思路是数据文件离线重命名

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /opt/oracle/oradata/test/archivelog
Oldest online log sequence     210
Next log sequence to archive   212
Current log sequence           212
--确认数据库是归档模式,使得数据库离线后,可以有归档日志恢复到在线状态

SQL> col name for a50
SQL> select name,file# from v$datafile;

NAME                                                    FILE#
-------------------------------------------------- ----------
/opt/oracle/oradata/test/system01.dbf                       1
/opt/oracle/oradata/test/undotbs01.dbf                      2
/opt/oracle/oradata/test/sysaux01.dbf                       3
/opt/oracle/oradata/test/users01.dbf                        4
/opt/oracle/oradata/test/user32g.dbf                        5
/opt/oracle/oradata/test/oracleplus01.dbf                     6
/opt/oracle/oradata/test/user02.dbf                         7
/opt/oracle/oradata/test/odu02.dbf                          8
/opt/oracle/oradata/test/odu01.dbf                          9
/opt/oracle/oradata/test/odu03.dbf                         10

10 rows selected.

SQL> alter tablespace xff add datafile '/opt/oracle/oradata/test/oracleplus02.chf'
   2    size 10m autoextend off;

Tablespace altered.

SQL>  select name,file# from v$datafile;

NAME                                                    FILE#
-------------------------------------------------- ----------
/opt/oracle/oradata/test/system01.dbf                       1
/opt/oracle/oradata/test/undotbs01.dbf                      2
/opt/oracle/oradata/test/sysaux01.dbf                       3
/opt/oracle/oradata/test/users01.dbf                        4
/opt/oracle/oradata/test/user32g.dbf                        5
/opt/oracle/oradata/test/oracleplus01.dbf                     6
/opt/oracle/oradata/test/user02.dbf                         7
/opt/oracle/oradata/test/odu02.dbf                          8
/opt/oracle/oradata/test/odu01.dbf                          9
/opt/oracle/oradata/test/odu03.dbf                         10
/opt/oracle/oradata/test/oracleplus02.chf                    11

11 rows selected.

SQL> create table chf.xff_test tablespace xff 
  2  as 
  3  select * from dba_objects;
select * from dba_objects
              *
ERROR at line 3:
ORA-01536: space quota exceeded for tablespace 'XFF'


SQL> alter user chf quota 100m on xff;

User altered.


SQL> create table chf.xff_test tablespace xff 
  2  as
  3  select * from dba_objects;

Table created.
--需要重命名的数据文件内有数据,模拟数据库在生产环境中工作

SQL> alter database datafile 11 offline drop ;

Database altered.
--数据文件离线处理

SQL> !mv /opt/oracle/oradata/test/oracleplus02.chf /opt/oracle/oradata/test/oracleplus02.dbf
--系统级别把数据文件修改为正确名称

SQL> alter database rename file '/opt/oracle/oradata/test/oracleplus02.chf' 
     2  to '/opt/oracle/oradata/test/oracleplus02.dbf';

Database altered.
--修改控制文件中数据文件名称

SQL> recover datafile 11;
Media recovery complete.
SQL> alter database datafile 11 online;

Database altered.
--恢复数据文件,并使其online

SQL>  select name,file# from v$datafile;

NAME                                                    FILE#
-------------------------------------------------- ----------
/opt/oracle/oradata/test/system01.dbf                       1
/opt/oracle/oradata/test/undotbs01.dbf                      2
/opt/oracle/oradata/test/sysaux01.dbf                       3
/opt/oracle/oradata/test/users01.dbf                        4
/opt/oracle/oradata/test/user32g.dbf                        5
/opt/oracle/oradata/test/oracleplus01.dbf                     6
/opt/oracle/oradata/test/user02.dbf                         7
/opt/oracle/oradata/test/odu02.dbf                          8
/opt/oracle/oradata/test/odu01.dbf                          9
/opt/oracle/oradata/test/odu03.dbf                         10
/opt/oracle/oradata/test/oracleplus02.dbf                    11

11 rows selected.

如果数据库满足以下条件,可以删除数据文件,重新添加:
1、The database must be open.
2、If a datafile is not empty, it cannot be dropped. If you must remove a datafile that is not empty and that cannot be made empty by dropping schema objects, you must drop the tablespace that contains the datafile.
3、You cannot drop the first or only datafile in a tablespace. This means that DROP DATAFILE cannot be used with a bigfile tablespace.
4、You cannot drop datafiles in a read-only tablespace.
5、You cannot drop datafiles in the SYSTEM tablespace.
6、If a datafile in a locally managed tablespace is offline, it cannot be dropped.
7、db version >= 10g R2

SQL> alter tablespace xff drop datafile 11;
alter tablespace xff drop datafile 11
*
ERROR at line 1:
ORA-03262: the file is non-empty

SQL> alter tablespace xff add datafile '/opt/oracle/oradata/test/oracleplus03.chf' size 10m autoextend off;

Tablespace altered.

SQL> alter tablespace xff drop datafile '/opt/oracle/oradata/test/oracleplus03.chf';

Tablespace altered.

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【学习笔记】Oracle迁移 在线更改数据库文件的名字

本文由大师惜分飞原创分享,网址:http://www.oracleplus.net/arch/870.html

Oracle研究中心

关键词:

Oracle迁移

在线更改数据库文件的名字

在线更改和重命名Oracle数据文件位置和名称