找回密码
 会员注册
查看: 10|回复: 0

oracle数据库 「oracle数据库备份和恢复命令」

[复制链接]

1

主题

0

回帖

4

积分

新手上路

积分
4
发表于 2025-1-1 02:54:41 | 显示全部楼层 |阅读模式
Oracle数据库非常强大,有其自己的备份与恢复机制,并且细分,只要配置合理,完全可以保证数据库的完整,免去运维人员的后顾之忧。 Oracle数据库使用RMAN备份,需要把数据库的非归档模式改成归档模式。 数据库的备份 一、更改数据库的归档模式需要重新启动数据库,在mount模式下修改(三种启动模式nomount---mount--- open)。 具体步骤如下: 1、进入数据库后,关闭数据库 SQL>shutdown immediate 2、启动数据库到mount状态 SQL>startup mount 3、改变数据库为归档模式 SQL>alter database archivelog;(归档改为非归档语句为alter database noarchivelog;) 4、验证方式 SQL>alter database open;(打开数据库) SQL>archive log list 二、启动控制文件的自动备份 RMAN>configure controlfile autobackup on; RMAN>show controlfile autobackup ;(验证) 三、全库备份 3.1最简单的全库备份 RMAN>backup database; RMAN>list backup;(验证) RMAN>list backup summary;(验证) 四、脚本备份 4.1查看linux系统oracle用户的环境变量,从而知道需要备份数据库的名称和实例 $ cat /home/oracle/.bash_profile 主要看ORACLE_SID=orcl 4.2在RMAN中设置冗余数(备份的次数,根据需要,一次备份的数据大小,备份的磁盘空间大小来决定)。 $ rman target/ RMAN>configure retenticn policy to redundancy 10;(这里设置为10次) 4.3规划备份的目录 /usr/local/oradata/orcl/RmanBackup,如果没有,创建即可,这里需要注意这个文件夹必须属于oracle用户。 4.4全量备份脚本如下图 这个0级全量备份脚本需要在oracle用户下执行,并且需要把脚本chmod为775权限。 export ORACLE_BASE=/usr/local/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_SID=orcl export PATH=$PATHORACLE_HOME/binHOME/bin rman target/ << EOF_RMAN run{ allocate channel c1 type disk; backup incremental level 0 tag db0 format /usr/local/oradata/orcl/RmanBackup/db0_%d_%U database include current controlfile; delete noprompt obsolete; release channel c1; } end 把以上脚本放置到crontab中,可以设置自动执行。 4.3增量备份脚本 export ORACLE_BASE=/usr/local/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_SID=orcl export PATH=$PATHORACLE_HOME/binHOME/bin rman target/ << EOF_RMAN run{ allocate channel c1 type disk; backup incremental level 1 tag db1 format /usr/local/oradata/orcl/RmanBackup/db1_%d_%T_%s database include current controlfile; delete noprompt obsolete; release channel c1; } end Oracle数据库的恢复(一) Oracle数据库的恢复需要在oracle用户下执行,恢复内容包括控制文件*.ctl,重组日志文件*.log,数据库文件*.dbf。 一、恢复dbf文件 前提条件是Oracle数据库的初始化spfile文件,控制文件、重组日志文件、归档日志、备份都可以正常使用。 现在先删除dbf文件。 1、关闭数据库,再重新数据库,进入数据库 1.1 $ sqlplul / as sysdba SQL>shutdown immediate(无法正常关闭,原因是没有数据库文件) SQL>shutdown abort(强制关闭) 1.2 SQL>startup(无法正常启动,原因是没有数据库文件) 1.3恢复 $ rman target/ Oracle数据库没有处于open状态,这是因为数据库找不到数据文件,所以目前的数据库处于mount状态。 1.3.1 还原文件 RMAN> restore database; 1.3.2验证 进入存放dbf文件的目录查看,dfb文件已经被恢复。 1.3.3继续恢复数据 RMAN> recover database; 1.3.4打开数据库的open状态 RMAN> sql alter database open; 恢复完成,下面退出oracle数据库的rman环境,重新进入数据库。 [oracle@shell ~]$ sqlplus / as sysdba SQL> select instance_name,status from v$instance; 查看重做日志文件是否为原来的重做日志文件 SQL> archive log list; 由上图显示,数据库的重做日志的序号没有从1开始,证明还是原来的重做日志。数据库进行了完全恢复。 恢复成功后,最好立刻备份数据。 二、重做日志文件损坏的恢复 2.1确定数据库的备份状态 必须是oracle用户,执行rman target/ 查看数据库备份信息 2.2删除重做日志文件 2.3重做日志 $sqlplus / as sysdba SQL> alter system switch logfile; 数据库会报错 这里第一行主要出现 ORA-01034: ORACLE not available的错误 此时可以重新启动到mount状态 SQL> startup mount; 继续恢复 SQL> alter database open resetlogs; SQL> select * from v$log; SQL> alter database open resetlogs; 第一行出现错误,ORA-01139:RESETLOGS选项仅在不完全数据库恢复后有效。 SQL> alter database open resetlogs; 数据库已经更改 SQL> shutdown 数据库已经关闭。 已经卸载数据库。 ORACLE例程已经关闭。 SQL> startup ORACLE实例已经启动。 数据库装载完毕。 数据库已经打开。 SQL> select instance_name,status from v$instance; 查看文件.log文件在/usr/local/oradata/orcl目录下  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-9 16:25 , Processed in 0.419063 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表