Chinaunix首页 | 论坛 | 博客
  • 博客访问: 249391
  • 博文数量: 64
  • 博客积分: 1416
  • 博客等级: 上尉
  • 技术积分: 565
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-18 10:54
文章分类

全部博文(64)

文章存档

2011年(4)

2010年(60)

我的朋友

分类: Oracle

2010-03-24 19:24:29

ocp原厂培训笔记(第六天) 

 
老师名字:刘铁

msn:

关于OCP考试,
SQL 70道题  DBAI 88道题(69%)通过
OCP:通过 OCA认证,考 workshop2,需要注册:通过原厂培训的注册号
dba2:64道题 (61%) 1个半小时
OCM:参加 至少两门原厂培训,高级的,(拿到OCP 10G的认证)
北京\上海\广州  考
DBA 1\DBA 2 PERFORMANCE TUNNING,SQL TUNNING,GRIDCONTROL,BACKUP AND RECOVER,RAC,DATAGUARD,STREAM
SECURITY(VPD,FGA) DATAWARE HOUSE:物化视图刷新

datawarehouse:物化视图刷新(考试两天,17题,全是操作题)最后判分都是根据字典视图给的信息来判断操作情况.
本身不多,全世界 OCM只有200个(中国130个)把握\理解+操作能力

学习方向
消化OCP:需要 两年工作经验

1.官方网站:
otn.oracle.com
document 文档plsql,tab reference
2.软件的下载
metalink.oracle.com
3. AskTom.oracle.com
   plsql:从入门到精通(sql 正则表达式)
4.itpub.net 论坛(oracle在中国的研究者网站)
5.eagle.com
6.oracle 8i 备份和还原手册
 从8到10到11 备份的原理没变.

备份与恢复手册
1.RMAN (手工备份,命令行方式)
 ERP:Manage resoure 控制资源
job schedule:计划任务

练习和进度
建立:schema:用户下的对象集合(表,索引)
     帐户:指用户角色权限

oracle 10g开始的新特性:ASM
Portalbal cluster:RS:cluster Ready Service
Resource manager:控制资源的分配(用它来管理用户组的资源分配情况)
oracle stream:流的高级复制和物化视图的不一样.
Database control:一对一,独立安装端口号,(访问的时候必须用独立的端口号,如果某个服务器
上有两个DB,则有两个独立的端口号)
Grid contol:(一个端口,4889,管理所有的DB信息,安装grid control需要单独的光盘)
oracle 10g自管理: oracle tunning advisor,undo advisor
Memory:加载在物理内存之上的物理区,一个部分叫 SGA,一个部分 叫原来进程.    

数据库关键文件:数据库控制文件,data文件,redo
other key datafiles:备份文件,trc文件,spfile

shared pool:解析SQL,并负责存储 sql的语句
database buffer:数据块缓冲
java pool:jvm需要,调用外部存储过程
large pool:备份还原
stream poll:高级复制(oracle 10 才有)
PGA_AGGREGATE:每个会话的PGA是总的PGA的一个部分,

dedicated 情况下,user_process和 server_process是一对一的情况,
PGA大小为1M左右:保存的信息有 ,user 名,登陆,cursor信息,PGA区
设置PGA:可以是很大,(大于内存都可以,因为PGA初始化只需要使用90M空间)

 

如上图,是一个sql语句解析和分析的过程

1 〉用户建立一个到服务器的连接,connect,连接到listener,这个时候listener 会fork 一个进程server process,
    这个server process不等于后台进程。(影子进程,姚老师说过的)
 update emp set sal=1000 where ....
2> sever process接受用户的sql查询,放入 library cache,
首先在library cache里检查它的语法错误,再放入dictionary cache检查是否权限是对的,如果用户拥有这个权限,则
把语句再放入 library cache,进一步解析(parse),这个时候oracle会做比较,选出哪种最优;产生一个执行计划,
(explain plan),最后把这个数据库执行计划传输到database buffer里面。
3>在buffer cache中寻找数据,查找两个列,一个名字叫lru,一个叫做 checkpoint queue。
    如果里面都没有这个数据,则要从磁盘中把这些数据读出来,缓冲到lru上面。(old  imgage 是放在这个 lru上的)
