一. Oracle用户管理备份介绍

Oracle物理备份核心就是将物理文件拷贝一份副本;存放在磁盘上。物理文件指的是:数据文件,控制文件,日志文件,参数文件等等。

  • 根据数据库状态而分:备份可分为热备份冷备份。区别是Oracle数据库是否启动。
  • 根据备份的状态而分:备份可分为一致性备份不一致性备份。区别是数据文件和控制文件SCN是否一致。

二. Oracle用户管理恢复介绍

  Oracle物理恢复就是在Oracle服务器由不定的因素造成崩溃;这时需要根据备份文件进行Oracle恢复。根据恢复状态而分:恢复可分为完全恢复和不完全恢复。区别在于是否恢复到最新的时间点。

三. Oracle冷备份

  数据库在关闭状态下完成所有物理系统文件拷贝的过程,也称脱机备份。场景适合于非归档模式下,数据库处于一致性状态。

3.1 备份操作原理

  • 在运行的库中得到数据库运行的所有的物理文件位置
  • 关闭数据库(shutdown)
  • 拷贝物理文件到备份路径或备份设备
  • 启动数据库(open)

3.2 冷备份脚本

  来源于Oracle 冷备份

set feedback off
set heading off
set verify off
set trimspool off
set pagesize
set linesize
define dir = '/home/oracle/cool'
define script = '/home/oracle/cool/sql/coolbak.sql'
spool &script
select 'ho cp ' || name || ' &dir' from v$controlfile
union all
select 'ho cp ' || name || ' &dir' from v$datafile
union all
select 'ho cp ' || member || ' &dir' from v$logfile
union all
select 'ho cp ' || name || ' &dir' from v$tempfile
/
create pfile = '&dir/initorcl.ora' from spfile;
ho cp /u01/app/oracle/dbs/orapwora235 &dir
spool off
shutdown immediate
start &script
ho rm &script
startup

四. Oracle热备份

  Oracle 热备份是指数据库处于open状态下,对数据库的数据文件、控制文件、参数文件、密码文件等进行一系列备份操作;设置归档模式

archive log list
alter system set log_archive_dest_1 = 'LOCATION=/data/arch' scope = spfile;
shutdown immediate;
startup mount
alter database archivelog;
alter database open;

4.1 备份原理

  参考于Oracle 热备份

  • 热备的过程

    • 冻结块头-->控制SCN在备份时不发生变化
    • 进行物理拷贝
    • 解冻块头-->让SCN可以变化(当对SCN解冻后,系统会自动更新SCN至最新的状态)
  • 基于数据库的热备
    • alter database begin backup;
    • 拷贝所有的datafile到备份目录
    • alter database end backup;
  • 基于表空间的热备
    • alter tablespace tablespace_name begin backup;
    • 拷贝tablespace_name表空间的数据文件到备份目录
    • alter tablespace tablespace_name end backup;

4.2  热备份脚本

set feedback off
set heading off
set verify off
set trimspool off
set pagesize
set linesize
define dir = '/home/oracle/hotbak'
define script = '/tmp/hotbak.sql'
spool &script
select 'ho cp ' ||name|| ' &dir' from v$datafile;
spool off
alter database begin backup;
start &script
alter database end backup;
alter database backup controlfile to '&dir/controlbak.ctl';
create pfile = '&dir/initorcl.ora' from spfile;

五.Oracle用户管理恢复

  Oracle数据库恢复;分为 数据还原 和 数据恢复 两步。
  首先使用备份还原数据,然后再应用归档日志、重做日志的恢复方式称为介质恢复。介质恢复能将一个经过还原的数据更新到当前的时间点或之前的某个时间点。通常介质恢复这个术语专指对数据文件进行恢复的过程。数据块的介质恢复指数据文件中的个别数据块出现错误时进行的特殊恢复操作。
  介质恢复通常又可以分为 完全恢复 和 不完全恢复

  • 完全恢复

  使用数据库,表空间或数据文件的备份进行还原,再使用归档,重做日志或增量备份将数据更新到当前时间点;用户可以实现基于对数据库、表空间、数据文件执行完全恢复;

对整个数据库实现完全恢复的步骤

    • 启动数据库到mount 状态
    • 确保所有需要被恢复的数据文件处于联机(online)状态
    • 还原数据库或需要恢复的数据文件
    • 应用联机重做日志或/与归档重做日志

对表空间及数据文件实现完全恢复的步骤

    • 如果数据库处于打开状态,应将需要恢复的表空间或数据文件置为脱机(offline)状态
    • 还原需要恢复的数据文件
    • 应用联机重做日志或/与归档重做日志
    • 使表空间或数据文件联机
    • 不完全恢复

