Thursday, December 22, 2011

Informatica: SQLException: [informatica][Oracle JDBC Driver]String index out of range: -1

This is an error that can drive you insane since it is not as explenatory as it should be and you can loose many hours tracing the cause of it or (like in my case) even in reinstalling the server.

Cause:

Its merely an issue in host name resolving. Informatica tries to get the hostname and the substring it in order to ommit the domain name. If it fails to do so returns an ambiguous error that is probably due to some kind of substring failure.

Thus if you encounter this kind of behavior change the hosts file in order to include the real network IP of the informatica Host machine

Resolution

The hosts file includes only one line that referenced the hosts's network IP:

  nnn.nnn.nn.n Full_hostname (domain)

  The loopback interface entry is missing, thus you must add the following entry:

 127.0.0.1 Hostname (Name Only)

Powercenter without any hotfix is working even without the loopback entry. So I guess that the problem is some kind of substring command that was failing due to empty string at Hostname resolving.

Monday, December 5, 2011

Informatica PowerCenter Repository Queries

Here are some repository queries that may come handy:


How to find all the mappings and sessions which have PARALLEL hints in the SQL Override


SELECT S.SUBJ_NAME, M.MAPPING_NAME, W.WIDGET_NAME, A.WIDGET_ID, W.VERSION_NUMBER,
SUBSTR(A.ATTR_VALUE, 1, 60) ATTR_VALUE
FROM OPB_WIDGET_ATTR A, OPB_WIDGET W, OPB_SUBJECT S, OPB_WIDGET_INST I, OPB_MAPPING M
WHERE A.WIDGET_ID = W.WIDGET_ID
AND W.IS_VISIBLE = 1
AND A.VERSION_NUMBER = W.VERSION_NUMBER
AND A.WIDGET_TYPE IN(2, 3, 11) --Limit to Src/Tgt/Lkp Transformations
AND W.WIDGET_ID = I.WIDGET_ID
AND W.VERSION_NUMBER = I.VERSION_NUMBER
AND I.MAPPING_ID = M.MAPPING_ID
AND I.VERSION_NUMBER = M.VERSION_NUMBER
AND W.SUBJECT_ID = S.SUBJ_ID
AND UPPER(A.ATTR_VALUE) LIKE '%PARALLEL%'
UNION
SELECT S.SUBJ_NAME, W.TASK_NAME||'.'||TI.INSTANCE_NAME TASK_NAME, 'SQL Override' WIDGET_NAME,
A.SESS_WIDG_INST_ID, TI.VERSION_NUMBER, SUBSTR(A.ATTR_VALUE, 1, 60) ATTR_VALUE
FROM OPB_SWIDGET_ATTR A, OPB_TASK_INST TI, OPB_TASK W, OPB_SUBJECT S
WHERE A.SESSION_ID = TI.TASK_ID
AND A.VERSION_NUMBER = TI.VERSION_NUMBER
AND TI.WORKFLOW_ID = W.TASK_ID
AND TI.VERSION_NUMBER = W.VERSION_NUMBER
AND W.IS_VISIBLE = 1
AND W.SUBJECT_ID = S.SUBJ_ID
AND UPPER(A.ATTR_VALUE) LIKE '%PARALLEL%'
ORDER BY 1, 2, 3, 4;

How to turn on Write Backward Compatible Session Log File for all session tasks in a folder

UPDATE OPB_TASK_ATTR A SET A.ATTR_VALUE=1
WHERE A.ATTR_ID=17 -- WBCSLF
-- 102 Write performance data to repository
-- 108 Collect performance data
-- 105 Enable high precision
AND EXISTS (
SELECT 0 FROM OPB_TASK T, OPB_SUBJECT S
WHERE T.TASK_ID = A.TASK_ID
AND T.VERSION_NUMBER = A.VERSION_NUMBER
AND T.IS_VISIBLE = 1
AND T.SUBJECT_ID = S.SUBJ_ID
AND S.SUBJ_NAME LIKE '%Sample%'
)
-- AND A.INSTANCE_ID = 0 -- Reusable Session Only ;