4>拷贝映像
从 lru 拷贝映像到 current image,(那么以前的就变成old img了), 会写到 undo上去不,( old img 会写到undo 上去)
5>修改 current image,修改块内容+scn
6>记录到 checkpoint queue,( current image吧?),所有没有写到数据文件的块都被放到这里 (current img 记录所有相关信息)
7>dbwr写回物理块,redo log buffer写入redo log file,(当dbwr写回物理块之后,清空相关的checkpoint queue里的数据)

一个instance只有一个lgwr进程.

所有做过的操作都会纪录到 checkpoint queue,所有select 读进来的数据都放到lru上面。(经过老师确认)

pga 起到了什么作用? 会缓存 user_name,cursor信息,这里的cursor主要指的是 user 会话里缓存的 cursor信息,和sql里面缓存的pga信息是不一致的。
   CKPT:进程
   做检查点之后,会检查checkpoint queue的,所有的脏数据都会被写回数据文件


   修改控制文件 header,也会修改file header.

  large pool (rman )分配内存区,放读出来的数据(如果没有设置这个,rman的数据会导出到 share 内存)
  stream pool(流复制使用: capture,propagate,apply)

pmon:回退数据快的锁
smon:实例down机了,oracle会做一个完整的对比过程,smon会从最后一个成功的完整检查点做比较(如果redo 的scn大于控制块的scn,
需要做 前滚),最后做回滚操作.

dump 的时候,session 级别的dump 都会用到alert 文件,

用OMF 创建文件,默认将会建立 100M的文件.


os block:512字节
oracle datablock(2k,4k,8k,16k,32k)

extent 与segment
extent:一组连续块的集合,无法跨表空间和datafile
segment:几种表,partition,段可以跨越表空间,不同的文件


对日志组建立的member,某个group中的两个member大小需要是一样的.

IOT:溢出段,索引组可以跨越表空间

针对big tablespace:
alter datafile=alter tablespace


(administrator 和concept)

用rman备份时,使用控制文件与使用catalog比较:
控制文件和 catalog存储备份信息的不同:
1>控制文件信息会被自动清除,catalog不会
2>catalog库里可以存放脚本(scripts)


rman ,只有sysdba权限用户才能做

创建 catalog 过程
create user rman identified by rman default tablespace tbs1;
grant resource to rman;
grant connect to rman;
grant recovery_catalog_owner to rman;
rman target / catalog rman/rman
rman>create catalog
rman >register database(注册同步 database)


EM管理器:查看当前的百分比(P17)

查看不再使用的备份日志:
report obsolete
删除不再使用的备份日志
delete obsolete

把闪回文件备份出来
rman>backup recovery files;
选择把备份的文件备份到磁带机.


自动管理,自动清空
control_file_record_keep_time:控制信息在控制文件里保存的时间(默认七天)

DB_RECOVERY_FILE_DEST:归档的位置


NLS_DATE_FORMAT:日期格式
NLS_LANG:语言\地域,字符集
环境变量和数据库语言不匹配会产生乱码


连接RMAN 形式:Auxiliary,Recovery catalog,target database
辅助数据库对于dataguard来是很有作用的:


sqlplus / as sysdba
'/'表示用操作系统用户登陆

rman target sys/oracle log=$HOME/oradata/u03/rman.log APPEND
rman target sys/oracle  cmdfile=$HOME/scripts/scr.rcv


backup optimization:
备份与上次数据块比较,如果与以前一样就不备份了.
rman / 自动备份控制文件


show all:备份的规定保存在控制文件里,如果这些默认的规定被修改,会放在字典视图里.

configure backupset :2进制压缩
configure copy:从一个文件拷贝到另一个文件

parallelism:并行度
/u01/app/oracle/%u_%p_%c
'%u_%p_%c'='%U'
%u 8位随机数
%p piece number个数
%c:拷贝个数

备份结果集,包含多个数据文件,越过那些空块最多,压缩到原来的50%.

                
选择img:变成镜象拷贝(通过把log 切换到拷贝印象来马上把数据库变成正常情况)
拷贝到磁带无法用image copy

什么是备份集,什么是备份片
备份片可以组成 backup set(一个BACKUP SET可以被分为多个 backup piece)

保证备份片不能超过 128M,
(老版本中,数据库文件备份不能超过4G,否则就不认了,所以才需要备份片来组成大的备份集)
并行度
c盘,  %c=1
D盘,  %c=2


控制文件数据文件可以放在一个备份集
归档不能和其他类型的备份放在一个backup set.

选择optimize参数,则下次备份和上一次备份匹配,如果不变则不备份(生产库中不建议开,因为生产库数据肯定是不断变化的)