与完全恢复是同样的步骤,只不过不完全恢复仅仅是将数据恢复到某一个特定的时间点或特定的SCN,而不是当前时间点。下列情况通常需要进行不完全恢复:

  • 不完全恢复的步骤

介质故障(media failure)导致部分或全部联机重做日志(online redo log)损坏,用户操作失误(user error)导致数据丢失,例如,用户由于疏忽而移除了表,提交了无效的数据到表,由于归档重做日志(archived redo log)丢失而无法进行完全恢复(complete recovery),当前控制文件(control file)丢失,必须使用备份的控制文件打开(open)数据库

    • 关闭数据库并备份数据库(以防止恢复失败)
    • 启动数据库到mount 状态
    • 还原所有受损的数据文件,同时可以选择还原控制文件
    • 将数据库恢复至某个时间点、序列、或系统改变号
    • 使用RESETLOGS关键字打开数据库

5.1 模拟完全恢复

  完全恢复必要条件是:有完整的备份和完整的日志。

场景:某个数据文件所在的磁盘被清理或者挂掉了。但是联机重做日志和归档日志是完整。这是需要根据备份恢复到最新的时间点。

  • 先创建表t_lottu;并插入5条记录
SQL> create table t_lottu as select level as id from dual connect by level <= 5;
Table created.
  • 模拟故障;删除数据文件lottu01.dbf,system01.dbf。
[oracle@oracle235 ~]$ rm /u01/app/oradata/ora235/system01.dbf
[oracle@oracle235 ~]$ rm /data/oracle/data/lottu01.dbf
  • 这时数据库虽然可以连;但是执行命令会报某个数据文件不存在。
SQL> conn lottu/li0924
Connected.
SQL> insert into t_lottu values (6);
insert into t_lottu values (6)
*
ERROR at line 1:
ORA-01116: error in opening database file 5
ORA-01110: data file 5: '/data/oracle/data/lottu01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
  • 重启数据库;会报1号数据文件不存在?因为我们前面删除了system01.dbf
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup
ORACLE instance started. Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
Database mounted.
ORA-: cannot identify/lock data file - see DBWR trace file
ORA-: data file : '/u01/app/oradata/ora235/system01.dbf'
  • 查看哪些数据文件需要恢复?
SQL> select FILE#,ONLINE_STATUS from v$recover_file;

     FILE# ONLINE_
---------- -------
1 ONLINE
5 ONLINE
  • 数据还原;将备份好的文件拷贝到对应的目录
[oracle@oracle235 hotbak]$ cp system01.dbf /u01/app/oradata/ora235
[oracle@oracle235 hotbak]$ cp lottu01.dbf /data/oracle/data
  • 数据恢复;并打开数据库。验证数据恢复情况。
SQL> recover datafile 1,5;
Media recovery complete.
SQL> alter database open; Database altered. SQL> conn lottu/li0924
Connected.
SQL> select * from t_lottu; ID
----------
1
2
3
4
5

5.2 模拟不完全恢复-PITR

  是将数据恢复到某一个特定的时间点或特定的SCN,而不是当前时间点。

场景:模拟用户误操作删除某个表;恢复到表删除之前。这场景用Oracle闪回技术很好实现。

  • 误删表t_lottu
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY
-------------------
2018-08-08 00:11:46 SQL> drop table t_lottu; Table dropped.
  • 关闭数据库
SQL> shutdown abort;
ORACLE instance shut down.
  • 用备份中的数据文件替换数据库中数据文件
[oracle@oracle235 ora235]$ rm *.dbf
[oracle@oracle235 ora235]$ rm /data/oracle/data/lottu01.dbf
[oracle@oracle235 ora235]$ cd /home/oracle/hotbak/
[oracle@oracle235 hotbak]$ cp *.dbf /u01/app/oradata/ora235
[oracle@oracle235 hotbak]$ mv /u01/app/oradata/ora235/lottu01.dbf /data/oracle/data/lottu01.dbf
  • 数据恢复
SQL> startup mount
ORACLE instance started. Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
Database mounted.
SQL> recover database until time '2018-08-08 00:11:46';
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line :
ORA-: must use RESETLOGS or NORESETLOGS option for database open SQL> alter database open resetlogs; Database altered. SQL> conn lottu/li0924
Connected.
SQL> select * from t_lottu; ID
----------

若是模拟的场景;还可以采用TSPITR恢复也可以;但需要涉及rman。

六. 总结

用户管理的备份方式是使用操作系统复制相关文件。

  • 备份效率不高。特别是拥有大量的数据的数据库。
  • 备份和恢复比较繁琐。由于相关文件存在不同的系统路径。还需要通过数据字典找到对应的路径。

