You may need to put your logical or physical diagram in a PowerPoint presentation, but it is quite unpractical showing all columns and details of a table. If you just want to show the Object Name, you have to go to View -> Details -> Only Names.
Then, you can give a better look to your diagram by customizing the look and feel and the best thing is that you can always go back to the full view.
lunedì 22 aprile 2013
martedì 2 aprile 2013
Tip: Solve ORA-14402
Recently I have partitioned a fact table and today I had to perform the weekly load.
I got into the error:
ORA-14402: updating partition key column would cause a partition change
This error was being raised every time I tried to update the partition field (a date) in a record. To overcome this issue just execute the following:
I got into the error:
ORA-14402: updating partition key column would cause a partition change
This error was being raised every time I tried to update the partition field (a date) in a record. To overcome this issue just execute the following:
ALTER TABLE <my_table> ENABLE ROW MOVEMENT;
Tip: Scheduling OWB jobs using SQLPlus
Scheduling jobs in OWB 11g using the Calendar feature is possible only if you have bought the Data Integrator Enterprise Edition, which is not the case of the project I am currently working on.
You can still schedule jobs by using a SQLPlus script which can then be called in a .bat or Shell script and scheduled using Windows Scheduler or Crontab in Unix.
In OWB 11g, we can find a SQL script ready to use in [OWBHOME]\owb\rtp\sql. The script you need is called: sqlplus_exec_template.sql
The script can be executed only by a Workspace Owner or a Workspace user with Execute privileges.
The script uses the following parameters:
SQL> @sqlplus_exec_template.sql MYWKS WFS_LOCATION PROCESSFLOW "DIM_FACT
/DIM_ALL" "," ","
The script calls functions from the OWBSYS.wb_rt_script_util package so you may need to grant the right privilege to the OWB User.
![]() |
Error you get when you try to create a new Calendar Module in OWB 11g without Data Integrator EE license |
You can still schedule jobs by using a SQLPlus script which can then be called in a .bat or Shell script and scheduled using Windows Scheduler or Crontab in Unix.
In OWB 11g, we can find a SQL script ready to use in [OWBHOME]\owb\rtp\sql. The script you need is called: sqlplus_exec_template.sql
The script can be executed only by a Workspace Owner or a Workspace user with Execute privileges.
The script uses the following parameters:
- WORKSPACE Workspace in which the job is to run: e.g. MY_WORKSPACE Make sure you specify the right Workspace Name. You can check it by executing:
SELECT * FROM ALL_IV_WORKSPACES
- LOCATION_NAME Physical Name of the Location to which this task was deployed: e.g. MY_WAREHOUSE
- TASK_TYPE
- PLSQLMAP - OWB PL/SQL Mapping
- SQLLOADERCONTROLFILE - OWB SQL*Loader Mapping
- PROCESSFLOW - OWB ProcessFlow
- ABAPFILE - OWB SAP Mapping
- DATAAUDITOR - OWB DataAuditor Mapping
- SCHEDULEDJOB - OWB Scheduled Job
- CTMAPPING - OWB Template Mapping
- TASK_NAME Physical Name of the Deployed Object.e.g. MY_MAPPING. Make sure you specify the TASK_NAME in the following format: [PARENT_TASK]/TASK_NAME
- SYSTEM_PARAMS { , | (name = value [, name = value]...)}
- CUSTOM_PARAMS { , | (name = value [, name = value]...)}
SQL> @sqlplus_exec_template.sql MYWKS WFS_LOCATION PROCESSFLOW "DIM_FACT
/DIM_ALL" "," ","
The script calls functions from the OWBSYS.wb_rt_script_util package so you may need to grant the right privilege to the OWB User.
mercoledì 20 marzo 2013
Tip: DATE and DATETIME in OBIEE
I must admit that I am new to the OBIEE world and I really wish I can help people that are starting with this Oracle product to save some precious time when dealing with Calendar dimensions.
I have created a Calendar dimension in my database with a field "DIA" to be DATE. This dimension is meant to replace one that was already in place, same content, but more fields. I have imported the table in the physical layer, mapped it to the logical layer, but when I run the dashboard I kept on seeing date fields with DD/MM/YYYY hh:mm in the calendar prompts.
I spent quite a lot of time (call me dumb!) to find out that the answer was as simple as replacing the DATETIME field with DATE.
venerdì 15 marzo 2013
Tip: Reverse Engineering in Oracle Data Modeler
I am currently building a Data Warehouse using OWB as integration tool. I have almost finished and now comes what I like the less about my job... documentation!
During the development process, you usually create a number of staging tables. Oracle Data Modeler allows you to import tables from a schema. This way it is much easier writing down your documentation and you also have a visual presentation ready to use.
Let's go through the reverse engineering process:
1) Go to File -> Import -> Data Dictionary

