oracle概念架构

oracle概念架构

oracle物理结构

1、归档日志: 脱机备份(故障时数据恢复) 当数据库处于archivelog状态时,Oracle将自动归档重做日志文件。(v$ archived_log)
https://www.jianshu.com/p/4d8dd25267d9

2、密码文件: 授权用户启动和关闭数据库实例

3、参数文件: 定义数据库实例的特性
定义启动例程的初始化参数,包含了实例和数据库配置参数列表,包括文本参数文件(PFILE)和服务器参数文件(SPFILE),PFILE的名称格式为initSID.ora,SPFILE的名称格式为spfileSID.ora,SID是例程名。

4、数据库文件(物理结构)位于操作系统
(1)数据文件: 数据库中真实数据
用于存放所有的数据库数据,若干个数据文件组成表空间;它包括系统数据(数据字典)、用户数据(表、索引、簇等)、undo数据等。当建立数据库或表空间时,数据文件是通过DATAFILE选项制的。一个或多个数据文件在物理上组成一个表空间。(v$ datafile、v$ datafile_header )
(2)控制文件: 维护数据库和验证数据库完整性
每个数据库必须至少得有两个控制文件,以组为单位。Oracle系统通过控制文件保持数据库的完整性以及决定恢复数据时使用哪些重做日志。Oracle通过控制文件将实例与数据库连接在一起。当装载数据库时(mount),Oracle根据初始化参数control_files定位控制文件;当打开数据库时,Oracle会根据控制文件记载的信息,打开所有数据文件和日志文件。(v$controlfile)
(3)重做日志文件: 记录数据发生的变化,用于数据恢复(用于记录数据库的活动,记录数据库的所有修改操作)

实例

内存区(SGA)
基本的内存结构有系统全局区(SGA)和程序全局区(PGA)
SGA: 系统为实例分配的一组共享缓冲存储区
(1)数据库高速缓存(Database buffer cache)
保存用户近期查询的数据块,这样就不用去磁盘读取,可加快读取速度。由DB_CACHE_SIZE决定,它的大小由数据库实例init.ora中的DB_BLOCK_BUFFERS决定,ORACLE用LRU(最近最少算法)来管理可用空间。它分为脏列表、LRU(Least Recently Used)列表(空闲缓冲块、正在存取的缓冲块、已被修改但未被移到脏列表的缓冲块)
(2)重做日志缓存(Redo buffer cache)
将近期执行使数据发生变化操作的前后状态记录,用于重做日志较快速的进行数据恢复,在重做项被写到重做日志前,事物先被写到重做日志缓冲区中,它的大小由init.ora中的LOG_BUFFER决定。
(3)共享池(Shared pool)
(1)库高速缓存(Library cache) : 存储近期使用的SQL和PL/SQL
(2)数据字典高速缓存(Data dict cache): 存储数据文件、表索引用户、权限等可用来解析用户名和访问权限
(4)流池(Streaming pool) : 数据库中的一个数据共享
(5)大池(Large pool): 用于大部分用户进程的分配(减轻共享池的负担)
(6)java池(Java pool) : 用于编译Java语言编写的指令

进程结构
(1)后台进程
(1)系统监控进程(SMON) 监控数据库发生故障时自动恢复实例
在一个失败实例进程启动的时候执行崩溃回复,将数据字典中空闲的区域连接起来变成连续的。 
1. redo:重新应用被记载到重做日志但未写入数据文件的数据。
2.undo:取消未提交的数据。在打开数据库之后,Oracle自动使用undo段回退未提交的数据。
1.前滚 :前滚所有没有写入数据文件而记录在重做日志文件中的数据(重新写入)
2.打开数据库:为不影响用户操作,使前滚在后台进行,直接打开数据库
3.回滚未提交的数据
4.执行空间维护操作
(2)进程监控(PMON) 负责服务器进程的管理和维护
回滚没有提交的数据
释放所持有的当前表和行锁
释放进程占用的SGA资源
监听其他Oracle的进程,必要时重启后台进程
向Oracle TNS监听器注册刚启动的实例,如果监听器没启动进程监控会定期连接监听器来注册实例
(2)用户进程:用于执行一个应用程序的软件代码,用户进程同服务器进程进行通信是通过程序接口完成的。 
(3)服务器进程:ORACLE创建服务器进程来处理来自连接上的用户进程的请求。一个服务器进程负责同用户进程的会话。
(4)数据库写进程(DBWR) 将数据库高速缓存区的脏数据写到数据文件中,触发事件点
发生检查点事件
脏数据达到门限值
数据库缓冲区空间不足
表空间处于日备份状态
表空间被置为离线状态
表空间被置为只读状态
删除表或者截断表
超时
(4)重做日志进程(LGWR) 将重做日志缓冲区数据写到重做日志文件中(启动条件)
事务提交时
重做日志缓冲区的1/3被占用时
重做日志缓冲区有1MB数据时
数据库写进程把脏数据写到数据文件之前
(5)检验点进程(CKPT)
信息同步,保持一致性
(6)归档日志进程(ARCH) 将写满的重做日志文件数据写到一个归档日志中 (用于介质故障<磁盘损坏>时的数据库恢复)

