千家信息网

oracle12C 新特性——之在线重命名和移动数据文件

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,【摘要】在12c版本之前,是不能够在线重命名和移动数据文件的。很多情况下,需要移动数据文件或重命名,那么只能停机操作了。但是到了12c,这个操作就变的非常简单了,可以在线操作,并且对应用业务没有任何影
千家信息网最后更新 2026年11月03日oracle12C 新特性——之在线重命名和移动数据文件

【摘要】

在12c版本之前,是不能够在线重命名和移动数据文件的。很多情况下,需要移动数据文件或重命名,那么只能停机操作了。

但是到了12c,这个操作就变的非常简单了,可以在线操作,并且对应用业务没有任何影响,大大提高了数据库的高可用性。其实12c很多新特性都是为了提高数据库的高可用性而出来的,oracle对数据库高可用性方面越来越重视。

下面介绍12c的在线重命名和移动数据文件。

【正文】

一 在线重命名数据文件

首先,创建一个新的叫做TBS_FILE_TO_MOVE的表空间,该表空间只包含一个数据文件。

[oracle@Server ~]$sqlplus / as sysdba

SQL*Plus: Release12.1.0.1.0 Production on Fri Dec 20 03:03:50 2013

Copyright (c) 1982,2013, Oracle. All rights reserved.

Connected to:

Oracle Database 12cEnterprise Edition Release 12.1.0.1.0 - 64bit Production

With thePartitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> CREATESMALLFILE TABLESPACE TBS_FILE_TO_MOVE DATAFILE '/u01/app/oracle/oradata/NONCDB/file_to_move.dbf'

SIZE 100M AUTOEXTENDON NEXT 100M LOGGING DEFAULT NOCOMPRESS

ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE

SEGMENT SPACEMANAGEMENT AUTO

Tablespace created.

SQL> select name,status from v$datafile where name like '%file_to_move%'

NAME STATUS

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

/u01/app/oracle/oradata/NONCDB/file_to_move.dbf ONLINE

SQL>!ls/u01/app/oracle/oradata/NONCDB/file_to_move*

/u01/app/oracle/oradata/NONCDB/file_to_move.dbf

对新创建的表空间TBS_FILE_TO_MOVE的数据文件"/u01/app/oracle/oradata/NONCDB/file_to_move.dbf"进行了在线重命名:

SQL>alter databasemove datafile '/u01/app/oracle/oradata/NONCDB/file_to_move.dbf' to'/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf'

Database altered.

如果在此步骤中尝试使用之前版本中提供的"alter database rename file"命令重命名数据文件的话,则会得到一个ORA-01121的错误,提示指定的数据文件在使用或者回复的同时不能进行重命名。

重命名操作完成之后,我们发现数据文件在控制文件和操作系统目录中已经显示为新的名字(file_to_move2.dbf),并且其状态仍然为ONLINE。

SQL>select name,status from v$datafile where name like '%file_to_move%'

NAME STATUS

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

/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf ONLINE

SQL>!ls /u01/app/oracle/oradata/NONCDB/file_to_move*

/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf

二 使用KEEP关键字在线移动数据文件

使用带有KEEP关键字的"alter database move datafile……"语句,将数据文件file_to_move.dbf重命名为file_to_move1.dbf(模拟数据文件在线移动)。如果在操作中指定了KEEP关键字,则会在原来的位置保留原来的数据文件,并同时会在新的位置创建一个新的数据文件的副本,在这种情况下,当alter语句成功完成后,数据库将仅使用新的数据文件而不会使用原有位置的旧的数据文件。因此,操作完成之后,在控制文件中将仅能看到新的file_to_move1.dbf数据文件,但在操作系统目录中却能同时看到旧的(file_to_move2.dbf)和新的数据文件(file_to_move1.dbf)。

SQL>alter databasemove datafile '/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf' to'/u01/app/oracle/oradata/NONCDB/file_to_move1.dbf' KEEP

Database altered.

SQL>select name,status from v$datafile where name like '%file_to_move%'

NAME STATUS

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

/u01/app/oracle/oradata/NONCDB/file_to_move1.dbf ONLINE

SQL>!ls/u01/app/oracle/oradata/NONCDB/file_to_move*

/u01/app/oracle/oradata/NONCDB/file_to_move1.dbf /u01/app/oracle/oradata/NONCDB/file_to_move2.dbf

三 使用REUSE关键字重命名一个在线数据文件

在"alter databasemove datafile..."语句中同时指定了REUSE关键字,这是因为在我们上一步的重命名操作中,我们曾经指定了KEEP关键字在原目录位置保留了数据文件file_to_move2.dbf,如果我们此时不指定REUSE关键字,我们的操作就会因目标数据件存在而报错,如果指定了REUSE关键字,则将会直接覆盖同名目标数据文件。

SQL>alter databasemove datafile '/u01/app/oracle/oradata/NONCDB/file_to_move1.dbf' to'/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf' REUSE

Database altered.

Data files from thecontrol file:

SQL>select name,status from v$datafile where name like '%file_to_move%'

NAME STATUS

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

/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf ONLINE

Data files from theOperating System Directory

SQL>!ls/u01/app/oracle/oradata/NONCDB/file_to_move*

/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf

四 使用文件号重命名一个在线数据文件

查询到数据文件file_to_move2.dbf所对应的数据文件号为100,接下来,我们直接使用数据文件file_to_move2.dbf对应的文件号(而不是具体指定其数据文件名称及位置)将其重命名为file_to_move1.dbf。

SQL>select name,status from v$datafile where name like '%file_to_move%'

NAME STATUS

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

/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf ONLINE

Data files from theOperating System Directory

SQL>!ls/u01/app/oracle/oradata/NONCDB/file_to_move*

/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf

SQL>select file#from v$datafile where name = '/u01/app/oracle/oradata/NONCDB/file_to_move2.dbf'

FILE#

----------

100

SQL>alter databasemove datafile 100 to '/u01/app/oracle/oradata/NONCDB/file_to_move1.dbf'

SQL>select name,status from v$datafile where name like '%file_to_move%'

NAME STATUS

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

/u01/app/oracle/oradata/NONCDB/file_to_move1.dbf ONLINE

SQL>!ls/u01/app/oracle/oradata/NONCDB/file_to_move*

/u01/app/oracle/oradata/NONCDB/file_to_move1.dbf

操作完成之后,通过v$datafile视图,确认控制文件中也已成功修改。


数据 文件 在线 关键 关键字 移动 位置 数据库 可用性 同时 目录 空间 语句 控制 成功 操作系统 情况 版本 目标 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是第几次科技革命的成果 云之行互联网科技 互联网通讯科技 金融科技还是互联网 互联网为科技 互联网医疗科技 美国互联网科技 互联网科技股票 北京互联网络科技有限公司 长亮科技 互联网金融 恒生科技互联网指数分析 厦门千工互联网科技有限公司 互联网科技产业特征 米聚互联网科技南京有限公司排面 互联网科技研发水平 乌鲁木齐新华智原互联网科技学校 佛山市翊博互联网络科技有限公司 互联网科技如何创业 烟台灵鸽互联网科技有限公司 江苏苏星互联网科技有限公司 山东特亿宝互联网科技有限公司 中国 科技 互联网 互联网前沿科技 深圳卡尔迅互联网科技有限公司怎么样 互联网科技热点资讯 互联网媒体平台算高科技产业 华夏恒生互联网科技013171 互联网领先科技宣传片 风投北京互联网科技 河南商务圈互联网科技有限公司
0