分享
 
 
 

Oracle FAQ 之备份与恢复篇

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

[Q]如何开启/关闭归档

[A]假如开启归档,请保证log_archive_start=true开启自动归档,否则只能手工归档,假如是关闭了归档,则设置该参数为false

注重:假如是OPS/RAC环境,需要先把parallel_server = true注释掉,然后执行如下步骤,最后用这个参数重新启动

1、开启归档

a. 关闭数据库shutdown immediate

b. startup mount

c. alter database archivelog

d. alter database opne

2、禁止归档

a. 关闭数据库shutdown immediate

b. startup mount

c. alter database noarchivelog

d. alter database open

归档信息可以通过如下语句查看

SQL archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination E:\Oracle\ora92\database\archive

Oldest online log sequence 131

Next log sequence to archive 133

Current log sequence 133

[Q]怎样设置定时归档

[A]9i以上版本,保证归档的最小间隔不超过n秒

设置Archive_lag_target = n

单位:秒 范围:0~7200

[Q]不同版本怎么导出/导入

[A]导出用低版本,导入用当前版本

假如版本跨越太大,需要用到中间版本过渡

[Q]不同的字符集之前怎么导数据

[A]a.前条件是保证导出/导入符合其他字符集标准,如客户环境与数据库字符集一致。

b.修改dmp文件的2、3字节为目标数据库的字符集,注重要换成十六进制。

参考函数(以下函数中的ID是十进制的):

nls_charset_name 根据字符集ID获得字符集名称

nls_charset_id 根据字符集名称获得字符集ID

[Q]怎么样备份控制文件

[A]再线备份为一个二进制的文件

alter database backup controlfile to '$BACKUP_DEPT/controlfile.000' [reuse];

备份为文本文件方式

alter database backup controlfile to trace [resetlogsnoresetlogs];

[Q]控制文件损坏如何恢复

[A]1、假如是损坏单个控制文件

只需要关闭数据库,拷贝一个好的数据文件覆盖掉坏的数据文件即可

或者是修改init.ora文件的相关部分

2、假如是损失全部控制文件,则需要创建控制文件或从备份恢复

创建控制文件的脚本可以通过alter database backup controlfile to trace获取。

[Q]怎么样热备份一个表空间

[A]Alter tablespace 名称 begin backup;

host cp 这个表空间的数据文件 目的地;

Alter tablespace 名称 end backup;

假如是备份多个表空间或整个数据库,只需要一个一个表空间的操作下来就可以了。

[Q]怎么快速得到整个数据库的热备脚本

[A]可以写一段类似的脚本

SQLset serveroutput on

begin

dbms_output.enable(10000);

