实用网站建设期末考试,商丘高端网站建设,seo效果最好的是,wordpress获取标签链接地址一、Oracle备份
1.故障类型 2.备份分类
全量备份#xff1a;对数据库完整的备份 优点#xff1a;可实现数据100%恢复#xff0c;恢复时间短#xff0c;操作方便缺点#xff1a;备份数据量大#xff0c;存储空间需求大
增量备份#xff1a;从最后一次备份后改变的文件…一、Oracle备份
1.故障类型 2.备份分类
全量备份对数据库完整的备份 优点可实现数据100%恢复恢复时间短操作方便缺点备份数据量大存储空间需求大
增量备份从最后一次备份后改变的文件
优点备份数据量小备份时间短缺点恢复时依赖之前的备份记录出现问题的风险比较大
差异备份在最后一次完整后被修改的文件
优点恢复数据时间短--因此只需要两份数据,最后一次完全备份和最后一次差异备份缺点每次备份需要的时间长 建议一月一次全量一周一次增量 二、RMAN恢复管理器 RMAN是 DBA 的一个重要工具用于备份、恢复 Oracle 数据库完成对目标数据库的控制文件、数据文件及归档日志文件以及SPFILE的联机备份能够实现对数据库的完全或不完全的恢复操作 支持在线热备份、多级增量备份、并行备份恢复减少所需要备份量备份、恢复使用简单 1.恢复目录数据库
恢复目录用于存放RMAN元数据它是存放RMAN元数据的一个可选设置 恢复目录数据库创建步骤
创建恢复目录 a创建恢复目录数据库 b.在恢复目录数据库中创建RMAN 用户并授权 c.在恢复目录数据库中创建恢复目录 注册目标数据库到恢复目录 a.进入RMAN环境 b.连接目标数据库 c.连接恢复目录数据库 d.注册
2.RMAN通道
当使用RMAN在存储设备磁盘或磁带上执行备份、转储等操作时RMAN需要在存储设备和目标数据库之建立连接该连接被称为通道。如果不配置通道则使用默认通道 1自动通道配置
--指定自动通道并行个数。
CONFIGURE DEVICE TYPE sbt/disk PARALLELISM n;
--指定自动通道的默认设备
CONFIGURE DEFAULT DEVICE TYPE TOsbt/disk;
2手动通道配置
RUN{
ALLOCATE CHANNEL 通道名称 DEVICE TYPE 设备类型;
……}
3显示通道配置参数
RMANSHOW ALL;
3.RMAN-备份集与备份片
1备份集
是一次备份的集合它包含本次备份的所有备份片以Oracle专有的格式保存是一个逻辑数据的集合
2备份片
用于存储备份集信息的二进制文件一个或多个备份片组成一个备份集一个备份片对应一个OS文件通常每个备份集只包含一个备份片 3RMAN-Format字符串替代变量说明
%c备份片的拷贝数(从1开始编号)
%d数据库名称
%D位于该月中的天数 (DD)
%M位于该年中的月份 (MM)
%F一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBIDYYYYMMDD 为日期QQ 是一个1-256的序列
%n数据库名称并且会在右侧用x字符进行填充使其保持长度为8
%u是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称
%p该备份集中备份片的编号从1 开始编号
%U是%u_%p_%c的简写形式利用它可以为每一个备份片生成一个唯一名称这是最常用的命名方式
%s备份集的号
%t备份集时间戳
%T年月日格式(YYYYMMDD)
注如果在BACKUP命令中没有指定FORMAT选项则RMAN默认使用%U为备份片段命名
4.RMAN-备份命令
用于备份数据库文件可以将多个文件、表空间、整个数据库以备份集形式备份到磁盘或磁带上 在归档方式下备份数据库步骤
在SQLPlus环境下 ①以SYSDBA身份登录 ②查看数据库归档方式 ③如果处于非归档方式则将数据库处于归档方式下 ④打开数据库
在RMAN环境下 ①连接目标数据库和恢复目录数据库 ②备份数据库和归档日志
5.RMAN恢复命令
使用RMAN备份的数据库页只能使用RMAN提供的恢复命令进行恢复
RMAN恢复数据库用到了两个命令
RESTORE 命令从备份中还原数据库文件RECOVER 命令通过应用归档日志文件中记录的更改来恢复已还原文件
1恢复数据库步骤
①保证数据库在MOUNT模式下启动
②在RMAN环境下
连接目标数据库执行RESTORE命令执行RECOVE命令再打开数据库
6.RMAN案例
1开启archivelog su -oracle sqlplus-s sys/pwd123 as sysdba SQLshutdown immediate; SQL startupmount; SQL alterdatabase archivelog; SQL alterdatabase open; SQL archivelog list;
2创建用户并授权 SQL createtablespace rmants datafile /opt/oracle/oradata/rmants.ora size 20M; SQL createuser rman identified by rman default tablespace rmants temporary tablespacetemp; SQL grantconnect,resource to rman; SQL grantrecovery_catalog_owner to rman; SQL quit;
3注册到目录数据库并创建通道 rmancatalog rman/rman RMAN createcatalog tablespace rmants; rmantarget sys/pwd123 RMAN connectcatalog rman/rman RMAN registerdatabase;
run {
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
allocate channel ch3 device type disk;
}; RMAN quit;
4备份 mkdir -p/opt/oracle/rmanbak rman catalog rman/rman RMAN connecttarget sys/pwd123; RMAN backupdatabase format /opt/oracle/rmanbak/%d_%T.%U; RMAN backup database plus archivelog delete input;
5恢复 rman catalog rman/rman RMAN connecttarget sys/pwd123; RMAN shutdown immediate; RMAN startupmount; RMAN restoredatabase; RMAN recoverdatabase; RMAN alterdatabase open;
三、数据泵导入与导出 1.基于命令行的数据泵导出步骤
连接Oracle数据库创建一个操作目录授予用户操作dump_dir目录的权限使用命令expdp导出数据, 使用命令impdp导入数据
2.案例
创建工作目录 mkdir -p/opt/oracle/backup sqlplussys as sysdba; SQLcreate directory dump_dir as /opt/oracle/backup; SQL grantread,write on directory dump_dir to scott; SQLquit; expdpscott/pwd123 directorydump_dir dumpfilescotttab-$(date %F).dmptablesemp,dept; sqlplussys as sysdba; SQL connscott/pwd123; SQL droptable emp; SQL quit; impdp scott/pwd123 directorydump_dirdumpfilescotttab-2017-12-18.dmp tablesscott.emp sqlplus sys as sysdba; SQL connscott/pwd123; SQL select* from emp; 四、闪回技术 注意
闪回数据库是基于闪回恢复区FlashRecovery Area特性实现的如果要使用闪回数据库技术还需要启用闪回恢复区闪回删除是基于回收站RecycleBin特性实现的如果要使用闪回删除技术还需要启用回收站闪回查询、闪回版本查询、闪回事务查询以及闪回表主要是基于撤销表空间中的回滚信息实现的
1.闪回恢复区
闪回恢复区为控制文件备份、归档重做日志、闪回日志和数据库备份提供了一个统一存储位置 操作步骤
①启用归档模式闪回数据库只能处于归档模式
②建立闪回恢复区
指定闪回恢复区的大小指定闪回恢复区的位置指定闪回恢复区中数据的保留时间
③启用闪回日志
④查询是否成功启用闪回恢复区
⑤查询是否成功启用归档
⑥查询是否成功启用闪回数据库 2.闪回数据库
闪回数据库基本语法为
FLASHBACK DATABASE [database] TO [SCN|TIMESTAMP expression]|
[SCN|TIMESTAMP expression]|
[BEFORE SCN|TIMESTAMPexpression]
参数说明:
TO SCN将数据库恢复到指定SCN的状态TO TIMESTAMP将数据库恢复到指定的时间点TO BEFORE SCN将数据库恢复到指定SCN的前一个SCN状态TO BEFORE TIMESTAMP将数据库恢复到指定时间点前的状态
案例
a.设置闪回恢复区 sqlplussys as sysdba SQL shutdownimmediate; SQLstartup mount; SQL alter database archivelog; //启用归档模式闪回数据库只能处于归档模式 SQL altersystem set db_recovery_file_dest/opt/oracle/flash_recovery_area scopeboth; //设置闪回恢复区位置 SQL altersystem set db_recovery_file_dest_size3G scopeboth; //设置闪回恢复区大小 SQL altersystem set db_flashback_retention_target1440; //设置闪回恢复区数据保留时间为一天单位为min SQL shutdownimmediate; SQLstartup mount; SQLalter database flashback on; //启用闪回日志 SQL alterdatabase open; SQL showparameter db_recovery_file; //查询是否成功请闪回恢复区 SQL archivelog list; SQL selectflashback_on from v$database; //查询是否成功启用闪回数据库 b.闪回数据库操作
闪回数据库操作的限制
数据文件损坏或丢失等介质故障不能使用闪回数据库进行恢复闪回数据库只能基于当前正常运行的数据文件闪回数据库功能启动后如果发生数据库控制文件重建或利用备份恢复控制文件则不能使用闪回数据库不能使用闪回数据库进行数据文件收缩操作不能使用闪回数据库将数据库恢复到在闪回日志中可获得最早的SCN之前的SCN因为闪回日志文件在一定条件下被删除而不是始终保存在闪回恢复区中
方式一 SQL SELECTCURRENT_SCN FROM V$DATABASE; //查看当前的SCN SQLcreate table test1 (id number,name char(20)); //创建测试表 SQLinsert into test1 values(1,database); //插入数据 SQL commit; SQL shutdownimmediate; SQL startupmount; SQLflashback database to scn 1032024; //闪回到SCN SQL alterdatabase open resetlogs; //开数据库 SQL select* from test1; //查询报错 方式二 SQLalter session set NLS_DATE_FORMATYYYY-MM-DD HH24:MI:SS; //设置显示时间 SQL selectoldest_flashback_scn, oldest_flashback_time from v$flashback_database_log; //查询数据库中当前的闪回SCN和时间 SQL selectsysdate from dual; //查询当前系统时间 SQL settime on //改变数据库当前时间状态
17:04:58 SQL create table test2(id number,name char(20)); //创建测试表
17:05:22 SQL insert into test2 values(1,database); //插入测试数据
17:05:44 SQL commit; 17:05:48 SQL shutdown immediate;
17:06:05 SQL startup mount; 17:06:20 SQL flashback database totimestamp(to_timestamp(2015-09-27 22:22:06,YYYY-MM-DD HH24:MI:SS));
//闪回到指定时间 17:07:16 SQL alter database open resetlogs; //开启数据库 17:07:31 SQL select * from test2; //查询测试 3.闪回表
闪回表可将表恢复到特定的时间点或者指定的SCN闪回表实际上是对表进行DML操作的过程数据库保持联机 必须满足下列条件
用户具有FLASHBACKANY TABLE系统权限或者具有所操作表的FLASHBACK对象权限用户具有所操作表的SELECTINSERTDELETEALTER对象权限启动被操作表的ROWMOVEMENT特性可以采用下列方式进行 ALTER TABLE table ENABLE ROWMOVEMENT;
闪回表操作的基本语法为
FLASHBACK TABLE [schema.]table TO
SCN|TIMESTAMP expression
[ENABLE|DISABLE TRIGGERS]
参数说明
SCN将表恢复到指定的SCN时状态
TIMESTAMP将表恢复到指定的时间点
ENABLE|DISABLE TRIGGER在恢复表中数据的过程中表上的触发器是激活还是禁用默认为禁用
注意SYS或以AS SYSDBA身份登录的用户不能执行闪回表操作
案例 SQL grantselect any dictionary to scott; SQL quit; sqlplusscott; SQL settime on 17:28:28 SQL alter session set NLS_DATE_FORMATYYYY-MM-DDHH24:MI:SS; //更新日期显示格式 17:28:44 SQL select sysdate from dual; 17:28:55 SQL create table test3(id number primary key, name char(30)); //插入测试数据 17:29:42 SQL insert into test3 values(1,zhang); 17:30:07 SQL insert into test3 values(2,zhao); 17:30:15 SQL insert into test3 values(3,wang); 17:30:23 SQL commit; 17:54:55 SQL select current_scn fromv$database; //查询当前scn号 17:55:14 SQL update test3 set nameliuwhere id1; ##更新数据 17:55:33 SQL commit ; 17:55:36 SQL select * from test3; 17:31:51 SQL alter table test3 enablerow movement; //启动test3表的ROW MOVEMENT特性 17:55:42 SQL flashback table test3 totimestamp to_timestamp(2017-12-18 23:17:49,YYYY-MM-DD HH24:MI:SS);
//恢复表到指定时间 17:56:02 SQL select * from test3; 4.闪回删除
闪回删除可恢复使用DROP TABLE语句删除的表是一种对意外删除的表的恢复机闪回删除功能的实现主要是通过数据库中的“回收站”Recycle Bin技术实现的为了使用闪回删除技术必须开启数据库的“回收站” 闪回删除的基本语法为
FLASHBACK TABLE [schema.]table TO BEFOREDROP [RENAME TO table]
注意不支持SYS用户SYSTEM表空间下的对象也不能从回收站里拿到。故使用SYS或者SYSTEM用户登录时查询为空
案例 sqlplus sys as sysdba SQL alter system set recyclebinon deferred; //启动回收站 SQL showparameter recyclebin; //查看回收站是否启用 sqlplusas scott SQL create table exampe(id numberprimary key, name char(20)); SQL insert into exampe values(1,beforedrop); SQL commit; SQL drop table exampe; SQL flashback table exampe to beforedrop rename to new_example; SQL select *from new_example; SQL purge recyclebin; //清空回收站 SQL selectobject_name,original_name,type from user_recyclebin; //查询是否为空 5.闪回查询 闪回查询使用闪回查询功能可以执行截止到特定时间的查询
语法
select column_name[,...]
from table_name
[as of scn | timestamp expression]
[where condition]
案例 sqlplus scott; SQL alter session setnls_date_formatYYYY-MM-DD HH24:MI:SS; SQL set time on; 18:01:38 SQL select empno,sal fromscott.emp where empno7844; //查询目前表记录值 18:01:50 SQL update scott.emp setsal2000 where empno7844; //第一次更新数据 18:02:05 SQL commit; 18:02:17 SQL select empno,sal fromscott.emp where empno7844; //查询第一次更改值 18:02:29 SQL update scott.emp setsal3000 where empno7844; //第二次更新数据 18:02:36 SQL commit; 18:02:43 SQL select empno,sal fromscott.emp where empno7844; //查询第二次更改值 18:02:47 SQL select empno,sal fromscott.emp as of timestamp to_timestamp(2017-12-18 12:24:14,YYYY-MM-DDHH24:MI:SS) where empno7844;
//删除查询未更改数据之前的数据值 18:03:31 SQL select empno,sal fromscott.emp as of timestamp to_timestamp(2017-12-18 12:24:47,YYYY-MM-DDHH24:MI:SS) where empno7844;
//删除查询第一次数据更改的数据值 18:04:32 SQL select empno,sal fromscott.emp where empno7844; //查询当前数据值