恢复Oracle Standalone数据库的准备工作

在恢复Oracle Standalone数据库前,需在目标设备上完成以下准备工作。

操作概览

添加备份网关

数据灾备(DBS)支持通过数据库网关DG(Database Gateway)将已备份的数据库恢复至本地或第三方云的私网。您需要在目标设备上添加备份网关,详情请参见添加备份网关

说明

数据库网关支持无需本地开通公网端口,将本地数据库与云服务连接起来。数据库网关DG(Database Gateway)是一种支持私网数据库远程访问的数据库连接服务,详情请参见什么是数据库网关

若您想将该实例恢复至原始设备上,您可选择备份该实例时所用的备份网关即可。

确认源实例的Oracle版本号

数据灾备(DBS)恢复Oracle实例时要求目标设备的Oracle版本号与源实例的小版本相同。

说明

例如Oracle 11.2.0.4版本与Oracle11.2.0.1版本不兼容,恢复时容易出错。建议目标设备上的Oracle版本与源数据库保持一致。

  • 您可以在源实例中通过以下命令查询Oracle版本号:

    su - oracle
    export ORACLE_SID=orcl;
    sqlplus / as sysdba
    select version from v$instance;

    如下返回结果表示Oracle为19.0.0.0.0版本。

    ====================
    VERSION
    -----------------
    19.0.0.0.0
    ====================
  • 若源库已无法达到mount状态,您可以按照以下方式查询版本号:

    su - oracle
    ORACLE_HOME/OPatch/opatch lsinv -oh $ORACLE_HOME |grep ^"Oracle Database"

创建Oracle SID

由于Oracle不允许一台设备上有同名的SID,您需要创建一个新的SID。

且由于Oracle不允许同库名的实例同时在同一台设备上在线,您可以执行以下命令关闭将原有的实例:

su - oracle
export ORACLE_SID=orcl;
sqlplus / as sysdba
shutdown abort;      /* 或者执行shutdown immediate; */
exit;

您可以通过以下命令检测是否已经正常关闭目标实例。

ps -ef|grep pmon|grep orcl

如果以上语句返回的打印存在,您可以通过kill -9命令关闭该实例。

创建数据恢复目录

创建数据恢复目录之前,您需提前了解到待恢复实例所占存储空间的大小。为保证有足够的空间来进行恢复,建议数据恢复目录的空间大小为原实例大小的1.3倍以上,或者为DBS全量备份集大小的5~6倍以上(DBS备份时会有压缩)。

  • 您可以执行以下命令,以oracle用户身份登录到Oracle数据库实例,并查询数据库文件的总大小。

    su - oracle
    export ORACLE_SID=orcl;
    sqlplus / as sysdba
    select sum(bytes) from ( select bytes from v$datafile union all select bytes from v$tempfile union all select bytes*members bytes from v$log);

    如下返回结果表示数据库文件的总大小为4904189952 BYTES,单位为Bytes:

    =======================
    SUM(BYTES)
    ----------
    4904189952
    =======================
  • 登录控制台,在备份计划 > 备份计划列表页面单击备份计划名称,在备份任务 > 全量数据备份页面中查看全量数据集的大小,详情请参见查看备份计划

  1. 创建目录。

    mkdir -p /Oracle/data_bak

    例如,您可以通过如上命令在Oracle文件夹中创建一个名为data_bak的目录。

    说明

    如果该目录已经存在,请确保目录下为空,以免数据灾备(DBS)恢复时覆盖目录下的原数据。

  2. 赋予权限。

    1. 您可以通过以下命令确认$ORACLE_HOME/bin/Oracle文件所在的用户组。

      ls -alh $ORACLE_HOME/bin/oracle

      如下返回结果表示$ORACLE_HOME/bin/Oracle文件所在的用户组为oracle:oinstall

      ====================
      -rwsr-s--x 1 oracle oinstall 421M Mar 15 03:04 /opt/oracle/product/19c/dbhome_1/bin/oracle
      ====================
    2. 您可以通过以下命令将目标目录变更用户组。

      chown -R oracle:oinstall /Oracle/data_bak

获取数据库程序目录

数据库程序目录即为ORACLE_HOME地址。

  1. 打开命令行界面,使用su - oracle命令切换到Oracle用户。

  2. 在Oracle数据库中,使用echo $ORACLE_HOME命令查看当前系统中ORACLE_HOME环境变量所设置的路径地址。

    如下返回示例表示ORACLE_HOME地址为/opt/oracle/product/19c/dbhome_1

    /opt/oracle/product/19c/dbhome_1