Please note that you can always click on an image in my postings and it will render a clear full sized version in a separate browser page! Also please note that this blog is best viewed with Firefox and Chrome

Friday, July 15, 2011

WOW I haven't been here in a while...

Anyway, I desperately need to write up some more posts on here, it's been over 1 year. I've pretty much been buried under BI, Proj mgmt, putting out fires (no no the building types of fires), and other stuff.

Got back from probably my 50th trip to San Francisco lately....again when I have more time I will start posting things that people can learn from and find useful!

Take Care!

Thursday, May 20, 2010

OBIEE with Weblogic 11gR1 and SSO / OID

I know I haven't posted in a little while...it's just been the daily grind of work and life I suppose.

I'll be updating this post later to illustrate what we did to integrate OBIEE with Weblogic 11gR1 and SSO/OID. Note, this changes the game, as we're not dealing with deploying the .WAR file to the old Oracle Application Server. MOD OSSO? Not quite! Weblogic 11gR1 changed the game a bit. Hence, some of the documentation on OBIEE is not quite up to date (heck, I think it has NEVER been rewritten since 2006???)

Expecting certain things to work as they used to with the old way to setup SSO and passing credentials to OBIEE? Well, they won't be exactly the same, and it sadly wasn't documented anywhere. Nobody in the Oracle forums, nor on metalink, nor on ANY blog I had seen posted any solutions. It is only a matter of time before it should be in the docs, as I know at least 3 clients of mine installed Weblogic recently and have OBIEE, and might consider SSO. I'll do what I can to cover the solution. Note to all, this was even more difficult because at my client, Weblogic was being installed and administered by another firm that was responsible for the security and web architecture setup. So we were at their mercy a bit, but they were helpful as well.

To leave you with one last bit before I write more in a later post, look at the diagram out of the documentation below. I refer to this as the 'MASTER' plan because it should be practically memorized by most OBIEE practitioners, considering it has all the default ports, applications, and so on. I highlighted the areas that should be of concern to you. It is primarily where the BI Presentation Services Plug-in Resides, and the communication with the BI presentation services themselves. Assuming you configured SSO correctly, and you've configured MOST of OBIEE correctly, and you've done what you feel is right and you get to the point where you see the infamous OBIEE server message "You are not logged in..." well that's where the stumper comes in. In a nutshell, you likely will miss 1-2 things here because weblogic passes the presentation services something it is not expecting. You will need to change a few things in your instanceconfig.xml file to accommodate this. OR, you can dive into Weblogic, and change a few things as well. I'll try to share more next time. We had to look at log file after log file to finally get this one right. Oh, and this was all pretty much on Linux, not that it matters much.

Anyway, at my client, a large pharmaceuticals and health care insurance/benefits management company, I got to run into quite a few more advanced issues.

For one, anyone that has ever read the beginner Ralph Kimball books on dimensional modeling might be familiar with the concepts of late arriving fact and late arriving dimensions. I can get into the gory details on that later, but suffice to say, they are rampant all over the place with the health care industry! A former colleague of mine was a data architect and ETL admin at a very large insurance company, and told me how common it was, and what a pain in the rear-end as well! Now, I got to see it first-hand, and realized it was VERY common, at least in that industry. It presents some unique architectural challenges for modeling and handling of the ETL. Not a terribly hard problem to solve, but nonetheless, a good experience to get under the belt within this industry that has so much late arriving data.

Why would the healthcare industry have so much late arriving data? Well, to summarize a few points, let us think about it. Think about ALL the data that has to go from 1 place to the next. Your employer had to send your details to an insurance company. The insurance company had so set you up in the system, and provide a temporary ID, maybe not even a real card yet. You go to the doctor and they file a claim, which is even more data exchanged. You may get a bill or invoice or just a notice that a claim was filed, but it might not even be a bill yet. Maybe 1 month later it is a bill and you need to pay your portion of it that insurance didn't cover. There could be differential diagnoses, multiple prescriptions, and so forth. Yes, the claim might be filed, and it might qualify as a FACT in your fact table, but the dimensional attributes such as a drug price, diagnoses, payments, addresses, and so much more might change after the fact table is joined to it's dimensional values on certain keys. Read more about it in the Kimball Data Modeling book to see a clearer picture.

Monday, March 8, 2010

Oracle Application Performance Tuning Course

I just got done custom creating a new Oracle performance tuning / SQL tuning course, and teaching the beginning of it! This class is ideal for developers that know enough about the database to be a Jr DBA (enough to be dangerous) and emphasizes application tuning, sql tuning, and things developers should be aware of. To summarize, the course that I teach is a full 3 day class on the following topics:

The Performance Review Lifecycle
Database and Table Design Considerations
Database Architecture, Processes, and Parameters that a Developer Should be Aware of
Cursor Lifecycle including soft and hard parses
Bind variables, bind variable peeking and bind variables in your SQL (Dynamic SQL)
Cardinality, Selectivity, Computation, etc.
Statistics, and all subtopics like import/export, gathering, what they do, strategies.
The Oracle Optimizer (LOTS of extensive detail on this important topic)
Understanding how to read an Explain Plan from various tools that produce one.
Other tools to help in tuning - TKPROF, Autotrace, AWR, statspack, ADDM, STA, SPA, etc.
Optimizing Joins and join types
PL/SQL tuning
Utilizing ANSI SQL to out-perform classic Oracle SQL as you've seen it
V$Views to analyze for performance gains
How to identify a Performance Issue that you haven't seen yet.
Tuning in different environments (Oracle 8i, 9i, 10g, 11g, OLTP vs DW vs Bulk movements, etc.)
Tips and Tricks

...and that's all. The initial offering went EXTREMELY well. I was even surprised. Hopefully I will be teaching this class more often! I cannot stress understanding Oracle performance enough, especially to BIDW types who are too used to doing simple joins between a few tables, or let tools like OBIEE with their metadata layers take some of the work out of your hands...for now.


Friday, February 19, 2010

Oracle Data Integrator Tutorial- ODI for beginners

I am going to be writing up a few posts and tutorials on the basics of the architecture (see previous post) and a few beginner topics to get the masses in a mode where they are not intimidated by this tool. The previous post described various aspects to ODI, and the architecture. We saw various GUIs that ODI allows us to use. This post (and possibly another one or two) will look at the DESIGNER GUI in more detail.

One of the first things I will say is that the tool can feel a bit foreign if you come from an Informatica/OWB type background like myself. The emphasis is on building smaller and reusable pieces of code, if you will. Other tools that tend to be more ETL based (Informatica) and also more GUI and non-declarative based (OWB) are not necessarily the easiest tools to break things into small pieces. Yes, there are many that say breaking mappings into smaller pieces is a best practice, but the tool doesn't necessarily thrive on your ability to follow that practice. They don't really revolve around that practice. There are even mapplets and pluggable mappings, but these pale in comparison to the design methodologies that ODI offers. ODI thrives on code re-use.

For example, the diagram below shows a typical ETL/ELT from something that may come out of OWB or Informatica (a bit bigger, defined, and manual).
The following is the type of development that ODI supports and emphasizes for code reuse:

If you are a beginner to ODI and used other ETL/ELT tools and yoou are beginning to build out mappings you'll notice many of the mappings you'll build will be more discrete, if you will. There are also many steps that are done for you. You can build mappings quite fast in ODI actually. However, do not be too worried that that tool does quite a bit for you. Like Oracle's JDeveloper tool, you can get into most of the gory details if you'd like to fine-tune certain aspects, even if the tool does much of the work for you.

You will do the bulk of your work doing mappings in the following interface:

A brief description of what we see above in the Diagram above. First, notice that the Diagram TAB is selected on the top. This opens the diagramming tool where 'mappings' are built. In the middle are the data sources. These sources are physically dragged and dropped from the far left pane of the GUI to this 'sources' section and are then joined, filtered, and so forth. The right side of the GUI is labeled as the TARGET datastore. This is your target. For a beginner, this can be a bit confusing if you're used to OWB because here, the sources and target is separated by differnet parts of the GUI. You would drag your TARGET table to this target datastore pane in the GUI and not into the same area as the sources. So, a bit different in that respect.

Below is a zoom in on only the mapping portions of the tool. Again, on the left are the source portions of the mapping diagram, and on the left is the target datastore. You might not use the terminology 'datastore' too often, but in this tool you should get used to seeing that term a lot!
Here is another screenshot of the far left portion of the main GUI, which I tend to call the 'explorer' since it is built out like many software tool's explorer-like interfaces.
Again, one final screenshot to tie it all together what we have seen so far:

In the next posting, I will go into a bit more detail on the 'explorer' and the many tabs and options available within. As you might have imagined, these 'mappings' have been created and opened from the explorer on the left, and they are technically referred to as 'interfaces'. I'll talk a bit more on the concept of interfaces, and go into a bit more detail on working with your interfaces (A.K.A. mappings to most of us).

Monday, February 8, 2010

ODI Oracle Data Integrator Architecture Part 1

The following series will be a high level look at the pieces, components, and basic workings of ODI, which should help any reader comprehend some of the finer pieces of this data integration and ELT tool.

The GUI graphical modules are listed above.

The four ODI GUIs – Designer, Operator, Topology Manager and Security Manager, are based on Java. They can be installed on any platform that supports Java Virtual Machine 1.4, including Windows, Linux, HP-UX, Solaris, pSeries and so on.

Designer is the GUI for defining metadata, and rules for transformation and data quality. It uses these to generate scenarios for production, and is where all project development takes place. It is the core module for developers and metadata administrators.

Operator is used to manage and monitor ODI in production. It is designed for production operators and shows the execution logs with errors counts, the number of rows processed, execution statistics etc. At design time, developers use Operator for debugging purposes.

Topology Manager manages the physical and logical architecture of the infrastructure. Servers, schemas and agents are registered here in the ODI Master Repository. This module is usually used by the administrators of the infrastructure.

Security Manager manages users and their privileges in ODI. It can be used to give profiles and users access rights to ODI objects and features. This module is usually used by security administrators.

All ODI modules store their information in the centralized ODI repository.