Oracle重命名和重定位数据文件

Oracle version:11.2.0.4

目录:
一、单个数据文件重命名和重定位
二、单个表空间中重命名和重定位数据文件
三、多个表空间中重命名和重定位数据文件
四、12c新特性
五、参考文档

一、单个数据文件重命名和重定位

此方法只适用在可以置为offline的数据文件,不适用于 SYSTEM,默认临时表空间文件,活动的undo表空间文件。且数据库必须打开归档!!!

步骤如下:

  1. 数据库开启的情况下,将数据文件置为 offline
    此操作会阻止该数据文件的读写操作,生产环境请在业务低峰期且确保沟通OK的情况下执行。
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf' OFFLINE ;

2.在操作系统上重命名和重定位数据文件
将 u01 下的数据文件 users01.dbf 移动到 u02 目录下且重命名为 users001.dbf

mv /u01/app/oracle/oradata/orcl/users01.dbf  /u02/app/oracle/oradata/orcl/users001.dbf

3.使用 ALTER DATABASE ... RENAME FILE ... 改变数据库中的文件名。
执行时必须提供完整的文件路径名,源文件名可以从DBA_DATA_FILES视图获取。

ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/orcl/users01.dbf' TO '/u02/app/oracle/oradata/orcl/users001.dbf' ;

查看数据文件状态:

FILE_NAME                                                            ONLINE_STATUS
-------------------------------------------------------------------- -------------
/u01/app/oracle/oradata/orcl/system01.dbf                            SYSTEM
/u01/app/oracle/oradata/orcl/sysaux01.dbf                            ONLINE
/u01/app/oracle/oradata/orcl/undotbs01.dbf                           ONLINE
/u02/app/oracle/oradata/orcl/users001.dbf                            RECOVER

4.让数据文件online之前需要对文件进行recover,再执行online

SQL> RECOVER  DATAFILE '/u02/app/oracle/oradata/orcl/users001.dbf';
Media recovery complete.
SQL> ALTER DATABASE DATAFILE '/u02/app/oracle/oradata/orcl/users001.dbf' ONLINE ;
Database altered.

5.完成后立即执行一次完整数据库备份,完毕!

二、单个表空间中重命名和重定位数据文件

此方法只适用在可以置为offline的表空间,不适用于 SYSTEM,默认临时表空间,活动的undo表空间。
如果很多个数据文件均在同一个表空间下,则可以通过将此表空间置为offline来重命名和重定位数据文件。

步骤如下:

  1. 数据库开启的情况下,将数据文件所在表空间置为 offline
    此操作会阻止该表空间下数据文件的读写操作,生产环境请在业务低峰期且确保沟通OK的情况下执行。
ALTER TABLESPACE users OFFLINE NORMAL;

2.在操作系统上重命名和重定位数据文件
将 u01 下的数据文件 users01.dbf 移动到 u02 目录下且重命名为 users001.dbf
将 u01 下的数据文件 users02.dbf 移动到 u02 目录下且重命名为 users002.dbf

mv /u01/app/oracle/oradata/orcl/users01.dbf  /u02/app/oracle/oradata/orcl/users001.dbf
mv /u01/app/oracle/oradata/orcl/users02.dbf  /u02/app/oracle/oradata/orcl/users002.dbf

3.使用 ALTER TABLESPACE ... RENAME DATAFILE ... 改变数据库中的文件名。
执行时必须提供完整的文件路径名,源文件名可以从DBA_DATA_FILES视图获取。

ALTER TABLESPACE users
    RENAME DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf',
                    '/u01/app/oracle/oradata/orcl/users02.dbf'
                 TO '/u02/app/oracle/oradata/orcl/users001.dbf', 
                    '/u02/app/oracle/oradata/orcl/users002.dbf';

4.完成后立即执行一次完整数据库备份
表空间offline状态下也是可以通过RMAN进行备份的。

5.此方法不需要进行recover,可直接将表空间置为 online,完毕!

ALTER TABLESPACE users ONLINE;
三、多个表空间中重命名和重定位数据文件

如果数据文件在多个表空间下,则有下面三种方式处理:
①需要将所有数据文件置为offline;
②将数据文件对应的表空间置为offline;
③直接将数据库置为mount状态。

①和②已经在前面有讨论,下面直接看③,③的动作影响很大,需要重启数据库实例,慎重!

