Monday, October 10, 2011

How to Create Two Reports Servers With the Same Name in the Same Subnet?


Hi Everyone,

Sometimes the reports server name is hardcoded in the application (i.e. Forms/Reports integration) and trying to create different reports servers with the same name in the different middletiers (Development, Testing, QA, Production) generate error messages like REP-56040 or REP-51002 due the same  name cannot be used for ORB . The broadcast port used by the Reports Server could be changed to stop the communication between reports servers, and then, is possible to create different reports servers with the same name, each of them listening in a different broadcast port.

IMPORTANT: It is strongly recommended that you do not change the default channel and port unless it is absolutely necessary, like in this case that the objective is explicitly isolate each middle tier (or each ORACLE_HOME, if different middle tiers are installed in the same box).

Solution

The default port value for rwnetwork.conf is assigned when Oracle Application Server is installed, usually it is 14021 or 14022 if the first one is not available.

If rwnetwork.conf broadcast ports are customized, the valid port range reserved for Reports Server is from 14021 to 14030.

These steps are suggested for multicast and is strongly recommended to test first, before applying in a production box.

For this example, the same reports server name will be use for Testing and QA middle tiers. Suppose the QA middle tier is listening in port 14021 by default. Do not change anything in QA middle tier; the changes will be applied to the Testing middle tier.

Step 1) Backup rwnetwork.conf located in Testing middle tier in %ORACLE_HOME%\reports\conf. Stop all the reports servers available in this middle tier

Step 2) Change the broadcast port for default multicast mechanism, i.e.:

FROM port=14021:   
<?xml version = '1.0' encoding = 'ISO-8859-1'?>             
<!DOCTYPE discoveryService SYSTEM "file:h:\ora\as1012/reports/dtd/rwnetworkconf.dtd">      
<discoveryService>
  <multicast channel="228.5.6.7" port="14021" timeout="1000" retry="3"/>
  <!--namingService name="Cos" host="%NAMING_HOST%" port="%NAMING_PORT%"/-->
</discoveryService>    

TO port=14022:
<?xml version = '1.0' encoding = 'ISO-8859-1'?>
<!DOCTYPE discoveryService SYSTEM "file:h:\ora\as1012/reports/dtd/rwnetworkconf.dtd">
<discoveryService>
  <multicast channel="228.5.6.7" port="14022" timeout="1000" retry="3"/>        
  <!--namingService name="Cos" host="%NAMING_HOST%" port="%NAMING_PORT%"/-->
</discoveryService>

Remember, the port range must be between 14021 to 14030.

Step 3) Startup the Reports Servers from Testing middle tier again.

Step 4) In Testing's ORACLE_HOME, execute rwdiag.sh in Unix or rwdiag.bat in Windows; it will display all the reports servers using port 14022:
C:\Ora\as1012\BIN>rwdiag.bat -findAll

Broadcast mechanism used to locate servers
------------------------------------------
Channel address = 228.5.6.7
Channel port    = 14022

(1) Name = myrepserver: Type = server : Host = Ajinkya-vichare


  Step 5) If you execute rwdiag in the QA's ORACLE_HOME, this rwdiag will detect the reports servers running in 14021:
C:\Ora\BI1012\BIN>rwdiag -findall

Broadcast mechanism used to locate servers
------------------------------------------
Channel address = 228.5.6.7
Channel port    = 14021

(1) Name = myrepserver : Type = server : Host = Ajinkya-vichare

 Both middle tiers are using the same reports server name myrepserver, without conflicts; the difference is the broadcast port.

It solves my purpose, hope it will help you... Again many thanks to oracle metalink.

Note: please confirm the same on Test server before implement the same on production server.

Enjoy working with Middleware...

Regards,
Ajinkya Vichare

ajinkya-vichare.blogspot.com

1 comment: