随笔 - 71  文章 - 15  trackbacks - 0
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

因为口渴,上帝创造了水;
因为黑暗,上帝创造了火;
因为我需要朋友,所以上帝让你来到我身边
Click for Shaanxi xi'an, Shaanxi Forecast
╱◥█◣
  |田|田|
╬╬╬╬╬╬╬╬╬╬╬
If only I have such a house!
〖总在爬山 所以艰辛〗
Email:myesjoy@yahoo.com.cn
NickName:yesjoy
MSN:myesjoy@hotmail.com
QQ:150230516

〖总在寻梦 所以苦痛〗

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

Hibernate在线

Java友情

Java认证

linux经典

OA系统

Spring在线

Structs在线

专家专栏

企业信息化

大型设备共享系统

工作流

工作流产品

网上购书

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

Oracle数据库的备份与恢复方案

出处:互联网

  数据库的备份和恢复是指为保护一个数据库免于数据损失或者在发生数据损失后进行数据重新创建的各种策略和步骤、方法。数据备份几乎是任何计算机系统中绝对必需的组成部分。意外断电、系统或服务器崩溃、用户失误、磁盘损坏甚至数据中心的灾难性丢失都可能造成数据库文件的破坏或丢失。而这些文件往往包含着珍贵的数据,经不得任何损失。数据库管理员必须对此有所准备。在这种情况下,备份与恢复占了举足轻重的位置。

 

1.1 如何启动ARCHIVELOG模式?

系统环境:

1、操作系统:Windows 2000 Server,机器内存128M

2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版

3、安装路径:C:ORACLE

实现步骤:

1、管理器

SVRMGR> connect internal

SVRMGR> shutdown

SVRMGR> startup mount [dbname]

SVRMGR> alter database [dbname] archivelog; --起用归档模式

SVRMGR> archive log start --启动自动归档模式,重起数据库后,按init.ora配置

SVRMGR> alter database [dbname] open; --打开数据库

SVRMGR> exit

2、修改数据库初始化参数文件,定义归档模式(自动)、归档日志文件保存路径、归档日志文件命名方法

3、重新启动数据库

具体实例:

C:>svrmgrl

Oracle Server Manager Release 3.1.6.0.0 - Production

版权所有 (c) 19971999Oracle Corporation。保留所有权利。

Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production

With the Partitioning option

JServer Release 8.1.6.0.0 - Production

SVRMGR> connect internal

连接成功。

SVRMGR> shutdown

已关闭数据库。

已卸下数据库。

已关闭 ORACLE 实例。

SVRMGR> startup mount

已启动 ORACLE 实例。

系统全局区域合计有 57124108个字节

Fixed Size 70924个字节

Variable Size 40198144个字节

Database Buffers 16777216个字节

Redo Buffers 77824个字节

已装入数据库。

SVRMGR> alter database archivelog;

语句已处理。

SVRMGR> archive log start

语句已处理。

SVRMGR> alter database open;

语句已处理。

SVRMGR> alter system switch logfile; --强制系统进行日志切换,可马上观察到归档日志的产生语句已处理。

SVRMGR> exit

服务器管理程序结束。

修改数据库参数文件c:oracleadminoradbpfileinit.ora

取消以下语句的#注释

log_archive_start = true

log_archive_dest_1 = "location=C:Oracleoradataoradbarchive"

log_archive_format = %%ORACLE_SID%%T%TS%S.ARC

关闭数据库,重新启动

查看C:Oracleoradataoradbarchive目录下,可以看到类似ORADBT001S01201.ARC的文件,说明归档成功

解释init.ora参数文件中关于归档重做日志参数项的含义:

归档模式是自动还是手工,true为自动,false为手工

log_archive_start = true

归档日志文件所保存的路径

log_archive_dest_1 = "location=C:Oracleoradataoradbarchive"

归档日志文件的命名方法

log_archive_format = %%ORACLE_SID%%T%TS%S.ARC

归档命令:

启动自动归档模式,系统重起后,将按init.ora中的参数log_archive_start的值设置归档方式

SVRMGR> archive log start

启动手工归档模式

SVRMGR> archive log stop

查看归档信息:重做日志是否归档方式、是自动归档还是手工归档、归档路径、最旧的联机日志循序号...

SVRMGR> archive log list

归档一个已满,但没有归档的联机重做日志

SVRMGR> archive log next

归档所有已满,但没有归档的联机重做日志

SVRMGR> archive log all

注意:一个事务即使不被提交,也会被写入到重做日志中

1.2 如何使用归档日志进行完全恢复?

系统环境:

1、操作系统:Windows 2000 Server,机器内存128M

2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版

3、安装路径:C:ORACLE

模拟现象:

先将数据库设置为归档模式

SQL*Plus

--创建实验表空间

create tablespace test datafile

"c:test.ora" size 5M

AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED

default storage (initial 128K next 1M pctincrease 0)

/

--创建实验用户

drop user test cascade;

create user test identified by test default tablespace test;

grant connect,resource to test;

conn test/test

create table a(a number);

insert into a values(1);

insert into a select * from a; --反复插入,达到10万条

commit;

拷贝test.oratest1.ora文件

insert into a select * from a; --20万条

commit;

关闭数据库

shutdown

删除test.ora文件,把test1.ora拷贝为test.ora

重新启动数据库

这时,可以mount上,但无法打开,因为现在使用的数据文件是旧的

只有10万条记录,与控制文件中记载的log number不一样

startup mount

需要recover database,使数据库记录重新恢复到当前的20万条

C:>svrmgrl

svrmgrl>connect internal

svrmgrl>shutdown

svrmgrl>startup mount

svrmgrl>set autorecovery on

svrmgrl>recover database;

svrmgrl>alter database open;

conn test/test

select count(*) from a; --数据又恢复到20万条

conn system/manager

--删除实验表空间

alter tablespace test offline;

drop tablespace test INCLUDING CONTENTS;

1.3 没有备份、只有归档日志,如何恢复数据文件?

系统环境:

1、操作系统:Windows 2000 Server,机器内存128M

2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版

3、安装路径:C:ORACLE

模拟现象:

可通过重建数据文件来恢复,前提是归档日志文件保存完整

先将数据库设置为归档模式

SQL*Plus

conn system/manager

--创建实验表空间

create tablespace test datafile

"c:test.ora" size 5M

AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED

default storage (initial 128K next 1M pctincrease 0)

/

--创建实验用户

drop user test cascade;

create user test identified by test default tablespace test;

grant connect,resource to test;

conn test/test

create table a(a number);

insert into a values(1);

insert into a select * from a; --反复插入,达到100万条

commit;

--关闭数据库

SVRMGR> connect internal

SVRMGR> alter system switch logfile; --强制归档

SVRMGR> alter system switch logfile;

SVRMGR> alter system switch logfile;

SVRMGR> shutdown

--操作系统下删除test.ora文件

--重新启动数据库

SVRMGR> connect internal

SVRMGR> startup

这时,可以mount上,但无法打开,因为数据文件test.ora不存在,

显示错误如下:

ORA-01157: ????/?????? 8 - ??? DBWR ????

ORA-01110: ???? 8: "C:TEST.ORA"

SVRMGR> connect internal

SVRMGR> startup mount

SVRMGR> alter database create datafile "c:test.ora";

SVRMGR> set autorecovery on

SVRMGR> recover datafile "c:test.ora";

SVRMGR> alter database open;

conn test/test

select count(*) from a; --数据又恢复到100万条

--删除实验表空间

conn system/manager

alter tablespace test offline;

drop tablespace test INCLUDING CONTENTS;

drop user test;

如果是非归档模式,也可以运用以上方法,

前提是:输入记录所占空间的大小不超过所有联机日志文件的大小

即:用联机日志文件来恢复

1.4 联机热备份失败后,如何打开数据库?

系统环境:

1、操作系统:Windows 2000

2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版

3、安装路径:C:ORACLE

错误现象:

进行联机热备份时,服务器发生故障,如掉电,重新启动服务器,

启动数据库时,无法打开数据库,Oracle要求进行介质恢复,

因为表空间还处在热备份状态。

模拟现象及解决方法:

先将数据库设置为归档模式

C:>svrmgrl

svrmgrl>connect internal

svrmgrl>alter tablespace 表空间名 begin backup;

--表空间热备模式没结束就强行关闭数据库,造成错误

svrmgrl>shutdown abort

svrmgrl>startup mount

--将此表空间的数据文件在没打开数据库时置成end backup模式

svrmgrl>alter database datafile "表空间的数据文件名" end backup;

--或执行表空间介质恢复

svrmgrl>recover tablespace 表空间名;

svrmgrl>alter database open;

1.5 某个数据文件损坏,如何打开数据库?

系统环境:

1、操作系统:Windows 2000 Server,机器内存128M

2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版

3、安装路径:C:ORACLE

错误现象:

因误操作,数据库中某一数据文件被误删,

控制面板的Oracle相关服务显示已启动,但用SQL*Plus无法连接,

显示以下错误

ORA-01033: ORACLE initialization or shutdown in progress

模拟现象:

create tablespace test datafile

"c:test.ora" size 5M

AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED

default storage (initial 128K next 1M pctincrease 0)

/

关闭所有服务stop.bat

net stop "OracleWebAssistant0"

net stop "OracleOraHome81TNSListener"

net stop "OracleServiceORADB"

shutdown

c

在操作系统中删除test.ora文件

重新启动服务start.bat

net start "OracleWebAssistant0"

net start "OracleOraHome81TNSListener"

net start "OracleServiceORADB"

服务里OracleServiceORADB显示已启动,但用SQL*Plus无法连接,

显示ORA-01033: ORACLE initialization or shutdown in progress

解决方法:

先让该数据文件脱机,就可以打开数据库

C:>svrmgrl

svrmgrl>connect internal

svrmgrl>shutdown

svrmgrl>startup mount

d

--ARCHIVELOG模式命令,文件名要大写

svrmgrl>alter database datafile "C:TEST.ORA" offline;

--NOARCHIVELOG模式命令

svrmgrl>alter database datafile "C:TEST.ORA" offline drop;

svrmgrl>alter database open;

--查询数据文件联、脱机状态

SQL> select file#,name,status from v$datafile;

SQL> drop tablespace test;

表空间已丢弃。

_allow_resetlogs_corruption=true

本文来自各大博客,版权归原作者所有!
文章信息如下:
引用源博文网址:http://maxz.itpub.net/post/17787/188561
发布日期:Tue, 08 08 2006 13:18:55
返回首页  注册成为博客

Copyright © 1990-2006

posted on 2007-05-12 20:39 ★yesjoy★ 阅读(1060) 评论(0)  编辑  收藏 所属分类: 数据库备份/恢复方案

只有注册用户登录后才能发表评论。


网站导航: