Oracle高级培训 第1课 学习笔记 修正版

 
Oracle高级培训 第1课 学习笔记 修正版
本课笔记中的页码与《Oracle9i 数据库管理基础II Ed 1.1 Vol.1.pdf》对应
  
指南下载地址:
 
作者:JackYang ( JackYang.sh@gmail.com)
时间:2006-10-10
 
P151
还原(restore)和恢复(recovery)的区别:
还原,仅是把备份的文件拷回来。
恢复,不仅把备份的文件拷回来,而且把备份时间到还原为至的数据恢复出来。
 
P153
备份和恢复的目标
尽量延长MTBF(平均故障间隔时间)
尽量缩短MTTR(平均恢复时间)
尽量减少数据损失
 
P154
故障类别:
语句故障,通常不需要DBA干预,P156
用户进程故障,通常不需要DBA干预,P158
用户错误,通常需要DBA干预,P160
网络故障
例程故障,通常需要DBA干预,P162
介质故障,通常需要DBA干预,P165
 
 
用户会话/用户进程
先建立连接,Oracle服务器在验证了用户后,启动会话。
 
Instance(实例)
Oracle Instance是一种访问Oracle数据库的方式;
一个Instance = 一组后台进程 + 一个SGA
一组后台进程至少有5个进程,其中一个是PROGRAM MONITOR(PMON),用于监测用户进程。
SGA是系统全局区,本质是一个内存结构。
一组后台进程用于管理数据库。
 
Oracle的内存结构由系统全局区(SGA)和程序全局区(PGA)组成。
两者的区别:SGA在Oracle例程启动时分配;PGA在服务器进程启动时分配;
 
SGA用于存储数据库进程共享的数据库信息(包含有关Oracle服务器的数据和控制信息)。其实就是一大块共享内存。
SGA包括的内存结构有:共享池;数据库缓冲区高速缓存;重做日志缓冲区;其它结构;大型共享池;Java池;
查看SGA内存分配情况的命令:
SQL>SHOW SGA;
 
事务(TSN) Transaction
回退 Rollback / 撤销 还原
事务由PMON负责
 
P160
DROP TABLE、TRUNCATE、DELETE之间存在的区别
DROP TABLE 删除表,包括定义
TRUNCATE 删数据,不能Rollback,释放空间。当数据量大时,执行速度快;
DELETE        仅删数据,能Rollback,不释放空间。当数据量大时,执行速度慢;
 
P161
使用“时间点恢复”功能进行恢复,可恢复被删除的表,但时间点之后的新数据就没有了。
 
DBPITR 基于时间点的数据恢复
TSPITR 基于时间点的表空间恢复,范围小。
 
例程故障
 
Oracle的运行模式
共享模式
崩溃恢复
例程故障恢复
 
介质发生故障
使用备份恢复
 

图中38是故障点;32是重做日志的顺序号(日志文件号);32到37时归档重做日志文件;
 
P167
定义备份和恢复的策略
制定备份和恢复策略不是一个人的事情而是与整个公司和管理层有关的事情。
与业务要求和老板的决定有密切关系。
 
操作要求
测试和验证备份
在克隆的DB上,模拟故障,并进行恢复。
 
OLTP(online transaction process)
数据仓库用于DSS(决策支持系统)
 
P173
灾难恢复(容灾)比备份要求高许多
 
Oracle内置的DataGuard机制来实现容灾功能。
其实就是一种异地归档机制。
 
P179
回顾《Oracle9i数据库管理基础I》中提到的概念,重点介绍备份和恢复要求。
SGA(System Global Area) 系统全局区
查询执行计划
为了便于Oracle对SQL语句的执行性能进行优化,要做到同样SQL语句。
同样SQL语句的定义是格式要一样,空格都不能多或少,大小写都要一样。
 
redo log buffer(重做日志缓冲区) 实现重传,数据库恢复
online redo log file
 
check point(CKPT) 的作用是保持data file和control file的同步
data file和control file的系统提交号(SCN)是一致的。
 
P179
Oracle基本组件概览图。
 
图的上面是Instance(例程),逻辑部分;由内存结构(SGA)和后台进程组成;
图的下面是Oracle(物理)数据库,物理部分;
Oracle服务器包括一个Oracle例程和一个Oracle数据库。
Oracle例程和Oracle数据库之间的关系,一个Oracle例程始终打开一个,并且只打开一个Oracle数据库。
 
