【Oracle】How to Rename or Move Datafiles and Logfiles 之二

在数据库open状态下进行重命名或者迁移数据文件:

注意:迁移system 表空间里的数据文件或者redo log 必须在mount状态下进行操作。

在数据库open 模式进行数据文件的移动时,数据文件所在的表空间必须是只读的。用户只可以进行select 查询操作而不能进行DML 修改。此期间持续的时间由迁移的数据文件大小和copy到新的目录的时间决定!

具体步骤如下:

1 确定有多少数据文件要进行迁移, 确保所有文件的status 为 AVAILABLE

SYS@yangdb-rac3> col file_name for a50

SYS@yangdb-rac3> SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'USERS'; 

FILE_NAME                                          STATUS

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

/opt/oracle/oradata/yangdb_test/users01.dbf        AVAILABLE

2设置表空间为只读,确保表空间已经在数据库字典里面设置为只读

SYS@yangdb-rac3> alter tablespace users read only;

Tablespace altered.

SYS@yangdb-rac3> SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'USERS';

TABLESPACE_NAME                STATUS

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

USERS                          READ ONLY

3 移动数据文件到新的位置

oracle@rac3:/opt/oracle/oradata/yangdb_test>ls

control01.ctl  control02.ctl  control03.ctl  example01.dbf  redo01.log  redo02.log  redo03.log  sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf

oracle@rac3:/opt/oracle/oradata/yangdb_test>cp users01.dbf ../yangdb/users01.dbf

oracle@rac3:/opt/oracle/oradata/yangdb_test>cd ../yangdb

oracle@rac3:/opt/oracle/oradata/yangdb>ls

users01.dbf

4 当数据文件已经被迁移到新的位置,将表空间offline

SYS@yangdb-rac3> ALTER TABLESPACE USERS OFFLINE; 

Tablespace altered.

查询表空间的status 信息

SYS@yangdb-rac3> SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'USERS';

TABLESPACE_NAME                STATUS

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

USERS                          READ ONLY

数据文件的status

SYS@yangdb-rac3> SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'USERS'; 

FILE_NAME                                          STATUS

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

/opt/oracle/oradata/yangdb_test/users01.dbf        AVAILABLE

SYS@yangdb-rac3> select name,status from v$datafile;

NAME                                               STATUS

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

/opt/oracle/oradata/yangdb_test/system01.dbf       SYSTEM

/opt/oracle/oradata/yangdb_test/sysaux01.dbf       ONLINE

/opt/oracle/oradata/yangdb_test/undotbs01.dbf      ONLINE

/opt/oracle/oradata/yangdb_test/users01.dbf        OFFLINE

/opt/oracle/oradata/yangdb_test/example01.dbf      ONLINE

5 重命名数据文件,此步骤将修改控制文件里的相关信息

SYS@yangdb-rac3> alter database rename file '/opt/oracle/oradata/yangdb_test/users01.dbf' to '/opt/oracle/oradata/yangdb/users01.dbf';

Database altered.

6 将数据文件重命名后,将表空间设置为online,并且将其设置为read write

SYS@yangdb-rac3> ALTER TABLESPACE USERS ONLINE; 

Tablespace altered.

SYS@yangdb-rac3> select name,status from v$datafile;

NAME                                               STATUS

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

/opt/oracle/oradata/yangdb_test/system01.dbf       SYSTEM

/opt/oracle/oradata/yangdb_test/sysaux01.dbf       ONLINE

/opt/oracle/oradata/yangdb_test/undotbs01.dbf      ONLINE

/opt/oracle/oradata/yangdb/users01.dbf      ONLINE

/opt/oracle/oradata/yangdb_test/example01.dbf      ONLINE

SYS@yangdb-rac3> SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'USERS';

TABLESPACE_NAME                STATUS

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

USERS                          READ ONLY

SYS@yangdb-rac3> ALTER TABLESPACE USERS READ WRITE; 

Tablespace altered.

SYS@yangdb-rac3> SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'USERS';

TABLESPACE_NAME                STATUS

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

USERS                          ONLINE

SYS@yangdb-rac3>  SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'USERS';

TABLESPACE_NAME                STATUS

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

USERS                          ONLINE

7 测试结果,查询users 表空间中的数据:

SYS@yangdb-rac3> SELECT COUNT(*) FROM SCOTT.EMP;

  COUNT(*)

----------

        14

成功!

时间: 2024-08-04 12:41:40

【Oracle】How to Rename or Move Datafiles and Logfiles 之二的相关文章

【Oracle】How to Rename or Move Datafiles and Logfiles 之一

