首页 > 数据库 >如何使用 RMAN 重定位或移动 oracle 数据库文件

如何使用 RMAN 重定位或移动 oracle 数据库文件

时间:2023-03-28 22:36:48浏览次数:36  
标签:log database 数据库 oradata SQL oracle RMAN data02

一、背景

这里的要求是将数据库文件移动或重新定位到其他位置。因此,这里有 2 种情况,
1. 重新定位所有数据库文件——数据文件、在线重做日志和控制文件(这需要数据库处于挂载模式)
2. 重新定位非系统数据文件——这可以在最小中断的情况下重新定位.

下面的示例使用 /data02/oradata 作为新目标。您可以使用您喜欢的任何目的地,包括新的 ASM 磁盘组。所以对于这个例子,我们有:

现有位置:/data01/oradata
新位置:/data02/oradata

二、重定位所有数据库文件

此解决方案要求数据库处于装载模式。我们将按照下面给出的步骤重新定位所有数据库文件、控制文件和重做日志。

1.以mount模式重启数据库。

首先,我们需要以挂载模式启动数据库才能执行重定位。

SQL> shutdown immediate;
SQL> startup mount;

2. Copy all datafiles to the new location

下一步是开始将数据文件复制到新位置。这里有2个案例。

a. 复制不同名称的数据文件(数据库驻留在 OS 文件系统上)
当您指定变量%U时,RMAN 在复制时自动生成新的文件名。

RMAN> backup as copy database format '/data02/oradata/%U';

 

 

b. 复制具有相同名称的数据文件
要保持相同的名称,您可以使用db_file_name_convert选项,如下所示:

RMAN> BACKUP AS COPY DB_FILE_NAME_CONVERT ('/data01/oradata/','/data02/oradata/') database;

3. Switch to the datafile copies

切换数据文件副本以便能够从新位置读取它们。

RMAN> switch database to copy;

  

4. Relocate the online redo logs

由于 RMAN 不备份联机重做日志,因此您需要将它们重新定位到 RMAN 之外
a. 识别联机重做日志列表:

SQL> select * from v$logfile;

  

b. 将行重做日志的 o/s 副本复制到新位置:

$ cp /data01/oradata/redo01.log /data02/oradata/redo01.log 
$ cp /data01/oradata/redo02.log /data02/oradata/redo02.log 
$ cp /data01/oradata/redo03.log /data02/oradata /redo03.log 
$ cp /data01/oradata/redo04.log /data02/oradata/redo04.log

  

c. 现在重命名日志文件,对每个重做日志文件执行此操作:

SQL> alter database rename file '/data01/oradata/redo01.log' to '/data02/oradata/redo01.log'; 
SQL> alter database rename file '/data01/oradata/redo02.log' to '/data02/oradata/redo02.log'; 
SQL> alter database rename file '/data01/oradata/redo03.log' to '/data02/oradata/redo03.log'; 
SQL> alter database rename file '/data01/oradata/redo04.log' to '/data02/oradata/redo04.log';

5. Relocate the controlfiles

按照以下步骤重新定位控制文件。
a. 将当前控制文件备份到新位置:

MAN> backup as copy current controlfile format '/data02/oradata/control001.ctl';

b. 复制控制文件副本:

RMAN> backup as copy controlfilecopy '/data02/oradata/control01.ctl' format '/data02/oradata/control02.ctl';

c. 更改控制文件位置:

SQL> startup nomount;
SQL> show parameter control
SQL> alter system set control_files='/data02/oradata/control01.ctl','/data02/oradata/control02.ctl' scope=spfile;

6. Start the database

完成上述所有步骤后,您可以继续启动数据库。

SQL> alter database mount;
RMAN> recover database;
RMAN> alter database open;

7. Relocating TEMP files

如果您需要重新定位 temp,则只需删除并在 SQL*Plus 中重新创建它:

SQL> alter database drop temporary tablespace temp; 
SQL> create temporary tablespace temp datafile '/data02/oradata/temp01.dbf' size 100m;

三、重新定位一些非系统数据文件

下面提到的步骤可以在数据库打开时完成。您只能对数量较少的非系统数据文件执行此操作。它在重命名期间只需要最少的中断。出于本帖子示例的目的,我们将数据文件 5 重新定位到新位置。

1.备份数据文件到新位置

要重新定位数据文件 5,我们首先要备份数据文件。

RMAN> report schema;
RMAN> backup as copy datafile 5 format '/opt/app/oracle/oradata/ORA11G/users01.bk';
RMAN> list copy of datafile 5;

2.使数据文件脱机

使数据文件脱机并使用 SWITCH 命令重命名它:

SQL> alter database datafile 5 offline;
RMAN> switch datafile 5 to copy;
RMAN> recover datafile 5;

3.在线数据文件

把数据文件上线并确认它的新位置:

SQL> alter database datafile 5 online;
RMAN> report schema;

 

四、附录

https://www.thegeekdiary.com/how-to-relocate-or-move-oracle-database-files-using-rman/

  

 

 

 

标签:log,database,数据库,oradata,SQL,oracle,RMAN,data02
From: https://www.cnblogs.com/lkj371/p/17267006.html

相关文章

  • oracle 离线分析其他库的归档日志
    oracle数据库是可以离线分析其他库的归档日志的,比如想分析生产库的归档日志,可以将其拿到测试库上来分析,以免影响生产库的性能。dictory模式:将数据库的数据字典抽取到操作......
  • OpenHarmony关系型数据库查询结果呈现
    1ResultSet(结果集)ResultSet(结果集)是OpenHarmony关系型数据库提供查询数据表返回结果的方法,提供了多种灵活的数据访问方式,以便于开发者获取各项数据,ResultSet属性如表1-......
  • Power BI如何连接MySQL数据库
    既然写了如何卸载MySQLconnectornet(相关文章见如何解决MySQLConnectorNETxxxx无法卸载的问题(win10)),那就顺便再写一篇PowerBI(以下简称PBI)如何连接MySQL数据库吧在系统......
  • mac m2 python connect oracle 11g
    需要安装驱动basicsdksqlplus下载地址https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html目前并不支持arm64inst......
  • MYsql数据库的概述(韩顺平)
    Mysql的安装命令行连接到MySqlMysql是一个服务在连接mysql之前必须保证mysql是运行的状态连接mysql中-uroot表示的是用户名连接mysql的注意事项Navicat的......
  • oracle varchar2类中字段可以存多少汉字
      varchar2(2)只能存一个汉字,2个字母或数字  ......
  • 数据库MHA实现高可用架构
    一、mysqlMHA介绍MHA(MasterHighAvailability)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automatingmasterfailover功能。1.1什么是MHA?MHA(Master......
  • Oracle使用SQL语句插入CLOB数据
    常规插入若字符超过4000则会提示文本过长,需要使用绑定变量进行插入,具体如下:--使用PL/SQL语法,采取绑定变量的方式解决,而不是直接拼接SQLDECLAREV_LANGCLOB:='待......
  • 五、使用sersync+rsync以及xtrabackup+crontab实现文件的实时备份和数据库的定时备份
    5.1环境说明主机IP地址备注NFS+Redis192.168.1.16sersync实时同步文件到备份主机Backup192.168.1.17rsync接收备份及xtraback备份5......
  • 查询oralce,返回list和数据库不同
    前提使用List<Map<String,Object>>接收从数据库查询到的结果,不能进行orderby排序,但是返回的list的顺序要和数据库视图里的字段顺序一致List<Map<String,Object>>......