ORACLE数据库的体系结构是由一个实例和若干个
数据库文件组成。

SQL语句分为:
 数据定义语句(DDL):create、drop、alter、truncate(不能回滚)
数据操作语句(DML):insert、select、update、delete、merge 
数据控制语句(DCL):grant、revoke 
事物控制语句:commit、rollback、savepoint

ORACLE数据库的核心组件:

数据字典(DD)
数据字典的结构是基表和视图,记录了数据库的系统信息, 其所有者为SYS。它由内部RDBMS(X ) 表 , 数 据 字 典 表 ( )表,数据字典表( (),动态性能视图(v$)和数据字典视图(all_,user_,dba_)组成。当执行DDL语句时,数据库修改数据字典。数据字典视图有三种:ALL_xxx,USER_xxx,DBA_xxx。
动态性能表(DPT)
一组虚表(Virtual tables),记录数据库当前的活动情况,从内存和控制文件中获取信息,所有者为SYS,以v $开头,v $fixed_table(一览表);
诊断IO、CPU性能状况的方法: 
查询并分析v $system_event/v $session_event(db file sequent )/v $session_wait(p1-p3的值.file_id/block_id/blocks)可查询Oracle系统的性能(包括CPU/IO/其他性能状况); 
查询并分析v $sqlarea(disk_reads或buffer_gets/executions较大的SQL)。
触发器
PL/SQL包
用户与角色:角色是一些权限的集合,分为dba、connect、resource、exp_full_database、imp_full_database。用户分为sys、system。 
用户权限包括两种:是指执行某一SQL语句或访问另一用户对象的权限。它分为系统权限和对象权限(Dba_roles/dba_roles_privs/dba_sys_privs/dba_tab_pri
vs/dba_col_privs/role_role_privs/role_sys_privs/role_ta
b_privs)

创建用户:Create user username identified by password; 
修改用户:Alter user username identified by newpassword; 
创建角色:Create role rolenameidentified by password; 
修改角色:Alter role rolename identified by new password;

Oracle逻辑架构

ORACLE数据库的逻辑结构:
1. 表空间(tablespace):是数据库的逻辑划分,每个数据库至少有一个表空间,一个表空间只能属于一个数据库。主要存放的是表,所以称作表空间。system表空间必须在MOUNT状态下恢复,而其它的数据表空间可以在OPEN状态下恢复,临时表空间不需要恢复。

2.段(segment):由一组范围组成,分为数据段、索引段、回滚段和临时段。
数据段:对于每个非聚集的表有一数据段,表的所有数据存放在该段里。每一个聚集有一个数据段。 
索引段:每一个索引有一个索引段,存储索引数据。
回滚段:由DBA建立,用于存储操作之前的数据影像(备份)。查看是否有回滚段竞争:
select * from v$waitstat;
临时段:当一个SQL语句需要临时工作区时,由ORACLE建立。当语句执行完毕,临时段的范围退回给系统。

3.盘区(extent):由连续数据块组成;

4.ORACLE数据块(block):是ORACLE管理数据文件中存储空间的最小逻辑单位。

数据块的物理结构:
块头(header):包含块的信息,即什么类型的段数据存储在块中,什么段在块中有数据,块地址以及指向存储在其中的实际行的指针;
数据存储区(data):是块实际存储数据的地方; 
自由空间区(free space):保留区域,用于存储有关在块中的行即将要更新的信息。
PCTFREE和PCTUSED:PCTFREE规定了在块中保留的用于更新操作所需的自由空间的百分比。PCTUSED规定了最小的已使用空间的百分比。已使用空间百分比低于PCTUSED时,块被加入到自由列表中。自由列表中的块可以insert操作。
PCTFREE和PCTUSED是段的两个参数。当ORACLE向数据库中写信息时,必须首先在一个段的分配区中找到一个或更多块来存储信息。ORACLE保留了块的一个列表,这些块对每个段来说都是自由的,称为自由列表。ORACLE使用PCTFREE和PCTUSED参数的组合确定块何时有、何时没有足够的空间接受新信息。
pctused:如果数据块的使用率小于pctused的值,则该数据块重新加入到freelist中。 
Pctfree:如果数据块的使用率高于pctfree的值,则该数据块从freelist中移出。

表空间与数据文件

ORACLE数据库将数据逻辑的存储在表空间里,物理的存储在数据文件里。一个表空间只能属于一个数据库,而一个数据库能拥有多个表空间。一个表空间由一个或多个数据文件组成,一个数据文件只能属于一个表空间。数据文件是存储模式对象数据的容器(仓库)。 
表空间在数据库中分为两种:系统表空间和非系统表空间。系统表空间中存有数据字典,系统表空间中还包含系统还原(回滚)段。非系统表空间由DBA创建,非系统表空间可以存储用户的数据段、索引(index)段、还原(undo)段和临时(temp)段。创建非系统表空间的语句:
CREATE TABLESPACE表空间名
[DATAFILE子句] 
[MINIMUM EXTENT 正整数[K|M]] 
[BLOCKSIZE正整数[K]] 
[LOGGING|NOLOGGING] 
[DEFAULT 存储子句] 
[ONLINE|OFFLINE] 
[PERMANENT|TEMPORARY] [区段管理子句] 
[段管理子句]

表空间的磁盘空间管理
数据字典管理表空间:在早期是由数据字典管理表空间的,它是通过freelist表来管理表空间的。数据字典(系统)管理表空间中所有的EXTENTS的管理都是在数据字典中进行的,而且每一个存储在同一个表空间中的段可以具有不同的存储子句。这种管理方式可以修改存储参数,因此其存储管理较灵活,但系统的效率较低,并且有时需要合并碎片。
本地管理表空间:它的空闲EXTENTS是在表空间中管理的,使用位图(Bitmap)记录空闲EXTENTS,位图中的每一位对应一块或一组块,而每位的值指示空闲或分配。当一个EXTENT被分配或释放时,Oracle服务器就会修改位图中相应位的值来反映该EXTENT的新的状态。位图存放在表空间所对应的数据文件的文件头中。使用本地管理的表空间减少了数据字典表的竞争,而且当磁盘空间分配或收回时也不会产生回滚(还原),它也不需要合并碎片。但是本地管理表空间无法修改存储参数,因此没有数据字典管理表空间那样灵活,但系统效率较高。 
在本地管理的表空间中,表空间的管理,如磁盘空间的分配与释放等已经不在需要操作数据字典了,系统表空间的瓶颈问题得到了很好的解决。

ORACLE数据库中逻辑结构与物理结构:
每个数据库是由一个或多个表空间所组成(至少一个)。 
每个表空间基于一个或多个操作系统的数据文件(至少一个)。
每个表空间中可以存放有零个或多个段(Segment)。 
每个段是由一个或多个区段(Extent)所组成。 
每个区段是由一个或多个连续的Oracle数据块所组成。 
每个Oracle数据块是由一个或多个连续的操作系统数据块所组成。 
每个操作系统数据文件是由一个或多个区段(Extent)所组成。 
每个操作系统数据文件是由一个或多个操作系统数据块所组成。

Oracle数据库启动过程及状态详解

(nomount、mount和open)
Oracle Server主要由实例(instance)和数据库(database)组成。实例(instance)由共享内存(SGA)后台进程系统组成,数据库(database)是存储在磁盘上的一系列物理文件。
SGA主要由Share Pool(共享池,又分Library Cache和Data Dictionary Cache,前者临时存储最近执行过的语句代码等,后者临时存储数据位置、表定义及用户权限等)、Database Buffer Cache(数据缓冲区,临时存储读过的数据块)、Redo Log Buffer(重做日志缓冲区,临时存储数据库修改操作)、Large Pool(大池,分担Share Pool部分工作供共享服务器进程使用,如备份恢复、大型I/O操作、并行查询等)和Java Pool(Java池,分析Java语句)。

后台进程是数据库和操作系统进行交互的通道,后台进程的命名由ORACLE_SID决定,ORACLE根据ORACLE_SID来寻找参数文件启动实例。是Oracle数据库为保持最佳性能和协调多用户请求而设置的,主要有DBWR(将Database Buffer Cache数据写入Data Files)、LGWR(将Redo Log Buffer数据写入Redo Log Files)、CKPT(协调数据文件、控制文件和重做日志,将System Change Number即SCN写入到控制文件和数据文件头部,促使DBWR、LGWR执行)、SMON(System Monitor,3方面作用:instance recovery实例故障数据恢复、合并空闲碎片空间、回收临时段)、PMON(用户例程意外终止时处理事务,如回退事务、释放锁及其他资源等)、ARCH(将Redo Log Files写入Archive Log Files)、CJQ0(job queue coordinator)、RVWR(recover writer,为flashback database提供日志记录)等进程。

数据库(database)是指存储在磁盘上的一组物理文件,如数据文件(Data files,用于存储数据)、控制文件(Control files,存储数据文件、重做日志文件、归档日志文件位置及维护数据库完整性所需信息)和重做日志文件(Redo Log files,存储修改数据的所有操作记录以备故障后恢复),这三个是启动数据库必须的文件;另外还有参数文件(Parameter file,设置内存后台进程的启动等)、归档日志文件(Archived Log files,归档记录写满的重做日志文件的内容)和口令文件(Password file,验证用户名密码),这三个是非必须的文件。
在这里插入图片描述

https://jingyan.baidu.com/article/fdbd4277bea111b89f3f4850.html

nomount状态:启动实例。

Reading the initialization file from $ORACLE_HOME/dbs in the following order:

从环境变量下dbs目录按如下顺序读取初始化文件:

-first spfileSID.ora

首先,读取spfile+实例名.ora

-if not found then, spfile.ora

若未发现文件则读取spfile.ora

-if not found then, initSID.ora

若未发现文件则读取init+实例名.ora

Specifying the PFILE parameter with STARTUP overrides the default behavior.

指定pfile参数文件启动以替代默认启动方式

  • Allocating the SGA

分配SGA

  • Starting the background processes

启动后台进程

  • Opening the alertSID.log file and the trace files

启动预警日志文件(记录实例生命周期内事件,如系统内部错误、数据块损坏、系统参数修改等)和追踪文件(记录SQL操作及时间消耗等)

The database must be named with the DB_NAME parameter either in the initialization Parameter file or in the STARTUP command.

数据库必须用初始参数文件或启动命令中的DB_NAME参数命名。

mount状态:关联实例与数据库,读取控制文件并获取数据文件和重做日志文件名称状态。

Mounting a database includes the following tasks:

装载数据库包括以下任务:

  • Associating a database with a previously started instance

将先前启动的实例与数据库相关联

  • Locating and opening the control files specified in the parameter file

从参数文件中找到控制文件位置并打开

  • Reading the control files to obtain the names and status of the data files and online redo log files.However,no checks are performed to verify the existence of the data files and online redo log files at this time.

从控制文件中读取数据文件及重做日志文件名称与状态,但是,此时并不检查数据文件与重做日志文件的存在性。

open状态:

opening the database includes the following tasks:

打开数据库包含以下任务:

opening the online data log files

打开数据文件

opening the onling redo log files

打开重做日志文件

If any of the datafiles or noline redo log files are not present when you attempt to open the database ,the oracle server returns an error.

若在打开数据库时数据文件或重做日志文件任何一个不存在,则Oracle服务器返回一个错误。

During this final stage,the oracle server verfies that all the data files and online redo log files can be opened and checks the consistency of the database. If necessary,the SMON background process initiates instance recovery.

在最后阶段,Oracle数据库验证数据文件和重做日志文件可否打开并检验数据库的一致性,若不一致,SMON后台进程将启动实例恢复。

shutdown或startup状态可执行的操作:

shutdown

shutdown有四个参数:normal、transactional、immediate、abort,不带参数默认为normal。

shutdown normal:不断开现在连接用户,阻止任何用户建立新的连接,包括管理员在内。已经连接的用户能够继续他们当前的工作,如递交新的更新事务,直到此用户自行断开连接。这样需要等待的时间长,可以查出现连用户,再通知其自行断开。所有的用户都断开连接,数据库才进行关闭操作,即关闭数据库、卸载数据库、终止例程。在这种情况下关闭的数据库在重新启动后,不会出现问题。启动时不需要实例恢复。

shutdown transactional:阻止任何用户建立新连接,等待所有当前连接用户的未递交的活动事务提交完毕,然后立即断开用户的连接。所有的用户都断开连接则立即关闭数据库,进行关闭数据库、卸载数据库、终止进程等操作。这种方式,用户有可能正在算账,做复杂报表!一次数据库操作做不完的,在刚做了一次数据库操作后,将被断开,这样对用户有一定影响,启动时不需要实例恢复。

shutdown immediate:阻止任何用户新的连接,同时限制当前连接用户开始新的事务。如果已连接用户有未完成的事务,则数据库系统不会等待他们完成,而是直接把当前未递交的事务回退。数据库系统不再等待用户主动断开连接,当未递交的事务回退成功后,系统会直接关闭、卸载数据库,并终止数据库进程,启动时不需要实例恢复。

shutdown abort:当数据库出现故障时,可能以上三种方式都无法正常关闭数据库,则使用这种方法。强制结束当前正在执行的SQL语句,任何未递交的事务都不被回退!这种方法基本上不会对控制文件或者参数文件造成破坏,这比强制关机要好一点(在无法正常关闭数据库的时候),启动时自动进行实例恢复。

startup

startup有7个参数:nomount、mount、open、pfile、force、restrict和 recover

startup nomount:通过参数文件,分配sga,启动数据库后台进程,不打开控制文件和数据文件,不能访问数据库。

startup mount:仅给dba进行管理操作,不允许数据库用户访问。仅当前实例的控制文件被打开,数据文件未打开,在这个模式下可以进行如下操作:重命名数据文件、添加取消或重命名重做日志文件、设置归档模式、设置闪回、执行完整的数据库恢复操作等。

startup open:startup的默认参数就是open,打开数据库,允许数据库的访问,当前实例控制文件中所描述的所有文件都已经打开。

startup pfile=FILENAME:以FILENAME为初始化文件启动数据库,不是采用默认初始化文件。

startup force:中止当前数据库的运行,并开始重新正常的启动数据库。

startup restrict:只允许具有restricted session权限的用户访问数据库,该模式下登陆者可做如下操作:执行数据库数据的导出或导入、执行数据装载操作用SQL*Loader、暂时阻止一般的用户使用数据、在某个移植过程和升级操作过程中restricted session登陆后可使用ALTER SYSTEM 语句来禁止RESTRICTED SESSION特性ALTER SYSTEM DISABLE RESTRICTED SESSION;如果是在非受限模式下打开的数据库,后来发现需要限制访问,此时可以使用带ENABLE RESTRICTED SESSION 子句的ALTER SYSTEM 语句来完成。

startup recover:数据库启动,并开始介质恢复。

started 是一般启动到nomount状态,
一般出现这个,数据可能在加载数据控制文件、数据文件和日志文件出现的问题
可以尝试先关闭数据库,再次启动。

SCN

Oracle中的SCN(system change number)相当于数据库中的一个时钟,只不过不是用时分秒来计量,这种内部时钟机制,可称为逻辑时钟,每个数据库都有一个全局SCN生成器,本质上就是不重复的数字。
为什么Oracle不用系统时间来计录呢?原因是机器上的时间容易被人为修改,从而易造成内部记录的错乱。所以它采用自己产生的SCN来区分所有操作的先后顺序。

SCN号记录到日志文件,控制文件,数据文件及许多数据库表记录。

一、查看数据库的当前SCN号

SQL> select dbms_flashback.get_system_change_number from dual;
SQL> select current_scn from v$database;

二、SCN存储于在线重做日志文件中

SQL> select GROUP#, STATUS, FIRST_CHANGE# from v$log;

GROUP# STATUS                         FIRST_CHANGE#

     1 INACTIVE                           464633029
     2 INACTIVE                           464637664
     3 CURRENT                            464638303

三、SCN存在于控制文件中
补充:
控制文件中的信息包括:
1.数据库的名字,取自初始化参数说明的数据库名字或CREATE DATABASE语句中所使用的名字
2.数据库创建时间戳,是数据库创建时产生的。
3.数据库标识符,是创建数据库时ORACLE自动生成的。
4.联机重做日志文件的名字和准确位置,增加删除修改重做日志文件时,ORACLE会修改相关信息。
5.当前日志的序列号,是在日志切换时ORACLE记录的。
6.检查点信息CHECKPOINT,是在产生校验点时ORACLE记录的以及SCN。
7.日志的历史信息,是在日志切换时ORACLE记录的。
8.归档日志文件的准确位置和状态,是在重做日志文件被归档(复制到归档日志文件)时ORACLE记录的
9,数据文件的名字和准确位置,增加删除修改数据文件名字,ORACLE会修改相关信息。
10.表空间的相关信息,增加删除表空间时,ORACLE会修改相关信息。
11.备份准确位置和状态,这些信息是由恢复管理器记录的。

查询用户表,视图信息
select * from all_tab_comments – 查询所有用户的表,视图等。
select * from user_tab_comments – 查询本用户的表,视图等。
select * from all_col_comments --查询所有用户的表的列名和注释。
select * from user_col_comments – 查询本用户的表的列名和注释。
select * from all_tab_columns --查询所有用户的表的列名等信息。
select * from user_tab_columns --查询本用户的表的列名等信息。

完全恢复和不完全恢复

名词解释:
顾名思义,完全恢复就是指数据没有丢失的恢复了。不完全恢复是指恢复后有部分数据丢失。它们是数据库的两种恢复方式。

完全恢复:利用重做日志或增量备份将数据块恢复到最接近当前时间的时间点。之所以叫做完整恢复是由于Oracle应用了归档日志和联机重做日志中所有的修改。
不完全恢复:利用备份产生一个非当前版本的数据库。换句话说,恢复过程中不会应用备份产生后生成的所有的重做日志。

 通常在下列情况下生成整个数据库的不完整恢复
 ● 介质失败损坏了几个或全部的联机重做日志文件;
 ● 用户操作造成的数据丢失,比如,用户误删除了一张表;
 ● 由于个别归档日志文件的丢失无法进行完整的恢复;
 ● 丢失了当前的控制文件,必须使用备份的控制文件打开数据库。

为了执行不完整介质恢复,必须使用恢复时间点以前的备份来还原数据文件,并在恢复完成后使用RESETLOG选项打开数据库。

resetlogs参数

在不完全恢复期间,通常需要使用resetlogs命令打开数据库,这是因为我们要从已经建立的现有重做日志流中脱离出来。resetlogs参数表示一个数据库逻辑生存期的结束了另一个数据库逻辑生存期的开始。数据库的逻辑生存期也称为一个对应物(incarnation)。每次使用resetlogs命令时,SCN计数器不会被重置,但是Oracle会重置其他计数器(如日志序列号),同时还会重置联机重做日志的内容。

经过测试,当在非归档模式下尝试执行完全恢复时,发出alter database open 后,RMAN会报如下错误:

SQL> **alter database open;**   
 alter database open
 *
 ERROR at line 1:
 ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

但是如果加上resetlogs,就不会报错了。而且从恢复的过程来看,期间确实使用在联机日志文档,也就是说它执行的是完全恢复。这说明在非归档模式下执行完全恢复后,打开数据库时也要重置重做日志。其实这也很好想,非归档模式下,没有归档的重作日志,完全恢复时使用联机日志后,这些联机日志文件就没什么用了,因此Oracle就重置日志文件序列号(个人觉得:理论上来说,是可以不重置的,日志文件的序号直接在现有的日志序号上增加,但是这样日志序号会越来越大。Oracle应该是考虑到这一点就在非归档模式下执行完全恢复和不完全恢复时都重置了重做日志)。

完全恢复

 完全恢复很简单,不多说,如下:
 $ rman target /                       ##登录rman工具,如果使用了catalog,则登陆方法rman targetsys/Oracle@lscatalogcata/cata@leo
 RMAN> startup mount           ##必须为mount状态,才能restore 和 recover 数据库
 RMAN> restore database;     ##复制旧数据文件覆盖损坏的数据文件
 RMAN> recover database;    ##数据文件头SCN号同步当前日志中最后一个SCN号【完全恢复】
 RMAN> alter database open [resetlogs];    

不完全恢复

不完全恢复有一个核心要领需要牢记:不完全恢复影响的是整个数据库,不能只对数据库的一部分执行不完全恢复。不完全恢复使用的方法通常有:基于时间、SCN、日志序列、还原点或基于删除的恢复。

$ rman target /
RMAN> startup mount
RMAN>run
{
set until time “to_date(‘07/01/2015 15:00:00’, ‘mm/dd/yyyy hh24:mi:ss’)”;
restore database;
recover database;
alter database open;
}

从执行过程来看,不完全恢复就是加了一个限制条件,时间/SCN等。如上基于时间点的恢复,Oracle会查找目标恢复时间之前并与恢复时间最近的备份集。如果没有找到可用的备份集,就会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

京天不下雨

thanks

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值