参考文献

4. Oracle数据库用户管理备份与恢复的更多相关文章

  1. Oracle 数据库用户管理

    Oracle 数据库用户管理 Oracle 权限设置      一.权限分类: 系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言). 实体权限:某种权限用户对其它用户的表或视图的存取权限 ...

  2. oracle数据库管理--用户管理

    一.oracle数据库用户管理 1.sys和system用户区别 (1)存储的数据的重要性不同:        sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于or ...

  3. Oracle数据库用户数据完整备份与恢复

    使用PLSQL-Developer工具可以快速便捷地完成Oracle数据库用户.表的备份恢复. Oracle数据库用户数据完整备份与恢复 1. 备份 1.1   PL/SQL->工具->导 ...

  4. Oracle 基于用户管理恢复的处理

    ================================ -- Oracle 基于用户管理恢复的处理 --================================ Oracle支持多种 ...

  5. Oracle数据库---用户与角色

    Oracle数据库---用户与角色 2019年02月26日 10:56:10 俊杰梓 阅读数:21 标签: 数据库 更多 个人分类: 数据库   版权声明:版权所有,转载请注明出处.谢谢 https: ...

  6. Oracle数据库用户的密码过期问题处理

    SQL> select username, user_id, account_status,expiry_date, profile from dba_users where username ...

  7. 简便删除已经存在的oracle数据库用户UPAY3LINGXI_YS

    简便删除已经存在的oracle数据库用户UPAY3LINGXI_YS:1.Toad工具用oracle最大权限用户登录system2.查看正在使用UPAY3LINGXI_YS的进程select * fr ...

  8. 删除oracle数据库用户

    手工删除ORACLE数据库用户时常会出现会话进程仍在使用导致删除失败的情况.需要查询会话并将会话删除才能成功将数据库用户删除,比较不方便. 适用场景 自动删除oracle数据库用户 基本知识 orac ...

  9. Linux删除ORACLE数据库用户失败提示ORA-01940解决方法

    操作环境 SuSE11+Oracle11gR2 问题现象 删除ORACLE数据库用户失败,提示ORA-01940: cannot drop a user that is currently conne ...

随机推荐

  1. tcp连接状态查看

    linux常用查看tcp状态工具netstat和ss,这两个工具查看时都有1个Recv-Q和Send-Q 解释如下: 对应处于Listen状态的套接字: Recv-Q表示已建立连接队列中连接个数(等待 ...

  2. Windows下USB磁盘开发系列一:枚举系统中U盘的盘符

    个时候我们需要区分系统磁盘中,哪些是U盘,这样我们在访问的时候可以区别对待.具体方法如下: 1,调用GetLogicalDrives()返回系统盘符标记位 API GetLogicalDrives() ...

  3. android: LayoutInflater使用

    1. 题外话 相信大家对LayoutInflate都不陌生,特别在ListView的Adapter的getView方法中基本都会出现,使用inflate方法去加载一个布局,用于ListView的每个I ...

  4. 学习shader之前必须知道的东西之计算机图形学-渲染管线

    引言 shader到底是干什么用的?shader的工作原理是什么? 其实当我们对这个问题还很懵懂的时候,就已经开始急不可耐的要四处搜寻有关shader的资料,恨不得立刻上手写一个出来.但看了一些资料甚 ...

  5. 如何在windows2008/2012上安装启明星系统。

    启明星系统提供多种安装方式.安装包里自带了setup.exe.每个程序的 install下有在线安装(例如请假应用程序为book,则默认为 http://localhost/book/install ...

  6. 修改覆盖springboot默认日志策略logback

    目录 背景 自定义 背景 springboot初始化了日志的默认实现,只要我们在配置文件添加对应的配置即可. 比如 logging: file: logs/application-debug.log ...

  7. [Mockito] Mock List interface

    In this post, we are going to see more functionalities in Mockito. Mock a List interface: @Test publ ...

  8. 如何免费的让网站启用https

    本文源自酷壳:如何免费的让网站启用HTTPS 今天,我把CoolShell变成https的安全访问了.我承认这件事有点晚了,因为之前的HTTP的问题也有网友告诉我,被国内的电信运营商在访问我的网站时加 ...

  9. C++ 重载运算符和重载函数

    C++ 重载运算符和重载函数 C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是 ...

  10. 理顺FFT

    DFT(Discrete Fourier Transform):离散傅立叶变换 直观的计算DFT算法复杂度为O(N*N). FFT(Fast Fourier Transformation):快速傅立叶 ...