重装系统后,怎么恢复oracle数据库

重装系统后,怎么恢复oracle数据库,第1张

任何软件都有可能在有意或无意的情况下被重新安装,如Oracle重装后数据怎么恢复呢?情况发生在你是无意的情况下!ORACLE数据库恢复的方法我们经常会用到,下面就为您介绍重装系统后ORACLE数据库恢复的方法,希望对您学习ORACLE数据库恢复方面能有所帮助。\x0d\\x0d\我的电脑突然挂了,不得不重装系统,不过我的ORACLE装在了D盘,所有的文件都还在,我相信一定能够恢复,直到搞定工作,我才开始整我的数据库,花了两天时间,终于恢复了,庆祝一下,同时总结一下,希望有遇到同样问题的朋友能够快速搞定此类问题\x0d\\x0d\第一种:\x0d\\x0d\首先,备份数据库(X:\oracle\oradata)下的数据文件,重新命名即可(否则装数据库的时候会提示sid已存在)。重新安装数据\x0d\库,当然数据库的名字就是你要恢复的名字。安装完成后,打开控制面板,停止oracle的服务。把(X:\oracle\oradata)下新生成的文件\x0d\改名,把原先目录下的文件恢复名字。再重新启动oracle服务和监听。用sys/as dba \x0d\登陆数据库,可能会提示权限不够(ora-01031)修改(X:\oracle\ora92\network\admin \x0d\)文件夹下的sqlnetora文件,添加SQLNETAUTHENTICATION_SERVICES= \x0d\(NTS),增加权限。登陆进去后,打开table提示不能打开。打开common页,执行命令alert database \x0d\open;这时再刷新table,发现原先的表可以打开了。恢复成功了。再用原先数据库的普通用户进入。发现一切正常。至此,大功告成。\x0d\\x0d\第二种:\x0d\\x0d\1、首先,将原来的ORACLE文件夹改名,原来的路径是D:/oracle我暂时改成D:/oracle_old找来ORACLE(我用\x0d\的是ORACLE 9I)安装光盘,将ORACLE安装在原来安装的目录下,这样恢复起来更加方便,主要是注册表的内容不用修改。\x0d\\x0d\2、安装完了之后,系统中又有一个可以使用的ORACLE了。这个时候要做的就是将原来的文件和数据恢复过来。第一步,先关闭ORACLE的所\x0d\有已经启动的项目,在"服务"里面逐一关闭。然后,将安装目录改名。我现在用的是D:/oracle改成D:/oracle_new再将D:\x0d\/oracle_old改成D:/oracle \x0d\这样理论上说从物理层面恢复了ORACLE了。但是我们发现,现在还不能启动ORACLE的监听程序和服务程序。我们还要从逻辑上解决。\x0d\\x0d\3、在dos环境下执行一个删除命令:oradim -delete -sid mm,其中mm为创建oracle时候创建的实例 \x0d\建议执行这个命令后重新启动机器,重启后就可以建立和原来实例名相同的实例。当然你懒,不重新启动也可以,但是你的实例名就不能和原来的一样了。\x0d\\x0d\4、在dos环境下执行命令 oradim -new -sid mm -startmode a -pfile "D:\oracle\admin\mm\pfile\initmmora "创建一个新的实例,其中 "mm"为新数据库的名称。\x0d\\x0d\5、启动服务,先打开数据库,然后可以用以前的用户名和密码登陆进去。 \x0d\要补充的是,一般的ORACLE数据库的监听程序都是用电脑的名称来识别地址的,而不是127001或者localhost所以,如果我们安装系\x0d\统的时候用的是不同的电脑名称(比如我原来用的是wm_mm重新安装后用的是wenming_mm),那么我们还有一个工作要做,就是修改文件 \x0d\listenerora将里面的相关的东西改过来就可以了。\x0d\\x0d\需要耐心、细心,可能在一步里有一个细小的差别就会出些古怪的错误提示,有时需要根据错误提示采取策略,总之原理是,先装一个一模一样的ORACLE,安装目录、数据库名称都一样,这样保证注册表里不用更改;再覆盖物理文件,最后重新实例化,打开数据库就可以进去了。

前提条件

-- 将 数据库的恢复模式(Recovery mode)设置为  “完整(Full)”

-- 此 *** 作可以在  SQL Server Management Studio 中, 选择数据库, 鼠标右键, 属性后,在 选项 标签中进行设置。

USE [master]

GO

ALTER DATABASE [test] SET RECOVERY FULL WITH NO_WAIT

