ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 10g workshop 2 学习笔记

10g workshop 2 学习笔记

原创 Linux操作系统 作者:goobaile 时间:2009-03-28 21:32:10 0 删除 编辑

2009年3月23日到27日,在oracle大学参加了10g workshop 2的学习。现在的oracle大学甚是抠门,只给电子书,而且还是加密的,只有在上课时发的小本子上记下来一些笔记。整理一下免得忘记。

(版权ORACLE所有,仅限个人学习交流oracle使用,请勿用作商业利益)

workshop 2最重要的内容应该是RMAN备份与恢复了。先记下几个问题:

1、RMAN catalog里面是以dbid注册的目标数据库,而不是dbname。

2、在做了不完全恢复或者是恢复了控制文件时,需要使用resetlogs选项打开数据库

3、如果归档日志备份在磁盘上,而rman知道相关的备份信息,则不必restore归档日志到磁盘上之后再做recover,可以直接restore数据文件后做recover,rman可以自动从backupsets中寻找归档做恢复。

第二章、配置RMAN

obsolete和expired的区别:obsolete只备份过期了,超过了设置的rentention时间。而expired指备份被删除掉,但是相关的备份信息还留在控制文件或者catalog中。crosscheck就是检查哪些备份物理上被删除而信息仍然保留的情况的。

rman也可以备份闪回区:backup recovery file

rman中强烈建议设置NLS_LANG和NLS_DATE_FORMAT两个参数和打开autobackup,当数据库物理结构发生改变时均会触发一次控制文件自动备份。rman的设置信息是保留在目标库的控制文件中的。当设置并行度时,实际是是以文件为级别的,当只有一个文件时,并行度再大也不起作用。

backup database之后强烈建议做一次日志切换,然后再做一次日志归档动作。backup database plus archivelog会导致一次归档动作。

第三章、使用RMAN

三种方式:交互式、批处理、管道

使用管道PIPE:可以使用DBMS_PIPE实现PL/SQL调用备份。

standb_alone命令:change,connect,create,catalog,resync catalog,create script..

job命令:allocate channel,switch

使用change可以讲备份信息重新加入到备份的元数据信息中。

RAC环境:alter system archive log current可以实现所有实例的日志均切换一次。而alter system switch logfile只能切换当前实例的联机日志。

report need backup 报告需要备份的文件

关于recover windows的理解:还原窗口,report obsolete会报告为了能让数据库还原到还原窗口内任一时刻而做的备份。比如设置窗口为2天,23、24、25号各做了一次全备,26号做report。如果将24号的备份删除,则23号的也不为obsolete,这是因为要让数据库恢复到24号的状态,需要23号做的全备。

report need backup:sysdate-checkpointtime<=windows

当生产的数据拿到测试环境做恢复时,不知道需要恢复到几号归档,则可以直接以时间恢复,report obsolete until time...会报告想要恢复到用户指定的时间目前可用的控制文件、数据文件、归档日志文件的备份信息。使用这种方法可以简单的确定恢复要使用的备份集信息。或者直接使用run {set until time...;restore controlfile;restore database;recover database;alter database open resetlogs;}方式做基于时间的恢复。

第五章、数据库恢复

recover tablespace tbname delete archivelog;的用途:当恢复表空间时可能需要恢复已经备出的日志,rman会自动恢复归档日志,然后做recover。delete archivelog这里指的是表空间恢复完毕则把刚刚恢复过程中还原的归档日志删除掉。

当数据库在备份之后物理结构上发生了改变之后,则需要注明using backup controlfile来恢复。

set until time不仅仅影响recovery,还会影响restore,比如有多个备份时,不确定知道需要从哪个备份中作恢复,则可以使用set until time 然后做restore和recovery。
restore point实质上是scn的一个别名,以方便做基于scn的恢复。
另外在课堂练习中配置了rman备份时exclude一个表空间,后来做全库恢复时发现仅有这个表空间在很久之前的一个备份,但是由于恢复的控制文件里面记录了exclude该表空间,导致该表空间无法resotre。这时尝试重新配置rman,取消exclude,却得到报错无法修改,报错提示无法修改从备份中恢复出来的控制文件。最后只能备份控制文件到trace文件,重建了控制文件,取消了exclude的限制才使表空间得以恢复。所以建议慎用exclude配置rman。

