扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
一种方法是重装数据库后用IMP来导入原来的数据,但使用这种方法的前提是你有以前数据的备份,并且这种方法还有许多不足的地方,如备份过旧,可能会丢失许多数据、导入数据太长等。
成都创新互联公司从2013年创立,先为三明等服务建站,三明等地企业,进行企业商务咨询服务。为三明企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
一般情况下我们可以采用重用原来的数据库的方法来恢复。在讲步骤前先说说这种方法的原理。
数 据库与实例对应,当数据库服务启动后,我们可以用SQLPLUS "/AS SYSDBA"方法连接到一个空闲的例程,当执行startup启动数据库时,首先会在%ORACLE_HOME%/database下找当前SID对应 的参数文件(PFILE或者SPFILE)和密码文件,然后启动例程;接着根据参数文件记录的信息找到控制文件,读取控制文件的信息,这就是mount数 据库了;最终根据控制文件的信息打开数据库。这个过程相当于对数据库着了一次冷备份的恢复。
下面的具体步骤:(我们假设原库的所有相关文件都存在)1、安装数据库软件只需安装同版本的数据库软件即可,不需要创建数据库。最好安装在和原来数据库同样的%ORACLE_HOME%下,省得还要修改参数文件路径等。(直接覆盖原来的oracle即可)再次强调,只安装软件,不创建数据库,否则将数据库软件安装在同样的目录下旧的部分数据文件会被覆盖,这样数据库也不能被恢复了。
2、新建一个实例在cmd窗口执行oradim -new -sid xinhai注意,这个SID名称最好与你以前的SID一样,否则在启动的数据需要指明pfile,并且需要重建密码文件,比较麻烦。(当然,如果你就不想用原来的SID也可以,把参数文件、密码文件的名称都改成与新SID对应的名称)。
3、启动数据库做完以上两步,就可以启动数据库了。用net start 检查oracle服务是否已经启动,如果oracle服务没有启动,则在cmd下运行如下命令:net start oracleservicexinhai然后设定必要的环境变量,在cmd窗口运行set ORACLE_SID=xinhai
接着连接数据库sqlplus "/as sysdba"startup
如果正常的话,数据库应该就能起来了
4、启动监听lsnrctl start
5、后续工作经过以上几步后,基本上就可以使用oracle了,但是使用起来有点不方便,如每次在cmd中启动数据库都需要先SET ORACLE_SID、在本机连接数据库也都需要加上@TNSNAME等。我们可以修改注册表,添加ORACLE_SID的信息,避免这些麻烦。
在注册表的HKEY_LOCAL_MACHINESOFTWAREORACLE下新建字符串值,名称为ORACLE_SID,值为xinhai。也可以将以下内容保持成一个后缀名为reg的文件(文件名随便起),然后双击,即可将信息导入到注册表中。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREORACLE]"ORACLE_SID"="xinhai"
注意,以上步骤都是在%ORACLE_HOME%、%ORACLE_SID%都与原库一样的情况下讨论的,虽然%ORACLE_HOME%和%ORACLE_SID%可以与原库不一样,但为了减少麻烦和出错的几率,建议不要改变则两个值。
6、如果系统启动时 还不能启动oracle就增加以下
编辑一个oracle_startup.bat文档 内容为:
set sid=xinhailsnrctl starte:/oracle_startuplog.logsqlplus /nolog @e:oracle_startupsql.txte:/ oracle_startuplog.log
在e盘下增加文档oracle_startuplog.log,内容为:
connect / as sysdba;startup nomount;alter database mount;alter database open;quit
然后把oracle_startup.bat放到系统启动项里面,这样每次启动系统时oracle就自动启动了。
oracle数据库恢复,主要包括(1)系统崩溃只剩下数据文件的情况下的恢复,甚至没有system表空间而只有数据表空间的情况下的恢复.只要提供数据文件就可恢复.(2)undosystem表空间损坏数据恢复.(3)非归档或者归档模式下误delete数据的恢复、误删除表空间的恢复、droptruncate表的恢复.(4)数据库中有大量CLOBBLOB对象数据恢复等情况以及各种ora-错误的修复.(5)DMP文件损坏导致文件不能导入数据库的数据恢复(6)oracle数据库中数据文件出现坏块情况下的恢复.(7)oracle数据库无数据文件但有日志的情况下的恢复.(8)UNIX、WINDOWS下ORACLE数据文件被误删除情况下的数据库恢复.(9)Oracle10G、Oracle11G的ASM损坏的数据库恢复.(10)Oracle10G、Oracle11GBIFGILETABLESPACE大文件表空间损坏数据恢复(11)Oracle9i、Oracle10G、Oracle11G压缩表压缩表空间损坏数据恢复(12)Oracle10GOracle11GExpdp导出Impdp导入DMP文件错误数据恢复恢复成功率高达90%以上,在数据恢复领域处于国内领先的地位。具体案例见广州拓飞官方网站
本文将重点向您介绍如何利用飞康CDP恢复Oracle 11g 服务器及其数据库。同时,将帮助您进一步了解如何利用连续、实时的日志和定时的快照将数据简单、快速、精细的恢复到任意时间点。
当用户的Oracle 11g的磁盘或分区已经受到飞康CDP的保护,飞康CDP的DiskSafe将为用户提供多种数据恢复途径。用户可以将数据恢复到原始磁盘或是其它磁盘,创建系统和数据的副本也变得非常简单。然而,最好的恢复方法就是根据你的恢复对象进行恢复。下面将介绍几种典型的数据恢复场景和Oracle特定恢复的场景。
场景1: 恢复磁盘上的一个或多个文件
如果你不小心删除了磁盘上的一个文件,或者你需要从一些已经修改过的文件中找回一些旧的信息,最简单的恢复方法是加载一个包含了丢失的文件或是原始文件的快照视图。在文件被删除或是被修改之前的时间段产生的任何快照视图都可以被选择加载。加载了快照视图以后,只要将你需要的文件拷贝到你需要的位置就行了。
加载一个快照就是创建了一个单独的虚拟磁盘。加载的快照是镜像的精确视图,当快照创建的时候它就已经存在了。由于加载的快照由快照区里的当前镜像和变化数据组成,因此不再需要额外的磁盘空间。
下面的屏幕截图显示,在/01上加载的Oracle 磁盘sdb。
1. 列出当前的sdb快照并选择一个需要加载的快照做为TimeView。
2. 用CDP调取TimeView (下图):
#
3. 在当前磁盘中找出TimeView 并将其加载到服务器上:
4. 浏览TimeView并从中找到你丢失的数据,将其拷贝到需要的位置,然后卸载这个TimeView:
场景2: 恢复非系统盘或分区
这种情况的恢复与上一种场景的恢复非常相似:加载相应的TimeView,将整个磁盘或分区恢复到原始盘或是其它磁盘。
注意:如果将本地磁盘或分区恢复到一个新的磁盘,而这个磁盘的容量大于主磁盘,你必须手动的对新磁盘执行解除保护-再添加保护的动作,从而使新磁盘可以遵循已经设定的保护策略。
场景3: 恢复系统磁盘或分区
如果需要恢复的是常用于启动的系统磁盘或分区,可以利用DiskSafe恢复盘来完成。对于硬盘或是操作系统出现故障,或者磁盘、操作系统已经进行了修理或替换的情况,这种恢复方式非常有用。
一旦服务器从DiskSafe恢复盘进行启动,你可以访问CDP管理器,并通过CDP管理器上的镜像或选定的快照恢复整个磁盘或分区。数据可以被恢复到原始盘或是其它的磁盘。
场景4: 恢复Oracle数据库对象
如果数据库对象(表)发生损毁或删除,最简单的办法是利用Oracle备份服务器加载包含原始对象的快照视图进行恢复。打开数据库,从中导出原始对象并转存文件,最后将该文件导入到所运行的生产数据库中。
注意:Oracle 11g 具备回收站功能:如果你意外的删除了某个表,实际它只是被放入了回收站,你可以执行“撤消”命令将表找回。
场景5: 完整恢复Oracle数据库时间点
如果是由于磁盘故障引发一个或者多个数据文件丢失,你可能就需要整个数据库了。这种情况下,最佳的方式是加载故障前的最后一个快照,从而将数据恢复到新的磁盘。
然而,一个已经加载的快照并不能作为工作磁盘使用,因为当快照被卸载时,这个被加载的快照上所发生的所有变化都将会丢失。也就是说,你只能从加载的快照中复制Oracle 数据到生产磁盘。你的RTO将完全根据从TimeView (快照)向生产存储复制数据所需的时间而定。
如果你的数据库很大,你需要缩短RTO,利用CDP的复制功能是非常好的选择。利用CDP的复制功能,可以在本地或远程的服务器上为受保护磁盘保留一份视图拷贝。如果主站点的主磁盘发生故障,二级站点的复制磁盘可以立即被提升为主磁盘,并分配给Oracle服务器进行加载,数据库可以在几乎不停机的情况下立即恢复生产运行。数据库将处于完成最后一次完整复制时的状态。
如果用最后一次快照恢复数据库,那么这个快照从创建以后到磁盘故障发生之间所提交的交易将全部丢失。对于大多数企业来说,这都是不能接受的。有一种方法可以帮你恢复这部分数据丢失:通过CDP镜像,将快照创建以后到磁盘故障发生之间所提交的交易生成可回放的日志记录文件,你可以利用这些可回放的日志记录文件实现完整恢复。然后,用Oracle 的恢复命令找回需要的SCN就可以了。
不知道你重装前都备份了哪些文件,只要你那五种文件都有备份,恢复起来不是很难。主要归纳为以下几步:
1.将原来的oracle文件夹重命名,比如oracle_old;然后重新安装oracle
到原目录,即跟重装操作系统前同一目录,假设为d:\oracle;安装过程选择"只安装软件"
即不创建数据库,这样可以节省很多时间.
注:恢复必须要有以下文件
a、初始化参数文件INIT.ORA
b、所有数据文件 .dbf
c、所有重做日志文件(联机日志、归档日志)redo
d、所有控制文件 crtl
e、internal密码文件
2.配置listener和tns:
运行lsnrctl start,即可在创建监听服务;
使用net manager配置tns,但不要测试(数据库没有起来肯定测试不通过的);
3.将oradata文件夹拷贝回原目录(如d:oracleoradata);
4.将spfile拷贝回原目录(如d:oracleora92database);
5.创建实例服务:
oradim -new -sid orcl -startmode auto
6.重建口令文件:或是复制原来的pwdorcl.ora yhy9为实例名
orapwd file=d:oracleora92database password=orcl entries=5
7.重启监听和实例.
8.如果数据库没有启动就进入sqlplus手工打开数据库
sqlplus /nolog
sqlconn sys/orcl@orcl as sysdba
sqlstartup;
一定要有提示成功打开,否则重复以上办法解决。
9.如果数据库顺利打开,整个实例恢复过程即完成.
经验证通过以上操作,完全可以恢复成功。需要的是耐心、细心。
如果中间有报错,则一步步根据报错到网上查找解决办法。
oracle数据库不存在还原一说,只有导入,应该用imp命令。
根据具体的导入方式不同,基本有以下几种情况:
1. 获取帮助
imp help=y
2. 导入一个完整数据库
imp system/manager file=bible_db log=dible_db full=y ignore=y
3. 导入一个或一组指定用户所属的全部表、索引和其他对象
imp system/manager file=seapark log=seapark fromuser=seapark
imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
4. 将一个用户所属的数据导入另一个用户
imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
imp system/manager file=tank log=tank fromuser=(seapark,amy)
touser=(seapark1, amy1)
5. 导入一个表
imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
6. 从多个文件导入
imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y
7. 使用参数文件
imp system/manager parfile=bible_tables.par
bible_tables.par参数文件:
#Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import
8. 增量导入
imp system./manager inctype= RECTORE FULL=Y FILE=A
你已经说了是oracle11g,那么我就按照11g的做法来教你吧,和你确认几点东西,你前半句是想说明oracle被完全卸载了,只剩下数据库文件,dmp文件是吗?后半句是重新安装好了oracle11g,想要把数据库文件dmp文件恢复到oracle11g中,是吗?如果是这样,你可以这样做:
1,找到安装目录下的dpdump文件夹,将数据库文件dmp文件放进去。
2,运行DOS命令行,输入语句:impdp 用户名/密码@别名 dumpfile=dmp文件名.dmp 回车
你先这样做,如果有报错再说吧,因为不知道你的数据库文件导出来的方式是什么方式,方式不同,语句也会有所不同。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流