一、概述
本文将给大家介绍oracle各类文件损坏的现象和应对策略,请注意所有的恢复都是基于有备份的情况,所以请开启数据库的日常备份。
文章将从以下文件展开:
a. 密码文件
b. 参数文件
c. 控制文件
d. 数据文件(分普通表空间数据文件,其它表空间数据文件如system、sysaux、undo)
e. 日志文件(分current、active、inactive)
在正式实验之前,我先问一个问题,上面这些文件,哪个损坏最致命?欢迎在文末留言处留言。
二、环境准备
本实验在oracle 11G归档模式下进行,实验前先对数据库做个全库备份。
创建一个普通表空间和一些测试表
create tablespace tbs01 datafile '/u01/app/oracle/oradata/orcltest/tbs01.dbf' size 500m;
create table scott.t01 tablespace tbs01 as select * from dba_objects where rownum<=100;
RMAN> backup database; // 全库备份
RMAN> list backup; // 查看备份
BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------21 Full 1.14G DISK 00:01:33 17-MAR-20 BP Key: 21 Status: AVAILABLE Compressed: NO Tag: TAG20200317T133425 Piece Name: /home/oracle/backupdir/ORCLTEST_2750922031_133_1_20200317_1035293665.bkp List of Datafiles in backup set 21 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/system01.dbf 2 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/sysaux01.dbf 3 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/undotbs01.dbf 4 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/users01.dbf 5 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/example01.dbf 6 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/tbs01.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------22 Full 9.73M DISK 00:00:02 17-MAR-20 BP Key: 22 Status: AVAILABLE Compressed: NO Tag: TAG20200317T133602 Piece Name: /home/oracle/backupdir/c-2750922031-20200317-00 SPFILE Included: Modification time: 17-MAR-20 SPFILE db_unique_name: ORCLTEST Control File Included: Ckp SCN: 1606985 Ckp time: 17-MAR-20
三、密码文件损坏
文件说明:密码文件存储的是sys密码
模拟故障:清空该文件
echo '' > $ORACLE_HOME/dbs/orapworcltest // orcltest是该数据库的实例名
现象:使用sys通过oracle net登录报密码错误
sqlplus sys/123456@10.40.16.120:1521/orcltest as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 17 13:57:52 2020
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:ORA-01017: invalid username/password; logon denied
Enter user-name:
修复:使用自带工具orapwd重新生成密码文件
orapwd file=$ORACLE_HOME/dbs/orapworcltest password=123456 force=y // force=y如果原密码文件存在,强制覆盖
四、参数文件损坏
文件说明:这里所说的参数文件指的是spfile,该文件存储的是实例启动的参数和控制文件的路径
模拟故障:清空该文件
echo '' > $ORACLE_HOME/dbs/spfileorcltest.ora
现象:修改数据库参数时会报错
SQL> alter system set open_cursors=400;
alter system set open_cursors=400
*
ERROR at line 1:
ORA-01565: error in identifying file
'/u