前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >集群数据库的备份和恢复

集群数据库的备份和恢复

原创
作者头像
用户8006012
修改2022-04-11 15:23:33
1.1K0
修改2022-04-11 15:23:33
举报
文章被收录于专栏:DATABASEDATABASE

基本概念解释

还原 Restore

Restore : 使用备份文件,将数据库还原到过去的某个状态

恢复 Recovery

Recovery : 应用onine redo logs 和归档日志将数据库做向前恢复

代码语言:javascript
复制
su - oracle
***设置闪回区
alter system set db_recovery_file_dest_size=2g SCOPE=BOTH SID='*';
alter system set db_recovery_file_dest = '+DATA' SCOPE=BOTH SID='*';

关闭数据库
srvctl stop database -d p19c0 -o immediate

SQL> startup mount;
SQL> alter database archivelog;

# SQL> ALTER DATABASE NOARCHIVELOG;//关闭归档模式
SQL> alter database open;


srvctl status database -d p19c0

SQL> SELECT log_mode FROM v$database;
SQL> archive log list

USE_DB_RECOVERY_FILE_DEST to indicate the Fast Recovery Area
代码语言:javascript
复制


set linesize 1000;
column NAME format a90;
select name,status from v$archived_log;

>>>备份数据库
select DBID from v$database;

     DBID
----------
1460065661


create tablespace test datafile '+DATA' size 50M;
alter  tablespace test add datafile '+DATA' size 50M;

CREATE TABLE test01 (cust_id number,last_name varchar2(30),first_name varchar2(30)) TABLESPACE test;

insert into test01 (cust_id, last_name, first_name) values(1, 'ACER','SCOTT');
insert into test01 (cust_id, last_name, first_name) values(3, 'STARK','JIM');
insert into test01 (cust_id, last_name, first_name) values(5, 'GREY','BOB');
insert into test01 (cust_id, last_name, first_name) values(7,'KHAN','BRAD');
commit;
select * from test01;

alter system switch logfile;

rman nocatalog target sys/orcle

CONFIGURE CONTROLFILE AUTOBACKUP ON;
show all;
show snapshot controlfile name;

list archivelog all;


SQL> select name from v$archived_log;

NAME
--------------------------------------------------------------------------------
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_2_seq_14.259.1101735005
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_1_seq_27.258.1101735189
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_1_seq_28.257.1101735195
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_1_seq_29.284.1101737189
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_2_seq_15.285.1101737191


mkdir -p /home/oracle/backup/BKDIR

run{
    allocate channel t1 type disk Format '/home/oracle/backup/BKDIR/fullBK%s_%p_%t.bak';
    SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backup/BKDIR/%F.control';
    backup database;
    release channel t1;
}


>>>插入数据后备份归档日志文件

insert into test01 (cust_id, last_name, first_name) values(2,'KHAN','after');
insert into test01 (cust_id, last_name, first_name) values(4,'KHAN','after');
insert into test01 (cust_id, last_name, first_name) values(6,'KHAN','after');
insert into test01 (cust_id, last_name, first_name) values(8,'KHAN','after');
commit;
select * from test01;


alter system switch logfile;


set linesize 900;
column NAME format a80;
select name,status from v$archived_log;

SQL> select name,status from v$archived_log;

NAME                                                                             S
-------------------------------------------------------------------------------- -
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_2_seq_14.259.1101735005                 A
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_1_seq_27.258.1101735189                 A
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_1_seq_28.257.1101735195                 A
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_1_seq_29.284.1101737189                 A
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_2_seq_15.285.1101737191                 A
+DATA/P19C0/ARCHIVELOG/2022_04_11/thread_1_seq_30.287.1101737965                 A

6 rows selected.


set linesize 1000;
column NAME format a70;
select name,COMPLETION_TIME from v$archived_log;


rman nocatalog target sys/oracle

backup archivelog all delete all input format '/home/oracle/backup/BKDIR/arch_%s_%p_%t';



>>>破坏数据库

srvctl stop database -d p19c0 -o abort
srvctl status database -d p19c0

su - grid
asmcmd

rm -r -f +DATA/p19c0/DATAFILE
rm -r -f +DATA/p19c0/AUTOBACKUP
rm -r -f +DATA/p19c0/ONLINELOG
rm -r -f +DATA/p19c0/TEMPFILE
rm -r -f +DATA/p19c0/spfileorcl1.ora
rm -r -f +DATA/p19c0/CONTROLFILE
rm -r -f *

》》》数据库起不来

startup



>>>恢复数据库

正常启动数据库,不能启动,说明数据库已经坏了
su - oracle
rman nocatalog target sys/oracle

一定要设置DBID
SET DBID 1460065661;

startup nomount;

启动实例以后,才能还原SPFILE(被破坏后需要还原时)
restore spfile to '+DATA/p19c0/spfilep19c01.ora' from '/home/oracle/backup/BKDIR/c-1460065661-20220411-01.control';

还原控制文件
shutdown abort;
startup nomount;
SET DBID 1460065661;
RESTORE CONTROLFILE FROM '/home/oracle/backup/BKDIR/c-1460065661-20220411-01.control';


重启实例,让spfile里面的参数生效
shutdown abort;
startup MOUNT;


还原数据库
RESTORE DATABASE;

还原归档日志文件
archive log list;

把备份集添加(注册)到CATALOG中
list backupset of archivelog all;
catalog backuppiece '/home/oracle/backup/BKDIR/arch_5_1_1101738294';
list archivelog all;
list backupset of archivelog all;

执行数据库恢复
RECOVER DATABASE; --# restores and recovers logs automatically

ALTER DATABASE OPEN RESETLOGS;

select * from test01;


删除备份集
crosscheck archivelog all; 
delete expired archivelog all;
delete archivelog all;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库备份服务
数据库备份服务(Database Backup Service,简称 DBS)是为用户提供连续数据保护、低成本的备份服务。数据库备份拥有一套完整的数据备份和数据恢复解决方案,具备实时增量备份以及快速的数据恢复能力,它可以为多种部署形态的数据库提供强有力的保护,包括企业 IDC 数据中心、其他云厂商数据库及腾讯公有云数据库。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档