【行业新闻】5月2日,Oracle Database 23ai正式发布!在过去四年中,Oracle数据库开发部门一直在努力研发Oracle 数据库的下一个长期支持版本,重点是AI和开发人员的工作效率。鉴于此版本数据库中对AI的关注,Oracle Database 23c更名为Oracle Database 23ai。Oracle Database 23ai 专注于三个关键领域:AI for Data、数据开发和数据关键任务。大家可通过以下两篇文章进一步了解。
Oracle Database 23ai 正式发布
新的里程碑:Oracle Database 23ai将AI引入企业数据和应用程序
1前言
五一假期结束后,客户发现有个业务表数据错乱了,想直接恢复到节前。接到这种数据恢复服务需求,我们第一步就是检查生产环境有没有备份。这个库有做定时备份,因此可以直接从备份中进行恢复。这个数据库备份配置可以参考以下文章。
【必备技能】Windows/Linux环境挂载NFS远程目录备份数据库
2恢复参数文件
(1)在oracle用户操作,手动创建pfile参数文件。
cd $ORACLE_HOME/dbs 即/u01/oracle/10g/dbs
vi initorcl.ora
*.sga_target=6144m
*.pga_aggregate_target=2048m
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='10.2.0.3.0'
*.control_file_record_keep_time=30
*.control_files='/u01/app/oracle/oradata/orcl/controlfile/control.ctl'
*.db_block_size=8192
*.db_create_file_dest='/u01/app/oracle/oradata/orcl'
*.db_domain=''
*.db_name='orcl'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/orcl'
*.log_archive_format='%t_%s_%r.dbf'
*.processes=600
*.remote_login_passwordfile='exclusive'
*.undo_tablespace='UNDOTBS1'
(2)创建参数文件后,手动将数据库启动到nomount状态
export ORACLE_SI=orcl
sqlplus as sysdba
startup nomount
(3)创建相应的目录并授权
mkdir -p u01/app/oracle/admin/orcl/adump
mkdir -p u01/app/oracle/oradata/orcl/controlfile
cd u01/app/
chown -R oracle:oinstall oracle/
3控制文件恢复
(1)由于源库是通过nfs挂载备份盘进行备份,因此,我们直接把这块备份盘也以nfs方式挂载到恢复环境。
# showmount -e 192.168.6.40
Export list for 192.168.6.40:
/oa 192.168.6.0/24
# mount -t nfs -o rw,bg,hard,nointr,rsize=32768,wsize=32768,nolock,proto=tcp,actimeo=0,vers=3,timeo=600 192.168.6.40:/oa /newstart
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
1.3T 900G 275G 77%
/dev/sda1 99M 13M 81M 14% boot
tmpfs 9.8G 0 9.8G 0% dev/shm
192.168.6.40:/oa 2.0T 533G 1.4T 28% /newstart
(2)在挂载目录下找到CTRL开头的备份文件,并且是备份文件日期是近期的。
rman target /
restore controlfile from '/newstart/ORCL/ORCL_CONT_1520764057_20240506_27041.ctl';
(3)恢复过程出现RMAN-06172错误。检查备份文件的权限,发现权限不对,并授权775权限。
RMAN> restore controlfile from '/newstart/ORCL/ORCL_CONT_1520764057_20240506_27041.ctl';
Starting restore at 06-MAY-24
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 05/06/2024 22:11:22
RMAN-06172: no autobackup found or specified handle is not a valid copy or piece
(4)调整备份目录的权限后,成功恢复出控制文件,并加载数据库。
RMAN> restore controlfile from '/newstart/ORCL/ORCL_CONT_1520764057_20240506_27041.ctl';
Starting restore at 06-MAY-24
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=655 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
output filename=/u01/app/oracle/oradata/orcl/controlfile/control.ctl
Finished restore at 06-MAY-24
RMAN> alter database mount;
4数据文件恢复(1)由于源库是RAC集群,数据文件存放在ASM共享磁盘组,因此需要进行数据文件路径转换。即修改控制文件里的数据文件路径。
RMAN> report schema;
RMAN-06139: WARNING: control file is not current for REPORT SCHEMA
Report of database schema
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 0 SYSTEM *** +DATA/orcl/datafile/system.265.997395529
2 0 DATA2 *** +DATA/orcl/datafile/ncoa2_02
3 0 SYSAUX *** +DATA/orcl/datafile/sysaux.305.997402961
省略部分数据文件
将对应的数据文件路径调整为新的目录
set newname for datafile 1 to '/u01/app/oracle/oradata/orcl/system.265.dbf';
set newname for datafile 2 to '/u01/app/oracle/oradata/orcl/ncoa2_02';
set newname for datafile 3 to '/u01/app/oracle/oradata/orcl/sysaux.305.dbf';
省略部分数据文件
(2)恢复数据文件前,须跟业务部门明确需要恢复的具体时间点。然后利用rman工具,更改数据文件存放路径并restore数据文件到新的路径。以下是恢复脚本。
如果挂载路径与备份路径不一致,需要先注册备份文件到控制文件中
catalog start with '/oradata'
恢复脚本信息:
RUN {
ALLOCATE CHANNEL ch00 TYPE disk;
ALLOCATE CHANNEL ch01 TYPE disk;
ALLOCATE CHANNEL ch02 TYPE disk;
ALLOCATE CHANNEL ch03 TYPE disk;
set until time "to_date('2024-04-29 15:55:00','yyyy-mm-dd hh24:mi:ss')";
set newname for datafile 1 to '/u01/app/oracle/oradata/orcl/system.265.dbf';
set newname for datafile 2 to '/u01/app/oracle/oradata/orcl/ncoa2_02';
set newname for datafile 3 to '/u01/app/oracle/oradata/orcl/sysaux.305.dbf';
省略部分数据文件
restore database;
switch datafile 1;
switch datafile 2;
switch datafile 3;
switch datafile 4;
switch datafile 5;
switch datafile 6;
switch datafile 7;
switch datafile 8;
switch datafile 9;
switch datafile 10;
switch datafile 11;
switch datafile 12;
switch datafile 13;
switch datafile 14;
switch datafile 15;
switch datafile 16;
switch datafile 17;
switch datafile 18;
switch datafile 19;
switch datafile 20;
switch datafile 21;
switch datafile 22;
switch datafile 23;
switch datafile 24;
switch datafile 25;
recover database;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
RELEASE CHANNEL ch02;
RELEASE CHANNEL ch03;
}
(3)恢复和还原数据文件后,打开数据库。最后配合业务部门进行数据准确性验证。
打开数据库
alter database open resetlogs;
近期热门文章:
👉【TDSQL】手动调整备份节点或冷备节点👉【TDSQL】TCPMSS最大数据分段大小值不合理导致JAVA程序连接数据库异常案例👉教你快速上手TiDB DM数据迁移工具并实现MySQL数据迁移同步👉TiDB 7.5 实验测试环境搭建及小插曲处理👉学好Oracle只需要看一本书就够了?
全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~