5) Click on Finish
During the development process, you usually create a number of staging tables. Oracle Data Modeler allows you to import tables from a schema. This way it is much easier writing down your documentation and you also have a visual presentation ready to use.
Let's go through the reverse engineering process:
1) Go to File -> Import -> Data Dictionary

2) Add a new connection if you haven't set up any yet
3) Select your Schema/Database
Personally I find the filter option pretty useful for retrieving quickly the Schema you are looking for.
4) Select the objects you want to import
5) Click on Finish
If everything goes ok, you have your Model imported in Oracle Data Modeler and you can export images of your diagrams or generate your DDL code to attach to your documentation.
lunedì 4 marzo 2013
Oracle Tip: Find locked objects in Oracle Database
Tipically I end up locking objects by executing an Oracle Warehouse Builder (OWB) mapping and then stopping it because I realize I have forgotten a join condition. If you abruptly kill the session, the object may stay locked until the rollback is completed or endlessy if the session is killed before any action against the target table is taken.
In order to find out which object has been locked (and beg your DBA to kill the associated session or free the locks), run the following query:
The output will look like this:
In case you are the DBA (and you have DBA privileges), then get the SID and the SERIAL# and run the following:
In order to find out which object has been locked (and beg your DBA to kill the associated session or free the locks), run the following query:
SELECT c.owner, c.object_name, c.object_type, b.SID, b.serial#,
b.status, b.osuser, b.machine
FROM v$locked_object a, v$session b, dba_objects c
WHERE b.SID = a.session_id AND a.object_id = c.object_id;
b.status, b.osuser, b.machine
FROM v$locked_object a, v$session b, dba_objects c
WHERE b.SID = a.session_id AND a.object_id = c.object_id;
The output will look like this:
In case you are the DBA (and you have DBA privileges), then get the SID and the SERIAL# and run the following:
alter system kill session 'SID,SERIAL#';
mercoledì 27 febbraio 2013
Tip: Reset Oracle Sequence
Yesterday I was working on an ODI interface, a pretty easy one, which was supposed to insert new rows into a table using a <SEQUENCE>.NEXTVAL for populating the primary key.
The primary key was set NUMBER(4). The last value inserted had 17 as primary key. I was expecting new items to start from 18, but I was constantly getting:
to restore MY_SEQ.CURRVAL to 17.
The primary key was set NUMBER(4). The last value inserted had 17 as primary key. I was expecting new items to start from 18, but I was constantly getting:
SQL Error: ORA-12899: value too large for column
After spending a considerable amount of time for finding out which column was making my ODI interface fail, I have executed the following:
SELECT MY_SEQ.NEXTVAL
FROM DUAL;
which returned me: 124586!!!
Something has obviously gone wrong with that sequence and I needed to restore it to 17. So basically I have executed the following:
ALTER SEQUENCE MY_SEQ INCREMENT BY -(124586-17)
and then execute:
and then execute:
SELECT MY_SEQ.NEXTVAL
FROM DUAL;
to restore MY_SEQ.CURRVAL to 17.
Then you reset the correct increment by executing:
ALTER SEQUENCE MY_SEQ INCREMENT BY 1
Iscriviti a:
Post (Atom)