RECOVERY WINDOW:作为一个清除的标准,决定了备份结果集是否obsolete,
REDUNDANCY:如果设置它为2,则备份集前一个为1,再前一个为2,只保留最近的两次备份集.

rman > show exclude (全库备份排除了哪些文件)


channel 可以被自动分配.
自动分配通道:configure default device type to sbt;
rman> run {
      allocate channel c1 device type disk;(手动分配通道)
       backup datafile
}

以三个并行通道来执行并行备份
parallism=3

delete input(备份掉归档文件之后,把备份过的归档日志文件从系统里删除)


rman>report scheme; 当前数据库里可以备份的数据文件
rman>backup spfile;
rman>backup archivelog all;

run{
 backup as backupset
 FORMAT '/u01/db01/backup/%d_%s_%p'
 duration 10:00 minimize load
(database);
  sql ' alter system archivelog current';
}

上面语句 'duration 10:00 minimize load'
表示把备份的工作制定在10个小时内均匀完成,减少对生产系统IO的过分消耗。

crosscheck:检查哪些文件存在,那些文件不存在,
做这个操作的时候,会把控制文件的纪录中归档文件和实际归档文件进行比较,
如果实际位置上不存在归档日志,则把不存在的归档日志标识为expired.(试验) (是这样的)

list expired archivelog all;
可以察看所有失效的 archive log.

crosscheck archivelog all;

obsolete: 超过保留策略以上的备份集
expired:控制文件记录它是好的,但物理上这个文件已经被删除掉了(delete expired)

(更详细信息请参照 oracle 9i fundamental1)

noarchive 模式下必须在mount 状态下备份,或者把数据库文件offline备份(但是 immediate offline不行),
选择那种offline normal方式可以。(试验证明是 可以的)
闪回过去,闪回回来(试验)
backup as compressed backupset database;适合往磁盘备份的方式,在原来backup 前提条件下大小是前者大小的50%)
 
backup as copy datafile '/oradata/users_01_db01.dbf'
format '/backup/users01.dbf';
backup scn数值不等于锁定数据文件.

report list:会把 存在的(stored scipts)拿出来,这个只适合于归档数据库。

backup as copy
datafile '/ORADATA/users_01_db01.dbf'
format '/BACKUP/USERS01.dbf';
锁定backup 的 scn值不等于锁定数据文件。


oracle 在恢复的时候,标签可以被指定为结果集。

rman备份的时候,会自动检查被备份的文件的坏块,并报道哪个文件哪个块坏掉了。rman 甚至能够检查逻辑上的损坏。
比如索引应该是唯一的,但是如果出现两个唯一索引在一个表中,rman也可以检查到。

validate:校验备份,对输入文件进行校验。

备份归档文件( 备份归档前,会自动切换联机日志,做一个归档)(试验)
既然是上面这种情况,那么备份之后再用这个命令有什么含义  sql ' alter system archivelog current';?
(答:这个只是对9i的rman script的一个延续,没有什么实际意义)


备份归档的时候,可以出现failover

如上图,如果源库找不到sequence为50的日志,
rman就会自动到备库区寻找。
(流复制下是否可以这样,老师也不确定)


备份结束后,自动删除被成功备份的归档日志

rman> run{
      backup
      format '/disk1/backup/arc_%t_%s_%p'
      archivelog from sequence=234
      delete input;
         }  (试验) 成功删除最近的,并在文件系统中也删除了相关的内容

RMAN 备份
对于T级别的备份,作全库备份之后每天可以做增量备份,减少备份所需要的时间
两种类型 cumulative 和 a different level

 

cumulative(累计增量)
寻找n-1或者更小

 


差异
寻找n或更小

默认是差异的,如果需要备份成增量,需要加一个cumulative参数
RMAN > BACKUP incremental level 0 database;
RMAN >BACKUP incremental level 1 database;
RMAN >backup incremental level 1 cumulative database;
累计备份和差异备份是可以在一个数据库里的备份集中共存的。


block change 备份:
通常情况下备份,如有有 1T的数据,如果只改动了 20G,进行rman备份的时候,oracle 也要扫描 1个T的block,为了避免这种浪费资源的现象,我们使用block change文件。 用到的概念是block change tracking,如下:

 

alter database enable block change tracking
using file '/mydir/rman_change_track.f'
reuse;(试验)
可以察看 v$block_change_tracking 视图。

