Feed aggregator

Oracle BI Publisher 11.1.1.9.0 is available !!!

Tim Dexter - Mon, 2015-05-25 14:12

Hi Everyone,

I am happy to announce that Oracle BI Publisher 11.1.1.9.0 is released, although I admit that this is almost a week old news now and I am sure some of you may have already known this by now from the BI Publisher homepage in OTN or from other sources. My sincere apologies for the delay here.

Thank you Tim for helping me to get back into this blog membership and being patient to allow me put this word out. My activity in the blog has been so less in the past that I am as good as a new member here. When I tried to login last week, I was greeted with this message -

"Sorry, you do not have the privileges necessary to access the page you requested. This system is available to Oracle Employees only. Oracle Employees who would like to request a blog account should click here."

So I had to start all over and get a fresh access created. Thanks to Tim and Phil from IT support for helping me with this. I will now make sure to use this space more often and share more features, tips and tricks.

Oracle BI Publisher 11.1.1.9.0 was GA on May 19th and you can get the download, documentation, certification matrix and release notes here at the BI Publisher home page in OTN. Here is a quick snapshot of new features in this release. The download is also available at Oracle Software Delivery Cloud site. The documentation page has also been given a fresh new structure where in the left navigation you will notice "Task" and "Books" as two menu items. The task will provide quick reference to role based activities under different sub menu items such as "View & Publish", "Design Reports" etc. The "Books" menu will take you to the complete set of books. You can select Administrator's guide, or Developer's guide, Data Modelling Guide, Report Designer's guide and User's Guide for BI Publisher here. If you are looking for any feature, and do not find information under "Tasks" then check for the same under "Books" or use the search option.

Stay tuned for more updates on new features. Wish you have a good time exploring the new features!!

Categories: BI & Warehousing

Recover Oracle Undo Tablespace without Backup

Pakistan's First Oracle Blog - Sun, 2015-05-24 21:10
Woke up with an issue regarding a Oracle 10.2.0 database on Linux complaining about an Undo file on startup.


sqlplus '/ as sysdba'

SQL*Plus: Release 10.2.0.3.0 - Production on Fri May 22 20:11:07 2015

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Connected to an idle instance.

SQL> startup pfile='init.ora'
ORACLE instance started.

Total System Global Area 2801795072 bytes
Fixed Size                  2075504 bytes
Variable Size            1275069584 bytes
Database Buffers         1509949440 bytes
Redo Buffers               14700544 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 244 - see DBWR trace file
ORA-01110: data file 244: '/test/ORADATATEST/test/test_undo2a.dbf'


SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      MANUAL
undo_retention                       integer     21600
undo_tablespace                      string      test_UNDO02
SQL>



SQL> drop tablespace test_UNDO02  including contents and datafiles;
drop tablespace test_UNDO02  including contents and datafiles
*
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU4$' found, terminate dropping tablespace

 Check for active rollback segments:

 select segment_id, segment_name,status,tablespace_name from dba_rollback_segs where status not in ('ONLINE','OFFLINE');



Set the following parameter in the pfile.



*._offline_rollback_segments=(_SYSSMU4$)


And now try dropping UNDO tablespace again.

drop tablespace test_UNDO02  including contents and datafiles;

Tablespace dropped.

Now create a new UNDO tablespace:

create UNDO tablespace test_UNDO05 datafile '/test/oradata18/test/test_undo05_file1.dbf' size 500m autoextend on next 1m maxsize 1500m;


Tablespace created.



SQL> create UNDO tablespace test_UNDO05 datafile '/test/oradata18/test/test_undo05_file1.dbf' size 500m autoextend on next 1m maxsize 1500m;


Tablespace created.



SQL> startup pfile='inittest.ora'
ORACLE instance started.

Total System Global Area 2801795072 bytes
Fixed Size                  2075504 bytes
Variable Size            1392510096 bytes
Database Buffers         1392508928 bytes
Redo Buffers               14700544 bytes
Database mounted.
Database opened.

All good now.
Categories: DBA Blogs

Fixing Super LOV in Universal Theme

Dimitri Gielis - Thu, 2015-05-21 15:08
When you migrate to APEX 5.0 and the Universal Theme you might see that some plugins are not behaving correctly anymore. In this post I'll discuss the Enkitec Modal LOV plugin.

When I ran the plugin in my APEX 5.0 app with the Universal Theme it looked like this:


There's too much space in the search bar and the close button is not showing up with an icon.

Here're the steps I did to fix it. First you need to download the css file of the style you use and the js file from the plugin in Shared Components. I use the smoothness.css style most of the times, so I'll use that as an example.

To fix the close icon, add !important to the png:

.ek-ml .ui-state-default .ui-icon {
background-image: url(ui-icons_888888_256x240.png) !important;
}

Note: you can do that for all those png on line 467 till 489.

To fix the height, add following css to smoothness.css:

.superlov-button-container {
  height:50px;
}

And finally in enkitec_modal_lov.min.js change the height of the searchContainer from a dynamic height (r) to 0px:

$searchContainer.css("height","0px")

Next upload those files again to the plugin.

When you run the plugin it should give you this result:


Now the bigger question is; do we still need that plugin? In APEX 5.0 there're native Modal Pages, so you could create an Interactive Report and set the page as a Modal Page. Next you can hook that up to a button or link and you've just build your own Modal LOV.

I still like to use the plugin at the moment (as it's just one item on the page), but it could use a refresh to make it look nicer and more inline with Universal Theme.

Wonder what you think - would you build your own Modal LOV in APEX 5.0 or would you still prefer to use a plugin? 

Categories: Development

What is the APEX Open Mic Night at Kscope15?

Joel Kallman - Wed, 2015-05-20 21:32
At the upcoming ODTUG Kscope15 conference, on Monday night, June 22, there will be the Monday Community Events.  The Community Event for the Oracle Application Express track at Kscope15 is the ever-popular Open Mic Night.  Without a doubt, this is one of my favorite events at the Kscope conference.

An Oracle employee sent me an email today, inquiring about the Open Mic Night.  This employee, who is a user of Oracle Application Express at Oracle, will be attending the Kscope conference for the very first time.  As I replied to him in email:

Open Mic night will be on Monday evening, from 8:00P - 10:00P.  You would think that most people would call it a day (after a long day), but it's usually a packed room.

Open Mic night is the attendee's night to shine in front of their fellow attendees.  People are given roughly 5 - 10 minutes to show off what they've done with APEX - it's timed.  No PPT.  If you show a PowerPoint, you will be booed.  You're on stage, you plugin your laptop to a projector, and you present on a big screen.  It's just a great way for people in the #orclapex community to proudly show what they've accomplished.  I've seen some extraordinarily creative and professional solutions from our customers.

The time goes by fast, so you have to come prepared.  And the Oracle APEX team usually sponsors the beer for this event, so it can get a bit rowdy. ;)

If you're at Kscope15 for the APEX track, or even half-curious about APEX, it's a "must attend" event.

Here's a shot from last year's Open Mic Night:



BIP scheduleReport with Parameters

Tim Dexter - Wed, 2015-05-20 15:37

I have just spent an hour or so working on getting a sample scheduleReport web service working with parameter values. There are a lot of examples out there but none I have found have the parameters being set. Our doc is a little light on details on how to set them up :) In lieu of that, here's this!

        // Set the parameter values for the report. In this example we have
        // 'dept' and 'emp' parameters. We could easily query the params dynamically
 
        //Handle 'dept' parameter
        ParamNameValue deptParamNameVal = new ParamNameValue();
        deptParamNameVal= new ParamNameValue();
        deptParamNameVal.setName("dept");
        // Create the string array to hold the parameter value(s)
        ArrayOfXsdString deptVal = new ArrayOfXsdString();
        // For individual values or multiples, add values to the 
        // string array e.g. 10,20,30
        deptVal.getItem().add("10");
        deptVal.getItem().add("20");
        deptVal.getItem().add("30");
 
        // Asterisk used for a null value ie 'All'
        //deptVal.getItem().add("*");

        // add the array to the parameter object
        deptParamNameVal.setValues(deptVal);
 
        //Handle 'emp' parameter
        ParamNameValue empParamNameVal = new ParamNameValue();
        empParamNameVal= new ParamNameValue();
        empParamNameVal.setName("emp");
        ArrayOfXsdString empVal = new ArrayOfXsdString();
        // For individual values or multiples, add values to the string array 
        // empVal.getItem().add("Jennifer Whalen");
        // empVal.getItem().add("Michael Hartstein");

        // Asterisk used for a null value ie 'All'
        empVal.getItem().add("*");
        empParamNameVal.setValues(empVal);
 

        // add parameter values to parameter array        
        ArrayOfParamNameValue paramArr = new ArrayOfParamNameValue();
        paramArr.getItem().add(deptParamNameVal);
        paramArr.getItem().add(empParamNameVal);
 
        //Now add array to values obj
        ParamNameValues pVals = new ParamNameValues();
        pVals.setListOfParamNameValues(paramArr);

 The pVals object can then be added to the report request object.

        req.setParameterNameValues(pVals);

Hopefully, you can extrapolate to your code. JDev application available here, unzip and open the application.
Just the schedule report class is available here.

Categories: BI & Warehousing

Flipkart and Focus 3 - There’s Something (Profitable) About Your Privacy

Abhinav Agarwal - Wed, 2015-05-20 10:45
The third in my series on Flipkart and focus appeared in DNA on April 18th, 2015.



Part III – There’s Something (Profitable) About Your Privacy
Why do so many companies hanker after apps? Smartphone apps, tablet apps, iOS apps, Android apps, app-this, app-that….
Leave aside for a moment the techno-pubescent excitement that accompanies the launch of every new technology (if you are not old enough to remember words like “client-server[1]”, then “soa[2]” will surely sound familiar enough). Every Marketing 101 course drills into its students that acquiring a new customer is way costlier than retain an existing. Loyal customers (leaving aside the pejorative connotation the word “loyal” carries, implying that customers who shop elsewhere for a better deal are of dubious moral character) are what you should aspire to – that keep buying from you for a longer period of time[3] – and which allows you to refocus your marketing and advertising dollars towards the acquisition of newer customers, faster. If you spend less on unnecessary discounts and expensive retention schemes then margins from existing customers are automatically higher.



Customers can stay loyal if you can build a bond of affinity with them. You should aspire to be more like the local kirana owner (only infinitely richer), who in a perfect world knew everything about you – your likes, dislikes, which festivals you celebrated, and therefore which sweets you would buy, when your relatives came over to stay and what their likes were, what exotic food items you wanted, and so on. And who knew your name. Hence the marketer’s love for loyalty programs[4], no matter that customer loyalty is notoriously difficult to guarantee[5].

In the world of online retailing (actually, it applies just as well to any kind of retailing), how do you get to acquire a deep level of intimacy with your customer? Smartphone apps provide this degree of intimacy that desktop / laptop browsers cannot. This is by simple virtue of the fact that the smartphone travels with the user, the user is constantly logged on to the app, and the app knows where you go and where you are. So no wonder that in December 2011, Amazon offered a “brazen[6]” deal to its customers in brick-and-mortar stores to do an “in-store” price-check of items using the Amazon Price Check app[7], and if the same product was available on Amazon, get it at a discount off the store’s price. Though termed “not a very good deal[8]”, it nonetheless angered[9] the Retail Industry Leaders Association, and elsewhere was described as “Evil But It's the Future[10]”. The combination of availability – the app was installed on the smartphone that was with the user – and the integrated capabilities in the device – a camera that fed into a barcode scanner app –made this possible. The appeal of apps is undeniable.

The magical answer is – “app”. Your best-thing-since-sliced-bread app is installed on the customer’s smartphone (or tablet or phablet), is always running (even when it is not supposed to be running), knows everyone in your contacts (from your proctologist to the illegal cricket bookie), can hear what you speak (even your TV can do this now[11]), knows where you are, who you call, what text messages you send and receive, knows what other apps you have installed on your smartphone (presumably so it can see how potentially disloyal you could be), which Wi-Fi networks you connect to, access what photos and videos you have taken (naughty!) and so on and so forth. All this the better to hear you with, the better to see you with, and ultimately the better to eat you (your wallet) with – with due apologies to Little Red Riding Hood[12]. You may want to take a closer look at the permissions your favorite app wants when you install it – like Amazon India[13], eBay[14], Flipkart[15], Freecharge[16], HomeShiop18[17], Jabong[18], MakeMyTrip[19], Myntra[20], SnapDeal[21]. Great minds do seem to think alike, don’t they?

[Technical aside: I covered the red herrings thrown in favour of apps in the first part, but here is some more… You can store more data, more effectively, and process that data better using an app than you can with a plain browser-based approach. True. But not quite. The ever-evolving world of HTML5 (the standard that underpins how information is structured and presented on the web) has progressed to make both these points moot – with offline storage[22] and local SQL database support[23]. Yes, there are arguments to be made about handling large amounts of data offline with browser-based mechanisms, but these are for the most part edge-cases. To be fair, there are some high-profile cases of companies switching to native apps after experimenting with HTML5-based apps (hybrid apps that wrapped a browser-based UI with a native shell), like LinkedIn[24] and Facebook[25]. The appeal of apps therefore is undeniable. But, as I argued earlier, the appeal of apps does not negate the utility of browser-based interfaces.]

What is all this useful for? Your app now knows that you Ram, Shyam, and Laxman in your contacts have birthdays coming up, and it can suggest an appropriate gift for them. Convenient, isn’t it? While driving to work, you can simply tell your app – speak out the commands – to search for the latest perfume that was launched last week and to have it gift wrapped and delivered to your wife. The app already has your credit card details, and it knows your address. Your app knows that you are going on a vacation next week (because it can access your calendar, your SMS-es, and perhaps even your email) to Sikkim; it helpfully suggests a wonderful travel book and some warm clothing that you may need. The imagined benefits are immense.

But, there is a distinctly dark side to apps – as it relates to privacy – that should be a bigger reason of concern for customers and smartphone users alike. Three sets of examples should suffice.
You get a flyer from your favourite brick-and-mortar store, letting you know that you can buy those items that your pregnant daughter will need in the coming weeks. You head over to the store, furious – because your daughter is most certainly not pregnant. Later you find out that she is, and that the store hadn’t made a mistake. It turns out the truth is a little more subtler than that[26], and a little more sedate than what tabloid-ish coverage - with headlines like “How Companies Learn Your Secrets[27]” - made it out to be (the original presentation made at the PAW Conference is also available online[28]).

There are enough real dangers in this world without making it easier to use technology to make it even more unsafe. Considering how unsafe[29] air travel can be for women[30] and even girls[31], one has to question the wisdom of making it even[32] more so[33]. If this does not creep you out, then perhaps the Tinder app – which uses your location and “displays a pile of snapshots of potential dates in a user’s immediate area”[34], to as close as within 100 feet[35] - may give you pause for thought.

Do apps need all the permissions they ask for? No. But, … no! Would they work if they didn’t have all those permissions? 99% of the time, yes – they would work without a problem. For example, an app would need to access your camera if you wanted to scan a barcode to look up a product. The app would need access to your microphone if you wanted to speak out your query rather than type it in the app. What if you don’t particularly care about pointing your camera at the back of books to scan their barcodes, or speaking like Captain Kirk into your phone? Sorry, you are out of luck. You cannot selectively choose to not grant to certain privileges to an app – at least on a device running the Android mobile operating system. In other words, it is a take-it-or-leave-it world, where the app developer is in control. Not you. And wanting to know your location? Even if you are a dating app, it’s still creepy.

But surely app makers will ask you before slurping your very personal, very private information to its servers in the cloud? Yes, of course – you believe that to be true, especially if you are still in kindergarten.

A few weeks before its IPO[36], JustDial’s app was removed from the Google Play Store[37]. It was alleged that the updated version of the JustDial app had “started retrieving and storing the user’s entire phone book, without a warning or disclaimer. [38],[39]” Thereafter, JustDial’s mobile “Terms and Conditions” were updated to include the following line: “You hereby give your express consent to Justdial to access your contact list and/or address book for mobile phone numbers in order to provide and use the Service.[40]

In 2013, US-based social networking app Path was caught as it “secretly copied all its users’ iPhone address books to its private servers.”[41] Action was swift. The FTC investigated and reached a settlement with Path, which required “Path, Inc. to establish a comprehensive privacy program and to obtain independent privacy assessments every other year for the next 20 years. The company also will pay $800,000 to settle charges that it illegally collected personal information from children without their parents’ consent.”[42] In the US, a person’s address book “is protected under the First Amendment[43].” When the controversy erupted, it was also reported that “A person’s contacts are so sensitive that Alec Ross, a senior adviser on innovation to Secretary of State Hillary Rodham Clinton, said the State Department was supporting the development of an application that would act as a “panic button” on a smartphone, enabling people to erase all contacts with one click if they are arrested during a protest[44].” Of course, politics is not without its dose of de-rigueur dose of irony. That dose was delivered in 2015 when it emerged that Hillary Clinton had maintained a private email account even as she was Secretary of State in the Barack Obama presidency and refused to turn over those emails[45].

So what happened to Just Dial for allegedly breaching its users’ privacy? Nothing. No investigation. No fine. No settlement. No admission. No mea-culpa. In short, nothing. It was business as usual.
Apps can be incredibly liberating in eliminating friction in the buying process. But hitching your strategy to an app-only world is needless. It is an expensive choice – from many, many perspectives, and not just monetary. The biggest costs are of making you look immature should you have to reverse direction. As a case-in-point, one can point to the entirely avoidable brouhaha over Flipkart, Airtel, and Net Neutrality[46]. In this battle, no one came smelling like roses, least of all Flipkart, which attracted mostly negative attention[47] from the ill-advised step, notwithstanding post-fact attempts to bolt the stable door[48].

Let me end with an analogy. The trackpad on your laptop is very, very useful. Do you then disable the use of an externally connected mouse?

Disclaimer: views expressed are personal.


[1] "Computerworld - Google Books", https://books.google.co.in/books?id=c2t_-WWE1VAC&pg=PA109&lpg=PA109&dq=client-server+hype&source=bl&ots=SJGHWFM-M5&sig=g6sagoJV_xVSvp22-rgOonfLpNY&hl=en&sa=X&ei=x1ExVb3NKYeumAX2_IGICQ&ved=0CDYQ6AEwBA#v=onepage&q=client-server%20hype&f=false
[2] "SOA: Hype vs. Reality - Datamation", http://www.datamation.com/entdev/article.php/3671061/SOA-Hype-vs-Reality.htm
[3] "How Valuable Are Your Customers? - HBR", https://hbr.org/2014/07/how-valuable-are-your-customers/
[4] "Loyalty programmes: Are points that consumers stockpile juicy enough to keep them coming back? - timesofindia-economictimes", http://articles.economictimes.indiatimes.com/2013-06-30/news/40272286_1_loyalty-programmes-loyalty-card-loyalty-management
[5] "What Loyalty? High-End Customers are First to Flee — HBS Working Knowledge", http://hbswk.hbs.edu/item/6679.html
[6] "Amazon's Price Check App Undercuts Brick-and-Mortar Stores Prices | TIME.com", http://business.time.com/2011/12/08/use-amazons-price-check-app-and-save-15-this-saturday/
[7] "Amazon.com Help: About the Amazon Price Check App", http://www.amazon.com/gp/help/customer/display.html?nodeId=200777320
[8] "Amazon pushing Price Check app with controversial online discounts | The Verge", http://www.theverge.com/2011/12/10/2626703/amazon-price-check-app-competition-discount
[9] "Retail association pissed about Amazon.com's Price Check app - GeekWire", http://www.geekwire.com/2011/retail-association-pissed-amazoncoms-price-check-app/
[10] "Amazon Price Check May Be Evil But It's the Future - Forbes", http://www.forbes.com/sites/erikkain/2011/12/14/amazon-price-check-may-be-evil-but-its-the-future/
[11] "Samsung smart TV issues personal privacy warning - BBC News", http://www.bbc.com/news/technology-31324892
[12] "Little Red Riding Hood - Wikipedia, the free encyclopedia", http://en.wikipedia.org/wiki/Little_Red_Riding_Hood
[13] https://www.dropbox.com/s/63zk6oyt9tqad4p/AmazonIndia_app.png?dl=0
[14] https://www.dropbox.com/s/g4tj1k5d5yfbqex/ebay_app.png?dl=0
[15] https://www.dropbox.com/s/wq0spvgzo9il6rx/Flipkart_app.png?dl=0
[16] https://www.dropbox.com/s/jxvur4g1jqdb03k/freecharge_app.png?dl=0
[17] https://www.dropbox.com/s/7aza8ipjvqhn6m1/HomeShop18_app.png?dl=0
[18] https://www.dropbox.com/s/jgel7ltka5u5ogr/Jabong_app.png?dl=0
[19] https://www.dropbox.com/s/wkqhewbizxpcw7w/MakeMyTrip_app.png?dl=0
[20] https://www.dropbox.com/s/pcp6hoy38pfkiw3/Myntra_app.png?dl=0
[21] https://www.dropbox.com/s/0gngd11rz2fpu3q/snapdeal_app.png?dl=0
[22] "Web Storage", http://dev.w3.org/html5/webstorage/
[23] "Offline Web Applications", http://www.w3.org/TR/offline-webapps/#sql
[24] "Why LinkedIn dumped HTML5 & went native for its mobile apps | VentureBeat | Dev | by J. O'Dell", http://venturebeat.com/2013/04/17/linkedin-mobile-web-breakup/
[25] "Mark Zuckerberg: Our Biggest Mistake Was Betting Too Much On HTML5 | TechCrunch", http://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest-mistake-with-mobile-was-betting-too-much-on-html5/
[26] "Did Target Really Predict a Teen’s Pregnancy? The Inside Story", http://www.kdnuggets.com/2014/05/target-predict-teen-pregnancy-inside-story.html
[27] "How Companies Learn Your Secrets - NYTimes.com", http://www.nytimes.com/2012/02/19/magazine/shopping-habits.html?_r=0
[28] "Predictive Analytics World Conference: Agenda - October, 2010", http://www.predictiveanalyticsworld.com/dc/2010/agenda.php#day1-8a
[29] "Federal judge upholds verdict that North Bergen man molested woman on flight ‹ Cliffview Pilot", http://cliffviewpilot.com/federal-judge-upholds-verdict-that-north-bergen-man-molested-woman-on-flight/
[30] "Man accused of groping woman on flight to Newark - NY Daily News", http://www.nydailynews.com/new-york/man-accused-groping-woman-flight-newark-article-1.1709952
[31] "Man jailed for molesting girl, 12, on flight to Dubai | The National", http://www.thenational.ae/uae/courts/man-jailed-for-molesting-girl-12-on-flight-to-dubai
[32] "Virgin is Going to Turn Your Flight Into a Creepy Bar You Can't Leave", http://mic.com/articles/37807/virgin-is-going-to-turn-your-flight-into-a-creepy-bar-you-can-t-leave
[33] "KLM Introduces A New Way To Be Creepy On An Airplane - Business Insider", http://www.businessinsider.com/klm-introduces-a-new-way-to-be-creepy-on-an-airplane-2012-2?IR=T
[34] "Tinder Dating App Users Are Playing With Privacy Fire - Forbes", http://www.forbes.com/sites/anthonykosner/2014/02/18/tinder-dating-app-users-are-playing-with-privacy-fire/
[35] "Include Security Blog | As the ROT13 turns….: How I was able to track the location of any Tinder user.", http://blog.includesecurity.com/2014/02/how-i-was-able-to-track-location-of-any.html
[36] http://en.wikipedia.org/wiki/Justdial, accessed April 11, 2015
[37] "Updated: JustDial App Pulled From Google Play Store; Privacy Concerns? - MediaNama", http://www.medianama.com/2012/09/223-justdial-app-pulled-from-google-play-store-privacy-concerns/
[38] "Updated: JustDial App Pulled From Google Play Store; Privacy Concerns? - MediaNama", http://www.medianama.com/2012/09/223-justdial-app-pulled-from-google-play-store-privacy-concerns/
[39] "Bad App Reviews for Justdial JD", http://www.badappreviews.com/apps/147872/justdial-jd-search-anything, accessed April 09, 2015
[40] "Terms Of Use”, http://www.justdial.com/MobileTC, accessed April 09, 2015
[41] "The Path Fiasco Wasn't A Privacy Breach, It Was A Data Ownership Breach - The Cloud to Cloud Backup Blog", http://blog.backupify.com/2012/02/09/the-path-fiasco-wasnt-a-privacy-breach-it-was-a-data-ownership-breach/
[42] "Path Social Networking App Settles FTC Charges it Deceived Consumers and Improperly Collected Personal Information from Users' Mobile Address Books | Federal Trade Commission", https://www.ftc.gov/news-events/press-releases/2013/02/path-social-networking-app-settles-ftc-charges-it-deceived
[43] "Anger for Path Social Network After Privacy Breach - NYTimes.com", http://bits.blogs.nytimes.com/2012/02/12/disruptions-so-many-apologies-so-much-data-mining/?_r=0
[44] Ibid.
[45] "Hillary Clinton deleted 32,000 'private' emails, refuses to turn over server - Washington Times", http://www.washingtontimes.com/news/2015/mar/10/hillary-clinton-deleted-32000-private-emails-refus/
[46] "Flipkart Pulls Out of Airtel Deal Amid Backlash Over Net Neutrality", http://www.ndtv.com/india-news/flipkart-pulls-out-of-airtel-deal-amid-backlash-over-net-neutrality-754829
[47] "Flipkart's stand on net neutrality - The Hindu", http://www.thehindu.com/business/flipkarts-stand-on-net-neutrality/article7106072.ece

