这份学习笔记只是初步整理一下,其中内容还未上机验证。

 

还原(restore)和恢复(recovery)的区别:

还原,仅是把备份的文件拷回来。

恢复,不仅把备份的文件拷回来,而且把备份时间到还原为至的数据恢复出来。

 

备份和恢复的目标

尽量延长MTBF

尽量缩短MTTK

 

尽量减少数据损失

 

故障类别

用户进程故障

 

用户会话/用户进程

 

Instance(实例)

一个Instance = 一组后台进程 + 一个SGA

一组后台进程至少有5个进程,其中一个是PROGRAM MONITOR(PMON),用于监测用户进程。

SGA是系统全局区,本质是一个内存结构。

 

事务(TSN) Transaction

回退 Rollback / 撤销 还原

事务由PMON负责

 

DROP TABLE、TRUNCATE、DELETE之间存在的区别

DROP TABLE 删除表,包括定义

TRUNCATE 删数据,不能Rollback,释放空间。当数据量大时,执行速度慢;

DELETE        仅删数据,能Rollback,不释放空间。当数据量大时,执行速度快;

 

使用“时间点恢复”功能进行恢复,可恢复被删除的表,但时间点之后的新数据就没有了。

 

DBPITR 基于时间点的数据恢复

TSPITR 基于时间点的表空间恢复,范围小。

 

例程故障

 

Oracle的运行模式

共享模式

崩溃恢复

例程故障恢复

 

介质发生故障

使用备份恢复

 

respository 和 artifactory的区别 restoration和repair的区别_oracle

图中38是故障点;32是重做日志的顺序号(日志文件号);32到37时归档重做日志文件;

 

制定备份和恢复策略不是一个人的事情而是与整个公司和管理层有关的事情。

与业务要求和老板的决定有密切关系。

 

操作要求

测试和验证备份

在克隆的DB上,模拟故障,并进行恢复。

 

OLTP(online transaction process)

数据仓库用于DSS(决策支持系统)

 

灾难恢复(容灾)比备份要求高许多

 

Oracle内置的DataGuard机制来实现容灾功能。

其实就是一种异地归档机制。

 

SGA(System Global Area)

查询执行计划

为了便于Oracle对SQL语句的执行性能进行优化,要做到同样SQL语句。

同样SQL语句的定义是格式要一样,空格都不能多或少,大小写都要一样。

 

redo log buffer 实现重传,数据库恢复

online redo log file

 

check point 的作用是保持data file和control file的同步

data file和control file的SCN是一致的。

 

图的上面是Instance(例程)

图的下面是Oracle物理数据库

 

当Oracle工作在专用服务器模式下时,一个用户进程对一个服务器进程;

当Oracle工作在共享服务器模式下时,多个用户进程对一个服务器进程;

 

初始化参数文件用于初始化Instance。大多数参数有缺省值。

 

大型共享池

LARGE_POOL_SIZE

 

DBWn 只负责数据库缓冲区的脏数据写入数据文件,使两边一致。

脏数据是已修改过的数据

 

CheckPoint进程会通知DBWn和LGWR

DBWn隔长时间执行一次,数据量大

LGWR每时每刻的执行,数据量小

 

Commit的作用是对DB的修改进行永久化;

Commit时LGWR执行,而DBWn不执行,所以Commit的执行速度很快。

 

两个member大小一致,且分两个硬盘。

 

第3组用完循环到第1组时,做Check Point和归档(处于归档模式下)。归档是一个同步操作,所以需要等待。

 

非归档模式,一般采用2组

归档模式,一般采用3组

 

检查点Check Point之后,数据同步缓冲中的脏数据写入数据文件。

 

3种类型检查点和版本有关,9.2版本之后,有全部这三种类型检查点。

 

ALTER TABLE SPACE BEGIN BACKUP 进行只对表空间备份。

 

控制文件非常重要,所以要分别放在两个硬盘上。

 

RESET LOG 使日志文件顺序号又从1开始。

 

归档如果来不及做,那么LGWR进程就要等待。

 

由于前滚会把没有提交的数据写入数据文件,所以前滚之后要进行回退。

 

MTTR仅是指前滚时间,不包括恢复时间。

 

Check Point 频繁的话,恢复时间是短了,但数据库正常的运行速度就降低了。

 

Check Point 可以自动,也可以人工发命令。

 

创建数据库的三种方法

         安装Oracle时,顺带创建数据库

         用DBCA(DB Config Assistance)创建数据库

         使用Create database手工创建数据库

前2种方法适合中小型数据库,最后1种方法适合中大型数据库,因为可以多设置很多参数。

 

手工创建数据库的步骤如下:

         创建/修改初始化参数文件 initDB1.ora

创建如下三个目录(Winidows下路径是安装目录下的/database/;Linux下是/dbs):

bdump:background_dump_dest

cdump:core_dump_dest

udump:user_dump_dest

      

归档目标:log_archive_dest

归档格式:log_archive_format

 

       初始化参数文件的命名规则

       initSID.ora

 

         创建Oracle服务进程

Windows需要这步,而Linux不需要这步

oradim –new –sid DB2 –intpwd ora123 –startmode auto

       Instance created

       其中的ora123是初始密码

 

         修改一个文件 credb

文件中每句语句都用分号结束

把文件中的DB1改为DB2

 

       文件中的SYSAUX是10g新增的辅助表空间

 

         使用mkdir命令创建下列目录

E:/backup/db2

E:/backup/db2/arc

E:/backup/db2/hot      热备

E:/backup/db2/cold     冷备

 

         set ORACLE_SID=DB2

通过网络连接就不用设这个环境变量

脱机就要设这个环境变量

 

         sqlplus /nolog

SQL> Connect sys/ora123 as sysdba

SQL> startup nomonat

Oracle Instance started.

这个时候已经创建了SGA。

 

         创建数据库

SQL>@credb

Database created

创建了数据字典内部表(这是所有表的祖宗)

 

SQL>@?/RDBMS/ADMIN/catalog;

生成数据字典视图

?号代表Oracle安装目录

catalog后面缺省了”.sql”

这条命令的输出是

PL/SQL procedure Successfully Completed.

 

下面可以验证一下数据库是否创建成功。

SQL>select name from v$controlfile;

SQL>select * from v$log;

 

         SQL>@?/rdbms/admin/catproc

在DB中生成系统程序包,包括内置PL/SQL程序包,这个很重要,且生成很耗时。

 

 

oracle服务名举例

OracleServiceDB1

OracleServiceDB2

 

SID必须大写,等号两边不许有空格。