`

RMAN配置及备份与恢复练习

阅读更多

1.创建表空间
SQL>create tablespace rmorcl
2 datafile '/home/oracle/oracle/oradata/test/rmorcl.dbf' size 20M;
2.创建用户
SQL> create user rmorcl identified by rmorcl default tablespace rmorcl temporary tablespace temp;
3.为用户授权
SQL> grant connect,resource,recovery_catalog_owner to rmorcl;
4.用rman连结目标数据库和恢复目录
[oracle@primary bin]$ ./rman target sys/oracle@primary catalog rmorcl/rmorcl@test
5.创建恢复目录表
RMAN>create catalog tablespace "RMORCL";
6.注册数据库
RMAN>register database;
练习备份
1.备份数据文件
run {
allocate channel d1 type disk maxpiecesize =1G;
backup format 'dbfile_%s_%p' filesperset 2
datafile '/home/oracle/oracle/product/10.2.0/oradata/orcl/users01.dbf',
'/home/oracle/oracle/product/10.2.0/oradata/orcl/users02.dbf';
}
2.备份表空间
run {
allocate channel d2 type disk;
backup format 'tablespace_%d_%s_%p'
(tablespace system,users,sysaux);
}
3.备份数据库
run {
allocate channel d3 type disk maxpiecesize=1G;
backup format 'database_%d_%s_%p'
database filesperset 2;
}
4.备份所有的归档日志文件
run {
allocate channel d4 type disk maxpiecesize=1G;
backup format '/u01/backup/archivelog_%t_%s_%p'
archivelog all;
}
练习恢复
1.恢复数据文件
run {
allocate channel d1 type disk;
restore datafile 4,6,7;
recover datafile 4,6,7;
}
2.恢复表空间(脱机)
run {
allocate channel d2 type disk;
restore tablespace users;
recover tablespace users;
}
3.恢复表空间(联机)
run {
allocate channel d3 type disk;
sql "alter tablespace users offline immediate";
restore tablespace users;
recover tablespace users;
sql "alter tablespace users online";
}
4.恢复数据库
run {
allocate channel d4 type disk;
restore database;
recover database;
}
7利用DBMS_METADATA包获取权限信息[记录后备用]

Oracle的9i增加了DBMS_METADATA包,从此在需要得到对象的创建脚本时,不再需要通过查询多张系统视图去自己拼凑结果了。只需要调用这个包中的GET_DDL过程就可以轻松的获取对象的创建脚本。

不过很多人对DBMS_METADATA包的了解仅限与此。当需要获取用户的权限时,往往还是采用通过到数据字典中读取的方式,其实DBMS_METADATA包本身就支持获取权限信息。

 

 

 

DBMS_METADATA的GET_GRANTED_DDL过程可以用于获取用户的授权信息。Oracle支持的授权相关信息类型包括:OBJECT_GRANT、SYSTEM_GRANT、ROLE_GRANT、DEFAULT_ROLE、TABLESPACE_QUOTA和PROXY。

由于使用十分简单,这里给一个简单的例子,就不详细描述了:

SQL> CREATE USER TEST IDENTIFIED BY TEST DEFAULT TABLESPACE YANGTK;

用户已创建

SQL> GRANT CONNECT TO TEST;

授权成功。

SQL> GRANT SELECT ANY TABLE TO TEST;

授权成功。

SQL> GRANT INSERT, UPDATE ON T TO TEST;

授权成功。

SQL> ALTER USER TEST QUOTA 10M ON YANGTK;

用户已更改。

SQL> CREATE ROLE R1;

角色已创建

SQL> GRANT R1 TO TEST;

授权成功。

SQL> ALTER USER TEST DEFAULT ROLE R1;

用户已更改。

SQL> ALTER USER TEST GRANT CONNECT THROUGH YANGTK;

用户已更改。

SQL> SET LONG 10000
SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT', 'TEST') FROM DUAL;

DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT','TEST')
----------------------------------------------------------------------

GRANT UPDATE ON "YANGTK"."T" TO "TEST"

GRANT INSERT ON "YANGTK"."T" TO "TEST"

 

SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT', 'TEST') FROM DUAL;

DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','TEST')
----------------------------------------------------------------------

GRANT SELECT ANY TABLE TO "TEST"

 

SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT', 'TEST') FROM DUAL;

DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT','TEST')
----------------------------------------------------------------------

GRANT "CONNECT" TO "TEST"

GRANT "R1" TO "TEST"

 

SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('DEFAULT_ROLE', 'TEST') FROM DUAL;

DBMS_METADATA.GET_GRANTED_DDL('DEFAULT_ROLE','TEST')
----------------------------------------------------------------------

ALTER USER "TEST" DEFAULT ROLE "R1"

 

SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('TABLESPACE_QUOTA', 'TEST') FROM DUAL;

DBMS_METADATA.GET_GRANTED_DDL('TABLESPACE_QUOTA','TEST')
----------------------------------------------------------------------

ALTER USER "TEST" QUOTA 640 ON "YANGTK"


SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('PROXY', 'TEST') FROM DUAL;

DBMS_METADATA.GET_GRANTED_DDL('PROXY','TEST')
----------------------------------------------------------------------

ALTER USER "TEST" GRANT CONNECT THROUGH "YANGTK"


需要注意的是,如果指定查询的授权不存在,并不是简单的返回未选定行,而是还会显示错误信息:

SQL> REVOKE SELECT ANY TABLE FROM TEST;

撤销成功。

SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT', 'TEST') FROM DUAL;
ERROR:
ORA-31608: 找不到类型为 SYSTEM_GRANT 的指定对象
ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 86
ORA-06512: 在"SYS.DBMS_METADATA", line 631
ORA-06512: 在"SYS.DBMS_METADATA", line 1339
ORA-06512: 在line 1

 

未选定行

最后还要说明一点,DBMS_METADATA的GET_GRANTED_DDL不会显示SYSDBA和SYSOPER权限。

 

9.闪回查询
(1).查询闪回
例如:
1)在删除员工smith记录后,希望查询到删除该行记录前的值,则可以查询emp在'2007-02-11 23:34:05'时的数据,查询方法如下:
select * from emp as of timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss') where ename='SMITH';
2)查询当前时间
alter session set nls_date_format='yyyy-mm-dd hh24:mi;ss';
select sysdate from dual;
delete from emp;
commit;
select * from emp as of timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss');
可以将闪回的数据重新插入到表中:
insert into empbak (select * from empbak as of timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss'));
(2).表闪回
表闪回要求用户必须要有flash any table权限,首先,必须对表进行下以下操作:
alter table empbak enable row movement;
执行闪回操作
flashback table emp to timestamp to_timestamp('2007-02-11 23:34:05','yyyy-mm-dd hh24:mi:ss');
注:如果表结构发生改变就没有办法闪回。
(3).删除闪回
删除闪回为删除oracle10g中的数据库实体提供了一个安全机制,当用删除一个表时,oracle10g 会将该表放到回收站中,回收站中的对象一真会保留,直到用户决定永久删除它们或出现表空间的空间不足时才会被删除。回收站是一个虚拟容器,用于存储所有被删除的对象。数据字典user_tables中的列dropped表示被删除的表.查询方法如下:
select table_name,dropped from user_tables;
也可以使用show命令显示回收站信息
sql>show recyclebin
或查询数据字典user_recyclebin获得回收站信息
SQL> select object_name,original_name,type,droptime from user_recyclebin;
例如;恢复被删除的表emp.
SQL>flashback table emp to before drop;
如果不知道原表名,可以直接使用回收站中的名称进行闪回。
SQL>flashback table "Bin$DSbdfd4rdfdfdfegdfsf==$0" to before drop;
在回收的同时可以修改表名:
SQL>flashback table "Bin$DSbdfd4rdfdfdfegdfsf==$0" to before drop rename to emp1;
真正删除某一个表,而不进入回收站,可以在删除表时增加purge选项.如将emp表彻底删除.
SQL>drop table emp purge;
也可以通过删除recyclebin区域来永久性删除表
SQL>purge table emp;
删除当前用户的回收站
SQL>purge recyclebin;
删除全体用户在回收站的数据.
SQL>purge dba_recyclebin
(4).数据库闪回
使用数据库闪回功能,可以使数据库回到过去某一状态, 语法如下:
SQL>alter database flashback on
SQL>flashback database to scn 46963;
SQL>flashback database to timestamp to_timestamp('2007-2-12 12:00:00','yyyy-mm-dd hh24:mi:ss');
10.SCN

 

在ORACLE 8I以下,可通过如下语句取得CURRENT SCN
select max(ktuxescnw*power(2,32)+ktuxescnb) from x$ktuxe;
在ORACLE 9I,使用如下语句取得CURRENT SCN
select dbms_flashback.get_system_change_number from dual;

系统检查点scn(v$database(checkpoint_change#))
数据文件检查点(v$datafile(checkpoint_change#))
数据文件终止scn(v$datafile(last_change#))

数据文件中存放的检查点
启动scn (v$datafile_header(checkpoint_change#)

1、系统检查点scn
当一个检查点动作完成之后,Oracle就把系统检查点的SCN存储到控制文件中。
select checkpoint_change# from v$database
2、数据文件检查点scn
当一个检查点动作完成之后,Oracle就把每个数据文件的scn单独存放在控制文件
中。
select name,checkpoint_change# from v$datafile
3、启动scn
Oracle把这个检查点的scn存储在每个数据文件的文件头中,这个值称为启动scn,
因为它用于在数据库实例启动时,检查是否需要执行数据库恢复。
select name,checkpoint_change# from v$datafile_header
4、终止scn
每个数据文件的终止scn都存储在控制文件中。
select name,last_change# from v$datafile
在正常的数据库操作过程中,所有正处于联机读写模式下的数据文件的终止scn都为null.
5、在数据库运行期间的scn值
在数据库打开并运行之后,控制文件中的系统检查点、控制文件中的数据文件检查点scn
和每个数据文件头中的启动scn都是相同的。控制文件中的每个数据文件的终止scn都为null.

在安全关闭数据库的过程中,系统会执行一个检查点动作,这时所有数据文件的终止scn
都会设置成数据文件头中的那个启动scn的值。在数据库重新启动的时候,
Oracle将文件头中的那个启动scn与数据库文件检查点scn进行比较,
如果这两个值相互匹配,oracle接下来还要比较数据文件头中的启动scn和控制文件
中数据文件的终止scn。如果这两个值也一致,就意味着所有数据块多已经提交,所有
对数据库的修改都没有在关闭数据库的过程中丢失,因此这次启动数据库的过程
也不需要任何恢复操作,此时数据库就可以打开了。当所有的数据库都打开之后,
存储在控制文件中的数据文件终止scn的值再次被更改为null,
这表示数据文件已经打开并能够正常使用了。

分享到:
评论

相关推荐

    图书:Oracle 11g RMAN备份和恢复

    在《Oracle 11g RMAN备份和恢复》中,读者将学习如何配置RMAN环境,设置备份策略,以及如何利用通道来并行执行备份任务,提高备份效率。此外,书中还会讲解如何使用RMAN与磁带库、网络存储设备以及Oracle Secure ...

    Oracle备份还原练习

    备份与恢复是确保数据安全的重要环节,尤其对于初学者来说,理解并熟练掌握Oracle的备份和还原策略至关重要。本练习旨在帮助你深入理解Oracle的备份与还原机制,提升你在实际操作中的技能。 Oracle备份主要包括物理...

    rman备份初级演练

    在“oracle之初体验-rman(一)”中,可能涵盖了RMAN的基本概念和环境设置,包括连接到数据库、配置备份目标(如磁盘或磁带设备)以及创建备份策略。这些基础设置是所有RMAN操作的前提。 “oracle之初体验-rman(二...

    RMAN 初学者指南

    - **介质恢复**:当数据文件丢失或损坏时,使用备份恢复。 - **逻辑恢复**:如误删除表或记录,使用撤销或重做日志进行恢复。 6. **RMAN脚本和自动化** - **RMAN脚本**:编写RMAN命令脚本,方便重复执行备份策略...

    跟三思一步步学习Rman

    以下将详细阐述RMAN的基础知识、命令用法、备份与恢复操作及其实践应用。 首先,RMAN的基础知识是学习的起点。RMAN是Oracle数据库10g版本引入的核心组件,它通过与数据库服务器的交互,实现对数据库的备份和恢复。...

    一步一步学oracle10 RMAN

    - 控制文件恢复:当控制文件损坏时,使用备份恢复。 - 闪回恢复:利用闪回日志回滚到特定时间点。 - 逻辑恢复:用于恢复逻辑错误,如误删除表、记录等。 5. RMAN与恢复目录: 恢复目录数据库存储RMAN备份的元...

    ORACLE_RMAN资料

    2. **介质恢复**:当数据文件、控制文件或日志丢失时,使用备份恢复。 3. **闪回恢复**:利用闪回日志和归档日志,将数据库恢复到某个时间点。 **RMAN其他功能:** - **验证备份**:检查备份的完整性,确保可以成功...

    Oracle Database 10g : 数据库管理 - 课堂练习 II 学生指南第2册

    使用 EM 配置 RMAN 设置需要 DBA 了解 EM 的管理功能和 RMAN 的配置方法,以便更好地备份和恢复数据库。 这些知识点涵盖了 Oracle Database 10g 的数据库管理、实例管理、内存结构、进程、物理数据库结构、OMF、...

    【RMAN】rm -rf 误操作的恢复过程.pdf

    Oracle数据库作为一款成熟的数据库管理系统,拥有强大的数据备份与恢复功能,但在日常运维过程中,由于人为失误,使用rm -rf命令错误删除数据库文件的事件时有发生。本文针对没有备份情况下,如何利用Oracle数据库...

    oracle10g课堂练习II(2)

    将快速恢复区与 RMAN 配合使用 2-14 使用 EM 监视快速恢复区 2-16 快速恢复区的空间使用 2-17 V$FLASH_RECOVERY_AREA_USAGE 2-18 备份快速恢复区 2-20 使用快速恢复区的优点 2-21 设置影响 RMAN 的参数 2-22 ...

    Oracle Database 10g: 数据库管理- 课堂练习II 第二册

    - **掌握备份与恢复机制**:了解Oracle Recovery Manager (RMAN)的工作原理及配置方法。 - **实践操作**:通过具体案例学习如何有效地管理和维护Oracle数据库。 ##### 2. 建议学习计划 - 首先回顾Oracle基础概念和...

    ocp 练习

    在Oracle数据库中,RMAN(Recovery Manager)是用于备份、恢复和灾难恢复的重要工具。nocatalog模式指的是不通过RMAN目录表进行备份管理的情况。这种模式下,备份和恢复操作完全依赖于控制文件中的记录。 - **启动...

    oracle10g课堂练习II(1)

    将快速恢复区与 RMAN 配合使用 2-14 使用 EM 监视快速恢复区 2-16 快速恢复区的空间使用 2-17 V$FLASH_RECOVERY_AREA_USAGE 2-18 备份快速恢复区 2-20 使用快速恢复区的优点 2-21 设置影响 RMAN 的参数 2-22 ...

    OCP中文教材(WORKSHOP II)

    Oracle Certified Professional(OCP)是Oracle公司为数据库管理员设立的专业认证,它涵盖了Oracle数据库的各个方面,包括安装配置、性能优化、备份与恢复等关键技能。本篇“OCP中文教材(WORKSHOP II)”主要聚焦在...

    Oracle Database 10g : 数据库管理 - 课堂练习 II 学生指南第1册

    Recovery Manager 的配置部分则详细介绍了 Recovery Manager 的功能、组件、配置步骤、备份目标、介质管理、快速恢复区的使用、快速恢复区的空间使用、RMAN 的连接类型、启动 RMAN、RMAN 命令行参数、配置 RMAN 的...

    OCP Oracle Database 11g Administration II Exam Guide Exam 1Z0-053

    考试1Z0-053旨在测试考生对于Oracle Database 11g的高级管理任务和概念的掌握程度,包括但不限于数据库架构、备份与恢复、RMAN(Recovery Manager)使用、监控、调优、闪回技术、内存管理、全球化设置等方面的能力。...

    Oracle 10g Administration Workshop II SG1

    - **配置步骤**: 配置RMAN涉及多个步骤,例如设置备份目的地、配置备份保留策略等。 **3.3 快速恢复区的使用** - **快速恢复区**: 是一个专用的文件系统区域,用于存放备份和归档日志文件。通过合理配置,可以显著...

    oracle 10g dba两日速成课程

    在Oracle数据库中,备份与恢复是确保数据安全性和可用性的核心环节。Oracle 10g提供了多种备份策略和恢复技术,包括物理备份、逻辑备份以及RMAN(恢复管理器)等工具。 1. **物理备份**:这涉及到复制数据库的数据...

Global site tag (gtag.js) - Google Analytics