Something about PGA allocation

1. 在设置了PGA_AGGREGATE_TARGET初始化参数的数据库中,表示使用PGA自动管理,所有其它的*_AREA_SIZE参数都将被忽略。PGA_AGGREGATE_TARGET参数值的范围是:10MB 到 4096GB–1个字节之间。 2. Oracle数据库会按照每个session的需要为其分配PGA,同时会尽量维持整个PGA的内存总和不超过PGA_AGGREGATE_TARGET参数所定义的值。 3. 在PGA中对于性能影响最大的是SQL Work Area(SQL工作区) Oracle将所分配的SQL工作区大小分成三种类型: Optimal:SQL语句能够完全在所分配的SQL工作区内完成所有的操作。这时性能最佳。 Onepass:SQL语句需要与磁盘上的临时表空间交互一次才能够在所分配的SQL工作区中完成所有的操作。 Multipass:由于SQL工作区过小,从而导致SQL语句需要与磁盘上的临时表空间交互多次才能完成所有的操作。这时性能将急剧下降。 SQL> select swh.MULTIPASSES_EXECUTIONS,swh.LOW_OPTIMAL_SIZE,swh.HIGH_OPTIMAL_SIZE 2 from v$sql_workarea_histogram swh 3 where swh.MULTIPASSES_EXECUTIONS>0 4 order by 1 desc; 通过以上SQL可以知道所有被分配了Multipass尺寸的会话需要多大的内存才能够成为Optimal操作。 4. 单个会话使用PGA的期望尺寸(也可以认为是实际分配的最大尺寸)计算公式是: min(5%*pga_aggregate_target,50%*_pga_max_size,_smm_max_size) 5. 每次修改pga_aggregate_target值,Oracle都会自动重新计算_smm_max_size值。 如果_pga_max_size > 5%*pga_aggregate_target,则_smm_max_size为5%*pga_aggregate_target。 如果_pga_max_size

Listener Password in Oracle 10g

在Google上搜索“监听 安全 oracle”,一堆《实例讲解Oracle监听口令及监听器安全》的文章,都是copy+paste自eygle的这篇《Oracle的监听口令及监听器安全》,eygle的测试环境是本地的10.2.0.3客户端加远程9.2.0.4数据库。 如果服务器端数据库版本在Oracle9i以后,设置监听密码的情况则有一些变化。 在Metalink Note 260986.1中,可以看到: In Oracle 10, the TNSListener is secure out of the box and there should not be a need to set a listener password as in older versions of the Oracle listener. Oracle10g以后,设置Listener密码已经不是安全检查的必要条件了,因为默认在10g里面除了启动监听的用户之外,其它用户都无法停止Listener(还有另外一些lsnrctl的命令也同样被禁止了,比如trace, reload等),即使Listener没有设置密码。 在默认情况下,启动Listener或者使用lsnrctl status命令查看监听状态,可以看到: Security ON: Password or Local OS Authentication 这表明Listener的安全机制使用了Password方式或者Local OS Authentication方式,在这种状态下,即使是设置了监听密码,对于启动监听的user来说,也仍然是不需要任何密码就可以停止监听的。 如果我们想去除自Oracle10g之后的这种新安全机制,那么需要在listener.ora文件中添加: LOCAL_OS_AUTHENTICATION_[listener name]…

ODU@Laoxiong

老熊的ODU昨天晚上发布了一个302版本,在这个版本中可以unload出被delete掉的数据。通过在config.txt文件中添加“unload_deleted yes”来控制。 目前,对于truncate,drop,delete引起的表数据丢失,ODU在大部分场合下都可以恢复。 老熊是个好同志 😀