Wednesday, August 21, 2019

Anypoint Studio Settings

-startup
../Eclipse/plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.551.v20171108-1834
-vm
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/bin/java
-vmargs
--add-modules=ALL-SYSTEM
-Xms512m
-Xmx2048m
-XX:MaxPermSize=512m
-Dosgi.instance.area.default=@user.home/AnypointStudio/workspace
-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2
-Dequinox.resolver.revision.batch.size=1
-XX:ErrorFile=./studio_crash_report.log
-Djdk.http.auth.tunneling.disabledSchemes=
-Dfile.encoding=UTF-8
-Djava.awt.headless=true
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts

Sunday, September 2, 2018

[SOLVED] The Postman is not getting updated in Mac

I was struggling with Postman, as it wasn't getting updated and getting synced with my profile so I searched on internet and found this link:

https://github.com/postmanlabs/postman-app-support/issues/2489

There are numerous people there who have asked and answered for this problem. I tried few, but this one helped me:

Opening up the app through terminal, so that we can get the logs on it.
  • Right Click on the app -> Show packaged contents
  • The go inside the folder -> Contents -> MacOS
  • Right Click on the Postman Executable and open with terminal
  • This will open the app for the user with console mode to track background data flow.

Now go to Postman window:
  • Now Click the settings -> Check for updates options in postman app.
  • Click on update
  • In the terminal window you can see the progress and details of the updates happening.

Hope this helps.

Tuesday, July 10, 2018

To play music on multiple speakers (Mac Only)

I found this solution online, and I am still so excited, that I am putting this on my Oracle exclusive blog. On your mac you can connect multiple

On the MAC Turn on bluetooth and pair and connect to each speaker you want to use. Once all are connected open the Audio Midi Setup app found in the Utilities folder in the App directory.

In the lower left corner click on the '+' and create a Multi-output device.

Your connected bluetooth devices should be listed. Tick each one that you want to use.

Open System Preferences, click on Sound (the speaker icon) and choose the Multi-output device.

Open iTunes and play your tunes. 

The MAC will output to all connected bluetooth speakers.

If you want to play with volumes, left/right output volumes, mute etc then go back to the Audio Midi Setup app and click on the little triangle to the left of your Multi Output Device description and a drop-down will open showing the controls for each device. You can type in volume percent value or dB in the boxes or tick/untick boxes to mute the speaker or left/right channels.


You can also see the same here:

https://www.youtube.com/watch?v=Mwsq4syASjo

[Mulesoft]: How to transform Database result to JSON using Data Weave? (Part 1: Date not coming in the desired format from database result)

Recently I started working on Mulesoft, and will share my thoughts on the work and how it is different from Oracle SOA Suite, BPEL, OSB, ODI etc.

I was trying to fetch few records from Database (Oracle DB) and trying to map them to a JSON message, using Data Weave.

How to do transformation in Mulesoft, and what is Data Weave, you can refer here.

I was faced lot of problems while doing connection, while running MUnit Tests etc, (will share about them in other posts) but the most interesting and trivial part which I just solved I would like to share:

While fetching rows from a database, if the row has a date column, then our query shall look like:

SELECT
    D.PRODUCTID,
    D.PRODUCTNAME,
    D.ITEMTYPE,
   D.STARTDATE,
    H.CURRENCY
FROM
    BILL_DET D,
    BILL_HEAD H
WHERE
        D.ID = H.ID


remember, we are using multiple tables and joining them using some keys.

In this, the row returns the data and Data weave is also quite simple. (Comment, if you would like to see the Data Weave of this.)

However, the result I was getting was:

[
    {
        "id": "B-3-FX2TZ",
        "name": "Secure Delivery",
        "details": [
            {
                "itemType": "Usage",
                "startDate": 1504204200000,
                "currency": "USD"
            }
]

If you see the yellow part, you will notice, it is not coming as date although the column is supposed to be holding a date. which it does, when you check the flow in debug mode. (How to debug? will share in another post soon.)

So, the problem here, is we have a join of tables, and which requires an alias name, and because of that a prefix is used with column name. This in turn causes the value a bit complex for the object to JSON mapping.

So, to eradicate this problem, simply  convert it to to_char and give an alias name to the column name as well.
SELECT
    D.PRODUCTID,
    D.PRODUCTNAME,
    D.ITEMTYPE,
to_char(D. STARTDATE,'yyyy-mm-dd') DATESTART,
    H.CURRENCY
FROM
    BILL_DET D,
    BILL_HEAD H
WHERE
        D.ID = H.ID

Use this alias name in the Dataweave mapping and your problem will be solved.

Will be sharing more and more mulesoft content from now on. Not sure if I shall continue with the name Oracle Wizard now. Suggest a good name. Now I deal with SOA, OSB, ODI, Mule, Splunk, B2B and all kind of integrations. So I am searching a new name for my domain.

Comment and let me know what you would like to learn next.

Wednesday, June 7, 2017

opatch Command failing with error "JAVA_HOME is not set or does not exist"

I had a hard time understanding why opatch is failing and what could be the solution for this problem. On Oracle Support, they haven't really provided the solution and asked everyone to follow the "steps" as per the patch documents.

However, one key thing still they provided which gave me a hint how any command on opatch can work.

They mentioned:

First, be sure to follow the steps in the README attached to the patch. There are times when opatch apply -jre is required. Now, if opatch apply -jre can work, that means following shall also work:

opatch version -jre
opatch lsinventory -jre

so basically you need to find out JAVA_HOME

in unix, do following to ensure JAVA_HOME is really set:

echo $JAVA_HOME

./opatch version -jre $JAVA_HOME/jre

similarly all your commands with opatch shall work.

Tuesday, May 2, 2017

OVM having hard disk size issue, applications not starting: Solved

One of the troublesome situation is when you have to fix a problem in a guest machine. It actually is encouraging as well, as it is a guest machine, and not the main. But since I do my most of the dev work in guest, it was a bit panicking. So, I was trying to start my ODI studio in the linux guest machine, which is running on virtual box at mac host.

Since most of the size was occupied by my database and applications which I use often, I cant just free up space also. Hence I needed to increase the size of hard disk (VDI or VMDK) from my mac.

The below link has just about everything you need to do to increase the size of your hard disk:

http://derekmolloy.ie/resize-a-virtualbox-disk/

However, even after increasing the size of my hard disks successfully, my ODI studio didnt start.

To overcome this, i again opened Gparted Live and selected my "sdb" partition

That sdb harddisk had a warning sign, on selecting and viewing the properties of that partition, I got to know there is repair needed on the partition. So, I kept the sdb partition selected and went to Gparted > Check. After that I clicked "Apply". It successfully repaired and enabled the unused space from the hard disk to the partition. After that I quit the Gparted and started my ODI Guest machine.

And this time my ODI studio also started just like it used to earlier! It took me sometime to reach this solution, but learned a lot because of this trouble.

Thursday, April 27, 2017

Accessing Variable in ODI Procedure 11g/12c

Many times we would need to insert data from a variable into a table in ODI packages. To maintain log, to produce data to targets, to process the data in DB Procedures etc. To call any DB procedure or to insert values in tables we use ODI procedures in ODI Packages.

These ODI Procedures behave in similar way as DB procedures, but are a bit flexible and they provide more programming options for ODI purpose.

One of those things, I was trying, and I wanted to insert the variable in a table for monitoring purpose. But, somehow, hashtag '#' and variable name doesnt work. So I had to find out some other way to insert the data in the table.

Fortunately one of my colleagues already knew it, and I came to know from him that we can use "OPTIONS" in the ODI Procedure for this purpose. I had used "OPTIONS" earlier for programmatically deciding which task in ODI procedure is needed to be executed, I used boolean then. But there are other ways to use "OPTIONS".

To pass a variable to ODI Procedure, do the following:

1) Double click on the ODI proedure name in the designer pane under relevant project.
2) click on the "Options" tab on the newly opened window.
3) create a new option with Type as "Value". Choose name of your choice. For example I used: PREV_RANK_VAR.
4) save and close the ODI Procedure window.
5) Open the package where this procedure is being used.
6) Single Click on the procedure, and go to "Options" Tab, you shall see newly created option there.
7) in the value field against the corresponding Option, assign the variable name with hashtag such as #PREV_RANK.
8) In the ODI proedure task where you want to use the variable use below code:


INSERT
INTO COMPARE_RANK_TABLE VALUES
  (
    COMPARE_SEQ_ID.NEXTVAL,
    sysdate,
    '<%=odiRef.getOption("PREV_RANK_VAR")%>'  )

This will fetch the value of variable from the option which is attached with the ODI Procedure.

Please note that table name, variable name, option name all i have used here is for only explanation purpose. You shall be able to create your own data and variables for this.

Happy Learning!