GO

-- 完整备份数据库

backup database test to disk='e:\test_20130704dat'

GO

已为数据库 'test',文件 'Test' (位于文件 1 上)处理了 376 页。

已为数据库 'test',文件 'Test_log' (位于文件 1 上)处理了 3 页。

BACKUP DATABASE 成功处理了 379 页,花费 1151 秒(2571 MB/秒)。

 测试数据 

USE [test]

GO

-- 创建测试表

CREATE TABLE test_br_table (

  ID   int,

  VAL  VARCHAR(10),

  PRIMARY KEY(ID)

);

GO

INSERT INTO test_br_table  VALUES (1, 'TEST1');

INSERT INTO test_br_table  VALUES (2, 'TEST2');

INSERT INTO test_br_table  VALUES (3, 'TEST3');

GO

SELECT GETDATE()

GO

-----------------------

2013-07-04 16:44:12393

(1 行受影响)

-- 假设误 *** 作, 删除所有的数据了

DELETE FROM test_br_table

GO

(3 行受影响)

 恢复  

USE [master]

GO

-- 步骤1 备份当前数据库的事务日志:

BACKUP LOG [Test] TO disk= N'e:\test_log' WITH NORECOVERY

GO

已为数据库 'Test',文件 'Test_log' (位于文件 1 上)处理了 9 页。

BACKUP LOG 成功处理了 9 页,花费 0046 秒(1486 MB/秒)。

-- 步骤2 恢复一个误删除之前的完全备份:

RESTORE DATABASE [Test] FROM DISK = N'e:\test_20130704dat' WITH NORECOVERY,  REPLACE

GO

已为数据库 'Test',文件 'Test' (位于文件 1 上)处理了 376 页。

已为数据库 'Test',文件 'Test_log' (位于文件 1 上)处理了 3 页。

RESTORE DATABASE 成功处理了 379 页,花费 0828 秒(3574 MB/秒)。

-- 步骤3 将数据库恢复至误删除之前的时间点:

RESTORE LOG [Test] FROM  DISK = N'e:\test_log' WITH  STOPAT = N'2013-07-04 16:44:12393' , RECOVERY

GO

已为数据库 'Test',文件 'Test' (位于文件 1 上)处理了 0 页。

已为数据库 'Test',文件 'Test_log' (位于文件 1 上)处理了 9 页。

RESTORE LOG 成功处理了 9 页,花费 0013 秒(5258 MB/秒)。

 核对数据 

use [Test]

GO

SELECT  FROM test_br_table

GO

ID          VAL

----------- ----------

          1 TEST1

          2 TEST2

          3 TEST3

(3 行受影响)

上面为 SQL Server  2008 下面 *** 作的记录,  SQL 2000 下面, 不知道行不行了

楼上的回答都不太准确。

1、方差和标准差是否有单位,取决于“样本数据”的单位。

2、如果“样本数据”有单位,那么方差和标准差均有单位;如果“样本数据”只是没有单位的数值,那么方差和标准差均没有单位。

3、理由:

方差的单位应该是“样本数据”单位的平方,而标准差的单位就是“样本数据”的单位。

4、参见方差和标准差的计算公式:

方差σ2反映各样本数值与平均分μ之间的差异,σ2=∑(xi-μ)/N);

σ为总体标准差,是方差σ2的正的平方根。

(注:σ2即σ的平方。写成这样是因为不好输入)

因为磁盘空间不足,我的一个虚拟机服务器崩溃了。结果数据库服务器进程无法启动,数据也就无法导出。只能想办法从数据库原始文件 ibdata 和 frm 文件中恢复数据库。

因为没有经验,好不容易才找到了恢复方法。特此记录,以备后用。

磁盘空间不足之后,mysqld 进程无法启动,提示“Can't connect to local MySQL server through socket '/var/lib/mysql/mysqlsock' (2)”。这真是让人无比头大,数据库根本连接不上。

目录 Contents

1 保存原始数据库文件

2 恢复方法

3

参考资料:

1 保存原始数据库文件¶

好在数据库原始文件还在。在我的系统环境和配置情况下,这些文件位于 /var/lib/mysql/ 文件夹下面。假设数据库名是 test,则这些文件表现为:

--mysql

|--test

|--1frm

|--2frm

|

|--mysql

|

|--ib_logfile0

|--ib_logfile1

|--ibdata1

|

这些就是原始数据库文件,可以用来恢复数据库。将这些文件额外保存一份,以防万一。

2 恢复方法¶