第六章-十六章
剩余内容非备份与恢复,涉及专题较杂,故汇总笔记。
10g版本中,除了flash database以外,其他闪回技术缺省都是可以使用的。并且在10g版本中闪回数据库和不完全恢复都是可以跨化身(r%)进行的。
关于坏快,metalink有一篇非常详细的介绍Handling Oracle Block Corruptions in Oracle7/8/8i/9i/10g(文档号28814.1)
EM的AWR baseline功能可以方便的对比两份AWR报告,便于对比正常时间段与异常时间段分析AWR报告使用,以屏幕分为左右两个半平面进行对比显示,并可以计算出变化的百分比,非常直观,一目了然。
sql access advisor会考虑建立索引带来的负面影响,但是sql turning advisor则不会考虑。
DBMS_sqlturning_advisor.quick_advisor可以实现快速调优,支持用户自定义输入sql语句。

管理用户对象时,又遇到了很经典的drop、delete、truncate的区别,摘抄网上一篇别人写好的文章:
------------引用开始-----------------
drop-delete-truncate比较
相同点:
1.truncate和不带where子句的delete, 以及drop都会删除表内的数据。
2.drop,truncate都是DDL(数据定义语言)语句,执行后会自动提交。
不同点:
1. truncate和 delete只删除数据不删除表的结构(定义)
   drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).
4.速度,一般来说: drop> truncate > delete
5.安全性:
小心使用drop 和truncate,尤其没有备份的时候.使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据
6.delete是DML语句,不会自动提交。
drop,truncate都是DDL(数据定义语言)语句,执行后会自动提交

------------引用完毕--------------
索引组织表(IOT)溢出段会显著影响IOT的性能,所以如果有超长的非关键列,使用IOT表时需要着重考虑性能。
cluster table的缺点在于DML操作会非常慢,一般仅用于查询用的表,且key的数量和大小要尽可能的在建表时充分精确估计,避免建立表之后进行大的更新操作。

shrink compact和shrink的区别:
shrink compact仅仅移动数据,并不会移动高水位线,所以只会锁定一行数据。而shrink则会锁定整张表,会移动高水位线。使用EM的segment advisor可以发现哪些对象需要进行收缩。

使用resumable功能的好处:当空间不足或者无法进行扩展时,正在进行的操作不至于因为空间不够而报错退出,提供DBA一个纠正错误的机会,等待有足够空间时,需要空间的操作得以继续进行,放佛没有发生错误一样。针对大得批量插入或者数据导入时可以利用alter session enable resumable设置resumable,当空间不足时在缺省的时间(2小时内)得以纠正的话则批量操作不会报错退出。

实现数据库迁移至asm的方法实际是利用backup as copy然后switch,讲表空间交换到asm磁盘组上的copy上去。可以利用EM来完成这一过程,时间较长,但在实验环境成功完成无报错。

管理资源。
group指定哪些用户有权限可以进入到该组,group mapping则相当与一种分配方案,指定用户进入到一个组。当用户既有权限进入到某一个组,则在group mapping中指定了该用户也可以进入时,用户方可进行到该资源组。
一个用户可以从属于多个资源计划组,可以设置一个用户可以利用的cpu资源、活动session数、限制sql执行时间等。限制单条sql执行时间的技术其实也是基于统计信息的一种估计,而非真实执行之后发现超时才退出。简言之,对一个非常大的表做全表扫描,oracle计划器估计5秒钟内无法完成,则不会真实执行到5秒后才不让用户继续执行,而是在一开始用户提交该查询语句时就报错不让用户执行。

10g中的job拆分成scheduler+program+attributes,这样可以实现程序和调度的重复利用,可以分别设置好三个组件,然后自由组合实现不同的job。
使用调度时,注意设置NLS环境变量,基于事件的job,需要用到高级队列知识AQ,可以参考stream AQ。
job class讲job和resource plan关联起来。

数据库安全
TDE:透明数据加密,对客户端透明,采用对称加密算法。对索引等值查询有用,但是对范围查询时,索引会失效。

数据库exp/imp导入导出时设置字符集的一个原则:
导出时操作端的字符集保持与源库一致,导入时oracle会先转换为客户端字符集,然后再进行到导入的目标库的字符集转换。所以导入时操作端的字符集设置为与导出操作端的字符集保持一致。
而使用数据泵时则不必进行字符转换考虑,导出时oracle自动使用源库的字符集导出,导入时自动使用目标库的字符集进行导入,全部实现自动转换。

 


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11071808/viewspace-580474/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-03-28

  • 博文量
    2
  • 访问量
    5812