SYSTEM,默认临时表空间文件,活动的undo表空间文件均可以通过此方式修改。

步骤如下:
1.关闭数据库

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

2.在操作系统上重命名和重定位数据文件

mv /u01/app/oracle/oradata/orcl/lzh01.dbf  /u02/app/oracle/oradata/orcl/lzh001.dbf
mv /u01/app/oracle/oradata/orcl/users01.dbf  /u02/app/oracle/oradata/orcl/users001.dbf

3.启动数据库至mount

SQL> startup mount
ORACLE instance started.

Total System Global Area  805303360 bytes
Fixed Size          8901696 bytes
Variable Size         650117120 bytes
Database Buffers      138412032 bytes
Redo Buffers            7872512 bytes
Database mounted.

4.使用 ALTER DATABASE ... RENAME FILE ... 改变数据库中的文件名。
执行时必须提供完整的文件路径名,源文件名可以从DBA_DATA_FILES视图获取。

SQL> ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/orcl/lzh01.dbf' TO '/u02/app/oracle/oradata/orcl/lzh001.dbf' ;

Database altered.

SQL> ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/orcl/users01.dbf' TO '/u02/app/oracle/oradata/orcl/users001.dbf' ;

Database altered.

5.打开数据库

SQL> alter database open ;

Database altered.

6.完成后立即执行一次完整数据库备份。完毕!

四、12c新特性

前面的三种方法本质上都是需要将数据文件置为offline再进行修改,12c引入新特性,可以直接重命名和重定位online数据文件,一条命令搞定,非常方便。

示例:
1.将 u01 下的数据文件 users01.dbf 移动到 u02 目录下且重命名为 users001.dbf。
此操作相当于move,u01下文件users01.dbf 会删除。
如果u02下已经存在 users001.dbf ,此操作会报错。

SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf' 
  TO '/u01/app/oracle/oradata/orcl/users001.dbf';

Database altered.

SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/lzh02.dbf' TO '/u01/app/oracle/oradata/orcl/lzh002.dbf' ;
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/lzh02.dbf' TO '/u01/app/oracle/oradata/orcl/lzh002.dbf'
*
ERROR at line 1:
ORA-01119: error in creating database file
'/u01/app/oracle/oradata/orcl/lzh002.dbf'
ORA-27038: created file already exists
Additional information: 1

2.可以通过参数 REUSE 覆盖上面文件已经存在的报错。

SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/lzh02.dbf' TO '/u01/app/oracle/oradata/orcl/lzh002.dbf'  REUSE ;

Database altered.

3.可以通过参数 KEEP 让源文件不被删除,相当于 copy

SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/lzh02.dbf' TO '/u01/app/oracle/oradata/orcl/lzh002.dbf'  KEEP ;

Database altered.

4.可以将本地文件Relocate到ASM磁盘组

ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf' 
  TO '+DATA01/data/orcl/datafile/users01.dbf';

5.完成后立即执行一次完整数据库备份。完毕!

注意事项:
1.如果指定的数据文件处于脱机状态,ALTER DATABASE MOVE DATAFILE 语句将会报错。
2.如果使用备用数据库,则可以在主数据库和备用数据库(物理或逻辑)上独立执行移动online数据文件操作。当数据文件在主服务器上移动时,备用服务器不受影响,反之亦然。
3.闪回操作不会将移动的数据文件重新定位到其以前的位置。如果你将一个数据文件从一个位置移动到另一个位置,然后将数据库闪回到移动之前的某个时间点,那么数据文件将保留在新位置,但是数据文件的内容将在闪回中指定的时间更改为内容。
4.在 Windows 平台上重新定位数据文件时,原始数据文件可能会保留在旧位置,即使省略了 KEEP 选项。在这种情况下,数据库只有在语句成功完成时才使用新位置中的数据文件。如果需要,可以在操作完成后手动删除旧数据文件。

五、参考文档

11g官方文档:https://docs.oracle.com/cd/E11882_01/server.112/e25494/dfiles.htm#ADMIN11430

12.1官方文档:
https://docs.oracle.com/database/121/ADMIN/dfiles.htm#ADMIN11430

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,013评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,205评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,370评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,168评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,153评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,954评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,271评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,916评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,382评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,877评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,989评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,624评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,209评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,199评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,418评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,401评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,700评论 2 345

推荐阅读更多精彩内容