十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
三种方法:冷备份、热备份和Export导出数据库对象备份
成都创新互联专业为企业提供威远网站建设、威远做网站、威远网站设计、威远网站制作等企业网站建设、网页设计与制作、威远企业网站模板建站服务,十载威远做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
Oracle作为目前世界上市场份额占有率最高的大型通用数据库,在世界上各行各业的信息化建设中起着核心首脑的作用。它(软件自身以及它所依赖运行的硬件)一旦出现问题,轻则导致业务中断,重则丢失部分数据,严重则全部数据不可逆转性损毁。备份方法如下:
1、冷备份
冷备份是Oracle最简单的一种备份;执行冷备份前必须关闭数据库;然后使用操作系统实用工具或者第三方工具备份所有相关的数据库文件。
2、热备份
对于热备份来说,故名思议就是刚出炉的数据还是热乎的就开始执行备份的操作。实现热备份的方式目前主要有两种方式,逻辑方式和物理方式。
3、Export导出数据库对象备份
导出导入是一种最初级的备份方式,它采用定时将全量、增量或者差异数据以表、用户或者全库为单位导出到某种格式的文件中达到备份的目的。
优点:能执行对象或者行恢复。备份和恢复速度更快。能够跨操作系统平台迁移数据库。数据库可一直运行。
缺点:export并不是冷备份和热备份的替代工具。冷、热备份可保护介质失效。export备份可保护用户或应用错误。
热备份必需是归档模式:如果使用RMAN的话直接
rman target /
backup database;
就能备份了
手工备的话
在sqlplus下alter database begin backup;
复制你要备份的文件
在sqlplus下alter database end backup;
冷备份
ramn的
rman target /
shutdown immediate;
startup mount;
backup database;
alter database open;
手动的
sqlplus下shutdown immediate;
复制要备份的文件
sqlplus下startup;
【DataGuard高可用性】
DataGuard确保企业数据的高可用性,数据保护以及灾难恢复。在主数据库故障无法修复时启动DataGuard的备份库,可以像主库一样继续对外提供服务而不影响业务的持续运行。
主备数据库之间通过日志传输实现数据库数据同步。
日志传输过程
1、在主系统中利用LNS进程(日志传输进程)将日志传输到备用系统
2、备用系统利用RFS(日志接收进程)接收主库传输过来的日志并利用MRP(日志恢复进程)同步数据
3、DataGuard环境中必须保证3个进程正常工作,否则此DataGuard环境将不能满足灾备需要。
【DG可以解决的问题】
1、在主库停机维护时,备份库顶上,使业务应用影响最小
(1)主库安装OS补丁或Oracle补丁
(2)主库进行数据整理
2、一个新的数据迁移项目,将数据迁移同型号更高端IBM服务器与存储中,主库数据2T,并且此迁移操作必须停机时间控制在30分钟以内(此次时间远远适于迁移数据库文件所需时间),怎么办?
(1)把备份库顶上去
3、由于主库(仓库)数据量非常巨大(50T),所以没有常规备份,但此系统存在DataGuard灾备系统,如果主库某数据文件由于某种原因导致介质故障,你将如何对其进行恢复。
4、异地归档日志
------------------------------------------------------------------------------
主库:18.150 备库:18.160
1、主库和备库:开启归档模式
archive log list;-----------查看归档启动否
shutdown immediate;---------开启归档前要正常关库
startup mount;-------------启动Mount状态
alter database archivelog;-------开启归档模式
alter database open;--------开启数据库
2、确认主库强制写日志
select force_logging from v$database;
(所有sql语句nologging操作时 也会强制写日志)
SQL alter database force logging;
3、修改主备数据库的参数文件
【主】
SQLcreate pfile from spfile;
cd /oracle/app/oracle/product/10.2.0/db_1/dbs/
vi initTEST.ora
DB_UNIQUE_NAME=TEST
LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB150,DB160)'
LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TEST'
LOG_ARCHIVE_DEST_2='SERVICE=DB160 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TEST'
FAL_SERVER=DB150
FAL_CLIENT=DB160
STANDBY_FILE_MANAGEMENT=AUTO
【备】
SQLcreate pfile from spfile;
cd /oracle/app/oracle/product/10.2.0/db_1/dbs/
vi initTEST.ora
DB_UNIQUE_NAME=TEST
LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB150,DB160)'
LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TEST'
LOG_ARCHIVE_DEST_2='SERVICE=DB150 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TEST'
FAL_SERVER=DB160
FAL_CLIENT=DB150
STANDBY_FILE_MANAGEMENT=AUTO
4、主库和备库
都配置“监听”、“传输文件”,并开启监听
5、主库和备库
都创建“归档日志”目录:mkdir /home/oracle/archive
6、主库和备库
cd /oracle/app/oracle/product/10.2.0/db_1/dbs/
rm -rf spfileTEST.ora
sqlplus / as sysdba
SQL startup force;
SQLcreate spfile from pfile;
7、备库
SQL shutdown immediate
[oracle@sq18 admin]$ sqlplus sys/lipengfei as sysdba
(连接成功)
SQL startup nomount force;
8、主库
SQL show parameter ARCHIVE(查看到刚才配置的值生效了)
9、备库
(报错没有相应目录)
[oracle@sq18 admin]$ mkdir -p /oracle/app/admin/TEST/adump
[oracle@sq18 admin]$ mkdir -p /oracle/app/admin/TEST/bdump
[oracle@sq18 admin]$ mkdir -p /oracle/app/admin/TEST/cdump
[oracle@sq18 admin]$ mkdir -p /oracle/app/flash_recovery_area
[oracle@sq18 admin]$ mkdir -p /oracle/app/admin/TEST/udum
保证数据库两边的密码文件中的密码一致(主备数据库sys用户密码必须相同,如果备库中没有orapwTEST,从主库中拷贝到来)
10、主库
mkdir /home/oracle/db_bak/
rman target /
RMAN backup full database format='/home/oracle/db_bak/%U' include current controlfile for standby;
(别退出RMAN,第12步用)
11、备库
mkdir /home/oracle/db_bak/
12、主库(把全库备份的文件拷贝到备库)
cd /home/oracle/db_bak/
scp 备份文件 oracle@192.168.18.160:/home/oracle/db_bak/
RMANconnect auxiliary sys/lipengfei@DB160
RMAN duplicate target database for standby nofilenamecheck;----异机(备库)恢复,保证主备库的数据和状态一样
13、备库
cd /oracle/app/oradata/TEST
ls --------查看有没有文件
sqlplus / as sysdba
SQLselect open_mode from v$database;----------mount状态
14、主库
SQL select process from v$managed_standby;
(没有灾备的进程)
SQL alter system switch logfile;
SQL select process from v$managed_standby;
PROCESS
---------
ARCH
ARCH
LNS
已经有了进程,lns传输进程)
15、备库
SQL select process from v$managed_standby;
PROCESS
---------
ARCH
ARCH
RFS
RFS
(已经有了进程,rfs接收进程)
SQL alter database recover managed standby database disconnect from session;
SQL select process from v$managed_standby;
PROCESS
---------
ARCH
ARCH
RFS
RFS
MRP0
16、主库
SQLcreate table haha as select * from dba_objects;
SQLinsert into haha select * from haha;
SQLalter system switch logfile;
17、备库
SQL alter database recover managed standby database cancel;
(备库上,只有把恢复日志进程MRP0取消,才可以打开数据库)
SQL alter database open;
SQL select count(*) from haha
【注意】
(1)备用数据库在日志恢复过程中(MRP进程存在期间)数据库处于MOUNTED状态,此时备用数据库无法打开供读取使用
(2)打开备用数据库
停止备用库的日志恢复进程MRP
alter database recover managed standby database cancel;
open备用数据库,备用数据库默认打开为只读方式
alter database open;
(3)重新启动备用数据库的MRP进程,数据库自动从OPEN状态转换到MOUNT 状态
alter database recover managed standby database disconnect from session;
(4)mrp进程停止期间,只要RFS进程存在,那么不影响日志的接收
兄弟,以上就是关于oracle DG构架的实验材料,希望可以帮到你!
用RMAN备份,数据库必须在归档模式运行,否则只能备份处于offline的表空间,
‘一般生产环境数据库都是归档模式,这样一旦发生错误,能把损失降到最低。
当然,如果你不喜欢归档模式,那就用exp导出数据来备份吧。
其实还有一个办法可以在非归档模式下备份,但是一来脚本很长很麻烦,二来效果不好,备份时还会锁定数据库表,所以不推荐使用。