oracle user-maneged recovery(三)
2013-05-27 16:16
155 查看
完全恢复:
3.恢复打开的数据库(数据库故障引起宕机);
介质或者硬件故障导致数据库关闭
7*24小时运行,损坏的文件不属于系统表空间和回滚表空间
例子:
rm -rf /database/oradata/skyread/sf01.dbf
数据库已经因硬盘故障关闭,以上的sf01.dbf在改硬盘上
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup mount; --启动数据到mount状态
ORACLE instance started.
Total System Global Area 5049942016 bytes
Fixed Size 2090880 bytes
Variable Size 1375733888 bytes
Database Buffers 3657433088 bytes
Redo Buffers 14684160 bytes
Database mounted.
SQL> alter database open;--由于数据文件损坏无法打开数据库
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 26 - see DBWR trace file
ORA-01110: data file 26: '/database/oradata/skyread/sf01.dbf'
SQL> alter database datafile '/database/oradata/skyread/sf01.dbf' offline drop; --脱机故障的表空间
Database altered.
SQL> alter database open; --脱机故障文件后打开
Database altered.
SQL> alter database rename file '/database/oradata/skyread/sf01.dbf' to '/home/oracle/sf01.dbf'; 由于硬盘故障无法使用,这里使用备份数据文件
Database altered.
SQL> recover datafile 26; --进行介质恢复
Media recovery complete.
SQL> alter database datafile '/home/oracle/sf01.dbf' online; --数据文件online
Database altered.
SQL> col NAME for a50
SQL> set linesize 150
SQL> SELECT d.file# f#, d.name, d.status, h.status
2 FROM v$datafile d, v$datafile_header h
3 WHERE d.file# = h.file#;
F# NAME STATUS STATUS
---------- -------------------------------------------------- ------- -------
1 /database/oradata/skyread/system01.dbf SYSTEM ONLINE
3 /database/oradata/skyread/sysaux01.dbf ONLINE ONLINE
4 /database/oradata/skyread/users01.dbf ONLINE ONLINE
18 /database2/oradata/skyread/TBS_MRPMUSIC01.dbf ONLINE ONLINE
26 /home/oracle/sf01.dbf ONLINE ONLINE
31 /database2/oradata/skyread/undotbs02 ONLINE ONLINE
通过以上步骤恢复正常
4.在没有备份的情况先恢复数据文件
没有备份的数据文件故障的恢复,一定要有该文件创建以来的所有归档
文件不属于系统表空间和回滚表空间
控制文件知道这个文件的名称
SQL> create tablespace tbs_test datafile '/database/oradata/skyread/tbs_test.dbf' size 10M; --创建测试表空间
Tablespace created.
SQL> create table t1 (a int) tablespace tbs_test; --创建测试表
Table created.
SQL> insert into t1 values(1); --插入数据
1 row created.
SQL> commit;
Commit complete.
SQL> select file_name,tablespace_name from dba_data_files where tablespace_name='TBS_TEST';
FILE_NAME TABLESPACE_NAME
-------------------------------------------------- ------------------------------
/database/oradata/skyread/tbs_test.dbf TBS_TEST
rm -rf /database/oradata/skyread/tbs_test.dbf --模拟故障删除该数据文件
SQL> alter tablespace tbs_test offline immediate; --回到数据库offline表空间,如果数据库关闭的,那么数据库打开到mount状态,数据文件脱机
Tablespace altered.
SQL> select * from v$recover_file; --查看需要恢复的数据文件
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- -------------------
2 OFFLINE OFFLINE FILE NOT FOUND 0
SQL> alter database create datafile '/database/oradata/skyread/tbs_test.dbf'; --手工创建数据文件如果原来的不能使用,可以加上as '老的数据文件'
Database altered.
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- -------------------
2 OFFLINE OFFLINE 1.2269E+11 2013-05-02 16:09:33
SQL> recover tablespace tbs_test; --介质恢复
Media recovery complete.
SQL> alter tablespace tbs_test online; --联机表空间
Tablespace altered.
SQL> select * from t1; --数据恢复了
A
----------
1
3.恢复打开的数据库(数据库故障引起宕机);
介质或者硬件故障导致数据库关闭
7*24小时运行,损坏的文件不属于系统表空间和回滚表空间
例子:
rm -rf /database/oradata/skyread/sf01.dbf
数据库已经因硬盘故障关闭,以上的sf01.dbf在改硬盘上
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup mount; --启动数据到mount状态
ORACLE instance started.
Total System Global Area 5049942016 bytes
Fixed Size 2090880 bytes
Variable Size 1375733888 bytes
Database Buffers 3657433088 bytes
Redo Buffers 14684160 bytes
Database mounted.
SQL> alter database open;--由于数据文件损坏无法打开数据库
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 26 - see DBWR trace file
ORA-01110: data file 26: '/database/oradata/skyread/sf01.dbf'
SQL> alter database datafile '/database/oradata/skyread/sf01.dbf' offline drop; --脱机故障的表空间
Database altered.
SQL> alter database open; --脱机故障文件后打开
Database altered.
SQL> alter database rename file '/database/oradata/skyread/sf01.dbf' to '/home/oracle/sf01.dbf'; 由于硬盘故障无法使用,这里使用备份数据文件
Database altered.
SQL> recover datafile 26; --进行介质恢复
Media recovery complete.
SQL> alter database datafile '/home/oracle/sf01.dbf' online; --数据文件online
Database altered.
SQL> col NAME for a50
SQL> set linesize 150
SQL> SELECT d.file# f#, d.name, d.status, h.status
2 FROM v$datafile d, v$datafile_header h
3 WHERE d.file# = h.file#;
F# NAME STATUS STATUS
---------- -------------------------------------------------- ------- -------
1 /database/oradata/skyread/system01.dbf SYSTEM ONLINE
3 /database/oradata/skyread/sysaux01.dbf ONLINE ONLINE
4 /database/oradata/skyread/users01.dbf ONLINE ONLINE
18 /database2/oradata/skyread/TBS_MRPMUSIC01.dbf ONLINE ONLINE
26 /home/oracle/sf01.dbf ONLINE ONLINE
31 /database2/oradata/skyread/undotbs02 ONLINE ONLINE
通过以上步骤恢复正常
4.在没有备份的情况先恢复数据文件
没有备份的数据文件故障的恢复,一定要有该文件创建以来的所有归档
文件不属于系统表空间和回滚表空间
控制文件知道这个文件的名称
SQL> create tablespace tbs_test datafile '/database/oradata/skyread/tbs_test.dbf' size 10M; --创建测试表空间
Tablespace created.
SQL> create table t1 (a int) tablespace tbs_test; --创建测试表
Table created.
SQL> insert into t1 values(1); --插入数据
1 row created.
SQL> commit;
Commit complete.
SQL> select file_name,tablespace_name from dba_data_files where tablespace_name='TBS_TEST';
FILE_NAME TABLESPACE_NAME
-------------------------------------------------- ------------------------------
/database/oradata/skyread/tbs_test.dbf TBS_TEST
rm -rf /database/oradata/skyread/tbs_test.dbf --模拟故障删除该数据文件
SQL> alter tablespace tbs_test offline immediate; --回到数据库offline表空间,如果数据库关闭的,那么数据库打开到mount状态,数据文件脱机
Tablespace altered.
SQL> select * from v$recover_file; --查看需要恢复的数据文件
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- -------------------
2 OFFLINE OFFLINE FILE NOT FOUND 0
SQL> alter database create datafile '/database/oradata/skyread/tbs_test.dbf'; --手工创建数据文件如果原来的不能使用,可以加上as '老的数据文件'
Database altered.
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- -------------------
2 OFFLINE OFFLINE 1.2269E+11 2013-05-02 16:09:33
SQL> recover tablespace tbs_test; --介质恢复
Media recovery complete.
SQL> alter tablespace tbs_test online; --联机表空间
Tablespace altered.
SQL> select * from t1; --数据恢复了
A
----------
1
相关文章推荐
- Oracle数据库系统视图SYS.USER_TAB_COLS
- Oracle操作报错:record is locked by another user
- 如何通过Sqlplus创建一个oracle的user
- How to set user-defined-type as Oracle SP input parameter in .NET
- Oracle XE 访问 PRODUCT_USER_PROFILE 时出错 处理
- ORACLE EBS BOM 展开(使用标准程序bompexpl.exploder_userexit展开)
- oracle创建用户ORA-01045:user lacks CREATE SESSION privilege;
- Navicat Premium 连接本地oracle 【解决ORA-01017 invalid username/password;logon denied连接问题】
- Hibernate使用自定义类型UserType映射Oracle的Date类型
- oracle(创建/删除/修改用户,创建/删除/修改表空间,授权用户,删除所有表,给用户指定表空间,ORA-01940: cannot drop a user that is currently c)
- Oracle里面的用户user无法登录 LOCKED(TIMED)
- Oracle 关于报错"ORA-01747: user.table.column, table.column 或列说明无效"的终极解决办法
- sqlplus登录Oracle时ORA-01017: invalid username/password; logon denied的错误
- oracle中以dba_、user_、v$_、all_、session_、index_开头
- GENERAL ERROR: The user is unable to connect to the Oracle database
- Error - Connection to host as user oracle failed: ERROR: NMO not setuid-root (Unix-only)
- ORACLE中dba,user,v$等开头的常用表和视图
- 在Oracle中DBA_*、ALL_*以及USER_*的区别
- 关于Oracle adf 报Thread: JBO-25014: Another user has changed the row with primary key oracle.jbo.Key
- Record is locked by another user--Oracle行锁解锁(总结)