在恢复Oracle Standalone数据库前,需在目标设备上完成以下准备工作。
操作概览
添加备份网关
确认源实例的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 =======================
创建目录。
mkdir -p /Oracle/data_bak
例如,您可以通过如上命令在Oracle文件夹中创建一个名为
data_bak
的目录。说明如果该目录已经存在,请确保目录下为空,以免数据库备份DBS恢复时覆盖目录下的原数据。
赋予权限。
您可以通过以下命令确认
$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 ====================
您可以通过以下命令将目标目录变更用户组。
chown -R oracle:oinstall /Oracle/data_bak
获取数据库程序目录
数据库程序目录即为ORACLE_HOME
地址。
打开命令行界面,使用
su - oracle
命令登录Oracle数据库。在Oracle数据库中,使用SQL命令
echo ORACLE_HOME
查看ORACLE_HOME
地址。如下返回示例表示
ORACLE_HOME
地址为/opt/oracle/product/19c/dbhome_1
:/opt/oracle/product/19c/dbhome_1