P180
各种内存结构和各种后台进程的说明。
内存结构(SGA)包括:数据库缓冲区高速缓冲、日志缓冲区、大型共享池、共享池、Java池。
后台进程包括:数据库写入器(DBWn)、日志写入器(LGWR)、系统监视器(SMON)、进程监视器(PMON)、检查点(CKPT)、归档程序(ARCn)。
 
P181
Oracle数据库一般用途是存储和检索相关信息。包含三类文件:数据文件、重做日志文件和控制文件。
Oracle服务器的其它文件还包括:参数文件、口令文件和归档的重做日志文件。
 
Oracle采用多进程的方式来提高并行性。
 
P181
当Oracle工作在专用服务器模式下时,一个用户进程对一个服务器进程;
当Oracle工作在共享服务器模式(Shared Server)下时,多个用户进程共享一个服务器进程;
 
初始化参数文件用于初始化Instance。大多数参数有缺省值。
 
P181
Oracle服务器提供的标准视图以获取有关数据库和例程的信息:
V$SGA、V$INSTANCE、V$PROCESS、V$BGPROCESS、V$DATABASE、V$DATAFILE
 
P182
大型共享池
通过LARGE_POOL_SIZE参数设置大型共享池大小。
确定大型共享池的使用方法,查询V$SGASTAT,条件使用pool = ‘large pool’
 
P184
DBWn 只负责数据库缓冲区的脏数据(灰数据)写入数据文件,使两边一致。
脏数据(灰数据)是已修改过的数据
可以设置多个DBWn,以提高性能,但对单处理器系统不起作用。
 
CheckPoint进程会通知DBWn和LGWR
DBWn隔长时间执行一次,数据量大
LGWR每时每刻的执行,数据量小
 
Commit的作用是对DB的修改进行永久化;
Commit时LGWR执行,而DBWn不执行,所以Commit的执行速度很快。
 
P185
创建表空间的策略
 
P187
两个重做日志组大小一致,且分两个硬盘。
 
P188
与重做日志相关的动态试图包括:
V$LOG、V$LOGFILE、V$LOG_HISTORY
 
P189
第3个重做日志组用完循环到第1重做日志组时,做Check Point和归档(处于归档模式下)。归档是一个同步操作,所以需要等待。
 
非归档模式,一般采用2组
归档模式,一般采用3组
 
每组至少两个重做日至成员,各成员位于不同的磁盘上以防出现故障。
 
P190
重新定位重做日志文件的方法
向重做日志组中添加成员的方法
从重做日志组中删除成员的方法
 
P192
检查点Check Point之后,数据同步缓冲中的脏数据写入数据文件。
 
3种类型检查点和版本有关,9.2版本之后,有全部这三种类型检查点。
完全检查点
增量检查点
部分检查点
 
ALTER TABLE SPACE BEGIN BACKUP 进行只对表空间备份。
 
控制文件非常重要,所以要分别放在两个硬盘上。
 
RESET LOG 使日志文件顺序号又从1开始。
 
归档如果来不及做,那么LGWR进程就要等待。
 
由于前滚会把没有提交的数据写入数据文件,所以前滚之后要进行回退。
 
MTTR仅是指前滚时间,不包括恢复时间。
 
Check Point 频繁的话,恢复时间是短了,但数据库正常的运行速度就降低了。
 
Check Point 可以自动,也可以人工发命令。
 
P196
可以获得控制文件的位置和名称的动态视图:
V$PARAMETER、V$CONTROLFILE
 
创建数据库的三种方法
1.         安装Oracle时,顺带创建数据库
2.         用DBCA(DB Config Assistance)创建数据库
3.         使用Create database手工创建数据库
前2种方法适合中小型数据库,最后1种方法适合中大型数据库,因为可以多设置很多参数。
 
Oracle10g 中手工创建数据库的步骤如下
可参考《Oracle9i 数据库管理基础I Ed 1.1 Vol.1.pdf》的第四章“创建数据库”。
1.         假设:
Oracle10g的安装目录为D:/ora10g
       所创建数据库的SID是DB3
 
2.         创建下列目录:
D:/ora10g/oradata/db3
       D:/ora10g/oradata/db3/udump
       D:/ora10g/oradata/db3/cdump
       D:/ora10g/oradata/db3/bdump
 
       D:/backup/db3
D:/backup/db3/arc                 归档
D:/backup/db3/hot                 热备
D:/backup/db3/cold                      冷备
 
