教你如何使用Rman(内附数据库学习资料)
mhr18 2024-10-20 06:49 22 浏览 0 评论
蒋蒋~~大家吼啊,又是我,智商233的天才少呂,今天给大家带来的是数据库数据备份的Rman备份介绍
那么!正文开始喽
1.恢复管理器(Recovery Manager,RMAN)是一个与操作系统无关的数据库备份工具,可以跨越不同的操作系统进行数据库备份。RMAN必须运行在一个数据库上。与常用的数据库备份、逻辑数据库备份不同,RMAN使用数据库对数据库进行备份的原理。
在RMAN中,可以使用COPY命令将数据库文件复制到磁盘或磁带上,也可以用BACKUP命令对整个数据库、一个指定的表空间、控制文件、日志文件进行备份。
上面写的哪些东西估计也没有什么用 下面说说怎么用那些东西
首先要创建恢复目录(recobery catalog) 只有建立了目录,rman才能重目录数据库文件中工作呀
1.先要创建恢复目录数据库 可以通过企业管理器建立
包括系统表空间, rbs表空间, 临时表空间, 日志文件设置,catalog表空间,
2 创建rman用户
SQL>Create user rman identifiey by rman default tablespace cattbs temporary tablespace temp;
SQL>Grant connect,resource to rman;
SQL>Grant recovery_catalog_owner to rman;
3 创建恢复目录
$rman catalog rman/rman@rman
RMAN>create catalog; 创建个目录 很简单哈哈
然后开始配置rman通道
先说什么是通道 RMAN在执行数据库备份与恢复操作时,都要使用操作系统进程,启动操作系统进程是通过分配通道来实现的,每分配一个通道RMAN启动一个服务器进程。
手动分配通道
Run {Allocate channel ora_sbt_1 device type sbt rate 200k; #rate限定通道的传输速率/秒
Allocate channel ora_sbt_2 device type sbt rate 500k; # ora_sbt_2通道名可任意取
Backup
(tablespace system,users channel ora_sbt_1)
(tablespace example channel ora_sbt_2); }
自动通道配置
在RUN外部使用backup,restore,delete命令,或在RUN中使用这些命令但未定义通道时RMAN自动使用自动通道配置。
例:
backup tablespace users;
run {restore tablespace examples;}
定义自动通道语法如下:
Configure device type sbt/disk parallelism n
Configure default device type to disk/sbt
Configure channel device type
Configure channel n device type
再说几个例子 看看怎么用这些东西
例:分配3个磁盘通道2个磁带通道
RMAN>Configure device type disk parallelism 3;
RMAN>configure device type sbt parallelism 2 ;
例:指定通道的默认设备
RMAN>configure default device type to disk; 磁盘设备或
RMAN>configure default device type to sbt; 磁带设备
例:自动通道的参数配置
RMAN>Configure channel device type disk format=’/backup/%U’ maxpiecesize 200M;
RMAN>Configure channel device type sbt format=’/store/%U.dbf’ maxpiecesize 200M;
Format 参数指定备份集的存储目录及格式,maxpiecesize指定每个备份集的最大字节数。
也可指定某一个通道的配置
RMAN> Configure channel 2 device type sbt format=’/%s_%t.dbf’ maxpiecesize 200M
上面还有很多的% 哪些是一些参数 有个表给大家
%c 表示备份片中的文件备份片号。
%d 指定数据库名
%D 以DD格式显示日
%M 以MM格式显示月份
%Y 以YYYY格式显示年度
%F 结全数据库标识DBID、日、月、年及序列构成的惟一的自动产生的名称
%n 字符串在数据库名右边拉加若干字母构成8个字符长度的字符串,如ora9i自动形成为ora9iXXX
%p 文件备份片号,在备份集中的备份文件片编码,从1开始每次增加1。
%s 备份集号,此数字是控制文件中随备份集增加的一个计数器,从1开始。
%t 指定备份集的时间戳,是一个4字节值的秒数值。%t与%s结全构成惟一的备份集名称
%T 指定年、月、日,格式为YYYYMMDD
%u 指定备份集编码及备份集创建的时间构成的8个字符的文件名称
%U 指定一个便于使用的由%u_%p_%c构成的确保不会重复的备份文件名称,RMAN默认使用%U格式
%% 指定字符串‘%’,如%%Y表示为%Y
对了还有这么一个功能时这样的
Connect:设置数据库实例,RMAN充许连接到多个不同的数据库实例上。
例:定义三个通道分别连接3个数据库实例。
Configure channel 1 device type sbt connect=’sys/passwc@prod1’;
Configure channel 2 device type sbt connect=’sys/passwc@prod2’;
Configure channel 3 device type sbt connect=’sys/passwc@prod3’;
rman备份数据库
对oracle来说备份数据库就是备份表空间里的数据物理文件也就是数据文件(datafile) 控制文件(controlfile)
日志文件(logfile)
1)查看数据文件:SQL>select*fromv$datafile;
2)查看控制文件:SQL>select*fromv$controlfile;
3)查看日志文件:SQL>select*fromv$logfile。
个人感觉备份数据和控制就好了 那个日志文件没有用过 不知道有什么大用 个人意见 仅供参考
备份也就是使用copy命令 有两种办法 一个时手动通道备份 一个是自动通道备份命令
1.使用多个手工通道备份数据文件及控制文件
RMAN>run
{
Allocate channel dev1 device type disk;
Allocate channel dev2 device type disk;
Allocate channel dev3 device type disk;
Copy
Datafile ‘/oracle/oradata/ora9i/tools01.dbf’ to /backup/tools01.dbf.cp’,
‘/oracle/oradata/ora9i/user01.dbf’ to /backup/user01.dbf.cp’,
Current controlfile to ‘/backup/control01.ctl.cp’;
}
2.使用自动通道备份数据文件及控制文件
Copy
Datafile 1 to ‘/backup/datafile_1.dbf.cp’,
Datafile 2 to ‘/backup/datafile_2.dbf.cp’,
Datafile 3 to ‘/backup/datafile_3.dbf.cp’,
Current controlfile to ‘/backup/control_cp.ctl’;
备份数据文件的备份文件及归档日志文件
Copy
Datafilecopy ‘/backup/tools01.dbf.cp’ to ‘/disk2/backup/tools01.dbf.cp’,
Archivelog ‘/oracle/archive/ora9i_1.arc’ to ‘/backup/archive/ora9i_1.arc.cp’;
显示copy备份结果
RMAN>list copy; 显示使用copy命令备份的文件信息
RMAN>list copy of database; 显示使用copy命令备份的数据库信息
RMAN>list copy of tablespace usres; 显示使用copy命令备份的指定表空间信息
RMAN>list copy like ‘/backup/%’; 显示使用copy命令备份的指定备份文件信息
下面付加一个backup 命令详解
Backup命令语法:
RMAN>backup <level> (<backup type> <option>);
<level>是备份增量级,可以取值为full或incremental,full表示全备份,incremental表示增量备份,共有4级增量
(1、2、3、4)0是全备份,归档日志不能增量备份。
<backup type>是备份对象,包括以下方面:
Database 全部数据库
Tablespace 表空间
Datafile 数据文件
Archivelog [all] 归档日志文件
Current controlfile 控制文件
Datafilecopy [tag] 使用copy命令备份的数据文件
Controlfilecopy 使用copy命令备份的控制文件
Backupset [all] 使用backup命令备份的文件
<option>是可选项,主要参数如下:
Tag 标记
Format 文件存储格式
Include current controlfile 备份控制文件
Filesperset 每个备份集所包含的文件
Channel 指定备份通道
Delete [all] input 备份结束后是否删除归档日志
Maxsetsize 备份集的最大尺寸
Skip [offline、readonly、inaccessible] 可以选择备份条件,可不备份特殊属性的表空间
rman恢复数据库
1、 restore命令
restore命令将copy及backup命令备份的文件复制到目标数据库,如果是copy命令备份的文件,则直接将文件复制到指定的目录,如果是备份集
,则实施数据的恢复,恢复的结果自动产生目标数据库的物理结构文件。
语法:
RMAN>restore <object> <option>;
<object>是备份文件对象,包括如下:
Datafile、tablespace、database、controlfile to、archivelog all
<option>是选项,包括如下方面;
Channel=channel_id
Parms=’channel_parms’
From backupset |datafilecopy
Untilclause
From tag=’tag_name’
Validate
Check logical
Check readonly
2、 recover命令
recover命令将restore命令恢复到目标数据库中的数据文件实施数据库同步恢复。
语法:
Recover <device type> <object> <option>
<object>是要恢复的对象,包括如下:
Datafile 、tablespace、database
<option>是选项,包括如下
Delete archivelog
Check readonly
Noredo
Check logical
From tag
Archivelog tag=’tag_name’
下面举几个列子说明一下恢复备份通道都弄到一起具体怎么用,
1.数据库完全备份 RMAN> run {
2> # backup the complete database to disk
3> allocate channel dev1 type disk;
4> backup
5> full
6> tag full_db_backup
7> format "/oracle/backups/db_t%t_s%s_p%p"
8> (database);
9> release channel dev1;
10> }
还原数据库 RMAN> run {
2> allocate channel dev1 type disk;
3> restore database;
4> sql "alter database mount";
5> recover database;
6> sql "alter database open resetlogs";
7> release channel dev1;
8> }
2.备份表空间RMAN> run {
2> allocate channel dev1 type disk;
3> backup
4> tag tbs_users_read_only
5> format "/oracle/backups/tbs_users_t%t_s%s"
6> (tablespace users)
7> }
还原表空间RMAN> run {
2> allocate channel dev1 type disk;
3> sql "alter tablespace users offline immediate";
4> restore tablespace users;
5> recover tablespace users;
6> sql "alter tablespace users online";
7> release channel dev1;
8> }
3.备份数据文件RMAN> run {
2> allocate channel dev1 type "SBT_TAPE";
3> copy datafile "/oracle/dbs/temp.dbf" to "/oracle/backups/temp.dbf";
4> release channel dev1;
5> }
还原数据文件RMAN> run {
2> allocate channel dev1 type disk;
3> sql "alter tablespace users offline immediate";
4> restore datafile “/oracle/backups/temp.dbf”;
5> recover datafile “/oracle/backups/temp.dbf”;
6> sql "alter tablespace users online";
7> release channel dev1;
8> }
另外备份联机日志联机日志不能用RMAN来备份,必须先将其归档。
为了实现这点,必须在RMAN中执行如下SQL语句:
RMAN> run {
2> allocate channel dev1 type disk;
3> sql "alter system archive log current";
4> backup
5> format "/oracle/backups/log_t%t_s%s_p%p"
6> (archivelog from time "sysdate-1" all delete input);
7> release channel dev1;
8> }
上面的脚本可以在执行完一个完整的联机数据库备份后执行,确保所有的重做日志可以将数据库恢复到一个一致性的状态。
注意:不可以标识归档日志备份集。
rman总结
rman作为oracle备份最为方便的工具,以下就总结几条常用的命令,希望能方便大家,也希望可以申请授权:
1、首先使用rman前,需要建一个目录数据库
2、create tablespce rman datafile '/data/oradata/test/rman.dbf' size 20m;
3、create user rman identified by rman default tablespace rman temporary tablespace temp;
4、grant connect,resource,recovery_catalog_ower to rman;
以上建库和建用户基本成功,接着:
1、rman target sys/manager@ora8 catalog rman/rman@rman
2、register database (同步数据库,如果数据库做了alter database open resetlogs,就需要reset database,如果有库结构变化,就需要
resync catalog)
3、create script back {
allocate channel n1 type disk;
backup database
format '/data/backup/ora8_%d_%s_%p';
release channel n1;}
4、如果是备份固定的文件或表空间也可以
create script back_file{
allocate channel n1 type disk;
copy
datafile 4 to '/data/backup/users.dbf';
release channel n1;}
create script back_tablespace{
allocate channel m1 type disk;
backup tablespace users
format '/data/backup/users_%t_%s_%p';
release channel n1;}
使用copy就是文件镜像保存,使用backup就是用oracle专有的格式保存,支持压缩等等,此处就不细说了!
5、执行备份
run{execute script back;}
等等!
以上说了备份数据库,下面是恢复数据库
1、rman target sys/manager@ora8 catalog rman/rman@rman
2、run{
allcote channel n1 type disk;
sql "alter tablespce users offline immediate";
restore tablespace users;
recover tablespace users;
sql "alter tablespace user online";
release channel n1;}
3、run{
allocate channel n1 type disk;
restore database;
recover database;
sql "alter database open resetlogs";
release channel n1;}
4、run{
allocate channel n1 type disk;
restore datafile 4;
release channel n1;}
以上都是一些基本的rman操作,如有错误之处,希望被指出。
想要学习更多的,Oracle学习资料获取方式:关注我+转发此文,然后私信我“Oracle资料”就可以获取啦!!
有什么想法或者问题欢迎私信!作为菜鸟的我会尽最大努力帮助的,共同进步
相关推荐
- 【预警通报】关于WebLogic存在远程代码执行高危漏洞的预警通报
-
近日,Oracle官方发布了2021年1月关键补丁更新公告CPU(CriticalPatchUpdate),共修复了包括CVE-2021-2109(WeblogicServer远程代码执行漏洞)...
- 医院信息系统突发应急演练记录(医院信息化应急演练)
-
信息系统突发事件应急预案演练记录演练内容信息系统突发事件应急预案演练参与人员信息科参与科室:全院各部门日期xxxx-xx-xx时间20:00至24:00地点信息科记录:xxx1、...
- 一文掌握怎么利用Shell+Python实现完美版的多数据源备份程序
-
简介:在当今数字化时代,无论是企业还是个人,数据的安全性和业务的连续性都是至关重要的。数据一旦丢失,可能会造成无法估量的损失。因此,如何有效地对分布在不同位置的数据进行备份,尤其是异地备份,成为了一个...
- docker搭建系统环境(docker搭建centos)
-
Docker安装(CentOS7)1.卸载旧版Docker#检查已安装版本yumlistinstalled|grepdocker#卸载旧版本yumremove-ydocker.x...
- 基础篇:数据库 SQL 入门教程(sql数据库入门书籍推荐)
-
SQL介绍什么是SQLSQL指结构化查询语言,是用于访问和处理数据库的标准的计算机语言。它使我们有能力访问数据库,可与多种数据库程序协同工作,如MSAccess、DB2、Informix、M...
- Java21杀手级新特性!3行代码性能翻倍
-
导语某券商系统用这招,交易延迟从12ms降到0.8ms!本文揭秘Oracle官方未公开的Record模式匹配+虚拟线程深度优化+向量API神操作,代码量直降70%!一、Record模式匹配(代码量↓8...
- 一文读懂JDK21的虚拟线程(java虚拟线程)
-
概述JDK21已于2023年9月19日发布,作为Oracle标准Java实现的一个LTS版本发布,发布了15想新特性,其中虚拟线程呼声较高。虚拟线程是JDK21中引入的一项重要特性,它是一种轻量级的...
- 效率!MacOS下超级好用的Linux虚拟工具:Lima
-
对于MacOS用户来说,搭建Linux虚拟环境一直是件让人头疼的事。无论是VirtualBox还是商业的VMware,都显得过于笨重且配置复杂。今天,我们要介绍一个轻巧方便的纯命令行Linux虚拟工具...
- 所谓SaaS(所谓三维目标一般都应包括)
-
2010年前后,一个科技媒体的主编写一些关于云计算的概念性问题,就可以作为头版头条了。那时候的云计算,更多的还停留在一些概念性的问题上。而基于云计算而生的SaaS更是“养在深闺人未识”,一度成为被IT...
- ORA-00600 「25027」 「x」报错(报错0xc0000001)
-
问题现象:在用到LOB大对象的业务中,进行数据的插入,失败了,在报警文件中报错:ORA-00600:内部错误代码,参数:[25027],[10],[0],[],[],[],[],[...
- 安卓7源码编译(安卓源码编译环境lunch失败,uname命令找不到)
-
前面已经下载好源码了,接下来是下载手机对应的二进制驱动执行编译源码命令下载厂商驱动https://developers.google.com/android/drivers?hl=zh-cn搜索NGI...
- 编译安卓源码(编译安卓源码 电脑配置)
-
前面已经下载好源码了,接下来是下载手机对应的二进制驱动执行编译源码命令下载厂商驱动https://developers.google.com/android/drivers?hl=zh-cn搜索NGI...
- 360 Vulcan Team首战告捷 以17.5万美金强势领跑2019“天府杯“
-
2019年11月16日,由360集团、百度、腾讯、阿里巴巴、清华大学与中科院等多家企业和研究机构在成都联合主办了2019“天府杯”国际网络安全大赛暨2019天府国际网络安全高峰论坛。而开幕当日最激荡人...
- Syslog 日志分析与异常检测技巧(syslog发送日志配置)
-
系统日志包含有助于分析网络设备整体运行状况的重要信息。然而,理解并从中提取有效数据往往颇具挑战。本文将详解从基础命令行工具到专业日志管理软件的全流程分析技巧,助你高效挖掘Syslog日志价值。Gr...
- 从Oracle演进看数据库技术的发展(从oracle演进看数据库技术的发展的过程)
-
数据库技术发展本质上是应用需求驱动与基础架构演进的双向奔赴,如何分析其技术发展的脉络和方向?考虑到oracle数据库仍然是这个领域的王者,以其为例,管中窥豹,对其从Oracle8i到23ai版本的核...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle基目录 (50)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (53)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)