oracle rman ora19602,noarchivelog下rman做的冷备份ora-19602和深入浅出pga的一些摘要-02

今早pub上和一个帖子是关于noarchivelog模式下rman做的冷备份,总是出现了noarchivelog下无法备份,从冷备份的原理来说:冷备份与数据库归档模式无关,刚好自己测试也可以通过

ora-19602: cannot backup or copy active file in NOARCHIVELOG mode

*Cause:You tried to copy or backup a file that was not closed cleanly,

and the database was in NOARCHIVELOG mode.This is not allowed

because when restored, the file will require redo application

before it is usable, and redo is not currently being saved

beyond the contents of the online redo logs.

*Action: Take the tablespace offline clean or close the database and retry

the copy or backup.

根据上面的cause很有可能是数据文件并没有关闭干净,从上面的问题个人认为是mount阶段instance依然存在,服务进程和后台进程可能会对datafile还在写入,所以会出现没有关闭干净的数据文件!

接下来网友在open阶段做了一下switch log,oracle执行ckpt强制优先让所有的dbwn写入当前和活动的所有重做条目所在的buffer cache到disk上。然后再次启动mount时,可以备份了,不再出现ora-19602了,看来datafile已经完全释放了!

不过这种情况很少见!因为一般数据库关闭时,sga完全释放后台进程和服务进程也已经不在工作,此时我们关闭到重新mount阶段时,数据文件没有打开。

还是这里继续说下关于深入浅出中pga的管理,之前看过oracle concept中对于pga的一些基本整理的信息,pga程序全局区包含数据和控制信息的一块内存区域,一般包含私有sql区和session信息等内容。

私有sql区又可分为持续数据区(包含绑定变量等信息)和运行时区(运行时的内存结构),其中持续数据区在游标关闭时才会被释放,而运行时区在程序运行结束后就会释放。

关于sql语句和游标关系可以参考之前个人整理的二篇blog

关于oracle 9I后推出了pga自动管理,其中的两个参数pga_aggregate_target和workarea_size_policy,前一个是pga所用的最大pga内存总和,而workare_size_policy用于开关pga的自动管理,pga自动调整中分为可调整内存和不可调整内存,其中的可调整内存则是由sql工作区使用。

这里摘要下oracle concept中关于工作区的一些概念:

对于复杂查询来说,运行时区大部分容量均供需要占用大量内存的操作创建工作区,排序等操作需要使用工作区以便在内存中进行排序,如果一个工作区无法容纳全部输入数据,那么此时数据将被分割为数个小块,这样系统可以在内存中处理部分数据,同时其余的数据放入临时的磁盘存储区等候处理。不过位图操作例外,即使工作区过小,位图融合和位图创建也不会放入磁盘。

工作区调整:

正如我们对工作区的容量控制调整,更大的工作区能够显著提高sql操作性能,但是消耗更多内存。最理想是,工作区能够容纳sql语句全部输入数据及额外控制内存结构,不然sql语句响应时间增加,因为部分输入数据必须放入临时磁盘区。

Sql在工作区中三种方式执行:

Optimal:指所有处理可以在内存中完成

Onepass:大部分可以在内存中完成,但是需要使用到磁盘操作

Multipass:大量操作需要产生磁盘交互,性能极差

而对于pga的管理我们是调整sql工作区,使得optimal执行尽量高,在内存中完成排序散列等操作,同时是multipass操作尽量低,减少磁盘交互。

SQL> select name,value from v$sysstat where name like '%workarea executions%';

NAMEVALUE

---------------------------------------------------------------- ----------

workarea executions - optimal5407695350

workarea executions - onepass244

workarea executions - multipass0

在自动sga和pga管理中一样,同样引入了v$sgastat和v$pgastat视图,其中的v$pgastat视图中name列有global memory bound,global memory bound用于允许单个进程使用pga的上限

关于pga调整的还有视图v$pga_target_advice_histogram

SQL> desc v$pga_target_advice_histogram;

NameTypeNullable Default Comments

--------------------------- ----------- -------- ------- --------

PGA_TARGET_FOR_ESTIMATENUMBERY

PGA_TARGET_FACTORNUMBERY

ADVICE_STATUSVARCHAR2(3) Y

LOW_OPTIMAL_SIZENUMBERY

HIGH_OPTIMAL_SIZENUMBERY

ESTD_OPTIMAL_EXECUTIONSNUMBERY

ESTD_ONEPASS_EXECUTIONSNUMBERY

ESTD_MULTIPASSES_EXECUTIONS NUMBERY

ESTD_TOTAL_EXECUTIONSNUMBERY

IGNORED_WORKAREAS_COUNTNUMBERY

其中low_optimal_size就是histogram评估区间optimal下限,当high_optimal_size是上限,estd_optimal_size评估区间评估optimal执行次数,estd_total_executions_histogram评估区间内评估执行总次数。

[@more@]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值