What are today's long-running tasks

select -- the SRC_ROWS may look big if joiner is used
T.SUBJECT_AREA, T.INSTANCE_NAME, TRUNC(AVG(END_TIME-START_TIME)*24, 2) RUN_HOUR,
MIN(T.START_TIME) START_TIME,
SUM(L.SRC_SUCCESS_ROWS) SRC_ROWS, SUM(L.TARG_SUCCESS_ROWS) TGT_ROWS
from REP_TASK_INST_RUN T, OPB_SESS_TASK_LOG L
where T.run_err_code=0 and (T.END_TIME-T.START_TIME)>= 1/24
and T.START_TIME >= TRUNC(SYSDATE)-2/24
and T.INSTANCE_ID = L.INSTANCE_ID
GROUP BY T.SUBJECT_AREA, T.INSTANCE_NAME
Order By RUN_HOUR desc;

Inside the Expression Transformation

select S.SUBJ_NAME, W.WIDGET_NAME, F.WIDGET_ID, F.FIELD_NAME, F.FIELD_ID, E.EXPR_ID, E.VERSION_NUMBER, E.EXPRESSION from OPB_WIDGET W, OPB_SUBJECT S, OPB_WIDGET_FIELD F, OPB_WIDGET_EXPR R, OPB_EXPRESSION E
where W.SUBJECT_ID=S.SUBJ_ID and W.WIDGET_ID=F.WIDGET_ID
and W.WIDGET_ID=R.WIDGET_ID AND F.FIELD_ID=R.OUTPUT_FIELD_ID
and W.WIDGET_ID=E.WIDGET_ID AND R.EXPR_ID=E.EXPR_ID
and W.VERSION_NUMBER = F.VERSION_NUMBER
and F.VERSION_NUMBER = R.VERSION_NUMBER
and R.VERSION_NUMBER = E.VERSION_NUMBER
and W.IS_VISIBLE = 1
and w.WIDGET_NAME like 'EXP_SAMPLE%'
order by S.SUBJ_ID, W.WIDGET_ID, F.FIELD_ID;

Which session populates the specific target table

select SUBJECT_AREA, SESSION_NAME,TARGET_NAME,
MAX(SUCC_ROWS) AS ROWS#, TYPE_ID, COUNT(1) SAMPLE#
from (
select SUBJECT_AREA, SESSION_INSTANCE_NAME SESSION_NAME,
TYPE_ID, SUCCESSFUL_AFFECTED_ROWS SUCC_ROWS,
TABLE_NAME TARGET_NAME
from PM_REPO.REP_SESS_TBL_LOG
WHERE TYPE_ID in (2) -- Target Only
and END_TIME >= TRUNC(SYSDATE-40)
and SUCCESSFUL_AFFECTED_ROWS > 0
and TABLE_NAME like :TGT_NAME||'%' ESCAPE '\'
)
Group By SUBJECT_AREA, SESSION_NAME, TARGET_NAME, TYPE_ID
Order By SUBJECT_AREA, TARGET_NAME, SESSION_NAME ;

How to avoid re-generating & re-transporting ABAP program after slightly changing the mapping

CR 29233 and 63134 have been opened to have fix this problem.
-- Find the current LAST_SAVED and UTC_LAST_SAVED
select m.Mapping_ID, m.VERSION_NUMBER, m.Last_Saved, m.UTC_Last_Saved,
v.User_ID, v.LAST_SAVED, v.UTC_LAST_SAVED, v.COMMENTS,
p.PROGRAM_NAME, p.INSTALL_TIME, p.VERSION_NUMBER ABAP_VERSION_NUM
from opb_mapping m, OPB_VERSION_PROPS v, opb_program_info p
where m.MAPPING_ID = v.OBJECT_ID
and v.OBJECT_TYPE = 21
and m.SUBJECT_ID = v.SUBJECT_ID
and m.VERSION_NUMBER = v.VERSION_NUMBER
and m.MAPPING_ID = p.MAPPING_ID(+)
and m.SUBJECT_ID = p.SUBJECT_ID(+)
nd m.VERSION_NUMBER = p.VERSION_NUMBER(+)
and m.MAPPING_NAME = :MAP_NAME o
rder by m.version_number;

Then modify the LAST_SAVED, UTC_LAST_SAVED in OPB_VERSION_PROPS and OPB_MAPPING first; then modify the VERSION_NUMBER in OPB_PROGRAM_INFO if necessary.

--The timsstamp below is just a sample
update OPB_VERSION_PROPS v set last_saved='12/05/2008 09:10:11', UTC_LAST_SAVED=1228363499
where v.OBJECT_ID = :MAP_ID and
version_number = :VER_NUM and
object_type = 21;

update opb_mapping m set last_saved='12/05/2008 09:10:11', UTC_LAST_SAVED=1228363499
where MAPPING_ID = :MAP_ID and version_number = :VER_NUM;

update opb_program_info set VERSION_NUMBER = :VER_NUM
where mapping_id = :MAP_ID and subject_id = :SUB_ID;

Link from EXP_FROM.PORT_NAME to ???

select S.SUBJ_NAME, WF.INSTANCE_NAME ||'.'|| F.FIELD_NAME
FROM_NAME, F.WIDGET_ID, F.FIELD_ORDER, F.FIELD_ID,
WT.INSTANCE_NAME ||'.'|| T.FIELD_NAME TO_NAME, T.WIDGET_ID, T.FIELD_ORDER, T.FIELD_ID
from OPB_WIDGET Z, OPB_WIDGET_INST WF, OPB_WIDGET_INST WT,
OPB_WIDGET_FIELD F, OPB_WIDGET_FIELD T, OPB_WIDGET_DEP D, OPB_SUBJECT S
where Z.SUBJECT_ID = S.SUBJ_ID
and Z.IS_VISIBLE = 1
and Z.WIDGET_ID = F.WIDGET_ID
and Z.WIDGET_ID = WF.WIDGET_ID
and Z.RU_VERSION_NUMBER = WF.VERSION_NUMBER
and WF.REF_VERSION_NUMBER = F.VERSION_NUMBER
and WF.VERSION_NUMBER = D.VERSION_NUMBER
and WF.MAPPING_ID = D.MAPPING_ID
and WF.INSTANCE_ID = D.FROM_INSTANCE_ID
and F.FIELD_ID = D.FROM_FIELD_ID
and D.TO_INSTANCE_ID = WT.INSTANCE_ID
and D.TO_FIELD_ID = T.FIELD_ID
and D.MAPPING_ID = WT.MAPPING_ID
and D.VERSION_NUMBER = WT.VERSION_NUMBER
and WT.WIDGET_ID = T.WIDGET_ID
and WT.REF_VERSION_NUMBER = T.VERSION_NUMBER
and Z.WIDGET_NAME like 'EXP_FROM%'
and F.FIELD_NAME like 'PORT_NAME%'
order by F.FIELD_ID;

How the connection values is set at session level

select x.WORKFLOW_ID , t.TASK_ID, t.TASK_NAME, b.INSTANCE_ID, b.INSTANCE_NAME,
b.SESS_WIDG_INST_ID, x.CONNECTION_NUM, x.CONNECTION_TYPE, x.CONNECTION_ID,
x.CONNECTION_VALUE, c.OBJECT_NAME
from opb_session s, opb_task t, OPB_SWIDGET_INST b, OPB_SESS_CNX_VALS x, opb_cnx c
where c.OBJECT_ID(+) = x.CONNECTION_ID and s.MAPPING_ID = b.MAPPING_ID and
s.SESSION_ID = b.SESSION_ID and s.SESSION_ID = t.TASK_ID and
s.SESSION_ID = x.SESSION_ID and b.SESS_WIDG_INST_ID = x.SESS_WIDG_INST_ID and
t.SUBJECT_ID = :SUBJ_ID and b.INSTANCE_NAME like :WIDGET_NAME -- Source/Target
and t.TASK_NAME like :SESS_NAME
order by t.task_name, b.SESS_WIDG_INST_ID;

Find Transformation Attribute Override at Session Level

select f.SUBJ_NAME Folder, t.task_name SESSION_NAME, i.INSTANCE_NAME,
o.OBJECT_TYPE_NAME, a.*
from opb_swidget_attr a, OPB_SWIDGET_INST i,
OPB_WIDGET w, OPB_OBJECT_TYPE o,
opb_task t, opb_subject f
where a.attr_value in (:VALUE1, :VALUE2, :VALUE3)
and i.SESSION_ID = a.SESSION_ID
and i.SESS_WIDG_INST_ID = a.SESS_WIDG_INST_ID
and i.WIDGET_ID = w.WIDGET_ID
and i.WIDGET_TYPE = w.WIDGET_TYPE
and i.WIDGET_TYPE = o.OBJECT_TYPE_ID
and i.SESSION_ID= t.task_id
and t.SUBJECT_ID= f.subj_id;

List all the Transformations in a given Mapping

Including the transformations within the mapplet
WITH M AS (
select M.SUBJECT_ID, M.MAPPING_ID
from OPB_MAPPING M, OPB_SUBJECT S
where S.SUBJ_ID = M.SUBJECT_ID
and S.SUBJ_NAME LIKE :Folder_Name
and M.MAPPING_NAME like :Mapping_Name
)
select O.OBJECT_TYPE_NAME, W.INSTANCE_NAME, W.COMMENTS
from OPB_WIDGET_INST W, OPB_OBJECT_TYPE O, M
where O.OBJECT_TYPE_ID = W.WIDGET_TYPE
and O.OBJECT_TYPE_NAME NOT IN ('Mapplet')
and W.MAPPING_ID = M.MAPPING_ID
union
select O.OBJECT_TYPE_NAME, W.INSTANCE_NAME, W.COMMENTS
from OPB_WIDGET_INST W, OPB_OBJECT_TYPE O, M
where O.OBJECT_TYPE_ID = W.WIDGET_TYPE
and O.OBJECT_TYPE_NAME NOT IN ('Mapplet', 'Output Transformation', 'Input Transformation')
and W.MAPPING_ID in (
select X.MAPPING_ID
from OPB_WIDGET_INST W, OPB_OBJECT_TYPE O, M, OPB_MAPPING X
where W.MAPPING_ID = M.MAPPING_ID
and O.OBJECT_TYPE_ID = W.WIDGET_TYPE
and O.OBJECT_TYPE_NAME = 'Mapplet'
and X.REF_WIDGET_ID = W.WIDGET_ID
)
order by 1,2 ;

Wednesday, October 5, 2011

Informatica Collations or TE_7073 Aggregate Errror: Expecting keys to be ascending

The above Error occurs when the aggregator option "Sorted Input" is enabled and the data is being sorted by the source DB Engine.
This is caused when the Source DB's and Informatica's Collation are different thus aggregator raises an error when it receives data in a different from expected order. As you Can see at the image below character "_" is collated before char "S" by default. 





Informatica expects the opposite since it is using binary sort.

In order to fix that uses the corresponding DB clause to utilize the proper collation. In that particular example we are using Sybase IQ and the solution is to change order by clause


From:
Order By DetailTbl.AST_KEY, 

DetailTbl.AST_VALUE_TYPE, 
DetailTbl.AS_ID_TIME_BY_DAY_DT

To:
Order By DetailTbl.AST_KEY, 

SORTKEY(DetailTbl.AST_VALUE_TYPE, 'binary'), 
DetailTbl.AS_ID_TIME_BY_DAY_DT


if we issue the query with the altered order by clause we get the order that Infa expects.

Some rules that apply:

  • A character set is a set of symbols and encodings.
  • A collation is a set of rules for comparing characters in a character set.
  • Any given character set always has at least one collation.
  • Any given character set may have several collations.

Friday, September 16, 2011

INFA Quick Tip: Create a Target Using an Expression


This is a quick tip that the famous Panoutsos told me. If you want to cut some time during development you can instantly create and add a target based on an Expression definition.



To do that, simply right click on the desired expression task and select "Create and Add Target".

Of course variable and input ports are being discarded from the target table. Only Output and Input/Output ports are being included during the target's creation.


Tuesday, July 12, 2011

HOW TO: Change the domain database password


HOW TO: Change the domain database password

Solution
To change the domain database password, do the following:
1. Back up nodemeta.xml:
    cd <informatica--installation-folder>/server/config/
    cp nodemeta.xml nodemeta_backup.xml

2. Run the command infasetup UpdateGatewayNode to change the password. Run this command on each gateway node.

Example:
cd <informatica--installation-folder>/server
infasetup.sh updateGatewayNode -DatabaseAddress in <DB IP>:<DB PORT> -DatabaseUserName <DBUid> -DatabasePassword newpassword -DatabaseType oracle -DatabaseServiceName orcl -DomainName <Domain Name> -NodeName <node Name> -NodeAddress in<Node Ip>:<Infa Port> -LogServiceDirectory C:\Informatica\PowerCenter8.1.1\server\tomcat\logs

3. Start the Informatica services.

Note:
Set the parameters enclosed within angular brackets <> according to you environment.

Friday, June 10, 2011

Change Default Formating in WEBI


In order to change default formating in WEBI XI onwards do the following

1.
Edit the configuration  file defaultConfig.xml which resides at the server uder business objects installation  e.g C:\Program Files\Business Objects\BusinessObjects Enterprise 12.0\classes\AppletConfig\defaultConfig.xml. If you are using rich client you must change the local file.


2.
The thing I want to point out here is the BACKGROUND setting. You see, in Web Intelligence, you cannot set the cells in a table to be transparent. That’s always bugged me. However, you can set the background to be transparent by default by changing the BACKGROUND line to the following:
<BACKGROUND R=”" G=”" B=”"/>


If you do this, you probably want to do the same for the next section, alternate body cells in a table (Alternate Row Shading), so the entire body of the table is transparent. After making this change, your table body will be transparent by default, but you can add color, to the background if you choose.
As you scroll down through the file, you see many things that you can customize in your formats. But one of the coolest options is at the bottom. Scroll down to the bottom, and you will find the settings for the skins. The built in skins are, in my humble opinion, ugly. Well, you can add your own skins. The skins are stored as images in the following folder:


C:\Program Files\Business Objects\BusinessObjects Enterprise 12.0\images\
I added a new image to this folder called globe.jpg. Then I added the following toward the bottom of the file:


<KEY VALUE=”cell_skin5,report_skin4,section_skin5,bloc_skin5?>
<SKIN NAME=”Globe” TYPE=”stretch”>
boimg://globe.jpg
</SKIN>
</KEY>


Now, when I go to select a skin for a report, Globe is listed among the options.

Source http://michaelwelter.wordpress.com/ 

Tuesday, March 29, 2011

Informatica 8.6.1: How To Avoid Erros Due to Reserved Words



In order to avoid SQL error at run-time due to reserved words at columns names you can do the following:


    1.  Create a reserved words file, reswords.txt, in the <PowerCenter_Home>\server\bin directory.
    2.  Specify the reserved words in the reswords.txt.



           Following is a sample resword.txt file:


           [SQL Server]
           RETURN
           TRANSACTION

            In the reswords.txt file, the following connection headers can be provided: 
            
                    [Teradata]
                    [Oracle]
                    [DB2]
                    [Sybase]
                    [Informix]
                    [SQL Server]
                    [ODBC]
                    [NEOVIEW]
                    [Netezza]


    3.  In Informatica Administrator, select the Data Integration Service and ddit the custom properties. 


    4. Add the following custom property:



    5.  Restart Integration Service. 


    6.  (OPTIONAL) Set the following value under Custom Properties in the Session Config Object 
          Properties tab:


                    ?Attribute: ReservedWordsFile
                    ?Value: C:\informatica\Powercenter8.6.1\server\bin\resword.txt






