Monday, October 19, 2015

ORA-01843: not a valid month;01843. 00000 - "not a valid month"

If any of you is encountering an error like "ORA-01843: not a valid month" while running an oracle SQL via any tool such as SQL Developer,TOAD,Oracle Data Integrator, Informatica then the only possibility which is there is that some columns in a table is of VARCHAR datatype which has data values as the date values whose format is different from what you have defined in "NLS_SESSION_PARAMETERS" of the database.

Demonstration:

01. SELECT * FROM NLS_SESSION_PARAMETERS; [Login via SYS to check the values ]


 02. Create a table say "TEST" with one VARCHAR column say the column name "DT"

CREATE TABLE TEST (DT VARCHAR(20));

03.  INSERT a data in the column different from your NLS_DATE_FORMAT.In our case NLS_DATE_FORMAT is 'DD-MON-RR'

INSERT INTO TEST VALUES('31/12/2014');

Clearly we have inserted the data in format other than NLS_DATE_FORMAT.

04. Try Query the "DT" column using the TO_DATE function without specifying any format specifier.You will run into the issue "ORA-01843: not a valid month"

SELECT TO_DATE(DT) FROM TEST;


05. Therefore, You need to specify either the format specifier while querying the VARCHAR column using TO_DATE function or insert the data in a table for the same VARCHAR column in the format what is defined as in NLS_DATE_FORMAT of the database.

SELECT TO_DATE(DT,'DD/MM/YYYY') FROM TEST;


Note : - If in the same "DT" column if you have one data say in "DD/MM/YYYY" format and other data in "MM/DD/YYYY" format then the data values are not consistent and the SQL will fail.Therefore, it is mandatory to insert the data in the same column in consistent format which can be either in "DD/MM/YYYY" or "MM/DD/YYYY" across the data set for the column. 


Monday, June 1, 2015

Understanding of 'MANUAL'/'DIFFERENCE' records in sub ledger fact.[OBIA]

Overview of  'DIFFERENCE' and 'MANUAL' records:

'DIFFERENCE' and 'MANUAL' records in the base fact i.e sub ledger fact gets created based on the comparison done between GL and the corresponding sub ledger.This entire process is called as GL Reconciliation process.



It is important to remember that only GL related dimensions will get populated for these kinds of records in the corresponding base fact.For Example :-If you are looking for party name for these types of records then in warehouse it will be populated as ‘Unspecified’.

'DIFFERENCE' records:

If the journal amount in General Ledger does not match the amount of all the corresponding accounting entries for the given journal lines in base fact, it inserts one row for the difference amount into the corresponding subledger fact.These records are tagged as DIFFERENCE. To find the details in your DW please do the join as per “W_AR_XACT_F.DOC_TYPE_WID = W_XACT_TYPE_D.ROW_WID AND W_XACT_TYPE_D.W_XACT_TYPE_CODE  = 'DIFFERENCE'”

'DIFFERENCE' records can be genuine or ungenuine.It will be ungenuine primarily in below two cases :-
01. When a user mistakenly maps a GL natural account number to an incorrect Group Account Number, incorrect accounting entries might be inserted into the sub ledger fact table.For Example : natural account 1210 is classified as belonging to 'AR' Group Account Number in "file_group_acct_codes_ora.csv" when it should be classified as having 'AP' Group Account Number. 
Remedy : you need to correct the Group Account Number in "file_group_acct_codes_ora.csv" for all those given accounts.
02. Records are not posted in GL in EBS sides.
Remedy : Identify all those source distribution ids and post it to GL[EBS].

'MANUAL' records:

'MANUAL' records are created when someone tries to create the journals in the GL side manually which has no subledger information.For example : for a GL Account Id 140 and Amount $200 is manually created in GL EBS side.


Generic problem encountered as part of DIFFERENCE records in OBIA:

Let us say a customer tries to match the "Accounts Receivable line from "GL Balance Sheet" and "AR Balance - from DSO report" and says that balances are not matching.
For example:-
AR Balance - from DSO report   -- Jan-12 (1,025,804) [Also remember DSO Report is at customer level]
Accounts Receivable from GL Balance Sheet. -- Jan-12 (53,001,270)
Clearly, there is huge difference between both the balances states there is some problem existing.
It is important to note that when you will SUM(AR_DOC_AMT) at customer level and you have DIFF/MAN records in your AR base fact. This will cause the discrepancy in balances.
This is because for DIFF/MAN records customer name will be populated as ‘Unspecified’ and hence W_AR_XACT_F will have the CUSTOMER_WID as 0.
Therefore, aggregation at customer level or Customer Accounts level will never going to give you the matching balances between GL and AR.
While as when you do the aggregation at LEDGER/GL Account level balances will match.

DIFFERENCE record example in Database/DW side:

Let us consider the INTEGRATION_ID of a DIFFERENCE record is '751124~2545'

SELECT SUM(AR_DOC_AMT) FROM W_AR_XACT_F WHERE ACCOUNT_DOC_ID IN (SELECT SOURCE_DISTRIBUTION_ID FROM W_GL_LINKAGE_INFORMATION_G WHERE JOURNAL_LINE_INTEGRATION_ID = '751124~2545');
-- (-28704)

SELECT INTEGRATION_ID,OTHER_DOC_AMT FROM W_GL_OTHER_F WHERE INTEGRATION_ID = '751124~2545';
-- 28704

SELECT AR_DOC_AMT FROM W_AR_XACT_F WHERE INTEGRATION_ID = '751124~2545';
-- 57408

Clearly, a DIFFERENCE record of (-28704) is created in W_AR_XACT_F.

Thursday, October 9, 2014

Working with Users and Groups in the Embedded LDAP Server..!


When you install OBIEE, the installer asks you to enter the username and password for an administrative user, which we use it to log in to Fusion Middleware Control.


To add new users to your system and assign them to groups (ex LDAP groups, AD groups) , you use the web based Oracle WebLogic  Administration Console, which contains features for managing the embedded LDAP server.


Example of Creating New Users and adding them to Groups  

