Question

We have a Business Objects X14 universe and we have 2 oracle database schemas (BoDB, BoDB_CONNECT)

BoDB_CONNECT has to execute the queries using the BoDB schema.

I dont have password for BoDB schema.

So, basically I want to login with BoDB_CONNECT username and execute the reports using BoDB schema (by appending BoDB.TABLENAME).

But while I am creating the connection there is no separate schemaname in the Universe. It just have the username and password.

I dont want to hardcode the ownername of every table with BoDB. Is there any way to dynamically do this?

Was it helpful?

Solution

First, you have to be given access to the tables or nothing will work. That is, BoDB_CONNECT needs to have SELECT permissions to all of the tables in the BoDB schema that will be referenced in the universe.

Once that is done, you have a few options to implement your requirement. The most straightforward way is to simply include the schema owner with the table name. This happens automatically when you drag in a table to your model in UDT or IDT, and is the recommended solution.

You can also easily switch the owners, if, for example, the tables are moved to a new schema. Select all of the tables to move, and right-click. In UDT, select "Rename Table" and in IDT select "Change Qualifier/Owner". You can then set the new owner name and that will be applied to all selected tables.

If, for some reason, you won't want the schema name associated with the table, there are two options:

  1. Create a private synonym in the BoDB_CONNECT schema for each table to be referenced in BoDB (ex. create synonym foo for bodb.foo). Thus, the universe will just have a reference to foo. Note, however, that BI4.1 does not currently support private synonyms in UDT/IDT. If you create objects that reference private synonyms, they will work correctly in WebI, but they will not parse in UDT/IDT. I believe this is a bug (since it worked in all prior versions), and I have a support case open with SAP currently.
  2. Switch the default schema. You can change the BEGIN_SQL parameter to set the default schema. In UDT this is done via File->Parameters-Parameter tab; in IDT it's Data Foundation->Properties->Parameters. In either case, you'd set the value of BEGIN_SQL to ALTER SESSION SET CURRENT_SCHEMA=bodb. This statement will be executed at the start of each query session, so references to foo will resolve to bodb.foo. Note, however, that this does not apply to actions within IDT/UDT itself; so you will get parse errors on objects that don't have an owner specified, but the queries will work in WebI.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top