先创建表空间文件,再创建用户,接着删除用户,停止ORACEL服务器,手工删除创建的表空间文件.再重新启动ORACLE,连接时提示:ORACLE NOT AVAILABLE.有什么办法使ORACLE恢复?
解决方案 »
- dept.deptno=emp.deptno(+)表示什么意义?
- oracle 怎么向long数据类型的字段插入数据
- 关于通过OCI操作Oracle10g经常出错的问题,请大侠帮忙,非常感谢!
- EXP-00056: 遇到 ORACLE 错误 6550
- modify number to varchar2报错!
- 你知道那里可以下 oracle web DB, oracle JDeveloper,oracle Developer吗?
- 这个查询怎么做?
- 请问oracle的字段类型中float和number有什么区别?
- 求助,关于字符集的问题
- SOS,我写的过程怎么在sqlplus里call时,出错为invalid呢?studioDBA里状态也为invalid,为呀?
- 关于ORA-1847错误
- DECODE语句这样写对吗?
Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production
With the Partitioning option
JServer Release 9.0.1.1.1 - ProductionSQL> create tablespace test datafile 'c:\test.dbf' size 1M;表空间已创建。SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。Total System Global Area 118255568 bytes
Fixed Size 282576 bytes
Variable Size 83886080 bytes
Database Buffers 33554432 bytes
Redo Buffers 532480 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 9 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 9: 'C:\TEST.DBF'
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。Total System Global Area 118255568 bytes
Fixed Size 282576 bytes
Variable Size 83886080 bytes
Database Buffers 33554432 bytes
Redo Buffers 532480 bytes
数据库装载完毕。SQL> alter database datafile 'C:\TEST.DBF' offline drop;数据库已更改。SQL> alter database open;数据库已更改。SQL>
1.
$sqlplus /nolog
sql>connect internal
sql>startup 2.
$sqlplus internal
sql>startup 3.
$sqlplus /nolog
sql>connect /as sysdba
sql>startup
4.
$svrmgr
svrmgr>connect internal
svrmgr>startup
因为你物理删除数据文件,并不是数据库的行为。
因为你这个数据文件不需要,这种方法恢复简单。例如:
上面的兄弟也提到了:
用SVRMGRL
SVRMGRL>CONNECT internal
SVRMGRL>startup mount
SVRMGRL> alter database datafile <删除的文件名,全路径> offline drop;
SVRMGRL>alter database open;
SQL> connect internal
已连接。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 D:\oracle\oradata\ora8i\archive
最早的概要信息日志序列 501
下一个存档日志序列 503
当前日志序列 503
SQL> 2.创建测试的数据文件及表空间
SQL> show user
USER 为"SYSTEM"
SQL> select file_name, tablespace_name from dba_data_files; FILE_NAME TABLESPACE_NAM
-------------------------------------------------- --------------
D:\ORACLE\ORADATA\ORA8I\SYSTEM01.DBF SYSTEM
D:\ORACLE\ORADATA\ORA8I\RBS01.DBF RBS
D:\ORACLE\ORADATA\ORA8I\USERS01.DBF USERS
D:\ORACLE\ORADATA\ORA8I\TEMP01.DBF TEMP
D:\ORACLE\ORADATA\ORA8I\TOOLS01.DBF TOOLS
D:\ORACLE\ORADATA\ORA8I\INDX01.DBF INDX
D:\ORACLE\ORADATA\ORA8I\OEM_REPOSITORY.ORA OEM_REPOSITORY
D:\ORACLE\ORADATA\ORA8I\TTS_EX1.DBF TTS_EX1
D:\ORACLE\ORADATA\ORA8I\TTS_EX2.DBF TTS_EX2 已选择9行。 SQL> create tablespace table_data
2 datafile 'd:\oracle\oradata\ora8i\table_data.dbf' size 2M; 表空间已创建。 3.创建测试的用户和表
SQL> create user aa identified by aa
2 default tablespace table_data
3 temporary tablespace temp; 用户已创建 SQL> grant connect, resource to aa; 授权成功。
SQL> grant alter system to aa; 授权成功。
SQL> conn aa/aa;
已连接。
SQL> create table test(a int); 表已创建。 4.创建测试的表数据
SQL> insert into test values(1); 已创建 1 行。 SQL> commit; 提交完成。 SQL> alter system switch logfile; 系统已更改。
SQL> insert into test values(2); 已创建 1 行。 SQL> commit; 提交完成。 SQL> alter system switch logfile; 系统已更改。 SQL> insert into test values(3); 已创建 1 行。 SQL> commit; 提交完成。 SQL> alter system switch logfile; 系统已更改。 SQL> insert into test values(4); 已创建 1 行。 SQL> commit; 提交完成。 SQL> select * from test; A
----------
1
2
3
4 因为都commit了,所以如果成功恢复的话,应该可以看到全部4条数据。 5.物理删除文件d:\oracle\oradata\ora8i\table_data.dbf
SVRMGR> connect internal
连接成功。
SVRMGR> shutdown immediate;
已关闭数据库。
已卸下数据库。
已关闭 ORACLE 实例。 D:\>del d:\oracle\oradata\ora8i\table_data.dbf
D:\oracle\oradata\ora8i>dir *.dbf/w
驱动器 D 中的卷没有标签。
卷的序列号是 C822-4715 D:\oracle\oradata\ora8i 的目录 INDX01.DBF RBS01.DBF SYSTEM01.DBF TEMP01.DBF TOOLS01.DBF
TTS_EX1.DBF TTS_EX2.DBF USERS01.DBF
8 个文件 736,165,888 字节
0 个目录 1,280,155,648 可用字节 6.启动数据库报错
SVRMGR> startup
ORACLE instance started.
Total System Global Area 54761500 bytes
Fixed Size 75804 bytes
Variable Size 19685376 bytes
Database Buffers 34922496 bytes
Redo Buffers 77824 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
ORA-01110: data file 10: 'D:\ORACLE\ORADATA\ORA8I\TABLE_DATA.DBF' 7.开始进行恢复
SVRMGR> alter tablespace TABLE_DATA offline immediate;
alter tablespace TABLE_DATA offline immediate
*
ORA-01109: database not open
SVRMGR> select * from v$recover_file;
FILE# ONLINE ERROR CHANGE# TIME
---------- ------- ------------------ ---------- ---------
10 ONLINE FILE NOT FOUND 0
1 row selected. SVRMGR> alter database datafile 10 offline;
Statement processed. SVRMGR> alter database open; Statement processed. SVRMGR> alter database create datafile 'D:\ORACLE\ORADATA\ORA8I\TABLE_DATA.DBF'
as 'D:\ORACLE\ORADATA\ORA8I\TABLE_DATA.DBF' size 2M; Statement processed.
SVRMGR> recover tablespace table_data;
ORA-00279: change 760836 generated at 08/25/2003 17:41:31 needed for thread 1
ORA-00289: suggestion : D:\ORACLE\ORADATA\ORA8I\ARCHIVE\ORA8IT001S00503.ARC
ORA-00280: change 760836 for thread 1 is in sequence #503
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
Log applied.
ORA-00279: change 760874 generated at 08/25/2003 17:47:07 needed for thread 1
ORA-00289: suggestion : D:\ORACLE\ORADATA\ORA8I\ARCHIVE\ORA8IT001S00504.ARC
ORA-00280: change 760874 for thread 1 is in sequence #504
ORA-00278: log file 'D:\ORACLE\ORADATA\ORA8I\ARCHIVE\ORA8IT001S00503.ARC' no lon
ger needed for this recovery
Log applied.
Media recovery complete.
SVRMGR> alter tablespace table_data online;
Statement processed. 8.测试是否恢复完整
SQL> conn aa/aa;
Connected.
SQL> select * from test; A
----------
1
2
3
4
使用leeshow的方法,数据库提示:ora-01034:oracle not availabled.