概述
本文将给大家介绍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 21File LV Type Ckp SCN Ckp Time Name---- -- ---- ---------- --------- ----1 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/system01.dbf2 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/sysaux01.dbf3 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/undotbs01.dbf4 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/users01.dbf5 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/example01.dbf6 Full 1606913 17-MAR-20 /u01/app/oracle/oradata/orcltest/tbs01.dbfBS 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-00SPFILE Included: Modification time: 17-MAR-20SPFILE 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 2020Copyright (c) 1982, 2013, Oracle. All rights reserved.ERROR:ORA-01017: invalid username/password; logon deniedEnter user-name:
修复:使用自带工具orapwd重新生成密码文件
- orapwd file=$ORACLE_HOME/dbs/orapworcltest password=123456 force=y // force=y如果原密码文件存在,强制覆盖