Feed aggregator

64 bit Oracle Speed?

Scott Schwab - Thu, 2006-03-16 09:01
Sitting at my cube, I overhead a discussion about 64-bit Oracle, mainly about the speed increase it would bring to an application. At Hotsos last week, I was sitting in a session and I remember someone saying, (very roughtly) that "64 bit Oracle is not about speed, it is about size, and that you have to remember that all those addresses are now twice as big".The problem is, I don't remember if Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com1

Fixing JSF state saving: a progress report

Adam Winer - Wed, 2006-03-15 19:08
I've implemented the first version of an improved JSF state saving architecture, essentially what I talked about in my last post.

The very latest and greatest Facelets source code has a facelets.BUILD_BEFORE_RESTORE initialization parameter. When turned on, it changes ViewHandler.restoreView() to build the view before asking the StateManager for help.

And the latest ADF Faces code adds a new markInitialState() method to our components - which calls through to FacesBean.markInitialState(). When our MyFaces svn repository is set up, you'll be able to see this code too...

And the results? Well, one test case with a fairly large page dropped from nearly 10K of client-side state to only 600 bytes. That's more than a 90% reduction in saved state! (Presumably, CPU usage is way down, but I haven't measured that yet.)

There's still potential improvements: I could get that 600 bytes down further by overriding the state saving in UIViewRoot. Also, Jacob's suggestion to use a flat Map instead of a hierarchy would also help - currently, if one component deep in the hierarchy needs to store state, we build up a large hierarchy of mostly null Object arrays. This isn't especially expensive, but it is avoidable.

A footnote: Mike Youngstrom cogently noted in a comment to my last post that a delta approach to state saving would let us make UIData both simpler and more generic - instead of handcoding a specific set of properties to save on certain types of child components, just run state saving. Absolutely, Mike! I haven't prototyped this on our UIXTable component (which doesn't extend UIData, FWIW), but that's a great thing to try.

Raptor 1.0 takes flight

Scott Schwab - Wed, 2006-03-15 08:31
Oracle SQLDeveloper (Raptor) had its 1.0 production release on Monday, March 13. Congrats to the developers at Oracle building this very help and free tool.Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

Hotsos Symposium 06, day two

Scott Schwab - Wed, 2006-03-08 00:02
Well, it is then end of Hotsos Symposium 06, day two, and I am having a great time.I have learned many things, from the good and bad of parallel processing in Oracle, from a very funny Doug Burns, to how to tell Oracle CBO's how long your PL/SQL function will take.One of the big themes this year, and probably every year, is instrumentation. Make use of DBMS_APPLICATION_INFO and such, so you can Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

Is Oracle really quicker on Windows than Solaris?

Neil Jarvis - Tue, 2006-03-07 06:05
I installed a 10gR2 on Solaris 5.10 as a development database. The developers here have their own databases on their own P.C. One of the developers queried the speed of the solaris.

As a test I exported his schema and put it in many environments (Solaris and windows 9i and 10g)

To my amazement the windows installations always outperformed the Solaris ones both on initial loading the pool cache and subsequent runs

The test package is rather large (5000+ lines), which is used in a form to display customer details. On solaris I was typically getting an initial return time of 5 seconds and on windows, typically, 1 second.

Even subsequent runs (i.e. cached) the windows outperformed solaris.

The parameter sizes for the SGA were approx. the same and the file systems are the conventional method.

In both cases the disk configuration is local.

So the only difference being the processor speeds and Kernal coding!!!!!

Hotsos Symposium 06

Scott Schwab - Fri, 2006-03-03 16:04
I will be in Dallas next week, attending the Hotsos Symposium and a training session on the Cost Base Optimizer. This is my first time to this conference, but it sounds like it will be fun. Others have blogged what session they are attending, but I am not sure yet. I do know I want to hear the talk on CBO's Costing Of PL/SQL Functions and End-to-End Performance Diagnosis in Oracle.Cool cool Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

QUTE and Oracle XE

Scott Schwab - Fri, 2006-03-03 09:02
Last night I loaded Qute 1.0.4 onto a fresh version of Oracle XE. I did get it to work, but needed to do the following:Install utl_file into Oracle XE. This can be done by running the RDBMS\ADMIN\utlfile.sql as the sys user.After using the Qute installer, one important package body would not compile QU_DESCRIBE. I ended up going into the package body and stubbing out the procedures which are Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

How we're going to fix JSF state saving

Adam Winer - Thu, 2006-03-02 11:16
State is not bad. Statelesness is not good. State is your friend. But like a bad friend, State can sometimes hang around the house, eating your Mitchell's ice cream and drinking your Amarula 'til he gets fat and lazy, turns your house into a pig sty, and makes you wonder why you ever were friends with him in the first place.

JSF state is kind of like that. As I've said in a previous post, JSF state saving is way too hefty and saves far too much that doesn't need to be saved in the first place. So, here's my 5 step plan for fixing that.

Step 1
1. Use Facelets.

