Friday, September 22, 2006
Saturday, December 17, 2005
- First all the physical CPU's are enabled and then
- then the logical CPU's are enabled
It goes without saying that it is necessary to be careful when limiting the number of CPUs to always create symmetric configurations. What this means is that should be avoided that some physical processors have Hyperthreading enabled and others not. This can can lead to very difficult to analyze queueing effects and perturbation.
Tuesday, December 13, 2005
Thursday, November 17, 2005
maxcpus=<The placeholder NUM_CPUS has to be replaced with the number of CPUs that will be enabled. After re-booting with the correct kernel verify that the correct number of CPUs are active. This can be verified with the file /proc/cpuinfo.
- Disable Hyper-Threading in the kernel
- Disable Hyper-threading by the BIOS
The other option is to specify the noht switch in the kernel line of the grub configuration file. Unfortunately this doesn't work with Redhat AS 4.
To check if HT is really disabled check the file /proc/cpuinfo. This file should only report the physical CPU's.
Upgrading to RedHat 4.0 introduces some new challenges. With the switch to the 2.6 linux kernel the udev device filesystem was introduced. By default the udev device tree does not support raw devices anymore. Luckily it is still supported with the Redhat distribution. It can be configured in the old way with the rawdevices service configuration.
To check if it is currently enabled run the following command:
# chkconfig --listand search for rawdevices. If it is not enabled yet add the rawdevices service with
# chkconfig --level 345 rawdevices on.Afterwards start the service in the usual way with service start rawdevices.
The next step is to set the permissions correctly. especially for Oracle database files, OCR and the voting disks it is important to set the correct file permissions. Setting the permissions on the raw devices directly will only work partially. As soon as the node gets rebooted the raw devives will be reset tohave root privileges. To make the change final it is necessary to edit the file /etc/udev/permissions.d/50-udev.permissions. Search for the substring "raw" in this file. You will find something like
raw/*:root:disk:0660and change the line to
raw/*:oracle:dba:0660For the future it makes sense to no longer use /dev/raw. There are plans to completely de-support it with kernel version 2.7.
Friday, December 24, 2004
SQL> oradebug setmypidThe last command will show the name of the created trace file. The next step is opening the trace file and looking for the string SKGXPCTX. The following is a typical example.
SQL> oradebug ipc
SQL> oradebug tracefile_name
SKGXPCTX: 0xcd1e730 ctxThe cluster interconnect IP address is shown in bold. In the example above
admno 0x7a0be402 admport:
SSKGXPT 0xcd1e884 flags SSKGXPT_READPENDING info for network 0
socket no 8 IP 18.104.22.168 UDP 9152
info for network 1
it is 22.214.171.124.
SELECT first_load_time, sql_textKeep in mind that not necessarily each hard parse is bad. Actually every statements needs at least one hard parse. But if you see on the other hand a lot SQL statements that are not using bind variables the problem at hand is obvious.
WHERE first_load_time > to_char(sysdate-1/(24*6), 'YYYY-MM-DD/HH24:MI:SS')
Wednesday, December 22, 2004
$ oifcfg getifLet's assume that the address for the cluster interconnect was specified incorrectly. This will prevent cluster communication. The situation can be resolved by deleting the cluster interconnect IP from the OCR configuration. With the command below the interconnect IP address gets deleted.
eth0 126.96.36.199 global public
ib0 188.8.131.52 global cluster_interconnect
$ oifcfg delif -global ib0Afterwards the configuration can be verified for correctness.
$ oifcfg getifNow everything looks fine. The correct interconnect information can now be added with the oifcfg setif command.
eth0 184.108.40.206 global public
Tuesday, December 21, 2004
# oifcfg getifIf the database parameter cluster_interconnects is specified, the value that is obtained from OCR is not used.
eth1 220.127.116.11 global cluster_interconnect