网站建设资讯

NEWS

网站建设资讯

oracle如何还原,oracle如何备份还原

重装系统后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://cdweb.net/article/hdgdge.html