Thursday, August 19, 2010

Oracle VM: ha_check_cpu_compatibility

When you create Oracle VM server pool, it's required that all the servers in the pool have the same type and family of CPUs. Beginning in Oracle VM Server 2.2.1 (or Oracle VM Server 2.2.0 with upgraded agent ovs-agent-2.3-38), Oracle VM agent will enforce the pre-check by default when you create a server pool or add a new server to an existing server pool. The pre-check includes the server version, agent version, CPU compatibility, storage repositories, NFS, OCFS2 configuration, and so on. It is to ensure successful setup of the server pool and OCFS2 cluster integrity.
This also applies to repository initialization.
Still there might be use cases where you want to set up the testing environment where different type of servers may be formed into the server pool. For example, the testing environment may be to verify network or storage configuration of multi-node server pool, but it's not required to perform live migration or HA.

Warning: Oracle VM 2.2 requires all processors in a given pool to be of the same type. The bypass procedure provided below is available for test and experimental environments,and is not recommended or supported by Oracle.

Solution

Here we provide the steps to manually bypass certain pre-check function. The steps are provided to facilitate testing only, should not be used in any production environment:

1. Log into the Server Pool Master and verify that you are running ovs-agent-2.3-38 or later.
# rpm -q ovs-agent
ovs-agent-2.3-38

2. Edit the file /opt/ovs-agent-2.3/OVSSiteCluster.py and locate the following lines:
rs.append(("ha_check_oracle_vm_version", ha_check_oracle_vm_version(hosts)))
rs.append(("ha_check_agent_version", ha_check_agent_version(hosts)))
rs.append(("ha_check_cpu_compatibility", ha_check_cpu_compatibility(hosts)))
rs.append(("ha_check_hostname_ip", ha_check_hostname_ip(hosts)))
rs.append(("ha_check_storage_repos", ha_check_storage_repos(hosts, ha_enable)))
rs.append(("ha_check_ocfs2_config", ha_check_ocfs2_config(hosts)))
3. Comment out the specific line to bypass the pre-check. For example, to bypass the CPU compatibility check change the line as below:
# rs.append(("ha_check_cpu_compatibility", ha_check_cpu_compatibility(hosts)))
4. Restart the agent
# service ovs-agent restart
OVSAgentServer shutdown...
OVSAgentServer stopped.
OVSAgentServer is now starting...
OVSAgentServer started.

if you need to restart without having to shut down running VM's, do:
# service ovs-agent restart --disable-nowayout
5. This procedure will need to be executed on any pool server that might become a master via HA. After completing it, you will be able to add a server node that had previously failed with the ha_check_cpu_compatibility error.

Friday, August 6, 2010

Oracle VM ha_check_cpu_compability

If you received this error related to ha_check_compability on Oracle VM and you are using ovs-agent-2.3-38 or later, then you should edit /opt/ovs-agent-2.3/OVSSiteCluster.py and comment this line
rs.append(("ha_check_cpu_compatibility", ha_check_cpu_compatibility(hosts)))

Thursday, July 8, 2010

Oracle sid and Linux pid

Sometimes we found Oracle process that has been running too long using top command on Linux. We know it has PID. But how to know the SID of the process?
Here is the script:

select
substr(a.spid,1,9) pid,
substr(b.sid,1,5) sid,
substr(b.serial#,1,5) ser#,
substr(b.machine,1,6) box,
substr(b.username,1,10) username,
substr(b.osuser,1,8) os_user,
substr(b.program,1,30) program
from
v$session b,
v$process a
where
b.paddr = a.addr
and type='USER'
order by spid;

Wednesday, May 26, 2010

Select all data when parameter is null

Sometimes we need to display data based on report parameter and sometimes when user does not input anything, the default action is to display all data.
There are three ways we can use on WHERE clause on SQL:
where column_name = nvl(:parameter, column_name)
or
where column_name like nvl(:parameter, '%')
or
where (column_name = :parameter or :parameter is null)

Friday, May 21, 2010

Identify long running session and kill it

Sometimes you can find an Oracle database session that has been running for very long time. You can find it with this query:
select s.username,s.sid,s.serial#,s.last_call_et/60 mins_running,q.sql_text from v$session s 
join v$sqltext_with_newlines q
on s
.sql_address = q.address
where status='ACTIVE'
and type <>'BACKGROUND'
and last_call_et> 60
order
by sid,serial#,q.piece
Then you can kill it with (change sid and serial# using result from query above):
ALTER SYSTEM KILL SESSION 'sid,serial#';

Wednesday, May 19, 2010

Delete old archivelog

To delete old archivelog, use rman and login.
use this command:
change archivelog until time 'sysdate-x' delete;

Change x with number of days (1,2,3...).

Tuesday, April 13, 2010

adoafmctl.sh: exiting with status 152

Unable to start oafm using adstrtal.sh. Running adoafmctl.sh ends with timeout.

You are running adoafmctl.sh version 120.6.12000000.3
Starting OPMN managed OAFM OC4J instance ...
adoafmctl.sh: exiting with status 152

Solution:

Clear the TLD cache:

- stop all middle tier services

- Delete/backup files this file:

$COMMON_TOP/_TldCache

- start all middle tier services


Tuesday, February 16, 2010

Database link error

I cloned my database to another machine and when I tried to use Oracle database link, this error came out:
ORA-01017: invalid username/password; logon denied ORA-02063: preceding line from %s
I checked the connection using sqlplus, worked. Using connection description on sqlplus, also worked fine. I even recreated the database link, but still failed.
Then I cloned again to another machine, tested the database link, worked.
What was the difference between the two machine? It was the host name settings. The first one that failed had its host name only accessible locally. The second one had its host name registered on DNS server. So the database server I tried to access using database link could resolve host name of the second machine, but not of the first one.
Then I added the host name of first machine to DNS server, tested the database link, worked.

Tuesday, January 26, 2010

Patching OMS to 10.2.0.5 problem

When patching to OMS 10.2.0.5 on Windows, this error encountered:
ADMN-705021

The configuration files for this Oracle Application Server instance are inconsistent with the
configuration stored in the repository. In order to protect the repository,
no further configuration or deployment operations are allowed until the problem with the configuration on the filesystem is resolved. This condition arises when a prior operation was unsuccessful. The exception associated with this failed operation is:

{0}

. Please also check the logs located at
ORACLE_HOME/dcm/logs to determine why DCM was unsuccessful in updating
the configuration files on disk. Some possible causes are:

* permissions on files
* file contention issues on Windows NT
* internal Oracle error

After resolving the problem that prevented DCM from updating the configuration
files, you may use the dcmctl resyncInstance command to resolve the problem.
Alternatively, you can stop and then restart the active dcmctl or EMD
process and resyncInstance will automatically be performed.
Resolution:

Base Exception:
Transaction failed in Plugin cannot rename old configuration file:e:\OMS\oms10g\diagnostics\config\logloader.xml.
Resolution:
Transaction failed in Plugin.
Just run %ORACLE_HOME%\dcm\bin\dcmctl shutdown and retry the patch.

Wednesday, January 20, 2010

Install Enterprise Linux on HP dx2700

Installing Linux on HP dx2700 was a pain. On first trial, the installer was hang on loading ata_piix driver. The BIOS setting for SATA Port 0/1 Working Mode was Native.
On second trial, I set the hard drives setting on BIOS to None (Like the one I used on Windows 2003 installation). The installation went OK until reboot. The computer displayed "Error loading operating system". Then I realized that I haven't reenabled the hard disk and changed the boot sequence. Also I changed SATA Port 0/1 Working Mode to Legacy. After that everything was OK.
Of course if I set BIOS setting for SATA Port 0/1 Working Mode to Legacy before installation. The installation will be fine, but the hard drive will be detected as hda, the performance will be poor.

Friday, January 15, 2010

Remove Enterprise Manager from EBS Database

Shutdown and startup database in restrict mode.
Run this sql as sysdba: emca -deconfig dbcontrol db -repos drop

Tuesday, January 12, 2010

Cancel Invoice error with AP_INV_IS_CREDITED_INV

When canceling invoice, AP_INV_IS_CREDITED_INV error shown. There is a correction on the invoice. You have to fix the data directly on database. Use the following steps to fix the data:
1. Login as apps user to the database.
2. Identify the invoice_id of the invoice to be canceled using
select invoice_id from ap_invoices_all where invoice_num='your invoice number'
3. Verify that your invoice is a corrected invoice using
select invoice_id, line_number from ap_invoice_lines_all where invoice_id = corrected_inv_id
4. You should see your invoice_id on the result, if not then you are facing another problem.
5. Fix the data using this sql
update ap_invoice_lines_all set corrected_inv_id=null where invoice_id='your invoice id from step 2' and line_number='line number from step 3'
6. Don't forget to commit.
7. Cancel your invoice from application.