重装系统后oracle怎么恢复
1、一种方法是重装数据库后用IMP来导入原来的数据,但使用这种方法的前提是你有以前数据的备份,并且这种方法还有许多不足的地方,如备份过旧,可能会丢失许多数据、导入数据太长等。
吉县网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
一般情况下我们可以采用重用原来的数据库的方法来恢复。在讲步骤前先说说这种方法的原理。
数 据库与实例对应,当数据库服务启动后,我们可以用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后,怎么才可以还原.ora 数据库文件?
在重装oracle前,必须对数据进行
备份
,通常有两种方法:1.冷备份,将oracle下oradata文件下的内容全部
拷贝
下来,这也叫
物理
备份,这个
文件夹
一般比较大。
2.
逻辑备份,在oracle下导出dmp
数据文件
,这个比较小,可安全性不高。
要还原重装以前的数据文件,象第一种情况,可直接把备份的oradata文件拿来覆盖刚装好的oradata文件就可以了。第二种
dmp
格式的比较麻烦,用plsql进入,在tool
菜单
下选imp导入数据。
oracle数据库备份怎么还原
1 导出存储过程,触发器,序列等所有用户对象。(备份)
在PL/SQL Developer的菜单Tools(工具) = Export User Objects(导出用户对象)中出来一个对话框界面
建议红色框住部分都不选,这样执行这个sql 时,就根据当前你的登录账户来进行创建。 在对象列表中ctrl+a 全选所有(如果你只导出部分,可单独选择)
设置 输出文件地址,文件名。 点击导出完成。
2 导出数据。(备份)
在PL/SQL Developer的菜单Tools(工具) = 导出表 中出来一个对话框界面
如果 数据量较大,选择oracle导出,勾压缩选项,然后设置输出文件地址。 如果只导出部分数据,可以在Where 处添加条件。例如 rownum=1000 ( 导出1000条记录),此种方式导出dmp 格式文件。
如果数据量较小,可以选择sql 插入,此种方式导出sql文件。
选项,勾选 约束,索引,行数,触发器。
注意:如果表中包含clob 或nclob 字段,就只能用dmp格式进行导入,如果是少量表,不包含这种字段,可以用sql插入方式。
还原时,注意需要先还原dmp文件。
3 表数据还原 。
a. 如果dmp 文件,那么在PL/SQL Developer的菜单Tools(工具) = 导入表 中出来一个对话框界面
可以在 “到用户” 处 选择你登录的账户。
b 如果是sql 格式文件,一样在PLSQL中新建一个命令窗口 (command windows) , 粘贴(ctrl+v) 刚才负责的sql内容。然后就开始自动执行还原了。
4 还原其他对象(存储过程,触发器,序列,函数等)
a. 用PLSQL 登录要还原的Oracle。此时你登录的账号是什么,还原就在该账号下。
b. 把先前备份的表结构sql文件打开,全选内容。 然后在PLSQL中新建一个命令窗口 (command windows) , 粘贴(ctrl+v) 刚才负责的sql内容。然后就开始自动执行还原了。
oracle中truncatetable后的数据如何恢复
oracle中truncatetable后的数据如何恢复
Oracle认证是由Oracle公司,为能够满足对Oracle核心人士需求,Oracle公司颁布并实施的一项权威品的服务与支持。下面我为大家整理了关于oracle中truncatetable后的数据如何恢复的.文章,一起来看看吧:
1、首先下载odu数据恢复工具,然后解压。(odu工具见附件)
2、查询数据文件路径相关信息:select ts#,file#,rfile#,name,BLOCK_SIZE from v$datafile;
将其结构填入odu目录下的control.txt文件中
格式如下:
#ts #fno #rfno filename block_size
0 1 1 /bbdata/hzdb/system01.dbf 8192
1 2 2 /bbidx/hzdb/undotbs01.dbf 8192
3 3 3 /bbidx/hzdb/indx01.dbf 8192
4 4 4 /bbdata/hzdb/tools01.dbf 8192
5 5 5 /bbdata/hzdb/users01.dbf 8192
6 6 6 /bbdata/hzdb/REPORT.dbf 8192
7 7 7 /bbdata/hzdb/RESERVE.dbf 8192
8 8 8 /bbdata/hzdb/WZHTBS.dbf 8192
9 9 9 /bbdata/hzdb/perfstat01.dbf 8192
3、打开oud
4、执行命令:unload dict
5、执行命令:scan extent (需等一会儿时间)
6、执行命令:desc [用户名].[被删除数据的表名]
Object ID:33547
Storage(Obj#=33547 DataObj#=33549 TS#=11 File#=10 Block#=1400 Cluster=0)
NO. SEG INT Column Name Null? Type
--- --- --- ------------------------------ --------- ------------------------------
1 1 1 OWNER VARCHAR2(30)
2 2 2 OBJECT_NAME VARCHAR2(128)
3 3 3 SUBOBJECT_NAME VARCHAR2(30)
4 4 4 OBJECT_ID NUMBER
5 5 5 DATA_OBJECT_ID NUMBER
6 6 6 OBJECT_TYPE VARCHAR2(18)
7 7 7 CREATED DATE
8 8 8 LAST_DDL_TIME DATE
9 9 9 TIMESTAMP VARCHAR2(19)
10 10 10 STATUS VARCHAR2(7)
11 11 11 TEMPORARY VARCHAR2(1)
12 12 12 GENERATED VARCHAR2(1)
13 13 13 SECONDARY VARCHAR2(1)
从上面的输出中,我们可以看到,TEST.T1表所在的表空间号为11,数据段头部为10号文件的1400号块。
我们使用ODU来确定T1表原来的data object id。一般来说,数据段的数据块,一般是在段头后面相邻的块中。但是我们可以从段头来确认:
ODU dump datafile 10 block 1400
Block Header:
block type=0×23 (ASSM segment header block)
block format=0×02 (oracle 8 or 9)
block rdba=0×02800578 (file#=10, block#=1400)
scn=0×0000.00286f2d, seq=4, tail=0×6f2d2304
block checksum value=0×0=0, flag=0
Data Segment Header:
Extent Control Header
-------------------------------------------------------------
Extent Header:: extents: 1 blocks: 5
last map: 0×00000000 #maps: 0 offset: 668
Highwater:: 0×02800579 (rfile#=10,block#=1401)
ext#: 0 blk#: 3 ext size:5
#blocks in seg. hdr’s freelists: 0
#blocks below: 0
mapblk: 0×00000000 offset: 0
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0×02800579 ext#: 0 blk#: 3 ext size: 5
#blocks in seg. hdr’s freelists: 0
#blocks below: 0
mapblk 0×00000000 offset: 0
Level 1 BMB for High HWM block: 0×02800576
Level 1 BMB for Low HWM block: 0×02800576
--------------------------------------------------------
Segment Type: 1 nl2: 1 blksz: 2048 fbsz: 0
L2 Array start offset: 0×00000434
First Level 3 BMB: 0×00000000
L2 Hint for inserts: 0×02800577
Last Level 1 BMB: 0×02800576
Last Level 1I BMB: 0×02800577
Last Level 1II BMB: 0×00000000
Map Header:: next 0×00000000 #extents: 1 obj#: 33549 flag: 0×220000000
Extent Map
-------------------------------------------------------------
0×02800576 length: 5
Auxillary Map
-------------------------------------------------------------
Extent 0 : L1 dba: 0×02800576 Data dba: 0×02800579
-------------------------------------------------------------
Second Level Bitmap block DBAs
-------------------------------------------------------------
DBA 1: 0×02800577
从上面的输出中的“Extent 0 : L1 dba: 0×02800576 Data dba: 0×02800579”可以看到,段的第1个数据块的RDBA为0×02800579,也就是10号文件的1401块。
我们dump第10号文件的1401块头,来得到表T1原来的data object id:
ODU dump datafile 10 block 1401 header
Block Header:
block type=0×06 (table/index/cluster segment data block)
block format=0×02 (oracle 8 or 9)
block rdba=0×02800579 (file#=10, block#=1401)
scn=0×0000.00285f2b, seq=2, tail=0×5f2b0602
block checksum value=0×0=0, flag=0
Data Block Header Dump:
Object id on Block? Y
seg/obj: 0×830b=33547 csc: 0×00.285f21 itc: 3 flg: E typ: 1 (data)
brn: 0 bdba: 0×2800576 ver: 0×01
Itl Xid Uba Flag Lck Scn/Fsc
0×01 0xffff.000.00000000 0×00000000.0000.00 C--- 0 scn 0×0000.00285f21
0×02 0×0000.000.00000000 0×00000000.0000.00 ---- 0 fsc 0×0000.00000000
0×03 0×0000.000.00000000 0×00000000.0000.00 ---- 0 fsc 0×0000.00000000
Data Block Dump:
================
flag=0×0 --------
ntab=1
nrow=16
frre=-1
fsbo=0×32
ffeo=0×145
avsp=0×113
tosp=0×113
可以看到,T1表原来的data object id就是33547。
7. 使用ODU来unload数据:
ODU unload table test.t1 object 33547
8、使用sqlldr导入我们恢复的数据:打开cmd命令,执行E:\ODU\datasqlldr 用户名/密码@数据库id control=TEST_T1.ctl ;
oracle怎么恢复备份的数据
Oracle数据库备份与还原命令
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1)query=\" where filed1 like '00%'\"
上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面 加上 compress=y 就可以了
数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。
注意:
你要有足够的权限,权限不够它会提示你。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上
附录一:
给用户增加导入数据权限的操作
第一,启动sql*puls
第二,以system/manager登陆
第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字
第五, 运行-cmd-进入dmp文件所在的目录,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp
安装oracle9I
Szportdb\szportdb\szportdb
用sysdba 登录建立用户:szportdb 表空间可以自己设定,也可以Users
倒入数据库。
Imp szportdb/szportdb@szportdb full=y C:\szportdb.dmp ignore=
oracle恢复备份后如何还原
oracle备份后的数据为dmp格式,用imp语句将其导入到数据库即可。
1、win键+R,输入cmd,点击确定,打开命令提示符。
2、进入到dmp文件的所在目录。
3、执行imp命令。
imp 用户名/密码@本地实例名 file=文件名.dmp log=生成日志名.log fromuser=用户1 touser=用户2
说明:如果导入用户和导出用户的用户名一致,则fromuser=用户1 touser=用户2这部分内容可以省去,如果导出用户名与导入用户名不一样,则需要添加。
网页名称:oracle如何还原,oracle如何备份还原
浏览路径:http://scgulin.cn/article/hdgdge.html