3.         把初始化参数文件initdb1.ora拷贝到D:/ora10g/database/initdb3.ora
然后修改initdb3.ora文件。
需要修改的内容有:DB1都改为DB3;路经都要修改;几个name都使用大写
 
initdb3.ora文件被修改后的内容如下:
background_dump_dest='D:/ora10g/oradata/DB3/bdump'
compatible='10.1.0.2.0'
control_files=('D:/ora10g/oradata/DB3/con1.ctl','D:/ora10g/oradata/DB3/con2.ctl')
core_dump_dest='D:/ora10g/oradata/DB3/cdump'
db_name='DB3'
#dispatchers='(PROTOCOL=TCP) (SERVICE=GDB1)'
remote_login_passwordfile='EXCLUSIVE'
sessions=20
undo_management='AUTO'
undo_tablespace='undotbs'
user_dump_dest='D:/ora10g/oradata/DB3/udump'
log_archive_dest_1='location=E:/backup/DB3/arc'
log_archive_format='%s_%t_%r.arc'
service_names='DB3'
instance_name='DB3'
 
       其中:
log_archive_dest是归档目标;
log_archive_format是归档格式;
 
       初始化参数文件的命名规则
       initSID.ora
 
4.         修改credb10g.sql文件
需要修改的内容有:DB1都改为DB3;路经都要修改;
 
credb10g.sql文件被修改后的内容如下:
create database DB3
maxinstances 8
maxloghistory 1
maxlogfiles 16
maxlogmembers 3
maxdatafiles 100
LOGFILE GROUP 1
 ('D:/ora10g/oradata/DB3/redo01a.log','D:/ora10g/oradata/DB3/redo01b.log')size 10M,
        GROUP 2
 ('D:/ora10g/oradata/DB3/redo02a.log','D:/ora10g/oradata/DB3/redo02b.log')size 10M
datafile
 'D:/ora10g/oradata/DB3/system01.dbf' size 220M
autoextend on next 10M extent management local
SYSAUX datafile 'D:/ora10g/oradata/DB3/sysaux01.dbf' size 45M
autoextend on next 10M
DEFAULT TEMPORARY TABLESPACE temp
tempfile 'D:/ora10g/oradata/DB3/temp.dbf' size 25M
autoextend on next 10M
UNDO TABLESPACE undotbs datafile
 'D:/ora10g/oradata/DB3/undotbs.dbf' size 30M
CHARACTER SET ZHS16GBK
national CHARACTER SET AL16UTF16
user SYS identified by ora123
user SYSTEM identified by ora123;
 
其中:
SYSAUX是10g新增的辅助表空间。
 
5.         设置环境变量
D:/>SET ORACLE_SID=DB3
      
       SID必须大写,等号两边不许有空格。
 
通过网络连接就不用设这个环境变量
脱机就要设这个环境变量
 
       如果需要在9i和10g的环境变量之间切换,可以创建一个批处理文件setenv.bat,文件内容如下:
       SET ORACLE_HOME=D:/ora9i
SET PATH=d:/ora9i/bin;%PATH%
      
 
6.         创建Oracle服务进程
Windows需要执行这个步骤,而Linux不需要执行这个步骤
D:/>oradim –new –sid DB3 –intpwd ora123 –startmode auto
       Instance created
      
其中:
ora123是初始密码
       -startmode auto的选项可选
 
       创建完毕后,打开控制面板->管理工具->服务,看一下Oracle服务进程是否创建成功,服务进程名应该是OracleServiceDB3。
 
       同时,Oracle安装目录的database目录下自动生成了一个相应的口令文件。
 
 
7.         D:/>sqlplus /nolog
SQL> connect sys/ora123 as sysdba
SQL> startup nomount
Oracle Instance started.
这个时候已经创建了SGA。
 
8.         创建数据库
SQL>@credb10g
Database created
 
如果credb10g.sql文件不在当前目录下,就需要带上绝对路径。
 
这时候只是创建了数据字典内部表(这是所有表的祖宗),数据字典的视图还没有创建。
 
9.         SQL>@?/RDBMS/ADMIN/catalog;
生成数据字典视图
?号代表Oracle安装目录
catalog后面缺省了”.sql”
这条命令的输出是
PL/SQL procedure Successfully Completed.
 
下面的语句可以验证一下数据库是否创建成功。
SQL>select name from v$controlfile;
SQL>select * from v$log;
 
10.     SQL>@?/rdbms/admin/catproc;
在DB中生成系统程序包,包括内置PL/SQL程序包,这个很重要,且生成很耗时。
 
 
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值