日期: 2010-12-21

AIX An error occurred during bosboot verification processing

碰到一个比较妖的问题,解决后给大家一个参考.
安装软件包时报0503-497,报
0503-409 installp: bosboot verification starting…
0503-497 installp: An error occurred during bosboot verification processing.
不得其解.
手工执行bosboot正常.

lppchk -v检查正确
bosboot正常
hd5正常
发现/dev下没有ipldevice,问题在此
ln /dev/rhdisk0 /dev/ipldevice
解决问题,安装正常.

esource busy and acquire with NOWAIT specified 解决方法

1. 通过dba_objects 查到锁掉的对象的object_id.
select object_nameobject_id from dba_objects
where object_name like ‘*****’;
2.在v$_locked_object中找到锁掉的session_id
select session_id,object_id from v$locked_object
where object_id=***;
3.在v$_session 找到锁掉的session的sid及serial#
select username,sid,serial# frin v$session
where sid=****;
4.根据SID查找对应的sql
select sql_text from v$session a,v$sql_text_with_newlines b
where DECODE(a.sql_hash_value,0,prev_hash_value,sql_hash_value)=b.hash_value
and a.sid=***;
5.如果确认了sid是sql是不重要的,则kill对应的session即可
alter system kill session ‘SID,SERIAL#’;

1. 通过dba_objects 查到锁掉的对象的object_id.     select object_nameobject_id from dba_objects where object_name like ‘*****’;2.在v$_locked_object中找到锁掉的session_id select session_id,object_id from v$locked_object where object_id=***;3.在v$_session 找到锁掉的session的sid及serial# select username,sid,serial# frin v$session where sid=****;4.根据SID查找对应的sql select sql_text from v$session a,v$sql_text_with_newlines b where DECODE(a.sql_hash_value,0,prev_hash_value,sql_hash_value)=b.hash_valueand a.sid=***;5.如果确认了sid是sql是不重要的,则kill对应的session即可alter system kill session ‘SID,SERIAL#’;

oracle datagurad 日志切换频率

修改参数ARCHIVE_LAG_TARGET = seconds,单位秒;

默认为0,disable该功能
修改范围是60-7200
oracle 推荐1800 即30分钟
如果该参数设置过低,会导致oracle日志频繁切换。
修改方式:alter system
在RAC中,所有instance 该参数需要设置为相同。

oracle recyclebin 管理

管理回收站

如果在该过程中没有实际删除表因而没有释放表空间那么当被删除的对象占用了所有空间时,会发生什么事?

答案很简单:这种情况根本不会出现。当表空间被回收站数据完全占满,以至于必须扩展数据文件来容纳更多数据时,可以说表空间处于“空间压力”情况下。此时,对象以先进先出的方式从回收站中自动清除。在删除表之前,相关对象(如索引)被删除。

同样,空间压力可能由特定表空间定义的用户限额而引起。表空间可能有足够的空余空间,但用户可能将其在该表空间中所分配的部分用完了。在这种情况下,Oracle 自动清除该表空间中属于该用户的对象。

此外,有几种方法可以手动控制回收站。如果在删除名为 TEST 的特定表之后需要从回收站中清除它,可以执行

PURGE TABLE TEST;

或者使用其回收站中的名称:

PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";

此命令将从回收站中删除表 TEST 及所有相关对象,如索引、约束等,从而节省了空间。但是,如果要从回收站中永久删除索引,则可以使用以下命令来完成工作:

purge index in_test1_01;

此命令将仅仅删除索引,而将表的拷贝留在回收站中。

有时在更高级别上进行清除可能会有用。例如,您可能希望清除表空间 USERS 的回收站中的所有对象。可以执行:

PURGE TABLESPACE USERS;

您也许希望只为该表空间中特定用户清空回收站。在数据仓库类型的环境中,用户创建和删除许多临时表,此时这种方法可能会有用。您可以更改上述命令,限定只清除特定的用户:

PURGE TABLESPACE USERS USER SCOTT;

诸如 SCOTT 等用户可以使用以下命令来清空自己的回收站

PURGE RECYCLEBIN;

DBA 可以使用以下命令清除任何表空间中的所有对象

PURGE DBA_RECYCLEBIN;

