oracle数据库迁移

是这样的:原先的电脑,主板烧了,然后开不开机了,我把硬盘里面的表空间文件“DATA_01.ORA”等文件想办法拷贝了出来,然后把原先的安装目录“oracle(目录)”也尽数拷贝了出来,然后,现在要在新电脑上进行数据的导入,该怎么办呢? 急急急……

如果:原库的system表空间和undo表空间的数据文件、及归档日志 都在的话,是没有多大问题的。 这个恢复过程,就是恢复过程有点复杂,就类似:数据库复制过程 (与data guard 不是一回事的)。一般出现这样的问题都会找专门的数据恢复公司或数据库维护工作了(因为这个恢复过程,本来就不简单,不是直接把以前的离线文件,直接拷过去,就行了的)。下面给一个简易的方法:你试试

方法如下:

1、在新服务器上,安装安装数据库软件,不建立数据库!(你要使用以前的数据文件等,所以不能建立库)。

2、在操作系统中,建立相应的操作系统目录。

(若你仍使用原库中参数文件(spfile),那么你可以按照参数文件的标注,建立相应的目录。你要重新建立新的文件存放目录的话,你还得修改参数文件呢,如果你对spfile文件修改不熟悉,就采用原来的spfile,根据参数文件建立相应的目录)你根据你的参数文件进行建立,下面只是为了说明进行举例。
一般建立(假设实例名为:standby1):
c:\> mkdir F:\oracle\product\10.2.0\oradata\standby1 (用于存放数据文件、控制文件等)
c:\> mkdir F:\oracle\product\10.2.0\admin\standby1\bdump (跟踪文件)
c:\> mkdir F:\oracle\product\10.2.0\admin\standby1\udump (用户文件)
c:\> mkdir F:\oracle\product\10.2.0\admin\standby1\cdump
c:\> mkdir F:\oracle\product\10.2.0\admin\standby1\adump

3、建立例程服务

c:\> oradim -new -sid standby1 -intpwd cs -startmode a

4、将你的参数文件(spfile) 复制到目录: x:\oracle\product\10.2.0\db_1\database 下

提示:在新服务器上存放数据文件、控制文件、跟踪文件等的位置与源库的位置相同的话,就可以直接复制到database目录下,不用修改参数文件的。不同的话,你得修改参数文件的。

5、将你原库的:数据文件、归档日志 复制到新服务器中.(具体位置,你参考Spfile文件中,所标注的,不用弄错了,不然会报错的)

6、 配置 standby1 的监听和网络服务

提示:监听配置好后,需要重启!对了:你可以将原来的:x:\oracle\product\10.2.0\db_1\NETWORK\ADMIN 中的:listener.ora 和 tnsnames.ora 直接拷贝到新服务中的:x:\oracle\product\10.2.0\db_1\NETWORK\ADMIN 目录下。替换的话:你需要修改 listener.ora 和 tnsnames.ora 这两个文件中的 IP 地址或主机名称,因为新服务器,有不同的名称和不同的IP。如果IP和主机名称和原来一样,就可以不用修改。
记得:重新启动监听啊 方法:
c:\>lsnrctl stop
c:\>lnsrctl start

7、启动例程,并建立控制文件 (控制文件必须重新建立,原来的控制文件记载的当前日志序列号、检查点信息、日志历史信息等,与新库的都不一样的,原来的用不了)

c:\>sqlplussys/oracle@standby1 as sysdba;
sql> startup nomount spfile='x:\oracle\product\10.2.0\db_1\database\spfileSTANDBY1'
sql> CREATE CONTROLFILE REUSE DATABASE "standby1" NORESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\REDO01.LOG' SIZE 50M,
GROUP 2 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\REDO02.LOG' SIZE 50M,
GROUP 3 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\REDO03.LOG' SIZE 50M
DATAFILE
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\SYSTEM01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\UNDOTBS01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\SYSAUX01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\USERS01.DBF'
CHARACTER SET ZHS16GBK;

提醒:上面的SQL语句中,相应参数文件的位置,你需要根据实际情况进行修改,实例名称你也需要根据实际情况进行修改。

8、恢复原库

假如你将原库的归档日志存放在新库:f:\archive 中
sql> set logsource 'f:\archive'
sql> recover database using backup controlfile until cancel

根据提示输入:canel

9、打开数据库:

sql> alter database open resetlogs;

10、新增临时文件(不然排序操作时,会报错)

sql > alter tablespace temp add tempfile 'f:\standby1\temp.dbf' size 5M reuse;

其他:如果你对原库进行了全库备份,不管是通过RMAN还是用户管理等,那么恢复的方法可以不采用此方法的。有全库的备份及归档日志, 恢复起来要简单些。

;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-20
http://database.51cto.com/art/201011/233460.htm
你看看这个行不行,复制出来的记得留好备份啊本回答被提问者采纳
第2个回答  2013-05-20
你的数据库是正常关闭的吗,如果是,把数据文件、redo log文件copy出来,然后在新电脑上重建数据库。追问

不是正常关闭的,电脑主板烧了,然后就进不去系统了

追答

1.在新电脑上安装相同版本的oracle
2.创建一个同名的数据库,用oradim创建就行,然后shutdown immediate关闭该库
3.把旧电脑上的数据库copy到新电脑上,路径与原来的一样。
4.启动数据库

第3个回答  2013-05-20
手动的话,还有注册表吧。试试注册表也弄好之后,服务和监听都照着原来的配置好看看能不能起来服务
相似回答