Friday, January 29, 2010

DBCA Seed_Database_8k.dfb creation error

Problem:

ORA-19624, ORA-19870 , ORA-19505, ORA-27037 errors while creating database with DBCA.

Cause:


This issue is reported in Bug 5141453.

The database templates General Purpose, Transaction Procession, and
DataWarehouse are expected to be used only with 8k block size as the seed
database is shipped at 8k block size

Solution:

From Bug 5141453, development indicates that DB_BLOCK_SIZE cannot be changed
for the General Purpose, Transaction Procession and DataWarehouse templates
as the seed database is using 8k block size.

You should create a custom database to get a different block size.
References
Bug 5141453 - DBCA - CREATE DATABASE SCRIPTS - LOOKING FOR
SEED_DATABASE_8K.DFB Keywords CUSTOM~DATABASE; DB_BLOCK_SIZE; DBCA;

Thanks to guy Sallwasser Laura in the link:

http://www.lazydba.com/oracle/0__166384.html

Thursday, January 21, 2010

Oracle Job Scheduler runs my jobs, one hour earlier, (Daylight Saving Time related)

Problem:


Scheduler runs my jobs one hour earlier, which causes empty summary tables in ETL process.


Log Date                  2010/01/21 02:00:09.072642 +02:00


Required Start Date  2010/01/21 03:00:04.662096 +03:00


Actual Start Date      2010/01/21 03:00:00.000000 +03:00



BEGIN

SYS.DBMS_SCHEDULER.CREATE_JOB

(

job_name        => 'MYCHEMA.SR54'

,start_date      => SYSTIMESTAMP,

,repeat_interval => 'FREQ=DAILY;BYHOUR=3;BYMINUTE=0;BYSECOND=0'

,end_date        => NULL

,job_class       => 'DEFAULT_JOB_CLASS'

,job_type        => 'PLSQL_BLOCK'

,job_action      => 'GENERIC_SUMMARY.procprocessreport ( 54 );'

,comments        => 'trunc(sysdate+1)+3/24'

);

SYS.DBMS_SCHEDULER.enable (name => 'log_parallel_process_job');

END;

/

Cause:


Using SYSTIMESTAMP as start date is converted as for example:


start_date      => TO_TIMESTAMP_TZ('2009/08/05 15:14:24.499000 +03:00','yyyy/mm/dd hh24:mi:ss.ff tzr')


You can see it from the ddl script of this in TOAD.


Thus, it means that you are hard coding the daylight saving time.


For example in Turkey, DST is GMT +03:00, it means if you create this script in summer time it will be hardcoded as +03:00 and if it is in other than day light saving time(normal time), it will be +02:00 in Turkey.



Solution:


Using named timezone code solves the problem, it will automatically adjust the execution time for you. Do not forget that, it also prevents



BEGIN

SYS.DBMS_SCHEDULER.CREATE_JOB

(

job_name        => 'MYCHEMA.SR54'

 ,start_date => TO_TIMESTAMP_TZ('2010/01/21 10:00:00.000000 Turkey','yyyy/mm/dd hh24:mi:ss.ff tzr')

,repeat_interval => 'FREQ=DAILY;BYHOUR=3;BYMINUTE=0;BYSECOND=0'

,end_date        => NULL

,job_class       => 'DEFAULT_JOB_CLASS'

,job_type        => 'PLSQL_BLOCK'

,job_action      => 'GENERIC_SUMMARY.procprocessreport ( 54 );'

,comments        => 'trunc(sysdate+1)+3/24'

);

DBMS_SCHEDULER.enable (name => 'log_parallel_process_job');


End;


/



For further details, and thanks goes to below links:


http://forums.oracle.com/forums/thread.jspa?threadID=646581


You can find your Time Zone Names in Oracle® Database Globalization Support Guide:


For eample: http://download-uk.oracle.com/docs/cd/B28359_01/server.111/b28298/applocaledata.htm#i637736

Sunday, January 17, 2010

Thursday, January 7, 2010

ORA-01102: cannot mount database in EXCLUSIVE mode

Problem:

I had used DBCA to create Oracle database and after doing all; had started the database from SQL and got the error message:

SQL> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size             402655344 bytes
Database Buffers         1191182336 bytes
Redo Buffers                7360512 bytes
ORA-01102: cannot mount database in EXCLUSIVE mode

I looked for the pmon process;

[oracle@geoppdb01 ~]$ ps -ef|grep pmon
oracle   11758     1  0 Jan05 ?        00:00:00 ora_pmon_mydb
oracle   17754     1  0 14:17 ?        00:00:00 ora_pmon_MYDB
oracle   17795 17715  0 14:19 pts/1    00:00:00 grep pmon

Cause:

ORACLE_SID environment variable is case sensitive and in the .bash_profile I had set this as uppercase, despite the fact that  it was lower case.

Solution:

I had first changed the ORACLE_SID variable as lowercase, and then shutt down the two instances and startup solved my problem.

SQL> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size             402655344 bytes
Database Buffers         1191182336 bytes
Redo Buffers                7360512 bytes
Database mounted.
Database opened.
SQL>

Windows (powershell) counterparts of Linux commands

You may find Windows mostly powershell equivalent of frequently used Linux commands here. I will update this post, with newer ones by the ti...