Tuesday, February 8, 2011

Use of Information and BI Maturity Levels


This is a redesign of a chart I came across, a chart that reminded me the state of BI we are in.
The original chart can be found at the excellent book “The Profit Impact of Business Intelligence”.
The aforementioned book is not a tech savvy’s choice. Its oriented towards BI project managers and for anyone who wants to create manage and leverage the BI asset on his organization.

The majority of organizations out there at level1 and struggling to move to the next league. This opens a window for opportunity that enterprises can reap in order to outperform competitors.  Unfortunately this is not the case. Most of the BI initiates are being seen as the poor relevant of the ERP/OLTP system. There is a lack in communicating the real profit of BI to the business stakeholders. Further more its gains are indirect and business process change is required in order for BI to shine in the IT portfolio.
 
Level1
It’s the most common Maturity stage. Indeed the majority of the BI initiates are just delivering information specified by the end users in a managed way.  There is no direct tie between information provided and decisions taken.
This is nothing more than a mere improvement at the process of delivering information prior the BI implementation.

Level 2
At the next level the company must provide a context of information rather than a simple list of required fields. That is we must seek why the information its being requested by the end-user community. By promoting the question “Why we need this kind of information” we can discover flaws to the process or to the information provided.  The major difference between level 1 and level 2 is that Level 2 leverages ROI by aligning supported processes and the Information provided by the BI environment.

Level 3
Based on the previous level the organization leverages the BI asset. This is the stage at witch process restructure take place. At this level we must ask how the information its being used by the end-user community. That means decisions are structured and standardized based on information rather than intuition based on the corresponding user. 

Friday, February 4, 2011

Excel Reports Formater

I have made a simple utility, that formats all reports in a folder (and) sub-folders as well. The purpose of this command line utility is to make the report width adjusted for printing.
It is written on VB .NET 2008 using express (Free) edition.
The BORF (Business Objects Report Formater :-) ) is taking 3 arguments

1. Target Path (e.g C:\Business Objects Pubication\ )
2. File pattern (e.g *.xls )
3. Include Sub-directories (Y/N)
Arguments are separated by space e.g:

BORF C:\temp *.xls Y

In the particular project we have a publication of around 1000 reports as XLS. Managers wanted the reports ready for printing. That is one button print without any modifications at the provided excel files.
Codding its not my forte so don't be harsh on me :roll:
Feel free to check it and provide changes.

Download From BOB Forums

p.s: I have combined the above with an excellent renaming utility in order to get rid of the instance ID on the published documents name. The command line utility BRC its free and can be found here http://www.bulkrenameutility.co.uk/Command.php

Sybase IQ: How to alter the size/type of an existing column


Sybase IQ does not support alter table with change column data type functionality. I don’t know if this is the case with the new version (15). If you are using a version prior 15 you must do the following:
  • First create a table similar to the source but with updated the column to the new data type.
                create table tmp_old_table_name 
                /* unchanged column definitions here */ 
                , old_column  new_type 
                ;
  • Then we must copy the contents of the original table to the newly created one.
                insert tmp_old_table
                (/* column list here */)
                select /* column list here */
                from old_table
                ;

  • Now that the data's there, create any other indexes you want.
                create index extra_index /* blah blah */
                ;
  • Drop or rename old table to backup
                drop table old_table
               
;
  • Rename new table to old table name
                sp_rename tmp_old_table, old_table
                ;

Tuesday, January 25, 2011

Monday, January 24, 2011

Faster WEBI XI Reports

::
:: Faster WEBI Reports ::
::

<< Universe Level >>

* Modifying the Array Fetch parameter (advanced parameters window of connection. Just edit connection in Universe and click twice Next. or we can control this parameter in CS.CFG file. Bigger number = faster query but it should be set up according to capacity of memory)
* Allocating table weights
* Using shortcut joins
* Using aggregate functions
* Creating and using aggregate tables
* Minimizing usage of derived tables

