You are on page 1of 3

There are some new kernel parameters needs to be configured in order to Install

new patch set for 11gR2 (11.2.0.2)


The following are the list of parameters:
1) tcp_smallest_anon_port
2) tcp_largest_anon_port
3) udp_smallest_anon_port
4) udp_largest_anon_port
When i was trying to Install this new patchset, the result for pre-requisite che
ck was failed because of these newly introduces kernel parameters.

Setting these kernel parameters:


1) To view the current value of these parameters, login as root user:
bash-3.00# ndd /dev/tcp tcp_smallest_anon_port tcp_largest_anon_port
9000
65500
bash-3.00#
bash-3.00# ndd /dev/udp udp_smallest_anon_port udp_largest_anon_port
9000
65500
bash-3.00#
The kernel parameters as expected by the Installer:
kernel parameter present val expected
tcp_smallest_anon_port -- 32768 --> 9000
tcp_largest_anon_port -- 65535 --> 65500
udp_smallest_anon_port -- 32768 --> 9000
udp_largest_anon_port -- 65535 --> 65500
update these kernel parameters using following parameters:

bash-3.00# ndd -set /dev/udp udp_smallest_anon_port 9000


bash-3.00# ndd -set /dev/udp udp_largest_anon_port 65500
bash-3.00# ndd -set /dev/tcp tcp_smallest_anon_port 9000
bash-3.00# ndd -set /dev/tcp tcp_largest_anon_port 65500
Note these settings will be lost at next reboot of your server. To keep these se
tting permanent add it in a system startup file.
Then verify the settings using:
bash-3.00# ndd /dev/tcp tcp_smallest_anon_port tcp_largest_anon_port
bash-3.00# ndd /dev/udp udp_smallest_anon_port udp_largest_anon_port
After setting these kernel parameters the pre-requisite check was successfull an
d Installation completed without any issue.

Summary: System resource usage and trend analysis data gathering for capacity pl
anning can profit of Oracle AWR 10g repository as the source of data, both for R
AC and single instance.
1. System metric
I had the need to provide management with system resource utilization data for t
rend analysis and capacity planning of a production database. Production is on 1
0g RAC. Standard OS monitoring tools provide system metrics for each cluster nod
e separately, which would require the development of custom scripts to aggregate
the data in a cluster-wide view. Instead I have used AWR to extract system reso
urce usage metrics for the whole cluster. This has saved me considerable time an
d allowed for easier analysis. In particular I ran the query reported here below
against dba_hist_sysmetric_summary. The result of the query was spooled to a fi
le and imported to a spreadsheet to produce graphs from the collected metric val
ues.
----------------------------
set lines 250
set pages 9999
spool sysmetric_outp.log
alter session set nls_date_format='dd-mm-yyyy hh24:mi';
select min(begin_time), max(end_time),
sum(case metric_name when 'Physical Read Total Bytes Per Sec' then averag
e end) Physical_Read_Total_Bps,
sum(case metric_name when 'Physical Write Total Bytes Per Sec' then avera
ge end) Physical_Write_Total_Bps,
sum(case metric_name when 'Redo Generated Per Sec' then average end) Redo
_Bytes_per_sec,
sum(case metric_name when 'Physical Read Total IO Requests Per Sec' then
average end) Physical_Read_IOPS,
sum(case metric_name when 'Physical Write Total IO Requests Per Sec' then
average end) Physical_write_IOPS,
sum(case metric_name when 'Redo Writes Per Sec' then average end) Physica
l_redo_IOPS,
sum(case metric_name when 'Current OS Load' then average end) OS_LOad,
sum(case metric_name when 'CPU Usage Per Sec' then average end) DB_CPU_Us
age_per_sec,
sum(case metric_name when 'Host CPU Utilization (%)' then average end) Ho
st_CPU_util, --NOTE 100% = 1 loaded RAC node
sum(case metric_name when 'Network Traffic Volume Per Sec' then average e
nd) Network_bytes_per_sec,
snap_id
from dba_hist_sysmetric_summary
group by snap_id
order by snap_id;
spool off
--------------------------
Prior to running this and the following analysis I had set the retention period
for AWR to 31 days (default is 7 days, which may be too short for trend analysis
): EXECUTE DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 60*24*
31)

2. Service Activity
On a production 10g RAC database we run several database applications. Each appl
ication is associated with a dedicated Oracle service. For performance and capac
ity planning analysis I needed to find the list of most active applications/serv
ices and their activity trend. Service activity is defined as the ratio of 'DB T
ime' over 'Elapsed Time' (i.e. the percentage of time a given service is in a DB
call, as opposed to processing application logic or waiting for input). I extra
cted the application activity data from the AWR repository, and in particular th
e DBA_HIST_SERVICE_STAT view. The query I used makes use of analytic functions t
o extract the deltas of the 'DB time' metric between successive AWR snapshots an
d is RAC aware.
--------------
set lines 250
set pages 9999
col service_name for a40
col Interval_time for a40
spool service_activity.log
alter session set nls_date_format='dd-mm-yyyy hh24:mi';
select service_name,max(END_INTERVAL_TIME) Interval_time,round(sum(DeltaValue/De
ltaT_sec)*(100/1000000),0) Pct_active_time
from (
select sn.snap_id,ss.service_name,sn.END_INTERVAL_TIME,ss.instance_number,ss.
stat_name,ss.value,
lag(ss.value) over (partition by ss.service_name,ss.instance_number order
by sn.snap_id) prevValue,
ss.value - lag(ss.value) over (partition by ss.service_name,ss.instance_n
umber order by sn.snap_id nulls first) BlindDelta,
nvl2(lag(ss.value) over (partition by ss.service_name,ss.instance_number
order by sn.snap_id), -- if the instance restarted Delta=0, error by defect
ss.value - lag(ss.value) over (partition by ss.service_name,ss.insta
nce_number order by sn.snap_id), 0 ) DeltaValue,
extract(hour from END_INTERVAL_TIME-begin_interval_time)*3600
+ extract(minute from END_INTERVAL_TIME-begin_interval_time)* 60
+ extract(second from END_INTERVAL_TIME-begin_interval_time) Delta
T_sec
from DBA_HIST_SERVICE_STAT ss, dba_hist_snapshot sn
where ss.snap_id=sn.snap_id and ss.instance_number=sn.instance_number
and ss.stat_name='DB time'
)
group by snap_id, service_name
having sum(DeltaValue/DeltaT_sec)*(100/1000000)>10 -- Filters out points of low
activity (<10% PCT_active_time) and negative values due to instance restarts
order by snap_id, service_name;
spool off
------------------

You might also like