Step 2
2. Enhance the ADF Faces FacesBean API to support a "delta" mode - call a new markInitialState() method on it, and its saveState() implementation only saves all the changes made since markInitialState(). And if there's no changes, just return null. (You can't easily do this without FacesBean; see my earlier post on the subject.)

Step 3
3. Update the ADF Faces Facelets TagHandlers to call markInitialState() after creating the components.

Step 4
4. Implement Jacob Hookom's idea to save the tree of component state in a Map, not a gigantic Object array hierarchy.

Step 5
5. Rewrite the Facelets restoreView() implementation to recreate the tree from scratch in its original state, then call restoreState() on each component from the Map we built up in step 4.

And done. You don't need to save the tree structure anymore - Facelets is handling that by recreating the tree from its cached TagHandlers. And since most components don't actually change - unless you explicitly set properties on them - most components don't have to save any state.

(P.S.: there's some trickiness here that I'm ignoring: if you add components dynamically to the hierarchy, you do have to save their state and structure, since it's not present in the page. That's one reason why I strongly recommend making all dynamically created components transient if you have any choice in the matter, but that's a subject for another post.)

RAC on VMware

Wijaya Kusumo - Tue, 2006-02-28 20:15
There is an interesting article by Tarry Singh about Installing Oracle 10gR2 RAC on VMware. With VMware Server are being offered for free, I believe there will be more and more instances of Oracle running on VMware. But do we really want to have RAC on VMware? Perhaps I will use it for demo and learning purposes, but not in production system. To me, nothing beats the real stuff. VMware

Free Free Free

Scott Schwab - Tue, 2006-02-28 19:08
As reported everywhere, Oracle XE is now out and available. Add this to SQLDeveloper, Qute and you can do some rock solid PL/SQL programming for free.Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

SQLDeveloper Export package file parsing

Scott Schwab - Sun, 2006-02-26 21:22
In my last post, I talked about the latest SQLDeveloper from Oracle, including a way to export all my packages in a single step, with their Tools->Export option. I had a Python script that did part of the job of breaking the outputted file into seperate files for package body and spec. Tonight, I reworked part of Python script, and then though I share it. Be warned, very little testing hasScott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com3

SQLDeveloper EA 5

Scott Schwab - Sun, 2006-02-26 11:04
On OTN, Oracle has just released the fifth early adaptor version of SQL Developer (1.0.0.13.43). Going by the release notes, it fixed some bugs in the SQL Worksheet, UNICODE, and startup time.So far my favorite new feature, is the Tools->Export tool, which allows you to create a file of DDL and PL/SQL packages. This is great, as I end up writing lots of PL/SQL and leaving it in the databaseScott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

Potential pitfall with Oracle Sequence

Wijaya Kusumo - Fri, 2006-02-24 00:44
Robert Vollman talks about Oracle sequences in his blog. Basically there are 3 potential issues with Oracle sequences that we need to consider when doing db design: 1. The squence number may "jump", that is 1,2,3,5,6,8,... with number 4 and 7 missing. One reason is if you do a transaction with NEXTVAL and then rollback, the sequence doesn't roll back to where you started. 2. By default,

A Simple Dual

Scott Schwab - Thu, 2006-02-23 20:14
What happens when this sql is called, but the tag you are looking for, is not in the XMLTYPE? SELECT extractvalue(my_xmltype, my_xpath_to, my_namespace) FROM dual; (1) Raise no data found exception (2) Returns null Answer: (2) returns null, so if you want to check to see if the text node exist for a x_path, don't expect a EXCEPTION clause to check it.Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

Usability problems in JSF

Adam Winer - Tue, 2006-02-21 14:10
JSF is not perfect, nor the greatest thing since sliced bread. There, I said it!

What bugs me most (and remember, I'm still a big fan) is that JSF was supposed to be really easy-to-use. In many ways, it is very easy. But the reality isn't always quite so sweet. There's shortfalls that make the learning curve longer than it should be, and they are fixable.

The most annoying problem is that errors simply result in big stack traces. There's nothing wrong with stack traces per se, but by themselves they're totally insufficient for error diagnosis. Real diagnosis requires at a minimum:

  • Line and column numbers, as well as file name. And even better, the snippet of content from that document that matches up.

  • If an EL expression fails, information on what part of the EL expression failed. (When a complicated expression like #{foo.bar.baz == my.other.expression} fails, it's very hard to figure out what went wrong.)

In general, all exceptions thrown anywhere in JSF or JSPs should be vetted to ensure that they:
  • Contain a meaningful, useful error message
  • Contain enough context to point out what bit of user content failed
  • Never, ever drop the base error, if one is being wrapped
A second category of annoyances in JSF consist of "nothing happened" problems. For example, if a validation error stops you from going on to Invoke Application, but you've forgotten to add an tag or something similar to your page, all that you see is - nothing.

Finally, when you do figure out what you've done wrong, quite often you need to bounce the server to pick up the changes. Any changes to WEB-INF/faces-config.xml require this. That's a huge productivity hit.

So, that's my hit list for JSF usability problems. What are your biggest JSF usability concerns?

[PS: Yes, I edited the wording a bit. It was coming across as an angry rant that JSF isn't useable, which isn't where I'm coming from.]

first post

Scott Schwab - Mon, 2006-02-20 21:06
Hello worldScott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

What is SASH anyway?

Omar Tazi - Thu, 2006-02-09 19:03
One of the challenges most people I talk to have in dealing with OSS is integrating projects that were designed to work together. Many people are trying to use Struts with Hibernate and/or Spring with Hibernate and end up having integration problems…The reality is that enterprises run open source and commercial software side-by-side and will continue to do so. That’s why Oracle partnered with SourceLabs to solve this issue for Oracle AS 10g customers. SASH simply means (Struts, Apache Axis, Hibernate and Spring). SourceLabs provides services around their tested SASH stack. Oracle customers using server-side Java are now able to improve productivity, reduce operational risk, and adopt open platforms with confidence.

I find this exciting and it’s inline with Fusion Middleware’s Hot-Pluggable message (believe me it’s not just a marketing buzzword) which essentially means that we are willing to compete on industry standards and if you find a module that works better than one of the components in the Oracle stack, you can seamlessly swap it out with the equivalent module of your choice. Oracle’s middleware is engineered to work well with third-party products, including open source and IBM's WebSphere line.

To get more information and even download SASH for Oracle AS 10g, go to the SASH section on OTN.

What is SASH anyway?

Omar Tazi - Thu, 2006-02-09 19:03
One of the challenges most people I talk to have in dealing with OSS is integrating projects that were designed to work together. Many people are trying to use Struts with Hibernate and/or Spring with Hibernate and end up having integration problems…The reality is that enterprises run open source and commercial software side-by-side and will continue to do so. That’s why Oracle partnered with SourceLabs to solve this issue for Oracle AS 10g customers. SASH simply means (Struts, Apache Axis, Hibernate and Spring). SourceLabs provides services around their tested SASH stack. Oracle customers using server-side Java are now able to improve productivity, reduce operational risk, and adopt open platforms with confidence.

I find this exciting and it’s inline with Fusion Middleware’s Hot-Pluggable message (believe me it’s not just a marketing buzzword) which essentially means that we are willing to compete on industry standards and if you find a module that works better than one of the components in the Oracle stack, you can seamlessly swap it out with the equivalent module of your choice. Oracle’s middleware is engineered to work well with third-party products, including open source and IBM's WebSphere line.

To get more information and even download SASH for Oracle AS 10g, go to the SASH section on OTN.

Is this where OSS is going?

Omar Tazi - Wed, 2006-02-08 20:48
When I saw this deal today I thought it summarized pretty well where open source seems to be going. The news in itself is not very exciting but it’s yet another open source startup raising a pretty good round from top tier VCs. In a nutshell, Alfresco which offers a document management platform raised an $8M series B investment round from Mayfield and Accel (which had already led round A). This confirms that:

- Open source is more professional. Open source developers are not what they used to be (midnight hackers working from their garage). More often than not, open source developers today are professional developers employed by large vendors (like Oracle or IBM) or well-funded startups like Alfresco or Spikesource (backed by Kleiner Perkins). Additionally large vendors offer professional support for open source projects (for example Oracle, IBM, Novell and HP support Linux).

- Open source is (slowly but surely) moving up the stack. First, the debate is not limited to Linux vs. Windows anymore. Also, the target open source end user profile is changing as open source moves up the stack. With Linux and Eclipse, typical users are system administrators and developers. Open source is moving beyond infrastructure software and tools into different areas with various degrees of success. Alfresco seems to be doing a good job in document management and Asterisk seems to offer a very popular PBX/VoIP telephony system (I am a happy Asterisk user without knowing much about PBX systems).

Is open source ready for ERP or CRM? Those of us who have been around a while in this industry know full well that VCs are not always right but in the last 18 months they have been very active investors in open source based startups with services-based business models. Time will tell if they were on the money! Let's not get too excited for now I don’t see traditional commercial software going anywhere anytime soon.

ADF Faces and JSF 1.2

Adam Winer - Wed, 2006-02-08 00:55
JSF 1.2 is right around the corner, and, of course, ADF Faces is going to be right there too, right? Well, not so fast...

ADF Faces took one fairly unusual approach in designing its components. Instead of extending the standard UIComponentBase class like almost everyone else does, we directly extended UIComponent with UIXComponentBase. I chose this path for good reasons - like the FacesBean state saving approach I blogged about a few posts down - but it does carry a penalty. When UIComponent changes, ADF Faces breaks. And UIComponent does change in JSF 1.2. In particular, the move from the JSF EL to the new Unified EL means new getValueExpression() and setValueExpression() methods.

C'est la vie.

So, here's the good news: I'm promising, right here and now, to get a version of ADF Faces out soon that will be based on JSF 1.2. There's one big question to resolve: should it be based on the code in JDev 10.1.3, or on the post-10.1.3 code we're donating to MyFaces? I'm leaning towards the latter, but let me know if you feel differently.

Pages

Subscribe to Oracle FAQ aggregator