AIX上的配置网络调优参数

验证网络调优参数设置如下表所示的值或者更高值:

Network Tuning Parameter Recommended Value
ipqmaxlen 512
rfc1323 1
sb_max 4194304
tcp_recvspace 65536
tcp_sendspace 65536
udp_recvspace 655360
备注:
推荐此参数值10倍于udp_sendspace参数。但此参数值必须小于sb_max参数值。
udp_sendspace 65536
备注:此值适用于默认数据库安装。对于生产库,此参数最小值:(DB_BLOCK_SIZE * DB_FILE_MULTIBLOCK_READ_COUNT) + 4 KB

查看这些参数的当前值,如果有必要则修改:
1、检查网络调优参数的当前值,使用以下命令:

2、如果你需要改变参数的值,然后输入以下命令来确定系统是否运行在兼容模式:

如果系统运行在兼容模式,那么输出类似于以下,表明pre520tune属性值已开启。
3、如果系统运行在兼容模式,然后按照以下步骤修改参数值:
使用以下类似命令来修改每个参数值:

例如:

上述步骤需要修改的每个参数,添加类似如下条目到/etc/rc.net文件:

添加这些行到/etc/rc.net文件,值需要系统重启生效。
4、如果系统未运行在兼容模式,那么输入类似以下命令来改变参数值:
ipqmaxlen 参数

其他参数

注意:如果修改ipqmaxlen 参数,那么你必须重启系统。
这些命令修改/etc/tunables/nextboot文件,在系统重启后属性值持续有效。

5、如果需要修改参数,而为重启系统。在修改非全局设置后,那么使用ifconfig命令来检查每块网卡属性:
例如:

对于ISNO参数tcp_sendspace,使用以下命令来设置:

 

行链接和行迁移

众所周知造成Oracle数据库性能低下的原因有很多,但是行链接和行迁移也很可能是其中原因之一。

 什么是行链接和行迁移?

1)该行太大,在它第一次插入时,无法放入一个数据块。

在行链接中,Oracle数据库将数据存储在为段保留的一个或多个被链接的数据块中。行链接最经常出现在大行中。例如包括包含LONG或LONG RAW数据类型列的行,或在2KB块中的VARCHAR2(4000)列,或具有大量列的行。在这些情况下出现链接行是不可避免的。

2)原先的行本来可以放入到一个数据块的,但是在更新后整体行长增加了,又没有足够可用空间来容纳更新的行。

在行迁移中,假设行可以容纳在一个新块中,Oracle数据库将会把整个行移动到一个新的数据块。原来的被迁移走的行块会包含一个指针或“转发地址”指向迁移到新块中的行。已迁移行的rowid不会改变。

3)超过255个列的行。

Oracle数据库在一个块行中只可以存储255的列。因此,如果你在具有1000个列的表中插入行,则数据库将创建4个快行,通常会链接多个块。

那么到底什么是行链接和行迁移呢?

行链接

如下图描述:向数据块中插入大行,行出入左边的块太大,所以数据库通过将第一个行块(row piece)放在左边的块,而将第二个行块(row piece)放入到右边的块中,这样就形成了行链接。

cncpt316

 

行迁移

如下图所示:左边的块包含的行被更新,但现在导致该行太大而不能放入块中。数据库将整个行移动到右边的块中,并在左边的块中保留一个指向被迁移行的指针。

cncpt306

根据上述概念总结:行链接一般发生在insert阶段(因数据块无法容纳过大数据);行迁移一般发生在update阶段(原数据块无法容纳增长的数据)

当行被链接或迁移时,检索数据所需的I/O灰增加。导致这种情况是因为Oracle数据库必须扫描更多块以检索行信息。例如,如果数据库执行一个I/O读取索引或者读取一个未迁移的表行,则需要额外的I/O才能获取迁移的数据行。

参考文档:
Chained and Migrated Rows
http://docs.oracle.com/cd/E11882_01/server.112/e40540/logical.htm#CNCPT1055

 

Tuning the Shared Pool的基本概念

这是一篇学习Performance Tuning——Tuning the Shared Pool的学习笔记,主要是基本的概念。

共享池体系结构

shared pool architecture

共享池的基本用途是充当元数据高速缓存。共享池多数是用来支持共享SQL和PL/SQL程序包的执行的。

共享池的主要组件包括:

  • 库高速缓存,它将共享的SQL和PL/SQL代码以及对象元数据存储在按名称空间进行区分的各个区域中
  • 数据字典高速缓存,它报错数据字典表中的 row images,又称row cache(行高速缓存)
  • 结果高速缓存(results cache)保存查询结果集和查询碎片,因此后续查询可直接从该高速缓存中检索结果

共享池中的空间分配由最近最少使用(LRU(least recently used))的算法进行管理。

Continue reading Tuning the Shared Pool的基本概念

创建非标准块的表空间

在默认情况下创建的数据库块大小是由db_block_size参数决定的,一般默认是8k,即8192。db_block_size参数在建库时设置好后,就无法更改。这时候如果我们想要创建16k的表空间用来存放索引,那又该怎么办呢?

DB_BLOCK_SIZE参数

db_block_size是指定一个Oracle DB块的大小(字节)。此值是在创建数据库时设置的,此后不可更改。此值指定了数据库的标准块大小。所有表空间默认情况下将使用该大小。取值范围:2048到32768(与操作系统相关),即32位操作系统,最大为16k,64位系统最大为32k。默认值:8192 。

表空间的数据文件容量的大小是由db_block_size决定的。

smallfile tablespace的数据文件最大值为 4194304×DB_BLOCK_SIZE/1024M。
即:
4k最大数据文件为:16384M=16G
8K最大数据文件为:32768M=32G
16k最大数据文件为:65536M=64G
32K最大数据文件为:131072M=128G

DB_nK_CACHE_SIZE参数

Oracle是可以配置Multiple Block Sizes的

如果要配置Multiple Block Sizes,就要配置db_nk_cache_size参数,这些参数默认值都是 0。

db_nk_cache_size参数指定nK的buffer,在指定cache时,要确保有足够的空间。而且不能和db_block_siez参数冲突,n的取值范围是2、4、8、16、32 。

Continue reading 创建非标准块的表空间