可以看到,可以通过多种不同方法来管理回收站,以满足特定的需要。

oracle expdp 报错 ORA-39014

oracle expdp 报错 ORA-39014

报错信息如下:

ORA-39014: One or more workers have prematurely exited.
ORA-39029: worker 1 with process name “DW01″ prematurely terminated
ORA-31671: Worker process DW01 had an unhandled exception.
ORA-00600: internal error code, arguments: [qmtInit1], [], [], [], [], [], [], []
ORA-06512: at “SYS.KUPW$WORKER”, line 1345
ORA-06512: at line 2

解决办法:修改LD_LIBRARY_PATH 把绝对路径修改为:$ORACLE_HOME/lib:$ORACLE_HOME/lib32

重启数据库

使用RMAN方式建立ORACLE DATAGUARD

1.      备用库数据软件安装相关目录的准备

(adump、bdump、cdump、udump;、/oradata;/arch、/arch/standby等)

2.      备份数据库standby controlfile

rman target / (主机上)

backup full database format=‘/oradata/standby/fulldatabase_%U.dbf‘ include current controlfile for standby;

把备份的数据全部拷贝到备机的相同目录

点击查看更多

oracle datagurad 由于standby 数据库恢复

由于一次不谨慎的变更,没有注意standby数据库文件系统的空间,在增加表空间数据文件的时候,standby没有足够的空间,导致了recovery失败。
处理过程
先shutdown standby数据库

由于主备之间的数据文件已经不相同了,准备在备库上添加数据问题

1.首先备份pfile 然后修改参数standby_file_management=manual

2.startup nomount;alter database mount standby database;

3.alter database open read only;这步的时候失败,保数据文件#37有错,需要做recovery (注:#37为本次standby由于空间不够失败的第一个数据文件)

4.尝试做recovery 同样报错,分析,由于数据文件#37有问题,所以archive 没办法继续下去,所以先吧#37数据文件offline drop掉,再做recovery就报#38文件有错,同样offline drop掉,一直到把变更中失败的几个都offline drop以后,可以正常的apply archive log了。一直到最近一个归档日志都apply后

5.然后扩文件系统空间,把缺少的数据文件补上去,

alter  database  create  datafile  ‘AAAAA’ as ‘BBBBB’;

AAAA对应的是v$datafile中#37的file
BBBB为实际添加的数据文件

这样依次把失败的数据文件补全。

最后恢复主备机的同步

6.alter database recover managed standby database disconnect from session;

主机切换日志文件后 查看主备机直接的同步正常。

现存的问题就是把 standby_file_management改回auto后 主机上更改这几个数据文件,这个不会同步,同时主备直接的同步就会停住,只能先把该参数改成manual,再找可以停主数据库的变更时间 再说了。

AIX 中 Paging Space 使用率过高的分析与解决

记录一下

参考:http://www.ibm.com/developerworks/cn/aix/library/au-cn-pagingspace/

AIX操作系统中Paging Space是很重要的设备,当系统中Paging Space使用率过高、系统内存不足时,
将影响系统的整体性能,甚至会造成系统的挂起。针对这种情况,通常可以靠增加Paging Space来加
以缓解;但是当Paging Space已经相当大,而Paging Space使用率仍旧居高不下时,则需要通过进一
步的分析来找出原因并加以解决。文中分析了几种Paging Space使用率持续增长直至过高的常见原因,
并给出了相应的解决方案,以确保Paging Space使用率被控制在安全的范围内。

1 Paging Space的创建原则

AIX中Paging Space大小确定的指导原则如下:

系统实际内存小于64MB, paging space= 2 * RAM ;
系统实际内存在 64MB to 256MB 之间, Page Space = RAM size + 16MB ;
系统实际内存大于 256MB , Page Space = 512 + ( RAM – 256 ) * 1.25 ;
当内存超过4GB时,则需要根据实际情况来定,一般可初始3GB, 然后观察paging space的使用情况,如果使用率超过70%, 则需要增加paging space 或把OS中的min_perm%,max_perm%和max_client%参数调小一点

此外在创建Paging Space时还应遵循以下原则以提高性能:

创建的数量应尽可能的多;
每个Paging Space的大小应该相同;
每个Paging Space应尽可能的分配在不同的硬盘上。
AIX中可以通过命令lsps -s查看Paging Space的使用情况。列Total Paging Space给出的是系统总的Paging Space空间大小,Percent Used则表示已被占用的Paging Space的百分比。

eg:

# lsps -s
Total Paging Space   Percent Used
16384MB               1%

命令lsps -a可以用来查看Paging Space的分布情况

# lsps -a
Page Space      Physical Volume   Volume Group    Size %Used Active  Auto  Type
hd6             hdisk0            rootvg       16384MB     1   yes   yes    lv
2 文件型内存对Paging Space使用率的影响

 

在AIX系统中,内存可以简单的分为两类:计算型内存和文件型内存。类似大量文件类操作,如压缩、
数据库的dump/load等操作会大量占用文件型内存。如果按照系统缺省的配置,文件型内存最多会占
用到内存总量的80%,由于文件型内存占用并不主动释放,从而可能造成内存资源的短缺及Paging Space
使用率过高。

命令topas可以用来查看文件型内存占用内存情况,在MEMORY一栏中的%Noncomp显示的是文件型内存的占用百分比。
Topas Monitor for host:    hostname                EVENTS/QUEUES    FILE/TTY
Fri Jul 31 13:15:39 2009   Interval:  2         Cswitch    1489  Readch  2896.8K
Syscall    7341  Writech   17338
Kernel    1.2   |#                           |  Reads       327  Rawin         0
User     18.0   |######                      |  Writes       13  Ttyout      373
Wait     13.4   |####                        |  Forks         0  Igets         0
Idle     67.5   |####################        |  Execs         0  Namei        33
Runqueue    1.5  Dirblk        0
Network  KBPS   I-Pack  O-Pack   KB-In  KB-Out  Waitqueue   0.0
en2       2.5      8.0     4.0     1.3     1.2
en0       1.1      2.0     2.0     0.4     0.7  PAGING           MEMORY
lo0       0.0      0.0     0.0     0.0     0.0  Faults      174  Real,MB    7808
Steals        0  % Comp     83.3
Disk    Busy%     KBPS     TPS KB-Read KB-Writ  PgspIn        0  % Noncomp   2.5
hdisk3   27.5   2924.0   322.0  2910.0    14.0  PgspOut       0  % Client    3.2
hdisk0    1.0      4.0     1.0     2.0     2.0  PageIn        1
hdisk1    0.5      2.0     0.5     0.0     2.0  PageOut       1  PAGING SPACE
dac0      0.0      0.0     0.0     0.0     0.0  Sios          2  Size,MB   16384
dac0-utm  0.0      0.0     0.0     0.0     0.0                   % Used      0.6
dac5      0.0   2924.0   322.0  2910.0    14.0  NFS (calls/sec)  % Free     99.3
dac5-utm  0.0      0.0     0.0     0.0     0.0  ServerV2       0
dac2      0.0      0.0     0.0     0.0     0.0  ClientV2       0   Press:
dac4      0.0      0.0     0.0     0.0     0.0  ServerV3       0   “h” for help
cd0       0.0      0.0     0.0     0.0     0.0  ClientV3       0   “q” to quit
dac4-utm  0.0      0.0     0.0     0.0     0.0
hdisk2    0.0      0.0     0.0     0.0     0.0
dac2-utm  0.0      0.0     0.0     0.0     0.0

Name            PID  CPU%  PgSp Owner
oracle       438598  22.1   7.2 oracle
oracle       741490   3.6   5.5 oracle
topas        975296   0.3   2.1 root
oracle       897480   0.0   4.2 oracle
hats_nim     225330   0.0   1.8 root
aioserve     242162   0.0   0.1 root
oracle       901544   0.0   4.2 oracle
gil           28972   0.0   0.1 root
aioserve     315456   0.0   0.1 root
aioserve     118860   0.0   0.1 root
aioserve     381290   0.0   0.1 root
aioserve     323656   0.0   0.1 root
hatsd        151846   0.0   8.2 root
oracle       188724   0.0   7.1 oracle
如果文件型内存所占比例很高,而Paging Space使用率居高不下时,可以通过降低minperm、maxperm的
参数值来进行调优,减少文件型内存可占用的份额。

