在Ubuntu系统上恢复Oracle数据库可以通过多种方法实现,具体方法取决于数据库的备份状态、损坏程度以及具体的恢复需求。以下是基于备份软件和常规恢复步骤的详细恢复方法:
在ywzd-db数据库服务器上执行以下操作,获取控制文件备份集。
/usr/openv/netbackup/bin/bplist -s nbu_master服务器主机名 -c nbu客户端主机名 -t 4 -r -l / > /root/backliststrings
/root/backlist |grep -i ywzd > /root/backlist2
cat /root/backlist2|grep ctrl
mkdir -p /u01/app/oracle/admin/ywzd/adump
mkdir -p /u01/app/oracle/oradata/ywzd/datafile
cd /u01/app/oracle/product/12.1.0.2/dbhome_1/dbs
vi initywzd.ora
export oracle_sid=ywzdrman
target /startup nomount
rman target / run{allocate channel ch00 type 'sbt_tape';
send 'nb_ora_serv=nbu_master服务器主机名';
send 'nb_ora_client=nbu客户端主机名';
restore controlfile from '/ctrl_s27488_p1_t1162988767';
release channel ch00;
}
alter database mount;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/FRA/arch';
ALTER SYSTEM SET ARCHIVE_LAG_TARGET=1800;
-- 每30分钟触发归档
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=4;
-- 并行加速容量规划公式
如果遇到truncate表操作失误,可以通过分析redo和undo日志来恢复数据。具体步骤包括:
通过10046以及redo dump去分析truncate的整个操作过程。
对基表的修改,改回原值,包括修改obj$、tab$的dataobj#,修改seg$的对应信息如extents、blocks、hwmincr等。
如果对应数据块没有数据写入,可以将对应的表空间改成只读,理论上可以找回数据。
请注意,以上方法需要具备一定的Oracle数据库管理经验和技能,建议在操作前详细阅读相关文档,并在测试环境中进行充分测试。如果数据库损坏严重或没有备份,恢复难度会大大增加,可能需要专业的数据库恢复服务。