[48] "Our Internet is headed in the right direction: Amod Malviya - Livemint", http://www.livemint.com/Companies/1J4CaeGnXvKCbwvWW76J6H/Our-Internet-is-headed-in-the-right-direction-Amod-Malviya.html


© 2015, Abhinav Agarwal (अभिनव अग्रवाल). All rights reserved.

2 minute Tech Tip: Working with JSON in APEX

Dimitri Gielis - Tue, 2015-05-19 17:30
On Monday Bob Rhubart did a video call with me in his series of 2MTT (2 Minute Tech Tip) on YouTube. You find my 2MMT here.

I talked about using JSON and APEX and gave two examples were we use it.

In previous blog posts I gave more details on those techniques. Here's a quick overview:
Categories: Development

Change first day of week in APEX 5.0 Calendar

Dimitri Gielis - Tue, 2015-05-19 01:52
APEX 5.0 comes with a new calendar region, which is way nicer than the previous calendar in APEX. It has more features, looks better and is also responsive. Behind the scenes you'll see the calendar region is based on Full Calendar.


In Belgium we use Monday as first day of the week, whereas in the US they seem to use Sunday as start of the week in the calendar overview. I've been integrating Full Calendar before, so I knew that library had an option to set the first day of the week. You could either specify an option called firstDay and set that to 1, or you could change the language, and depending the language it would adjust the start day of the week.

In APEX 5.0 I looked for that option, but there's not a specific attribute to set the first day of the week, instead it's based on the language of your application. If you go to Shared Components > Globalization Attributes by default it's set to en, which has Sunday as start of the week. If you set it to en-gb it will have Monday as start of the week.


I searched some time to find how to do it, so hopefully this post will help others to find it more easily. Thanks to Patrick for sharing the way it was implemented.

Categories: Development

With PL/SQL and LONGs (and PRODUCT_USER_PROFILE)

Gary Myers - Sun, 2015-05-17 01:45
One use for the 12.1.0.2 addition of PL/SQL functions in the WITH clause is to get the HIGH_VALUE of a partition in a usable column format.