01.   Log in to Oracle WebLogic  Administration Console(http://:7001/console) from the user having administrative privileges (example weblogic/welcome1)
02.  When the home page appears, click on Security Realms

03.    When Summary of Security Realms page appears, click on “myrealm”. ”myrealm” is the default container for security settings.
04.    Once you click on “myrealm” it will take you to the next page. Click on “Users and Groups” tab to start creating new users.
05.    Click on New button and enter the details for new users.”DefaultAuthenticator” refers to your embedded LDAP server ,which is default provider for authentication for newly configured system.Click “OK” to create the user.

 
06.    To add the user to one of the LDAP group in your LDAP directory , therefore to grant the user to a application role , click the user (“mayank”), it will take you to the another  page , Go to groups.

07.    Select the LDAP group/s and from the left pane and click “save” to complete the process.



Working with Application Roles and Policies

The user is created and added him/her in BIAuthors LDAP group, this group must be linked to BIAuthor application role .This role is granted to “BIAuthors” LDAP group in OPSS policy store as part of default security configuration.
To check how Application Roles and Policies are administrated in using Fusion Middleware Control
01.    Login to Enterprise Manager using url (http://:7001/em) using administrative user.
02.    When the home page is displayed, Go to Business Intelligence --> coreapplication. Right click “coreapplication”. Security --> Application Policies/Role will get displayed.

03.    Click on Application Roles. Locate on BIAuthor Application Role  and click on it.
04.    You can see in the bottom pane, two other objects have been granted this role.One is the BIAuthors LDAP group and other is the BIAdministrator  application role.This means this very object “BIAuthor” inherits the permission and privileges of BIAdministrator  application role.

Creating and Managing Application Roles

01.    Create an application role using the Fusion Middleware Control(em)
02.    Create a matching LDAP group using the Oracle Weblogic Admin Console or identify in FMW which existing LDAP group you want to map it to the application role.
03.    In FMW(em), grant the role to LDAP group.
04.    Using Admin Console, add user to relevant LDAP groups.
05.    Launch the Oracle BI Administrator tool and refresh its view of the current application roles in your Policy Store.
Example:
01.    Create an application role as shown above by logging into (http://:7001/em)
Name: FINANCE Manager
Description: Financial Analytics Manager

02.    Create the corresponding LDAP group and assign it to the required user to the group. For doing this log in to Oracle WebLogic  Administration Console(http://:7001/console)  from the user having administrative privileges (example weblogic/welcome1)
Name: FINANCE Managers
03.    Finally add the required user to this LDAP group.
04.    Log in back to the Fusion Middleware Control (em) and launch the application role page again. Click on the application role “FINANCE Manager”. Click on the Edit button.

05. To grant this new application role to the corresponding LDAP group, in the Member section Click add button and then select the LDAP group from the searched principal group.

Creating and Managing Application Policies

Application Policies like application role are created and held in a policy store and administrated and accessed by OPSS. You can access the existing by logging into Enterprise Manager using url (http://:7001/em) using administrative user. When the home page is displayed, Go to Business Intelligence --> coreapplication. Right click “coreapplication”. Security --> Application Policies/Role will get displayed.

Application Policies are basically set of JAVA permissions associated with a principle. For Example: The BI Author application policy allow you to develop reports and other perform other report authoring task.

Few application policies which are granted to the application role BIAuthor as below :-
oracle.bi.publisher.developReport
oracle.bi.publisher.developDataModel
EPM_Essbase_Administrator
EPM_Essbase_Calculate
EPM_Calc_Manager_Designer
oracle.epm.financialreporting.editBatch   
oracle.epm.financialreporting.editBook
oracle.epm.financialreporting.editReport
oracle.epm.financialreporting.scheduleBatch
oracle.epm.essbasestudio.cpadmi

The above are set of JAVA permissions associated with a principle. Oracle BI ship all possible combination of policies under the application role BIAdministrator, BISystem, BIConsumer, BIAuthor.
Therefore if you created an application role which is linked to a LDAP group and finally to an user, you just need to assign the any of the four application role to inherit their policies.

If you freshly want to create an application policy which is not among the available policies under the given four application role, you need to write the JAVA program for the same and then deploy it into the weblogic.
Always remember BIConsumer is by default assigned to user once you create it.

Saturday, July 12, 2014

WORKING WITH EVENT TASKS[Informatica Workflow Task]



WORKING WITH EVENT TASKS

We can define events in the workflow to specify the sequence of task execution.

Use the following tasks to help you use events in the workflow:

v    Event-Wait task. The Event-Wait task waits for an event to occur. Once the event triggers, the Integration Service continues executing the rest of the workflow.

Types of Events:

·        Pre-defined event: A pre-defined event is a file-watch event. This event waits for a specified file to arrive at a given location or directory.

Let us try to understand it with an example. You wanted to wait for a file to arrive in a directory while keeping the workflow on running mode. Once the file arrives in the directory the mapping session should automatically be kicked off to load the data into target.






·        User-defined event: A user-defined event is a sequence of tasks in the Workflow. We create events and then raise them as per need. In this case we first raise a user defined event and then configure the event wait which will wait for user defined event to occur and triggers the next session in the workflow

    EVENT RAISE: Event-Raise task represents a user-defined event. We use this task to raise a user defined event.
    EVENT WAIT: Event-Wait task waits for a file watcher event or user defined event to occur before executing the next session in the workflow.

Scenario:-
You have two sessions. The first session first remove the duplicates from the file (s_remove_dups) and once this gets completed then you need to run another session which calculates minimum and maximum salary (s_max_min_sal)

How to configure User-defined event
·         Workflow -> Create -> Give name wf_event_wait_event_raise -> Click ok.
·         Workflow -> Edit -> Events Tab and add events EVENT1 there.
·         Drag “s_remove_dups”
·         Click Tasks -> Create -> Select EVENT RAISE from list. Give name.
·         Right click event_raise_example -> EDIT -> Properties Tab -> Open Value for User Defined Event and Select EVENT1 from the list displayed. Apply -> OK.
·         Click link between event_raise_example and s_remove_dups and give the condition $s_remove_dups.Status=SUCCEEDED
·         Click Tasks -> Create -> Select EVENT WAIT from list. Give name event_wait_example. Click Create and then done.
·         Link event_wait_example to START task.
·         Right click event_wait_example -> EDIT-> EVENTS tab.
·         Select User Defined there. Select the Event1 by clicking Browse Events button.
·         Apply -> OK.
·         Drag s_max_min_sal and link it to event_wait_example.
·         Mapping -> Validate
·         Repository -> Save.
·         Run workflow and see.


Screenshot of Details