oracle10g数据库,之前在window XP2003上使用,后来系统崩溃,又换成window7系统,可是发现数据结构不兼容,现在想在XP系统另一个oracle数据库上恢复不知道能不能恢复?有controlfile、 datafile和onlinelog文件(没有备份),不知道要具体怎样恢复,越详细越好,谢谢各位大虾了。
解决方案 »
- exists或者是in的子查询条件,是否可以放在本身的条件里
- 在线等 !急!反洗钱系统的映射转换问题
- oracle 语句,有关group by 的
- oracle存储过程中出错?
- Help! Oracle是否有方法从一个table向另一个table插入数据,但忽略重复数据,而只增加新数据?
- 哪位大侠有oracle10g的教材呀
- oracle 10g sys 密码忘记了
- 求助一个SQL语句:替换某个字段的部分内容。
- 请问oracle建表时如何实现identity(1,1)[sql server]?
- oracle中nvarchar2查询结果少一位?
- 各位DBA,小弟急需你的帮助!!!
- plsql连oracle数据库,后来plsql卡死了,就结束进程关掉了,但在数据库中查看到原plsql连接的进程却没有断
你的datafile 文件是最新的吗,你这种情况应该可以跑起来数据库,但是如果要完全恢复光有这么点文件有难度。
conn /as sysdba
shutdown immediate;(先关闭数据库)
下面移动一下一个数据文件和日志文件的位置
alter database mount;
select file#,name from v$datafile;
select group#,member from v$logfile;
在操作系统里把E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\REDO03.LOG 剪切到'C:\REDO03.LOG'
在操作系统里把E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\USERS01.DBF 剪切到'C:\USERS01.DBF'
alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\REDO03.LOG' to 'C:\REDO03.LOG';
alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\USERS01.DBF' to 'C:\USERS01.DBF';alter database open;(正常打开)shutdown immediate;(关闭数据库),这里将所有的数据文件,控制文件,
在开始菜单里>用dbca删除该数据库.下面开始恢复1 windows下设置相关的环境变量,为复制数据库创建所有的必要路径
set ORACLE_SID=shan
set ORACLE_BASE=E:\oracle\product\10.2.0
set ORACLE_HOME=%ORACLE_BASE%\db_1
set ORACLE_DATA=%ORACLE_BASE%\oradata\%ORACLE_SID%
set ORACLE_ADMIN=%ORACLE_BASE%\admin\%ORACLE_SID%
mkdir %ORACLE_ADMIN%
mkdir %ORACLE_ADMIN%\pfile
mkdir %ORACLE_ADMIN%\adump
mkdir %ORACLE_ADMIN%\bdump
mkdir %ORACLE_ADMIN%\cdump
mkdir %ORACLE_ADMIN%\dpdump
mkdir %ORACLE_ADMIN%\udump
mkdir %ORACLE_DATA%
2 创建口令文件
orapwd file=%ORACLE_HOME%\database\PWDshan.ora password=shan entries=43 为要恢复的数据库创建一个数据库服务oradim -new -sid SHAN -intpwd shan4 从一个相同版本的数据库中取得一个参数文件,这个参数文件在startup nomount时要用
用命令create pfile from spfile;在windows下,这个参数文件在%ORACLE_HOME%\database下,文件名:INIT%ORACLE_SID%.ORA
修改这个文件名INIT%ORACLE_SID%.ORA.(例如:INITshan.ORA)
打开这个文件:修改以下几个参数
*.db_name='xx';
*.audit_file_dest='e:\oracle\product\10.2.0/admin/xx/adump'
*.background_dump_dest='e:\oracle\product\10.2.0/admin/xx/bdump'
*.core_dump_dest='e:\oracle\product\10.2.0/admin/xx/cdump'
*.user_dump_dest='e:\oracle\product\10.2.0/admin/xx/udump'
*.control_files='e:\oracle\product\10.2.0/oradata/xx/\control01.ctl','e:\oracle\product\10.2.0/oradata/xx/\control02.ctl','e:\oracle\product\10.2.0/oradata/xx/\control03.ctl'
将其中的xx换个你要恢复的数据库的sid(你的控制文件只有一份,拷贝同样的三份,替代上面的*.control_files参数里面的control01.ctl,control02.ctl,control03.ctl)
之后把这个修改后的文件放到%ORACLE_HOME%\database下
5 这里因为原来有一个控制文件,所以没有重新创建控制文件,只是又复制了两份,并设置了和参数文件里面*.control_files一样的名字
6 把数据文件和重做日志文件和控制文件都拷贝到%ORACLE_DATA%下面。(注意:这些数据库文件的USERS01.DBF,REDO03.LOG位置是不对的,它们应该是在C:\下)
sqlplus /nolog
conn /as sysdba
startup mount;(启动数据库)
col name for a60;
col member for a60;
select file#,name from v$datafile;(查看数据文件位置)
select group#,member from v$logfile;(查看日志文件位置)
按上面的显示把数据文件和日志文件拷贝到相应的位置。
7 打开数据库
alter database open;
select instance_name,status from v$instance;
显示instance_name为shan,状态为open;
8 ok,全部结束
有些情况,缺少必要条件是无法恢复D.
不必太纠结于此,巧妇难为无米之炊.平时多做练习就知道了.