我的原始虚拟机完全没有磁盘空间而无法启动数据库服务器进程。虽然试着删除一些不需要的文件,但是数据库却始终无法连接。于是我新建了一个几乎一样的虚拟机(当然磁盘加大了),试图将这些数据库文件导入并恢复数据库。

在经历了很多错误之后,终于找到了正确的方法:

安装完成新服务器之后,通过命令行新建了与原来一样的数据库:数据库名称、用户名、密码都一样。如果有多个数据库需要恢复,就都给建好。(跟配置新服务器一样,参见安装和配置 MYSQL 数据库服务器。)

停止 mysqld 进程

service mysqld stop

将备份的原始数据库文件中的所有 frm 文件(保持原来的目录结构)和 ibdata1 文件复制到新服务器的数据库文件目录中(如果新服务器 *** 作系统和配置环境一样,那么目录结构也一样),其它文件不要。

使用 -innodb_force_recovery=6参数启动数据库服务器进程,这里是

/etc/initd/mysqld start -defaults-file=/etc/mycnf -standalone -console -innodb_force_recovery=6

OK,数据库恢复完成。

1、使用SQL最简单备份,还原数据库。

2、为了方便以后的使用,开始对语句进行简单的封装->存储过程。进行备份。

3、还原数据库,数据库还原后的保存位置(目录)(使用系统默认保存位置。为数据库重命名(使用数据库默认名称)不包含扩展名,如果目录已存在该名称的数据库,将会被覆盖 。

要使数据库具有可恢复性,基本原理就是 “冗余”,即数据的重复存储。

数据库恢复实现方法:

(1) 数据转储(dump)(又称“倒库”) 转储是指DBA将整个数据库复制到磁带或另 一个磁盘上保存起来的过程。这些备用的数 据文本称为后备副本或后援副本。一时发生 故障,可以将后备副本重新装入。

(2) 建立“日志”文件(logging)。 日志文件是用来记录事务对数据库的更新 *** 作的文件。对于数据库的每次插入、删除或 修改,记下改变前后 的值,写到““日志” 文件,以便有案可查。

数据库数据恢复步骤

1、通过日志恢复SQLSERVER2005数据(也可通过LogExplorer工具查找进行恢复数据)

(A)通过日志和时间点来恢复数据的前提条件:数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项,如果是简单模式:类似下面的语句 *** 作数据就不会记录到日志中:selectintotfrom[表名]采用LogExplorer工具可以在线 *** 作,通过恢复日志(指定时间点恢复)来恢复数据,必须停止数据库或者再另一个数据库恢复(前提是必须有一个完全备份和日志备份)

这时为保证数据的完整要将数据库的恢复模式改成“完整

11、这时对数据库事务日志做备份(注意,如果没做个数据库完整备份,是不能做事务日志备份的)

这时新建一个数据库zp(将以前的数据库改名),恢复数据库

这时我们看到,有两个还原的数据库备份,因为我对zp数据库备份了两次,两次的备份的数据文件都一样。这里我们选择最近时间的备份默认在数据库的设置如下:是追加到备份集里,所以会有两个备份。

同时,在”选项“里设置”不回滚“事务,

注意:通过事务日志还原数据库,必须选择"不回滚"事务

确定后:出现下面情况:

这时发现,数据库一直是”正在还原“,这时还原数据库事务日志,

12、“常规”里选择时间,(刚删除的时间)

13、“选项”里将恢复状态设置为”回滚未提交“事务

确定后,查询数据库,发现数据回来了

2、无日志的数据恢复

21新建一个同名的数据库

22再停掉sqlserver(注意不要分离数据库)

23用原数据库的数据文件覆盖掉这个新建的数据库

24再重启sqlserver

25此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)

26完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用

数据库的脚本创建一个新的数据库,并将数据导进去就行了

USEMASTER

SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE

UPDATESYSDATABASESSETSTATUS=32768WHERENAME='数据库名'

sp_dboption'数据库名','singleuser','true'

DBCCCHECKDB('数据库名')

updatesysdatabasessetstatus=28wherename='数据库名'

sp_configure'allowupdates',0reconfigurewithoverride

sp_dboption'数据库名','singleuser','false'

以上就是关于重装系统后,怎么恢复oracle数据库全部的内容,包括:重装系统后,怎么恢复oracle数据库、SQL2000数据库被误重写了,怎样恢复到之前MDF和日志文件都完好没有破坏,在线等...、实验没有做重复,用什么方法进行数据恢复并计算方差等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9357271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存