在做搭建第二备库的时候用到了数据文件的迁移,当时选择了 在mount状态下,offine 数据文件然后在进行rename 的过程,这里直接进行了,当然可以参考MOS 文档 How to Rename or Move Datafiles and Logfiles [ID 115424.1] 一在数据库shutdown 模式 迁移数据文件和日志文件 1 查看文件位置 SYS@yangdb-rac3> select file_name from dba_data_files   2  union  

oracle 物理dataguard rename数据文件实例

我们知道当STANDBY_FILE_MANAGEMENT 设置为AUTO时,如果primary库新建一个datafile,standby是会自动同步新建一个datafile:但当primary rename一个datafile时,尽管STANDBY_FILE_MANAGEMENT 设置为AUTO,standby也不会同步,此时需要手动修改: 做如下实验来验证,将ZYH表空间的datafile重命名为/u01/oracle/oradata/standby/zyh02.dbf  代码如下 复制代码

Oracle如何监测一个PLSQL过程的运行情况(二)专业的解决方案

昨天一个朋友问我如何监测一个PL/SQL的运行状况,这里简单介绍几种方法. 介绍专业一点的DBMS_APPLICATION_INFO包. 上一篇介绍了通过INSERT和自治事务的解决方案,方法很简单,但是需要辅助的表和过程,而且这种方法显得有点不够专业. 那么这里介绍一篇相对PROFESSIONAL的解决方案,Oracle提供的DBMS_APPLICATION_INFO包: SQL> SELECT SID, ACTION 2  FROM V$SESSION 3  WHERE SID IN 4  

Oracle 11g r2全外连接优化执行计划(二) 新增的两个相关的HINT

Oracle在推出了新的执行计划的同时,还提供了两个控制这个执行计划的提示NATIVE_FULL_OUTER_JOIN和NO_NATIVE_FULL_OUTER_JOIN. 这两个HINT的使用十分简单,不需要其他的任何参数.下面继续上一篇文章的例子: SQL> SELECT /*+ NO_NATIVE_FULL_OUTER_JOIN */ T1.ID, T2.ID 2  FROM T1 FULL OUTER JOIN T2 3  ON T1.ID = T2.ID; ID        ID -

oracle 10g数据泵和导入导出性能对比(二)IMP和IMPDP导入的区别

前一段时间在一次迁移中同时用到了数据泵和EXP,发现二者效率的差别还是相当大的.这里通过一个例子简单比较一下. 这篇文章比较一下IMP和IMPDP导入的区别. 前面对比了EXP和数据泵的导出,可以看到,数据泵导出速度与直接路径导出相比,速度并没有本质的提高,下面看看数据泵的导入方式与IMP的区别. 导入的DMP文件就用上面导出是得到的结果,先看看IMP的导入速度: $ sqlplus "/ as sysdba" SQL*Plus: Release 10.2.0.3.0 - Produc

oracle数据泵导入分区表统计信息报错(二) 深入研究问题的现象

今天在进行数据泵导入操作时,发现一个bug. 上一篇记录了问题的现象,这一篇继续深入研究. 上一篇文章已经描述了问题的产生,而且提到了这个问题很难重现.无论如何去模拟实际的情况,都无法重现问题. 为了重现这个问题,在RAC数据库环境中,仿照问题表创建了分区表.并仿照问题数据库收集了统计信息的方式进行了统计信息的收集,都无法重现问题. 但是,利用问题数据库导出的统计信息,就可以重现问题.上周五发现的问题,但是由于数据不方便带回家,因此由于时间的限制仅仅测试了这么多. 今天一早到了公司,就继续这个问

Oracle RAC安装过程中碰到的“坑”和关键点(二)

(1) 依赖包的安装 Linux下安装Oracle,除了系统配置参数,我觉得依赖包的安装是另一个比较琐碎的操作. 本次安装碰到了几个包的问题: (a) rpm -Uvh gcc-4*提示: 02. error: Failed dependencies:  03.    cloog-ppl >= 0.15 is needed by gcc-4.4.7-4.el6.x86_64 04.    cpp = 4.4.7-4.el6 is needed by gcc-4.4.7-4.el6.x86_64

oracle 常用命令

oracle 第一章:日志管理 1.forcing log switches sql> alter system switch logfile; 2.forcing checkpoints sql> alter system checkpoint; 3.adding online redo log groups sql> alter database add logfile [group 4] sql> ('/disk3/log4a.rdo','/disk4/log4b.rdo')

oracle里的常用命令

oracle  第一章:日志管理 1.forcing log switches sql> alter system switch logfile; 2.forcing checkpoints sql> alter system checkpoint; 3.adding online redo log groups sql> alter database add logfile [group 4] sql> ('/disk3/log4a.rdo','/disk4/log4b.rdo'