with
 FUNCTION char2000(i_tab in varchar2, i_part in varchar2) 
 RETURN VARCHAR2 IS
   v_char varchar2(2000);
 BEGIN
   select high_value into v_char
   from user_tab_partitions a
   where a.table_name = i_tab
   and a.partition_name = i_part;
   --
   if v_char like 
     'TO_DATE(''%'', ''SYYYY-MM-DD HH24:MI:SS'', ''NLS_CALENDAR=GREGORIAN'')'
   then
      v_char := regexp_substr(v_char,q'{'[^']+'}');
   end if;
   --
   RETURN v_char;
 END;
select table_name, partition_name, 
       char2000(table_name, partition_name) high_val,
       partition_position, tablespace_name, 
       segment_created, num_rows, last_analyzed, 
       global_stats, user_stats
from user_tab_partitions ut
where segment_created='YES'
order by table_name, high_val;
/

Oracle have spent well over a decade telling us that LONG is deprecated, but still persist in using it in their data dictionary. PL/SQL is the only practical way of getting the values into a more usable data type.

You will want the last version of the SQL Plus client. For SQL, sqlplus treats the semi-colon as a "go off and execute this". PL/SQL has traditionally needed a period on an otherwise empty line to switch from the statement editor to the command prompt.

For example:

Having PL/SQL embedded in the SQL statement confuses the older clients, and we get a bout of premature execution.


In the 12.1.0.2 client, a WITH statement is treated as a PL/SQL statement if it contains PL/SQL (ie needing the period statement terminator). If it doesn't contain PL/SQL then it doesn't (so there's no change required for older scripts). That said, I'd recommend consistently using the period terminator for PL/SQL and SQL.  


The SQLcl client (still beta/early adopter) currently manages the straight select okay, but fails if it is part of a CREATE VIEW. 


Tim Hall has already noted that the WITH PL/SQL doesn't currently work when embedded in a PL/SQL block (such as a procedure), but that is expected in a future release. 

Oh, and while it isn't documented in manual, WITH is its own statement for the purposes of PRODUCT_USER_PROFILE. I can't imagine anyone on the planet is still using PRODUCT_USER_PROFILE for security. If they are, they need to rethink in light of WITH statements and result sets being returned by PL/SQL. 



The human being is the only animal that...

FeuerThoughts - Sat, 2015-05-16 08:41
Last night, I decided to re-read Stumbling on Happiness, a book I'd discovered a few years ago and was (then) delighted with. 

I chose that over one of my (back then) favorite books of fiction, because I'd been thinking yesterday and how odd it is that lots of left-leaning humans are all upset about climate change and really pissed at their elected officials about their non-action on this literally world-changing issue at a time when radical action is necessary - yet they don't take radical action in their own lives.

It's pretty clear that politicians will not change direction (will not override the influence of the source of their funding), until their constituents demonstrate a deep desire for change, backed up by action.

Anyway, there I was wondering once again about humans and why we behave the way we do. And so I sought out some answers in SoH. After all, the renowned Malcolm Gladwell, author of The Tipping Point, says right on the cover: 
"If you have even the slightest curiosity about the human condition, you ought to read it. Trust me."
OK, so fine. If a person says "trust me", usually you want to run in the other direction. But hey....

So I started reading and soon found Daniel Gilbert talking about psychologists are expected sometime in their career to finish The Sentence that starts with "The human being is the only animal that..." and now it was his turn.

Exciting! And then he finished the sentence:
"The human being is the only animal that thinks about the future."
And then you know what I did?

I stopped the reading book - and tossed it into the recycle bin. Yep, I threw the book away. That's how much Gilbert disgusted me, right then and there.

Why? Because of all the things we know about the world and the way it "works", the one thing we can never know is what another animal - even another human - is actually, truly thinking

All we can know, all we can see, all we can measure, and then draw conclusions from, is how an animal manifests their thinking into the world.

Gilbert cites as one "proof" of his Sentence that squirrels will, ahem, squirrel away nuts in advance of winter even in places where they will then find, winter after winter, that nuts or other food remain abundant. 

Go, Gilbert, go! Apply a human frame of judgement onto other animals, sure, why not? Why not assume that means that squirrels don't think about the future, rather than saying: "Maybe they do think about the future and know that they cannot trust what the future will bring, because they are not willing to destroy forests to build houses to hide them from the vagaries of the future."

So I threw out the book, but that got me thinking about The Sentence. I thought I would offer my own variations on that statement and invite others to do the same. Here goes...

The human being is the only animal that:
  • creates garbage, including vast "islands" of plastic in the middle of our oceans
  • causes the extinction of entire species, year in and year out
  • poisons water, the source of all life on this planet
  • learns multiple languages
  • holds it in
And just to pre-empt some typical responses:

The human being is the not only animal that:
  • creates art - lots of birds do, too. Just check out nests of bowerbirds.
  • has a sense of right and wrong - black bears do, too. Just check out Among the Bears. Seriously: READ THIS BOOK.
  • uses tools - birds, chimpanzees and others repurpose stones, branches, etc. as tools
  • is altruistic - again, black bears, and even more so ants. Many species of ants are way more altruistic than humans.
So what can you think of that only a human does? And please don't tell me about your belief about internal states of mind. That's just an opinion. Tell me about what humans do.



Categories: Development

APEX 5.0: There are issues with the configuration of the Static Files in your environment

Patrick Wolf - Thu, 2015-05-14 09:13
After installing Oracle APEX 5.0, do you get the alert “There are issues with the configuration of the Static Files in your environment. Please consult the “Configuring Static File Support” section in the Application Express Installation Guide.” when you try … Continue reading
Categories: Development

java.sql.SQLException: Invalid number format for port number

Vikram Das - Wed, 2015-05-13 18:11
Jim pinged me with this error today:

on ./adgendbc.sh i get
Creating the DBC file...
java.sql.SQLRecoverableException: No more data to read from socket raised validating GUEST_USER_PWD
java.sql.SQLRecoverableException: No more data to read from socket
Updating Server Security Authentication
java.sql.SQLException: Invalid number format for port number
Database connection to jdbc:oracle:thin:@host_name:port_number:database failed
to this point, this is what i've tried.
clean, autoconfid on db tier, autoconfig on cm same results
bounced db and listener.. same thing.. nothing i've done has made a difference

I noticed that when this error was coming the DB alert log was showing:

Wed May 13 18:50:51 2015
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x8] [PC:0x10A2FFB
C8, joet_create_root_thread_group()+136] [flags: 0x0, count: 1]
Errors in file /r12.1/admin/diag/rdbms/erp/erp/trace/erp_ora_14528.trc  (incident=1002115):
ORA-07445: exception encountered: core dump [joet_create_root_thread_group()+136
] [SIGSEGV] [ADDR:0x8] [PC:0x10A2FFBC8] [Address not mapped to object] []
Incident details in: /r12.1/admin/diag/rdbms/erp/erp/incident/incdir_1002115/erp_ora_14528_i1002115.trc

Metalink search revealed this article:

Java Stored Procedure Fails With ORA-03113 And ORA-07445[JOET_CREATE_ROOT_THREAD_GROUP()+145] (Doc ID 1995261.1)

It seems that the post patch steps for a PSU OJVM patch were not done.  We followed the steps given in above note were note completed. We completed these and adgendbc.sh completed successfully after that.


1.set the following init parameters so that JIT and job process do not start.

If spfile is used:

SQL> alter system set java_jit_enabled = FALSE;
SQL> alter system set "_system_trig_enabled"=FALSE;
SQL> alter system set JOB_QUEUE_PROCESSES=0;

2. Startup instance in restricted mode and run postinstallation step.

SQL> startup restrict

3.Run the postinstallation steps of OJVM PSU(Step 3.3.2 from readme)
Postinstallation
The following steps load modified SQL files into the database. For an Oracle RAC environment, perform these steps on only one node.
  1. Install the SQL portion of the patch by running the following command. For an Oracle RAC environment, reload the packages on one of the nodes.
2. cd $ORACLE_HOME/sqlpatch/19282015
3. sqlplus /nolog
4. SQL> CONNECT / AS SYSDBA
5. SQL> @postinstall.sql
  1. After installing the SQL portion of the patch, some packages could become INVALID. This will get recompiled upon access or you can run utlrp.sql to get them back into a VALID state.
7. cd $ORACLE_HOME/rdbms/admin
8. sqlplus /nolog
9. SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql


4. Reset modified init parameters

SQL> alter system set java_jit_enabled = true;
SQL> alter system set "_system_trig_enabled"=TRUE;
SQL> alter system set JOB_QUEUE_PROCESSES=10;
        -- or original JOB_QUEUE_PROCESSES value

5.Restart instance as normal
6.Now execute the Java stored procedure.


Ran adgendbc.sh and it worked fine.
Categories: APPS Blogs

Monitoring BRM Host Processes using Metric Extension in EM12c

Arun Bavera - Wed, 2015-05-13 11:01
image

#/bin/sh
export CURRENT_USER=brm
#echo 'PROCESS_NAME'  'COUNT'
for p in dm_oracle cm dm_aq dm_ifw_sync wirelessRealtime.reg
do
CNT=`ps -ef | grep ${CURRENT_USER} | grep ${p} | grep -v grep | grep -v cmmp | wc -l`
echo ${p} '|' ${CNT}
done

image
Categories: Development

APEX 5.0: Upgrade to the newest FontAwesome Icon Library

Patrick Wolf - Wed, 2015-05-13 04:39
Oracle APEX 5.0 ships with FontAwesome version 4.2.0 which will automatically be loaded if your application is using the Universal Theme. This makes it super easy to add nice looking icons to your buttons, lists and regions. But how can you integrate the most … Continue reading
Categories: Development

Oracle things that piss me off (pt 2) - No Direction

Gary Myers - Sun, 2015-05-10 01:33
The SQL Developer team has been chugging forward with it's SQL Command Line (sqlcl) tool.

As I developer, I understand where they are coming from. SQL Developer benefited from being able to run scripts built for the SQL*Plus command line tool. Then there's the temptation to add a few more useful titbits to the tool. And if it is built 'properly', then it would be relatively easy to decouple it from the GUI and have it as a stand-alone. 

BUT.....

where's the big picture ?

I'm pretty sure (but happy to be corrected) that "SQL Developer" is part of the 12.1 database installation. It is certainly referenced in the guides. So I'd assume that the next 12.2 release will have "SQL Developer" and "sqlcl" command line tool and SQL Plus. I couldn't guess whether the sqlplus will be offered as a last gasp, "to be deprecated" option or whether the long term plan is to supply two SQL command line tools.

Unix/Linux users are probably used to something similar, as they generally have the options of different shells, such as bash, ksh, csh etc. But to remedy any confusion, scripts are generally written with a shebang so it can automatically work out which of the available shells it should use.

What DBAs are most likely to end up with is a script for which they'll have to guess whether it is aimed at sqlplus or sqlcl (or, if they are lucky, a comment at the start of the code).

Having the clients "sort of" compatible makes it worse. It is harder to tell what it is aimed at, and what might go wrong if the incorrect client is used. Plus opting for compatibility perpetuates some of the dumb crud that has accumulated in sqlplus over the decades.

For example:
This is an SQL statement:
SET ROLE ALL;
This is a directive to the SQLPlus client
SET TIMING ON
You could tell the subtle difference between the SET as SQL statement and SET as sqlplus directive by the semi-colon at the end. Except that both sqlplus and sqlcl will happily accept a semicolon on the end of a 'local' SET command.

If you think it is hard keeping track of what commands are processed by the database, and what are processed by the client, we also have commands that do both.



16:01:49 SQL> select sysdate, to_char(sysdate), cast(sys_context('USERENV','NLS_DATE_FORMAT') as varchar2(20)) dt_fmt,
  2          cast(sys_context('USERENV','NLS_CALENDAR') as varchar2(20)) cal
  3          from dual;

SYSDATE                 TO_CHAR(SYSDATE)   DT_FMT               CAL
----------------------- ------------------ -------------------- --------------------
10/MAY/15               10/MAY/15          DD/MON/RR            GREGORIAN


16:02:35 SQL> alter session set nls_date_format = 'DD/Mon/YYYY';

Session altered.

16:02:40 SQL> select sysdate, to_char(sysdate), cast(sys_context('USERENV','NLS_DATE_FORMAT') as varchar2(20)) dt_fmt,
  2          cast(sys_context('USERENV','NLS_CALENDAR') as varchar2(20)) cal
  3          from dual;

SYSDATE            TO_CHAR(SYSDATE)     DT_FMT               CAL
------------------ -------------------- -------------------- --------------------
10/May/2015        10/May/2015          DD/Mon/YYYY          GREGORIAN

To clarify this, the statement returns one column as a DATE, which will be converted to a string by the client according to its set of rules, and one column as a string converted from a DATE by the database's set of rules.

The ALTER SESSION has been interpreted by both the client AND the server.

This becomes obvious when we do this:

16:02:44 SQL> alter session set nls_calendar='Persian';

Session altered.

16:06:22 SQL> select sysdate, to_char(sysdate),
  2       cast(sys_context('USERENV','NLS_DATE_FORMAT') as varchar2(20)) dt_fmt,
  3       cast(sys_context('USERENV','NLS_CALENDAR') as varchar2(20)) cal
  4       from dual;

SYSDATE                 TO_CHAR(SYSDATE)       DT_FMT               CAL
----------------------- ---------------------- -------------------- ----------
10 May       2015       20 Ordibehesht 1394    DD Month YYYY        Persian

The database knows what to do with the Persian calendar, but the sqlcl client didn't bother. SQLPlus copes with this without a problem, and can also detect when the NLS_DATE_FORMAT is changed in a stored procedure in the database rather than via ALTER SESSION. I assume some NLS values are available/fed back to the client via OCI.

If I was going for a brand-new SQL client, I'd draw a VERY strong line between commands meant for the client and commands intended for the database (maybe a : prefix, reminiscent of vi). I'd also consider that some years down the track, I might be using the same client to extract data from the regular Oracle RDBMS, their mySQL database, a cloud service.... 

To be honest, I'd want one tool that is aimed at deploying DDL to databases (procedures, new columns etc) and maybe data changes (perhaps through creating and executing a procedure). A lot of the rest would be better off supplied as a collection of libraries to be used with a programming language, rather than as a client tool. That way you'd get first class support for error/exception handling, looping, conditions....

PS.
When it comes to naming this tool, bear in mind this is how the XE install refers to the SQL Plus client:



Flipkart and Focus - 2 - Mobile Advertising Numbers Can Be Misleading

Abhinav Agarwal - Sat, 2015-05-09 10:44
The second part of my series of articles on why I believed Flipkart was at losing focus, at the wrong time, when faced with its most serious competition to date. This one focused on why a fascination with mobile advertising numbers could be very misleading.
It was published in DNA on April 14, 2015.

The Numbers Game Can be Very Misleading
According to the Internet Trends report of 2014, mobile internet advertising spend grew 47% year-on-year in 2013 to reach $12.7 billion, or 11% of the total global internet advertising spend. This mobile ad spend number was about 32 per cent of total mobile app revenues of $38 billion. Clearly mobile ad spend has been growing several times faster than non-mobile ad spend.
Facebook, the world’s largest social network, has been stunningly successful in growing its mobile revenues. So much so that “In the final three months of 2014, Facebook served 65% fewer ads than a year earlier, but the average cost of those ads to advertisers was 335% higher.[i]” As much as $2.5 billion in Facebook’s annual revenues came from these mobile ads – shown on smartphones or tablets. So successful has Facebook been in making money from selling these mobile ads that it “launched its in-app mobile ad network” in 2014[ii] to sell ads within other apps,


Meanwhile, Google has not been standing still. It is by far the largest player on the internet when it comes to online ads with estimated annual mobile ad revenues of $8 billion in 2013[iii], but its presence on the mobile platform has seen some hiccups. Its overall slice of the mobile ad pie has been shrinking, thanks to Facebook’s steroidal growth in the segment, but as an overall number Google’s mobile ad revenues continue to grow. It was estimated that Google and Facebook held a combined 50 per cent share of the global mobile ad revenue market in 2014[iv]. It is however a given that not only will it continue to persevere in that segment, but will sooner or later figure out the right approach to get growth back on track – given that less and less users were spending time on mobile browsers than on apps. For example, Google added deep-links[v] to its mobile search results[vi], so that users could click to be taken directly to a specific page (or its equivalent) in an app if they had that app installed[vii]. It also announced that it would start using “mobile-friendliness as a ranking signal” in its mobile search results[viii]. In yet another effort to boost ads on its app store, Google Play, it announced a pilot program to help app developers build targeted ads for search results on Google Play[ix]. It is expected that these will yields results in the coming quarters. Nor is it the case that everything is negative for Google on the mobile front. YouTube, for example, continued to be a star performer for Google. Google CFO stated that “YouTube’s mobile revenue (in 2014) increased more than 100 percent over[x]

Let’s not forget Twitter. “Mobile advertising revenue was 85% of total advertising revenue[xi]”, or $272 million, in in its third quarter of 2014.
In a somewhat incongruous presence, we also have Indian startup InMobi, with estimated annual revenues of $372 million, and which is also estimated to be the “biggest non-public mobile ad business on the planet.[xii]” Yes, that is very, very impressive and creditable. There are several other start-ups in this space; for example, Kenshoo, whose “CEO Izhar-Prato Says $15 Billion In Annual, Online Sales Revenue Flowing Through Platform[xiii]."

So, the decision to enter the mobile ad business should seem like a non-brainer, right? After all, didn’t Google CEO Eric Schmidt say that Amazon was Google’s biggest competitor in search[xiv]? Also, didn’t Amazon have search ambitions, seeking to start first with replacing Google ads that are served on Amazon’s pages[xv]?

Not quite, one hopes.

Before you gush over the fact that 98% of Facebook’s revenue growth in its latest quarter were accounted for by mobile ads[xvi], also note that Facebook has 745 million users on an average day (that is more than 22 billion visits a month) visiting its site via mobile devices[xvii]. By the by, Facebook crossed one trillion page views in 2011[xviii], so the company does not quite have a burning problem of engagement either on its hands.

Twitter’s numbers were achieved on the back of 181 billion (yes, that is 181 followed by nine zeros) timeline views by its 284 million monthly active users, of which 227 million were mobile users[xix].
Flipkart, by contrast, had “8 million daily visits” to its web sites – I assume desktop, mobile, and app combined – as of December 2014[xx].

Amazon, despite not being known as a search player, is still estimated to have sold $1 billion in search ads in 2014[xxi].

Much has been said and written about Google’s search business; so I will add just one more point here – Google AdWords has more than one million advertisers[xxii].

And if you are a start-up hoping to make it big by either acquiring or getting acquired, do take a minute to ponder on the sobering reality-check in the form of Velti’s meltdown[xxiii].

This is not to pour cold water over Flipkart’s acquisition of Bangalore-based AdIquity[xxiv] (which had raised $15 million from VC firms and was at one point known as Guruji[xxv]), or on Sachin Bansal’s statement, “"I believe it (mobile advertising) can be a big business for us[xxvi]". Far from it. Every company should look aggressively for avenues to disrupt existing business models as well as leverage strengths in one area to prise open a market in another area. That is what every leader aspires to do.

But, if you believe, as a start-up locked in a duel with a company like Amazon that has planted its feet in the Indian market and which is comfortable with having earned less profits in its entire existence than Apple in one quarter[xxvii],[xxviii], with no profits on the horizon (I touched on this in the previous post), VCs that would be getting increasingly worried about their exit strategy (and hopefully profitable exit strategy at that), you have the luxury of entering a market such as mobile ads – on a global level – and where the competition consists of companies like Google, Facebook, and Twitter, then do not be surprised if you are accused of having lost focus.

In the next part I will take a look at why Flipkart may still believe that its app-only drive and mobile ad ambitions could provide synergies.

[i] "Facebook's Mobile Revenue Hits $2.5 Billion as Prices Soar | Digital - Advertising Age", http://adage.com/article/digital/facebook-s-mobile-revenue-hits-2-5-billion-prices-soar/296869/
[ii] "With Ad Network, Facebook Targets Rest of Mobile World | Digital - Advertising Age", http://adage.com/article/digital/ad-network-facebook-targets-rest-mobile-world/292959/
[iii] "Google's 2013 Mobile Search Revs Were Roughly $8 Billion", http://searchengineland.com/googles-2013-mobile-search-revenues-nearly-8-billion-globally-201227
[iv] "Google, Facebook combined for 50% of mobile ad revenues in 2014", http://www.networkworld.com/article/2881132/wireless/google-facebook-combined-for-50-of-mobile-ad-revenues-in-2014.html
[v] "Google To Offer Targeted Mobile App Install Ads In Search And YouTube; Expands App Deep Linking To AdWords | TechCrunch", http://techcrunch.com/2014/04/22/google-to-offer-mobile-app-install-ads-in-search-and-youtube-expands-app-deep-linking-to-adwords/
[vi] "Will Deep Linking Shake Google’s Ad and Search Supremacy?", http://www.cheatsheet.com/technology/will-deep-linking-shake-googles-ad-and-search-supremacy.html/?a=viewall
[vii] "Overview - App Indexing for Google Search — Google Developers", https://developers.google.com/app-indexing/
[viii] "Official Google Webmaster Central Blog: Finding more mobile-friendly search results", http://googlewebmastercentral.blogspot.in/2015/02/finding-more-mobile-friendly-search.html
[ix] "A New Way to Promote Your App on Google Play | Android Developers Blog", http://android-developers.blogspot.in/2015/02/a-new-way-to-promote-your-app-on-google.html
[x] "Google Continues To Miss Revenue Estimates In Fourth Quarter Earnings", http://www.forbes.com/sites/aarontilley/2015/01/29/google-continues-to-miss-revenue-estimates-in-fourth-quarter-earnings/
[xi] "Twitter Reports Third Quarter 2014 Results (NYSE:TWTR)", https://investor.twitterinc.com/releasedetail.cfm?releaseid=878170
[xii] "2. Inmobi: Probably The Biggest Non-Public Mobile Ad Business On The Planet- Business Insider India", http://www.businessinsider.in/RANKED-The-Hottest-Pre-IPO-Adtech-Startups-Of-2014/2-INMOBI-PROBABLY-THE-BIGGEST-NON-PUBLIC-MOBILE-AD-BUSINESS-ON-THE-PLANET/slideshow/34262656.cms
[xiii] "Kenshoo CEO Izhar-Prato Says $15 Billion In Annual, Online Sales Revenue Flowing Through Platform – AdExchanger", http://adexchanger.com/online-advertising/kenshoo/
[xiv] "Google's Eric Schmidt: Our biggest search competitor is Amazon — not Microsoft or Yahoo - GeekWire", http://www.geekwire.com/2014/google-amazon/
[xv] "Amazon to challenge Google in online-ad business - MarketWatch", http://www.marketwatch.com/story/amazon-to-challenge-google-in-online-ad-business-2014-08-24
[xvi] "Chart: Mobile Ads Account for 98% of Facebook's Revenue Growth | Statista", http://www.statista.com/chart/2496/facebook-revenue-by-segment/
[xvii] Ibid.
[xviii] "Facebook is first with 1 trillion page views, according to Google | ZDNet", http://www.zdnet.com/article/facebook-is-first-with-1-trillion-page-views-according-to-google/
[xix] "Twitter Reports Third Quarter 2014 Results (NYSE:TWTR)", https://investor.twitterinc.com/releasedetail.cfm?releaseid=878170
[xx] "Flipkart.com", http://www.flipkart.com/s/press and http://www.entrepreneurindia.com/news/Flipkart-join-hands-with-EPCH-VTPC-and-KASSIA-to-help-small-entrepreneurs-5801/
[xxi] "Amazon to challenge Google in online-ad business - MarketWatch", http://www.marketwatch.com/story/amazon-to-challenge-google-in-online-ad-business-2014-08-24
[xxii] Ibid.
[xxiii] "How Velti, One Of The Largest Mobile Ad Companies On The Planet, Lost $130 Million | Business Insider India", http://www.businessinsider.in/How-Velti-One-Of-The-Largest-Mobile-Ad-Companies-On-The-Planet-Lost-130-Million/articleshow/22238675.cms
[xxiv] "Flipkart eyes more buys to boost mobile advertisement business - The Times of India", http://timesofindia.indiatimes.com/business/india-business/Flipkart-eyes-more-buys-to-boost-mobile-advertisement-business/articleshow/46616114.cms
[xxv] "Flipkart Acquires Mobile Ad Platform, Adiquity » NextBigWhat", http://www.nextbigwhat.com/flipkart-acquires-adiquity-297/
[xxvi] "Flipkart eyes more buys to boost mobile advertisement business - The Times of India", http://timesofindia.indiatimes.com/business/india-business/Flipkart-eyes-more-buys-to-boost-mobile-advertisement-business/articleshow/46616114.cms
[xxvii] "Amazon earnings: How Jeff Bezos gets investors to believe in him.", http://www.slate.com/articles/business/moneybox/2014/01/amazon_earnings_how_jeff_bezos_gets_investors_to_believe_in_him.html
[xxviii] "Rolfe Winkler on Twitter: "Apple's operating cash flow in Q4 -- $33.7 billion. Amazon's since 1994 -- $27.0 billion."", https://twitter.com/rolfewinkler/status/560214596532043776


© 2015, Abhinav Agarwal (अभिनव अग्रवाल). All rights reserved.

New OlapUnderground Utility - The Essbase Outline Viewer

Tim Tow - Fri, 2015-05-08 08:54
Have you ever wanted your users to see an Essbase database outline structure, but had trouble giving them access to Essbase Administrative Services ("EAS") for fear that they may have access to change things they shouldn't change?  Maybe you didn't want to give them EAS and have to deal with the version of Java installed on their machine?  We have the solution to your problems.  After a bit of fits and starts, we have finally released the OlapUnderground Essbase Outline Viewer!

The OlapUnderground Essbase Outline Viewer is a read-only user interface built specifically to view the contents of an Essbase outline.  It is built in Microsoft .NET technology and should run on any Windows-based computer without any special downloads.  It also uses the MaxL outline xml format and, as your Hyperion administrators can create and distribute the outline xml file, end users do not need an Essbase login to view the outline.

Here is a screenshot of the Outline Viewer:

Click image to see it full-size

You can download the Essbase Outline Viewer from our website at http://www.appliedolap.com/resources/downloads/essbase-outline-viewer.  Let us know what you think!

Categories: BI & Warehousing

Leveraging Icon Fonts (Font Awesome) in Oracle ADF - 500 New Icons for your app

Shay Shmeltzer - Thu, 2015-05-07 16:51

Icon fonts are a growing trend among web developers, they make it quite simple to add icons to your web site and resize them for better responsive design.

Font Awesome is a popular open source icon font - providing over 500 icons that you can add to your application. I got several questions over the past couple of weeks about using these icons in ADF applications, so here is a short video showing you how to set this up with ADF 12.1.3 and using skins. (Quick note - before 12.1.3 you couldn't include these type of font in the skin css file - and you would have needed to directly refer to the CSS file from each page in your app - one more reason to upgrade your application to 12.1.3).

The basic steps:

  • Create a new skin for your ADF application (if you don't know how to do this, see this blog entry).
  • Download font awesome and copy the font-awesome-4.3.0 directory into your new skin directory
  • Copy the @font-face entry from the font-awesome.min.css file into your new skin.css file
  • Update the path in the various URI entries so it reflects the new relative location of the font files
  • Create class entries in your skin CSS for the icons you want to use - remember to add a font-family: FontAwesome; to make sure they use the new font.
  • Assign the classes to the styleclass property of your ADF Faces components.

Here is a demo showing how it is set up and how it works:

The skin1.css in the video is this:

@charset "UTF-8";

/**ADFFaces_Skin_File / DO NOT REMOVE**/

@namespace af "http://xmlns.oracle.com/adf/faces/rich";

@namespace dvt "http://xmlns.oracle.com/dss/adf/faces";

@font-face {

    font-family: 'FontAwesome';

    src: url('font-awesome-4.3.0/fonts/fontawesome-webfont.eot?v=4.3.0');

    src: url('font-awesome-4.3.0/fonts/fontawesome-webfont.eot?#iefix&v=4.3.0')format('embedded-opentype'), url('font-awesome-4.3.0/fonts/fontawesome-webfont.woff2?v=4.3.0')format('woff2'), url('font-awesome-4.3.0/fonts/fontawesome-webfont.woff?v=4.3.0')format('woff'), url('font-awesome-4.3.0/fonts/fontawesome-webfont.ttf?v=4.3.0')format('truetype'), url('font-awesome-4.3.0/fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular')format('svg');

    font-weight: normal;

    font-style: normal;

}

.heart:before {

    content: "\f004";

    font-family: FontAwesome;

}

.mail:before {

    content: "\f003";

    font-family: FontAwesome;

If you want to see how this could help with responsive design try this in your CSS as an example. Then resize the width of the browser window to see how the icons will change their size dynamically:

.heart:before {

    content: "\f004";

    font-family: FontAwesome;

    font-size: x-large;

}

.mail:before {

    content: "\f003";

    font-family: FontAwesome;

    font-size: x-large;

}

@media screen and (max-width:950px) {

    .heart:before {

        content: "\f004";

        font-family: FontAwesome;

        font-size: small;

    }

    .mail:before {

        content: "\f003";

        font-family: FontAwesome;

        font-size: small;

    }

Categories: Development

Heuristic Temp Table Transformation - 2

Randolf Geist - Thu, 2015-05-07 16:41
Some time ago I've demonstrated the non-cost based decision for applying the temp table transformation when using CTEs (Common Table/Subquery Expressions). In this note I want to highlight another aspect of this behaviour.

Consider the following data creating a table with delibrately wide columns:

create table a
as
select
rownum as id
, rownum as id2
, rpad('x', 4000) as large_vc1
, rpad('x', 4000) as large_vc2
, rpad('x', 4000) as large_vc3
from
dual
connect by
level <= 1000
;

exec dbms_stats.gather_table_stats(null, 'a')
and this query and plans with and without the temp table transformation:

with cte
as
(
select /* inline */
id
, id2
, large_vc1
, large_vc2
, large_vc3
from
a
where
1 = 1

)
select
*
from
(
select id, count(*) from cte group by id
) a,
(
select id2, count(*) from cte group by id2
) b
where
a.id = b.id2
;

-- Plan with TEMP TABLE transformation
--------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1000 | 52000 | 1341 (1)| 00:00:01 |
| 1 | TEMP TABLE TRANSFORMATION | | | | | |
| 2 | LOAD AS SELECT | SYS_TEMP_0FD9D6609_26FA32 | | | | |
| 3 | TABLE ACCESS FULL | A | 1000 | 11M| 452 (0)| 00:00:01 |
|* 4 | HASH JOIN | | 1000 | 52000 | 889 (1)| 00:00:01 |
| 5 | VIEW | | 1000 | 26000 | 444 (1)| 00:00:01 |
| 6 | HASH GROUP BY | | 1000 | 4000 | 444 (1)| 00:00:01 |
| 7 | VIEW | | 1000 | 4000 | 443 (0)| 00:00:01 |
| 8 | TABLE ACCESS FULL | SYS_TEMP_0FD9D6609_26FA32 | 1000 | 11M| 443 (0)| 00:00:01 |
| 9 | VIEW | | 1000 | 26000 | 444 (1)| 00:00:01 |
| 10 | HASH GROUP BY | | 1000 | 4000 | 444 (1)| 00:00:01 |
| 11 | VIEW | | 1000 | 4000 | 443 (0)| 00:00:01 |
| 12 | TABLE ACCESS FULL | SYS_TEMP_0FD9D6609_26FA32 | 1000 | 11M| 443 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------------

-- Plan with CTE inlined (turn INLINE into hint)
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1000 | 52000 | 907 (1)| 00:00:01 |
|* 1 | HASH JOIN | | 1000 | 52000 | 907 (1)| 00:00:01 |
| 2 | VIEW | | 1000 | 26000 | 453 (1)| 00:00:01 |
| 3 | HASH GROUP BY | | 1000 | 4000 | 453 (1)| 00:00:01 |
| 4 | TABLE ACCESS FULL| A | 1000 | 4000 | 452 (0)| 00:00:01 |
| 5 | VIEW | | 1000 | 26000 | 453 (1)| 00:00:01 |
| 6 | HASH GROUP BY | | 1000 | 4000 | 453 (1)| 00:00:01 |
| 7 | TABLE ACCESS FULL| A | 1000 | 4000 | 452 (0)| 00:00:01 |
-----------------------------------------------------------------------------
Looking at the query and plan output the following becomes obvious:

- The mere existence of a WHERE clause, even if it is just "WHERE 1 = 1" and referencing the CTE more than once triggers the transformation (nothing new, already demonstrated in the mentioned previous note, as well as the fact that the inlined CTE variant is cheaper in cost)

- There is a huge difference between the estimated size of the TEMP TABLE and the size of the row sources when using the CTE inline

The latter is particular noteworthy: Usually Oracle is pretty clever in optimizing the projection and uses only those columns required (doesn't apply to the target expression of MERGE statements, by the way), which is reflected in the plan output for the inline CTEs - the wide columns don't matter here because they aren't referenced, although being mentioned in the CTE. But in case of the temp table transformation obviously all columns / expressions mentioned in the CTE become materialized, although not necessarily being referenced when the CTE gets used.

So it would be nice if Oracle only materialized those columns / expressions actually used.

Now you might raise the question why mention columns and expressions in the CTE that don't get used afterwards: Well, generic approaches sometimes lead to such constructs - imagine the CTE part was static, including all possible attributes, but the actual usage of the CTE can be customized by a client. In such cases where only a small part of the available attributes get actually used a temp table transformation can lead to a huge overhead in size of the generated temp table. Preventing the transformation addresses this issue, but then the inlined CTE will have to be evaluated as many times as referenced - which might not be desirable either.

Access Denied - Access to administration console is restricted

Frank van Bortel - Thu, 2015-05-07 06:56
Access Denied - Access to administration console is restricted. Ran into it, today. Again. This time, I'll make a proper blog entry, not like this one... This time, I actually did follow my own advice, but for the fact, I now am working in a multi-homed WebLogic environment - I simply pasted the wrong WLS home... Frankhttp://www.blogger.com/profile/07830428804236732019noreply@blogger.com0

Pages

Subscribe to Oracle FAQ aggregator