oracle管理(十二)db恢复
备份文件路径
/home/bak/BACKUPSET
挂载硬盘
cp文件
开始恢复数据
准备工作
su ora112
cd $ORACLE_HOME/dbs

echo $ORACLE_BASE
echo $ORACLE_HOME
echo $ORACLE_SID
echo $NLS_LANG

shutdown immediate
无条件关闭
shutdown abort
执行完成后关闭
shutdown immediate

删除文件
rm initorcl.ora initorcl.ora.bak
ls
rm spfileorcl.ora spfileorcl.ora.bak
ls
建议使用 mv 重命名 rm 删除没法 找到了
cd $ORACLE_HOME/dbs
mv initorcl.ora initorcl.ora.bak
mv spfileorcl.ora spfileorcl.ora.bak

开始恢复
vim $ORACLE_HOME/dbs/initorcl15.ora
compatible='11.2.0.4.0'
db_name=orcl15
db_recovery_file_dest=/home/bak
db_recovery_file_dest_size=10000000g
memory_target=10g


vim /home/ora112/.bash_profile

使生效
. /home/ora112/.bash_profile

sqlplus
startup nomount

修改组
chown ora112:oinstall -R /home/bak

查看 15 的导出日志 vim log_level0_170105.log

cd $ORACLE_HOME/bin
rman target /

rman
restore spfile to pfile "/app/oracle/product/11.2.0.1/dbs/initorcl15.ora" from "/home/bak/ORCL15/autobackup/2017_01_05/o1_mf_s_932434581_d6tdnp6z_.bkp";

su ora112
vim /app/oracle/product/11.2.0.1/dbs/initorcl15.ora
删掉之前添加的

sqlplus
create spfile from pfile;
shutdown abort
startup nomount

ora112
mkdir -p /app/oracle/oradata/orcl15
chown -R ora112:oinstall /app/oracle/oradata/orcl15

mkdir -p /app/oracle/admin/orcl15/adump
chown -R ora112:oinstall /app/oracle/admin/orcl15/adump
sqlplus
startup nomount;

rman
exit
rman target /
restore controlfile from "/home/bak/ORCL15/autobackup/2017_01_05/o1_mf_s_932434581_d6tdnp6z_.bkp";

sqlplus
alter database mount;

恢复文件位置验证
set linesize 100
set pagesize 9999
select FILE#,name from v$datafile;

set linesize 100
set pagesize 9999
select * from v$logfile;

rman
catalog start with '/home/bak';

监测
crosscheck backup;

sqlplus
--估算文件恢复之后占用的大小:
select sum(blocks)*8/1024/1024 from v$backup_datafile;

set linesize 500
set pagesize 9999
col a for a400
select replace('set newname for datafile '||FILE#||' to '''||name||''';','+DATA','/home/oradata') a from v$datafile;

vim test.rman
run {
set newname for datafile 1 to '/app/oracle/oradata/orcl15/system01.dbf';
set newname for datafile 2 to '/app/oracle/oradata/orcl15/sysaux01.dbf';
set newname for datafile 3 to '/app/oracle/oradata/orcl15/undotbs01.dbf';
set newname for datafile 4 to '/app/oracle/oradata/orcl15/users01.dbf';
set newname for datafile 5 to '/app/oracle/oradata/orcl15/zhcx_data001.dbf';
set newname for datafile 6 to '/app/oracle/oradata/orcl15/zhcx_index001.dbf';
restore database;
switch datafile all;
}

rman target /
@/test.rman

recover database;

alter database open resetlogs;
