重做日志
重做日志文件多元化,每个重做日志组中至少两个重作日志文件,尽量分布在不同存储设备上(防止硬盘损坏)
重做日志文件比数据文件更重要
归档
日志模式
非归档
覆盖
只能对数据库进行冷备份(把数据库关闭之后的备份)
只能备份整个数据库
数据库出现故障,只能把数据库恢复到最后一个备份点,最后一个备份点到故障点之间数据丢失。
归档模式
归档
可以对数据库进行冷备份或者热备份(数据库处于OPEN状态的备份)
可以备份整个数据库或者某个表空间或者每个数据文件
可以把数据库恢复到最后的故障点,保障数据不丢失,也可以恢复到其中一个时间点
可以配置数据库的复制、同步
两者区别,在于数据库的备份恢复。
重做日记文件管理
重做日志有关的动态视图
V$LOG 重做日志组的信息
V$LOGFULE 重做日志文件的信息(状态为空时表示正常)
重做日志组的状态
Current 当前
Unused 从未使用过
Inactive 至少被使用过一次,与重做日志有关的脏缓冲区已经被写入数据文件
Active 至少被使用过一次,与重做日志有关的脏缓冲区还没有被写入数据文件
命令:
Ls /u02
Su root
Mkdir /u02
Chown -R oracle:oinstall /u02
Exit
Cd /u02
Ls
Mkdir orcl
Ls -ld /u02
Ls /u02/orcl
代码:
Alter database add logfile [group 4] (地址1,地址2) size 100M
Select group#, member, status from v$logfile;
增加重做日志组的意义
举例医院:社保系统1分钟被写满,4分钟需要备份
可设定更多的重做日志组和更大的重做日志文件
警告文件:alert_
跟踪文件:orcl_cjq_
强制切换日志
代码:alter system switch logfile
跟踪文件
后台进程跟踪文件:DBWR、LGWR、CKPT 命名orcl_ckpt_.trc,主要跟踪故障
命令:ls *lgwr*.trc(也可以按时间来查询)
Vi 文件名;打开文件
前台进程跟踪文件:服务器进程、server进程等客户端进程,默认不是打开的,打开后所有的SQL执行都会被记录,查看语句执行效率(分析过几次、编写是否合理)
Flashback闪回,恢复数据库或者表
参考:https://www.cnblogs.com/ivictor/p/3975339.html
归档日志文件
命令:archive log list;
Select log_mode from v$database;
Selec archiver from v$instance;
修改日志模式
开启归档日志文件
Shutdown
启动数据库实例到MOUNT状态
命令startup MOUNT
执行命令
命令:alter database (no)archivelog
打开数据库
命令:alter database open
Archive log list; --USE_DB_RECOVER_FILE_DEST
设置归档日志的路径
31个参数设定31个归档路径,对应参数改为defer为失效
命令:
Show parameter log_archive;(查找归档参数)
Alter system set log_archive_dest_1 = 'location=/u01/archive';
Alter system set log_archive_dest_2 = 'location=/u02/archive';
Alter system switch logfile;手动切换归档文件
查询
Ls /u01/archive
归档日志命名
%t:thread编号,实例编号,%T为扩展四位,前面补充0
%s:sequence编号,防止文件名称冲突,%S为扩展十位,前面补充0
%r:随机的数字,同一个文件不变
命令:alter system set log_archive_format=arc_%T_%S_%r' scope=spfile 再重启数据库
设置错误后修改方法:
Create pfile = '/home/oracle/initorcl.ora' from spfile;
Create spfile from pfile = '/home/oracle/initorcl.ora' from spfile;
RMAN对数据库备份与恢复
冷备份、热备份:(见上面)
物理备份:针对文件备份
逻辑备份:表里面的数据导出到文件中
备份集(backupset):对应操作系统一个文件,对应一个文件,一个备份片(piece),超出系统限制,被分割成多个文件,每个是一个备份片。
影像拷贝(image copy):相当于对文件直接拷贝
完全备份:可以针对整个数据库,也可以针对某个表空间、数据文件
增量备份:相对完全备份而言,针对一段时间有变化的数据(如:银行数据库)
增量备份和完全备份通过备份级别来实现
备份级别
Full:完全备份,是独立备份,用于迁移数据(如:数据库迁移)
0:完全备份,增量备份的基础
1-4:以0级备份为基础,增量备份
需要备份的文件
参数文件:没有备份可以拷贝别的数据库文件修改后使用
控制文件:数据库结构、数据名称等,可以设置自动备份
命令:show parameter control_files;
数据文件:重点备份
重做日志文件:不需要备份,通过两种方式保证文件,多元化、归档
口令文件:不需要备份
归档日志文件:可能需要备份
警告文件、跟踪文件:不需要备份
可恢复性的配置
修改文件多元化
修改初始化参数control_files
Alter system set control_files = '文件1' scope = spfile
关闭数据库
在操作系统中拷贝控制文件
启动数据库服务器
改进方法
Spfile改为pfile
编辑peile文件,修改初始化参数
数据库关闭shutdown
Cp 目录1 目录2
Pfile改为spfile
打开数据库startup
控制文件备份代码:
Create pfile='/home/oracle/initorcl.ora' from spfile;
命令:vi /home/oracle/initorcl.ora
I --开始编辑
'/u02/orcl/control03.ctl' –增加
Esc : wq –退出
Cp '/u01/app/oracle/oradata/db01/control01.ctl' '/u02/orcl/control03.ctl'
Create spfile from pfile = '/home/oracle/initorcl.ora';
Show parameter control_files;
重做日志文件多元化
多表空间(不同的表放在不同的表空间)
System:需要备份一次
Sysaux:需要备份一次
临时表空间:不需要备份
Undo表空间:不需要备份
业务表空间:需要重点备份,频分备份
索引表空间:不需要备份
控制文件自动备份
在RMAN中设置自动备份
登录rman target /
命令:show all
CONFIGURE BACKUP OPTIMIZATION OFF; # default 改为ON
OBID 数据库ID号
C-dbid-YYYYMMDD-00
创建文件:Mkdir /u01/backup
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup%F'; # default
Qiit
Select status from v$instance --记录database状态
Alter database mount --修改database状态为mount
设置快速恢复区
代码:
Show parameter recovery
Alter system set db_recovery_file_dest_size = 4G
Alter system set db_recovery_file_dest = /u01/app/flash_recovery_area
MRAN特点
目标数据库:需要备份的数据库
恢复目录(catalog):就是表,记录目标数据库机构
元数据:目标数据库结构(表名等)
目标数据库的备份历史记录
通道:目标数据库到存储设备之间的数据流
Disk硬盘 sbt磁带(tape单台磁带机)
从控制文件中获得元数据
代码:show parameter 初始化参数 -- 默认存7天
Show parameter db_name
Show parameter instance_name
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default –默认通道类型DISK
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default –并行度、类型
切换数据库 Export oracle_SID= testdb
查询用户Echo $oracle_SID
Catalog配置
第一:创建第二个数据库,作为catalog使用
Testdb作为catalog
第二:以sys用户登录catalog数据库,创建表空间
Export ORACLE_SID=testdb
Sqlplus / as sysdba
Startup
Select file_name from dba_data_files;
Create tablespace rman_ts datafile '/u01/app/oracle/oradata/testdb/rman_ts.dbf' size 30M;
第三:以sys用户登录catalog数据库创建用户, 并制定权限
Create user rcowner identified by "1234";
Grant connect,resource,recovery_catalog_owner to rcowner;
Quit;
Echo $ORACLE_SID;--查看一下数据库
第四:以rcowner用户,rman工具,登录catalog数据库
Rman catalog rcowner/1234;
执行命令
Create catalog;
第五:配置数据库的远程连接
两个数据库:监听器
Rman客户端:两个 service naming
客户端直接执行
Netmgr 增加数据库
Lsnrctl stop
Lsnrctl start
测试
Alter user sys identified by "1234";更改sys密码
Sqlplus sys/1234@db01 as sysdba
Sqlplus sys/1234@testdb as sysdba
Show parameter db_name;--显示数据库
Rman同时连接两个数据库,注册数据库
命令:
方法一:Rman target sys/1234@db01 catalog rcowner/1234@testdb
方法二:Rman
Connect target sys/1234@db01;
Connect catalog rcowner/1234@testdb;
注册数据库
命令:register database
查是否成功:report schema
Rman中的命令
Report schema
Report need backup;
List backup;
List backup of spfile;
List backup of controlfile;
List backup of tablespace users;
Resync catalog
自动备份生效时机(针对的是参数问价你和控制文件)
目标数据库的结构与变化时候
当通过backup成功的备份任何一个文件时