• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

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

数据库技术 LinuxOS 2460次浏览 0个评论

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

[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 [resetlogs|noresetlogs];

[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]可以写一段类似的脚本

SQL>set serveroutput on

begin

dbms_output.enable(10000);

for bk_ts in (select 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]如果没有备份只能是删除这个数据文件了,会导致相应的数据丢失。

SQL>startup mount

–ARCHIVELOG模式命令

SQL>Alter database datafile ‘file name’ offline;

–NOARCHIVELOG模式命令

SQL>Alter database datafile ‘file name’ offline drop;

SQLl>Alter database open;

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

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

[A]保证如下条件

a. 不能是系统数据文件

b. 不能丢失控制文件

如果满足以上条件,则

SQL>startup mount

SQL>Alter database create datafile ‘file name’ as ‘file name’ size … reuse;

SQL>recover datafile n; -文件号

或者

SQL>recover datafile ‘file name’;

或者

SQL>recover database;

SQL>Alter 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]怎么样在恢复的时候移动数据文件,恢复到别的地点

[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;

}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Oracle数据库的备份与恢复技术方案
喜欢 (0)

您必须 登录 才能发表评论!

加载中……