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

概览

添加备份网关

DBS支持通过数据库网关DG(Database Gateway)将已备份的数据库恢复至本地或第三方云的私网。您需要在目标设备上添加备份网关,详情请参见添加备份网关
说明 数据库网关支持无需本地开通公网端口,将本地数据库与云服务连接起来。数据库网关DG(Database Gateway)是一种支持私网数据库远程访问的数据库连接服务,详情请参见什么是数据库网关。若您想将该实例恢复至原始设备上,您可选择备份该实例时所用的备份网关即可。

确认源实例的Oracle版本号

DBS恢复Oracle实例时要求目标设备的Oracle版本号与源实例的小版本相同。
说明 例如Oracle 11.2.0.4版本与Oracle11.2.0.1版本不兼容,恢复时容易出错。建议目标设备上的Oracle版本与源数据库保持一致。
  • 您可以在源实例中通过以下命令查询Oracle版本号:
    root > su - oracle
    oracle> export ORACLE_SID=orcl;
    oracle>sqlplus / as sysdba
    sqlplus> select version from v$instance;
    如下返回结果表示Oracle为19.0.0.0.0版本。
    ====================
    VERSION
    -----------------
    19.0.0.0.0
    ====================
  • 若原库已无法达到mount状态,您可以按照以下方式查询版本号:
    root > su - oracle
    oracle> $ORACLE_HOME/OPatch/opatch lsinv -oh $ORACLE_HOME |grep ^"Oracle Database"

创建Oracle SID

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

且由于Oracle不允许同库名的实例同时在同一台设备上在线,您可以执行以下命令关闭将原有的实例:
root> su - oracle
oracle> export ORACLE_SID=orcl;
oracle>sqlplus / as sysdba
sqlplus> shutdown abort;      /* 或者执行shutdown immediate; */
sqlplus> exit;
您可以通过以下命令检测是否已经正常关闭目标实例。
root> ps -ef|grep pmon|grep orcl

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

创建数据恢复目录

创建数据恢复目录之前,您需提前了解到待恢复实例所占存储空间的大小。为保证有足够的空间来进行恢复,建议数据恢复目录的空间大小为原实例大小的1.3倍以上,或者为DBS全量备份集大小的5~6倍以上(DBS备份时会有压缩)。
  • 您可以通过以下命令查询原实例的大小:
    root > su - oracle
    oracle> export ORACLE_SID=orcl;
    oracle>sqlplus / as sysdba
    sqlplus> 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
    =======================
  • 您可以在DBS控制台备份任务 > 全量数据备份页面中查看全量数据集的大小,详情请参见查看备份计划

  1. 创建目录。
    root> mkdir -p /Oracle/data_bak
    例如,您可以通过如上命令在Oracle文件夹中创建一个名为data_bak的目录。
    说明 如果该目录已经存在,请确保目录下为空,以免DBS恢复时覆盖目录下的原数据。
  2. 赋予权限。
    1. 您可以通过以下命令确认$ORACLE_HOME/bin/Oracle文件所在的用户组。
      root> 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. 您可以通过以下命令将目标目录变更用户组。
      root> chown -R oracle:oinstall /oracle/data_bak

获取数据库程序目录

数据库程序目录即为ORACLE_HOME地址。
  1. 在命令行通过su - oracle命令登录Oracle数据库。
  2. 在Oracle数据库中通过SQL命令echo ORACLE_HOME查看ORACLE_HOME地址。
    如下返回示例表示ORACLE_HOME地址为/opt/oracle/product/19c/dbhome_1
    ====================
    /opt/oracle/product/19c/dbhome_1
    ====================