用户表空间的数据文件损坏
备份
SQL> alter tablespace users begin backup;
Tablespace altered.
SQL> select name from v$datafile;
NAME
--------------------------------------------------
/erikxue/system01.dbf
/erikxue/undotbs01.dbf
/erikxue/sysaux01.dbf
/erikxue/users01.dbf
/erikxue/mytbs01.dbf
SQL> ! cp /erikxue/users01.dbf /u01/oracle/
SQL> alter tablespace users end backup;
Tablespace altered.
SQL>
产生多次交易
update scott.emp set sal=sal+1;
commit;
alter system switch logfile;
.....
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 809 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1609 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1259 500 30
7566 JONES MANAGER 7839 02-APR-81 2984 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1259 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2859 30
7782 CLARK MANAGER 7839 09-JUN-81 2461.2 10
7788 SCOTT ANALYST 7566 19-APR-87 3009 20
7839 KING PRESIDENT 17-NOV-81 5011.2 10
7844 TURNER SALESMAN 7698 08-SEP-81 1509 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1109 20
7900 JAMES CLERK 7698 03-DEC-81 959 30
7902 FORD ANALYST 7566 03-DEC-81 3009 20
7934 MILLER CLERK 7782 23-JAN-82 1311.2 10
14 rows selected.
SQL> ! ls
1 1.txt afiedt.buf arc1 a.sh Desktop mystat2.sqlmystat.sql oratab
SQL> select name from v$datafile;
NAME
--------------------------------------------------
/erikxue/system01.dbf
/erikxue/undotbs01.dbf
/erikxue/sysaux01.dbf
/erikxue/users01.dbf
/erikxue/mytbs01.dbf
SQL> ! cp 1.txt /erikxue/users01.dbf
将数据文件损坏 还能查到数据 因为db_buffer_cache中有缓存块
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 809 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1609 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1259 500 30
7566 JONES MANAGER 7839 02-APR-81 2984 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1259 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2859 30
7782 CLARK MANAGER 7839 09-JUN-81 2461.2 10
7788 SCOTT ANALYST 7566 19-APR-87 3009 20
7839 KING PRESIDENT 17-NOV-81 5011.2 10
7844 TURNER SALESMAN 7698 08-SEP-81 1509 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1109 20
7900 JAMES CLERK 7698 03-DEC-81 959 30
7902 FORD ANALYST 7566 03-DEC-81 3009 20
7934 MILLER CLERK 7782 23-JAN-82 1311.2 10
14 rows selected.
SQL> alter system switch logfile;
System altered.
SQL> select * from scott.emp;
select * from scott.emp
*
ERROR at line 1:
ORA-00376: file 4 cannot be read at this time
ORA-01110: data file 4: '/erikxue/users01.dbf'
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ---------------------------------------- ---------- ---------
4 OFFLINE OFFLINE WRONG FILE TYPE 0
SQL> ! cp /u01/oracle/users01.dbf /erikxue/users01.dbf
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ---------------------------------------- ---------- ---------
4 OFFLINE OFFLINE868427 28-FEB-11
SQL> alter tablespace users online;
alter tablespace users online
*
ERROR at line 1:
ORA-01113: file 4 needs media recovery
ORA-01110: data file 4: '/erikxue/users01.dbf'
SQL> select * from v$recovery_log;
THREAD# SEQUENCE# TIMEARCHIVE_NAME
---------- ---------- --------- ---------------------------------------------
1 67 28-FEB-11 /home/oracle/arc1/67_1_744004808.arc
1 68 28-FEB-11 /home/oracle/arc1/68_1_744004808.arc
1 69 28-FEB-11 /home/oracle/arc1/69_1_744004808.arc
SQL> recover datafile 4;
ORA-00279: change 868427 generated at 02/28/2011 17:38:17 needed for thread 1
ORA-00289: suggestion : /home/oracle/arc1/67_1_744004808.arc
ORA-00280: change 868427 for thread 1 is in sequence #67
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 868522 generated at 02/28/2011 17:41:32 needed for thread 1
ORA-00289: suggestion : /home/oracle/arc1/68_1_744004808.arc
ORA-00280: change 868522 for thread 1 is in sequence #68
ORA-00278: log file '/home/oracle/arc1/67_1_744004808.arc' no longer needed for this recovery
ORA-00279: change 868527 generated at 02/28/2011 17:41:33 needed for thread 1
ORA-00289: suggestion : /home/oracle/arc1/69_1_744004808.arc
ORA-00280: change 868527 for thread 1 is in sequence #69
ORA-00278: log file '/home/oracle/arc1/68_1_744004808.arc' no longer needed for this recovery
Log applied.
Media recovery complete.
SQL> alter tablespace users online;
Tablespace altered.
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 809 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1609 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1259 500 30
7566 JONES MANAGER 7839 02-APR-81 2984 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1259 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2859 30
7782 CLARK MANAGER 7839 09-JUN-81 2461.2 10
7788 SCOTT ANALYST 7566 19-APR-87 3009 20
7839 KING PRESIDENT 17-NOV-81 5011.2 10
7844 TURNER SALESMAN 7698 08-SEP-81 1509 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1109 20
7900 JAMES CLERK 7698 03-DEC-81 959 30
7902 FORD ANALYST 7566 03-DEC-81 3009 20
7934 MILLER CLERK 7782 23-JAN-82 1311.2 10
14 rows selected.
SQL>
转载于:https://blog.51cto.com/erikxue/1349904