sql>alter database enable block change tracking
    using file '/home/oracle/rman_change_track.f'
    reuse;
sql>alter database enable block change tracking;
sql>select * from v$block_change_tracking;

增量的拷贝,
incremental updating backups
增量的拷贝。

用增量拷贝恢复数据库的步骤
1>image copy(原始的)
2〉增量 image copy(增量的,总是只有一个)
3>恢复(从原始的和增量的恢复)
recover copy of datafile {n|'n'}
with tag 'increupd_df1';

如何察看块的scn: dump 可以察看到


文件的scn:察看 v$datafile

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
就这个问题扩展一下: 查看itpub 讨论贴子:
对于一个DBA来说,他该很明晰自己的系统是否要做介质恢复。
如上判断是做介质恢复还是实例恢复是源于scn号的概念

如果系统scn与数据文件scn及数据文件的start scn三项相同时则不需做介质恢复
如有一项不同则需介质恢复。

正常关闭的数据库的start scn与end scn是相同的
如果这两项不同则需实例恢复。

另LZ的报错为:
ORA-01194: file 1 needs more recovery to be consistent
明显为需要更多日志做实例恢复

检查oracle 文件的状态:
SELECT
a.name,
a.checkpoint_change#,
b.checkpoint_change#,
CASE
WHEN ((a.checkpoint_change# - b.checkpoint_change#) = 0) THEN 'Startup Normal'
WHEN ((a.checkpoint_change# - b.checkpoint_change#) > 0) THEN 'Media Recovery'
WHEN ((a.checkpoint_change# - b.checkpoint_change#) < 0) THEN 'Old Control File'
ELSE 'what the ?'
END STATUS
FROM v$datafile a, -- control file SCN for datafile
v$datafile_header b -- datafile header SCN
WHERE a.file# = b.file#;


Tip

The V$DATAFILE_HEADER view uses the physical datafile on disk as its source. The V$DATAFILE view
uses the control file as its source.


|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

BS KEY:backup set
可以删除文件的内容
delete backup;set 156;

文件BP key(backup 状态)
status:( Available) 还原是否有效
piece handle:备份片的名字

rman> report need backup(察看哪些文件需要备份)
for example
rman > report need backup incremental 3;
rman > report need backup days 3;
delete backup set:删除备份信息+删除备份文件
rman> report obsolete redundancy 2;


监视rman的状态,
set command id
v$session_longops:已读了多少,需读多少( 试验 )
total
Monitoring RMAN Backups
To correlate a process with a channel during a backup, perform the following steps:
1. Start Recovery Manager and connect to the target database and, optionally, the recovery
catalog.
2. Set the COMMAND ID parameter after allocating the channels and then copy the desired
object. The string specified by the SET COMMAND ID command is entered into the
V$SESSION.CLIENT_INFO column of all allocated channels.
run {
allocate channel t1 type disk;
set command id to 'rman';
backup datafile 1;
release channel t1;}
3. Query the V$PROCESS and V$SESSION views to get the session identifier (SID) and the
operating system process identifier (SPID) for the channels using the previously specified
COMMAND ID string.
SELECT sid, spid, client_info
FROM v$process p, v$session s
WHERE p.addr = s.paddr
AND client_info LIKE '%id=rman%';
4. Query the V$SESSION_LONGOPS view to get the status of the copy.
SELECT sid, serial#, context, sofar, totalwork,
round(sofar/totalwork*100,2) "% Complete"
FROM V$SESSION_LONGOPS
WHERE opname LIKE 'RMAN:%'
AND opname NOT LIKE 'RMAN: aggregate%'
AND totalwork != 0;
5. If you use a channel of type sbt and the copy process appears to hang, query
V$SESSION_WAIT by using the SID obtained in step 3 to determine whether RMAN is
waiting for a media manager function call to complete.
SELECT * FROM V$SESSION_WAIT WHERE event LIKE '%sbt%';


排出某个表空间不备份:
rman>configure exclude for tablespace users;


如果对数据的rman备份策略修改了,会记录到字典中去,
下次再启动rman,视图v$rman_configuration会去修改
控制文件。(覆盖控制文件里面的默认设置)
select * from v$rman_configuration; (试验)
CONF#  NAME                     VALUE
1      CONTROLFILE AUTOBACKUP    ON
2      RETENTION POLICY          TO REDUNDANCY 2
闪回数据库操作(试验)

阅读(2253) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~