<< Report Level >>

* If you insert the Page Number/TotalNumberOfPages cell or the TotalNumberOfPages cell into a large report with many pages, Web Intelligence takes longer to return the data to the report.
* Opting for Refresh At-Will over Refresh-On-Open
* Not associating the List of Values (LOV) Objects which you don't want to use as a prompt
* Using universe Condition Objects, try to restrict/filter the data at universe end rather than at the report end.
* Keeping Complex Calculations at universe side.
* Minimizing usage of Report variables/formulas
* Auto height and auto width on report cells sucks in resources. setting cell sizes to fixed increases performance.

<< CMC Level >>

* Increasing Maximum Allowed Size of cache (CMC / servers / service categories / webi / Properties of webiprocessing server / Maximum Document Cache Size (KB) <<---- increase the default!!!)
* Increasing Minutes Before an Idle Connection is closed
* Increasing File Polling Interval in seconds
* Adjust Connection timeout, keep it as small as possible (webi report server attribute)

<< Config File Level >>

* freeing up unused system resources
keep the session time out as small as possible (default is 20 mins)
--XIR2--
for Java: web.xml file found here:
"..\Tomcat\webapps\businessobjects\enterprise115\desktoplaunch\WEB-INF\web.xml"
by changing the <session-timeout> 20 </session-timeout> entry.
--XIR2--
for .NET: web.config file found here:
"..\Business Objects\BusinessObjects Enterprise 11.5\Web Content\Enterprise11\InfoView\Web.config"
by changing the timeout=" 20 " entry.

* Changing the SQL works for specific RDMBS.
By default, Business Objects (Ver 4.1.3 Onwards) sorts the tables in the
‘from’ clause in ascending order of the row count i.e., the table with
minimum number of rows is placed at the beginning. Sybase uses the same order as Business Objects and so there is no effect on performance. But Oracle sorts the tables in descending order of the row count. So the table with maximum number of records is placed at the beginning. Oracle's rule-based optimizer looks at the order of table names in the FROM clause to determine the driving table. For optimum SQL execution in Oracle, the ‘from’ clause should be in order from largest to smallest which is the reverse order of that of BO and so affects the performance of the BO reports.Resolution: Table weight is a measure of number of rows in a table. To change the default Business Objects settings, the ORACLE PRM file must be modified as below:
• Browse to directory Business Objects\BusinessObjects Enterprise
XI R2\dataAccess\RDBMS\connectionServer\oracle.
• Open ORACLE.PRM file, change the REVERSE_TABLE_WEIGHT
value to N from Y.
Snippet from oracle.prm file:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE DBParameters SYSTEM
"../dbparameters.dtd"><DBParameters>
<Configuration>
<Parameter Name="REVERSE_TABLE_WEIGHT">Y</Parameter>
<Parameter Name="BACK_QUOTE_SUPPORTED">Y</Parameter>
<Parameter …
The SQL from clause of all Business Objects reports is now reverse weighted, largest to smallest rows (refer ‘After’ in figure 2.2). Now both BO and Oracle uses the same sort order and so the BO Report takes less than 10 seconds to open.

<< Server Level >>

Horizontal and Vertical Clustering. Load Balancing and Failover.

<< Hardware Level >>

Better hardware. All BOE related servers & DB Servers within the same LAN --if possible--. Gigabit Connections between servers. DB and BOE Servers on physically separate machines.

<< User Requirement Analysis >>

Stick to 6Sigma --if budget allows--. Rest of the approaches are destined to fail.

<< DW Background >>

Learn Datawarehousing methodology. There are many exchellent books on the subject.


<< Other >>

for .NET in IIS minimize the idle time out. (Application pool with Infoview, Properties, Edit the Shutdown worker processes after being idle for (time in minutes): on the Performance tab). Restart IIS, Webi App server, and Webi Rep server.



You can check the full thread at http://www.forumtopics.com/busobj/viewtopic.php?t=155190