for bk_ts in (select distinct t.ts#,t.name from v$tablespace t,v$datafile d where t.ts#=d.ts#) loop

dbms_output.put_line('--'bk_ts.name);

dbms_output.put_line('alter tablespace 'bk_ts.name' begin backup;');

for bk_file in (select file#,name from v$datafile where ts#=bk_ts.ts#) loop

dbms_output.put_line('host cp 'bk_file.name' $BACKUP_DEPT/');

end loop;

dbms_output.put_line('alter tablespace 'bk_ts.name' end backup;');

end loop;

end;

/

[Q]丢失一个数据文件,但是没有备份,怎么样打开数据库

[A]假如没有备份只能是删除这个数据文件了,会导致相应的数据丢失。

SQLstartup mount

--ARCHIVELOG模式命令

SQLAlter database datafile 'file name' offline;

--NOARCHIVELOG模式命令

SQLAlter database datafile 'file name' offline drop;

SQLlAlter database open;

注重:该数据文件不能是系统数据文件

[Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复

[A]保证如下条件

a. 不能是系统数据文件

b. 不能丢失控制文件

假如满足以上条件,则

SQLstartup mount

SQLAlter database create datafile 'file name' as 'file name' size ... reuse;

SQLrecover datafile n; -文件号

或者

SQLrecover datafile 'file name';

或者

SQLrecover database;

SQLAlter database open;

[Q]联机日志损坏如何恢复

[A]1、假如是非当前日志而且归档,可以使用

Alter database clear logfile group n来创建一个新的日志文件

假如该日志还没有归档,则需要用

Alter database clear unarchived logfile group n

2、假如是当前日志损坏,一般不能clear,则可能意味着丢失数据

假如有备份,可以采用备份进行不完全恢复

假如没有备份,可能只能用_allow_resetlogs_corruption=true来进行强制恢复了,但是,这样的方法是不建议的,最好在有Oracle support的指导下进行。

[Q]怎么样创建RMAN恢复目录

[A]首先,创建一个数据库用户,一般都是RMAN,并给予recovery_catalog_owner角色权限

sqlplus sys

SQL create user rman identified by rman;

SQL alter user rman default tablespace tools temporary tablespace temp;

SQL alter user rman quota unlimited on tools;

SQL grant connect, resource, recovery_catalog_owner to rman;

SQL exit;

然后,用这个用户登录,创建恢复目录

rman catalog rman/rman

RMAN create catalog tablespace tools;

RMAN exit;

最后,你可以在恢复目录注册目标数据库了

rman catalog rman/rman target backdba/backdba

RMAN register database;

[Q]怎么样在恢复的时候移动数据文件,恢复到别的地点

[A]给一个RMAN的例子

run {

set until time 'Jul 01 1999 00:05:00';

allocate channel d1 type disk;

set newname for datafile '/u04/oracle/prod/sys1prod.dbf'

to '/u02/oracle/prod/sys1prod.dbf';

set newname for datafile '/u04/oracle/prod/usr1prod.dbf'

to '/u02/oracle/prod/usr1prod.dbf';

set newname for datafile '/u04/oracle/prod/tmp1prod.dbf'

to '/u02/oracle/prod/tmp1prod.dbf';

restore controlfile to '/u02/oracle/prod/ctl1prod.ora';

replicate controlfile from '/u02/oracle/prod/ctl1prod.ora';

restore database;

sql "alter database mount";

switch datafile all;

recover database;

sql "alter database open resetlogs";

release channel d1;

}

[Q]怎么从备份片(backuppiece)中恢复(restore)控制文件与数据文件

[A]可以使用如下方法,在RMAN中恢复备份片的控制文件

restore controlfile from backuppiecefile;

假如是9i的自动备份,可以采用如下的方法

restore controlfile from autobackup;

但是,假如控制文件全部丢失,需要指定DBID,如SET DBID=?

自动备份控制文件的默认格式是%F,这个格式的形式为

c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII就是DBID

至于恢复(restore)数据文件,oracle 816开始有个包dbms_backup_restore

在 nomount 状态下就可以执行,可以读 815甚至之前的备份片,读出来的文件用于恢复

可以在SQLPLUS中运行,如下

SQLstartup nomount

SQL DECLARE

2 devtype varchar2(256);

3 done boolean;

4 BEGIN

5 devtype := dbms_backup_restore.deviceallocate('', params='');

6 dbms_backup_restore.restoresetdatafile;

7 dbms_backup_restore.restorecontrolfileto('E:\Oracle\oradata\penny\control01.ctl');

8 dbms_backup_restore.restoreDataFileto(1,'E:\Oracle\oradata\penny\system01.dbf');

9 dbms_backup_restore.restoreDataFileto(2,'E:\Oracle\oradata\penny\UNDOTBS01.DBF');

10 dbms_backup_restore.restoreDataFileto(3,'E:\ORACLE\ORADATA\PENNY\USERS01.DBF');

11 dbms_backup_restore.restorebackuppiece('D:\orabak\BACKUP_1_4_04F4IAJT.PENNY',done=done);

12 END;

13 /

PL/SQL 过程已成功完成。

SQL alter database mount;

[Q]Rman的format格式中的%s类似的东西代表什么意义

[A]可以参考如下

%c 备份片的拷贝数

%d 数据库名称

%D 位于该月中的第几天 (DD)

%M 位于该年中的第几月 (MM)

%F 一个基于DBID唯一的名称,

这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列

%n 数据库名称,向右填补到最大八个字符

%u 一个八个字符的名称代表备份集与创建时间

%p 该备份集中的备份片号,从1开始到创建的文件数

%U 一个唯一的文件名,代表%u_%p_%c

%s 备份集的号

%t 备份集时间戳

%T 年月日格式(YYYYMMDD)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有