在进行调整前,首先通过命令vmo -a/vmtune -a来查看目前的参数值;minperm及maxperm的缺省值分别
是30%和80%。

# vmo -a
cpu_scale_memp = 8
data_stagger_interval = 161
defps = 1
force_relalias_lite = 0
framesets = 2
htabscale = n/a
kernel_heap_psize = 4096
large_page_heap_size = 0
lgpg_regions = 0
lgpg_size = 0
low_ps_handling = 1
lru_file_repage = 1
lru_poll_interval = 10
lrubucket = 131072
maxclient% = 10
maxfree = 1088
maxperm = 192213
maxperm% = 10
maxpin = 1613727
maxpin% = 80
mbuf_heap_psize = 4096
memory_affinity = 1
memory_frames = 1998848
memplace_data = 2
memplace_mapped_file = 2
memplace_shm_anonymous = 2
memplace_shm_named = 2
memplace_stack = 2
memplace_text = 2
memplace_unmapped_file = 2
mempools = 0
minfree = 960
minperm = 96106
minperm% = 5
nokilluid = 0
npskill = 32768
npsrpgmax = 262144
npsrpgmin = 196608
npsscrubmax = 262144
npsscrubmin = 196608
npswarn = 131072
num_spec_dataseg = 0
numpsblks = 4194304
page_steal_method = 0
pagecoloring = n/a
pinnable_frames = 637301
pta_balance_threshold = n/a
relalias_percentage = 0
rpgclean = 0
rpgcontrol = 2
scrub = 0
scrubclean = 0
soft_min_lgpgs_vmpool = 0
spec_dataseg_int = 512
strict_maxclient = 1
strict_maxperm = 0
v_pinshm = 1
vm_modlist_threshold = -1
vmm_fork_policy = 1#
说明:

(1) minperm%
如果由文件页面占有的实际内存的百分比低于这个级别,则页面替换算法既替换文件页面也替换计算页面,而不管repage rate。
# vmo -a |grep minperm%
minperm% = 20

(2) maxperm%
如果由文件页面占有的实际内存的百分比高于这个级别,则页面替换算法仅替换文件页面。
# vmo -a |grep maxperm%
maxperm% = 80

(3) maxclient%
如果由文件页面占有的实际内存的百分比高于这个级别,则页面替换算法仅替换客户机页面。
# vmo -a |grep maxclient%
maxclient% = 80

这三个参数,可以根据内存总量大小,进行适度调节。计算型内存与文件型内存,在实际的应用中,
需要遵循以下一些原则(这些原则是自己归纳的):

1.使用的文件型内存百分比 + 使用的计算型内存百分比 < 100%

2.计算型内存中的pinned memory设置要合理,即sga大小要设置合理,要留一部份给OS,OS也需要pinned memory.当系统资源紧张时,OS的pinned memory具有最高的优先级.

3.保证系统非pinned 计算型 memory有一个合理的成长空间,这部份主要是给ORACLE PGA使用,当连接数增长过
快时,此内存的使用增长也相当的明显,而此增长很有可能会导致操作系统的交换。当系统的使用的文件型内存百分比 + 使用的计算型内存百分比 >= 100%,系统便开始产生交换,系统的PAGING SPACE会持续的增长,影响到产品库的安全。

恰当的设置OS内存参数,控制操作系统的交换,可以减少很多系统不稳定的情况发生。比如说操作系统执行重启命令都执行不了:

shutdown -Fr
当由文件页面占有的实际内存的百分比处于 minperm 和 maxperm 之间时,VMM
通常只替换文件页面,但是如果文件 页面的重新调页(repaging)率高于计算页面的重新调页率的话,计算页面也被替换。页面替换算法的主要意图是确保计算页面得到合理的待遇。例如,对 于可能会很快再次使用的程序文本页,顺序读取长的数据文件到内存中应该不会使它们丢失。对阈值和重新调页率使用页面替换算法可确保合理地对待这两种类型的 页面,但仍稍微偏向有利于计算页面的一方。
通过vmstat -v可以看到当前persistent或者client page的数目和百分比,可以作为系统调优的依据.
# vmstat -v
4079616 memory pages
3870685 lruable pages
601736 free pages
2 memory pools
535883 pinned pages
80.0 maxpin percentage
20.0 minperm percentage
80.0 maxperm percentage
66.2 numperm percentage
2565739 file pages
0.0 compressed percentage
0 compressed pages
66.7 numclient percentage
80.0 maxclient percentage
2583086 client pages
0 remote pageouts scheduled
28222 pending disk I/Os blocked with no pbuf
0 paging space I/Os blocked with no psbuf
2740 filesystem I/Os blocked with no fsbuf
0 client filesystem I/Os blocked with no fsbuf
106338 external pager filesystem I/Os blocked with no fsbuf

List-based LRU (page_steal_method)
在AIX 5.3, LRU算法可以用lists或者page frame. table,在AIX 5.3之前,只有page frame
table的算法, The list-based algorithm provides a list of pages to scan for
each type of segment. 下面是段类型的列表:

Working
Persistent
Client
Compressed

# vmo -a |grep page_steal_method
page_steal_method = 0
如果page_steal_method = 1, 将采用list-based LRU算法, 如果page_steal_method
parameter 为 0, 将采用physical-address-based scanning的方式.
page_steal_method参数值只有在bosboot and reboot后生效.
# vmo -L page_steal_method
NAME CUR DEF BOOT MIN MAX UNIT TYPE
DEPENDENCIES
——————————————————————————-
page_steal_method 0 0 0 0 1 boolean B
——————————————————————————-

strict_maxperm
缺省为0. 当strict_maxperm 设置成 1, places a hard limit on how much memory
is used for a persistent file cache by making the maxperm value be the
upper limit for this file cache. 当达到上线的时候least recently used
(LRU)将执行在persistent pages上.
# vmo -a |grep strict_maxperm
strict_maxperm = 0

Enhanced JFS file system cache 相关的参数: maxclient, strict_maxclient和lru_file_repage
Enhanced JFS file system cache使用client page来作为buffer
cache,通过maxclient%来控制page stealing. 如果strict_maxlient设置为0,
maxclient%将用来作为一个soft limit. 也就是说client
pages可以超过maxclient参数,如果超过这个值,只有client file page被stolen.
当lru_file_repage设置为1的时候,如果client pages的数目介于minperm和maxclient之间,
LRU算法将参考repage的计数. 最近没有被referenced的page将被stolen. If the value of the
file repage counter is higher than the value of the computational
repage counter, computational pages, which are the working storage, are
selected for replacement. If the value of the computational repage
counter exceeds the value of the file repage counter, file pages are
selected for replacement.
当lru_file_repage设置为0的时候, 如果client pages的数目大于minperm,将选择file pages被替换.如果小于minperm,任何没有被referenced的page将被替换.
注意:maxclient同样影响NFS client和compressed pages.
# vmo -a |grep lru_file_repage
lru_file_repage = 1
# vmo -a |grep strict_maxclient
strict_maxclient = 1

工程经验
内存调优主要集中在几个关键参数中,往往这几个关键参数就能很大地提高系统的内存使用性能. 这几个参数是minperm%, maxperm%, maxclient%和lru_file_repage.
原则:首先了解你的应用类型,是文件读写型还是数据库类型. 尽量保证你的应用运行所需要的数据充分地利用物理内存. 具体的工程Tips例子请参见内存调优的工程经验篇
3 应用程序内存泄露对Paging Space使用率的影响

应用程序的内存泄露也是造成Paging Space使用率不断增长的另一常见原因,此类情况的解决方法主要是找出内存泄露的应用,然后进行修正或安装补丁。

以下方法可用来找出发生内存泄露的应用:

该命令每m秒钟按降序列出前n个最耗内存进程。为了便于分析,可以将结果输出到文件中,然后对内容进行分析,从而找出内存泄露的应用。

下例中命令svmon -P -t 10 -i 5的结果被输出到文件svmonresult.txt中,该命令每5秒种输出一次最耗内存的前10个进程。
svmon -P -t 10 -i 5 > svmonresult.txt

找出发生内存泄露的应用后可自行进行修正或查找相关的补丁进行安装。

4 数据库参数配置对Paging Space使用率的影响

在装有数据库的系统环境中,数据库相关参数的设置不当也容易造成Paging Space的占用率过高