Feed aggregator
Business Intelligence – more observations from OpenWorld
11g R1 Upgrade and My Best Practices

I am not going to be detailed as there are lots of discussion on 11g Upgrade, yet I want to share my experience.
I work on a warehouse environment with discoverer as the reporting tool. ASM is used for storage management.So there are four databases on one server to be upgraded.
ASM Warehouse DatabaseWarehouse Design Repository DatabaseApplication Server Metadata Repository
Interestingly and commonly all the database has to be upgraded in a short time frame to minimizing the downtime. Note: All the database has been individually tested and so I had an option to bundle them into one upgrade window.
So here are few tips that I took to reduce the downtime
Operating System , I made sure that the OS patches and kernel are properly set on a separate weekend.Space , I made sure that there is enough space for the new oracle homes.Software , Base 11.1.0.6 , Upgrade Patchset 11.1.0.7 and PSU October 2009 is properly staged.
A day before the upgrade downtimeI create the directory structures for the 4 oracle homeInstalled 11.1.0.6 into the ASM Home.Upgraded the ASM Home to 11.1.0.7 Installed PSU Patch Setup Update which also includes the latest CPU to the ASM Oracle Home.Ran the Pre-Upgrade Scripts and took necessary action.Prepared a checklist for re-checking the same during upgrade window.
For the other Oracle Home I cloned the ASM Home by following the cloning procedure , there by saved a lot of time. The ASM Home had the latest patchset and PSU update , so it was handly and contacted once to run all the root.sh by the unix administrator.
The Upgrade DaySo , 50% of my work was done , i.e, I have all my Oracle Home with latest patchset updates ready for upgrade.Reverified Pre-Upgrade ScriptsBacked Up the Databases First I started with the ASM migration with DBUA Then I started DBUA from three different VNC Server for the 3 Oracle Home and upgraded three of them in parallel.Note: During Upgrade I opted to switch of archival and flashback.Performed Post Upgrade necessary task.
My server had enough CPU and Memory to support the parallelism and so I did , please do not upgrade in parallel if the hardware is less resourced.
Summary of key areas of reducing the downtime window:- Prepare the Operating System in advance.- Prepare the 11g Oracle Home in advance.- Use Oracle Home cloning procedure to reduce the effort.- Upgrade all the Database in Parallel- Switch off archival and flashback in the DBUA wizard.
Overall I had a peaceful upgrade to 11g R1. I hope this helps.
Oracle Service Bus 10.3.1 Installation
Last Year I discussed about Oracle Service Bus here, from Fusion Middleware SOA 11g, Oracle’s Enterprise Bus is renamed as Oracle Mediator and BEA’s AquaLogic Service Bus (ALSB) is now called as Oracle Service Bus.
This post covers high level Installation steps for Oracle Service Bus (OSB) 10.3.1 . Oracle Service Bus 10.3.1 uses Oracle WebLogic Server so make sure you understand WebLogic concepts “Domain, Administration and Managed Server” more information here
.
Oracle Service Bus Installation Steps
A. Install OSB Software
B. Configure/create domain for OSB
C. Start WebLogic Server
D. Access OSB Console
A. Install OSB Software
1. Download Service Bus Software from here
2. Start Installation by running osb1031_wls103_[os].bin
3. Choose Installation Type
a) Typical- WebLogic Server, Workshop and Oracle Service Bus
b) Custom - individual components
.
4. Select Installation Directory for OSB
.
B. Create/Configure domain for OSB
1. Start domain creation by running $INSTALL_BASE/ wlserver_10.3/ common/ bin/config.sh
2. Select create a new WebLogic Domain
3. Select Generate a domain configured to automatically support Oracle Service Bus
4. Enter WebLogic Administrator Login details
5. You can choose customize installation (change listen port, server…) or select default installation
Default installation will create domain “base_domain” with Administration Server listening on port 7001
.
C. Start WebLogic Server
$INSTALL_BASE/ user_projects/ domains/ [base_domain]/ startWebLogic.sh
D. Access Oracle Service Bus Console
Use URL http://servername:7001/sbconsole
(weblogic/password) where weblogic/password are credential defined above (section B point 4)
.
.
Documentation
.
Oracle Service Bus High Availability Deployment (Active-Active) coming soon !!!
Previous in series Related Posts for Service Bus- Oracle Service Bus << AquaLogic Service Bus (BEA) + Oracle Enterprise Service Bus (Oracle)
- Oracle Service Bus 10.3.1 Installation
Run the same query against multiple SQL Server AND Oracle instances
It is not unusual that a DBA needs to run the same query across multiple instances. The query can be anything from a simple line to retrieve a specific value (such as an instance version), to others that involve data modifications or schema changes.
SQL Server 2008 brought the ability to execute Statements Against Multiple Servers Simultaneously by simply creating a local server group or broadly using a Central Management Server and one or more server groups. Inside these groups there should be one or more registered servers.
There is also the commercial Red-Gate SQL Multi Script with an Unlimited edition license that allows you to run your code against any number of SQL server instances.
Before SQL Server 2008, there was no native support for running the same query against multiple instances using shipped tools, so it can be approached in one of these ways:
- Manually connecting to each instance to run the code; this is very time consuming.
- Using batch files to call OSQL or SQLCMD to loop against a defined set of servers; this involves a bit more work and control of the batch files.
- Using linked servers and loops inside a T-SQL query.
- Using DTS or SQL server Integration services.
I’ve used nearly all of them, but I have found that linked servers provide a higher degree of control on the target servers, error handling, and most important, the ability to use SQL server Encryption to store the credentials of source servers if some of the servers are using SQL authentication.
I’ve also managed to make this run against Oracle databases, but had to take the extra step of configuring configuring Oracles as linked servers as described in KB 280106.
The code has the following characteristics:
- It uses encryption to store and retrieve credentials for Oracle and SQL server instances that use SQL authentication. There is a way to connect to Oracle using windows authentication but I didn’t test that.
- The code uses an ASYMMETRIC KEY to encrypt the credentials.
- It uses SQL cursors to retrieve list of servers against which I will run the code.
- Use of TRY…CATCH for error handling.
- Code against SQL server is run using Sp_executesql. The supplied code is liable for any restrictions imposed by Sp_executesql; I found very long queries in particular to be sometimes a problem.
- Code run against Oracle instances are done through Openquery. I found that using direct Linked server name exposes some problems especially with metadata. The supplied code must be Oracle-compatible.
- You need at least SQL server 2005 to use TRY..CATCH and Encryption.
- You need to format the source code to be syntax error-free, especially when it contains single quotes.
- When it comes to retrieving data only, Openrowset looks like a fast alternative to creating then dropping a linked server. OpenRowset is a fast way to access remote data on the fly using an OLE DB data source.
- I’ve not used the code much against Oracle—just simple tasks, but it worked for me.
- The code can be used against any datasource (DB2, MySQL, etc.) that can be accessed using Linked servers.
Here is the code. sql-oracle.sql.txt I welcome your feedback and additions.
A PyCon program committee volunteer reflects
I wanted to blog about my impressions as a program committee volunteer. Note that this is totally unofficial, and I'm not speaking on behalf of the committee, PyCon, etc.
It was wonderfulJust reviewing the talks was a great experience. Some of the talks were fun just to visualize; watching them will be even better. I learned lots about what is going on in the Python community. The program committee is a smart and fun crowd to work with, too.
It was horribleThe problem with a programming language that can do pretty much anything is that three days of scheduled talks are nowhere near enough to see everything that's going on. I wish we could have five days of talks, but there are too many people who wouldn't have the time or money for such a conference.
With room to accept fewer than half of our submissions, we had to turn away talks that would have been great. For instance, the one talk I most wanted to see - the proposal I would have walked barefoot to Atlanta for - got declined. What can you do? Often "pretty much everybody was pretty excited about this" talks had to be sacrificed for the sake of "virtually everybody was dying to see this" talks.
But wait, there's moreFortunately, scheduled talks are only the tip of the PyCon iceberg. We have Lightning Talks, Open Spaces, and (new this year) poster board sessions! I hope all declined speakers will consider taking their material to one or more of those formats!
PyCon is going to be wonderfulI think we have the best crop of presentations we've ever had. If you can look through the list of accepted talks and not start making Atlanta travel plans, then you are already dead.
PyCon is going to be horrible... because, with five simultaneous tracks packed with the very best of material, I promise you will face multiple can't-miss talks going on at the same time, all day, every day. The painful decisions of the program committee are really only a preview of the difficult decisions every attendee will have to make at the conference itself.
For 2011: increasing your chancesIf you want to make your future PyCon proposal more appealing to the committee (making our decisions even harder - thanks a lot), here are some of the things I saw that helped talks make the cut.
- The basics: a clear talk description, orderly-looking outline, plausible-looking timings. If reviewers ask questions, answer them. Give every impression that you're prepared to put serious effort into your talk.
- Broad appeal. It's OK to present on specialty topics, of course, but if you can point out ways that even people outside the specialty will also want to see it, it will help.
- Unusual topic. Every year, there are some hot topics that everybody in the community seems to be talking about... and submitting talks on. Since we're not going to accept a dozen talks on any topic, no matter how hot, these talks need to prevail over a lot of competitors. On the other hand, if you've got a topic that makes the committee say, "HUH? Wow, I'd never heard of anything like that!", it really helps you stand out.
- We always get more intermediate-level submissions than for beginner or advanced, so the competition was fiercest there.
- What will attendees get from your talk that they couldn't get simply from reading the docs? Make sure we can tell.
- Evidence of preparation and skill. Some speakers had established reputations as skillful, engaging presenters; some provided links to their slide decks from earlier versions of their talks given at local groups or regional conferences; a few linked to actual recordings of earlier versions of their talks. Give your talk at a nearby usergroup, then convince one of your group members to volunteer for the program committee. :)
- Scratch the itch. When committee members say, "Ah, yes, I've been puzzled by that and dying for a proper explanation!" - or, "I personally understand it, but I see misunderstanding of it throughout the community and wish somebody would help clear it up", that is a big plus.
- Keep the Py in PyCon. If the topic is one of general IT interest - database technology or rich web client programming, for instance - then make sure to emphasize the Python angle of your talk. How do you work the problem from Python specifically? What do Python users need to know about the problem that they won't learn from materials aimed at the IT community overall?
Pay it forward…
Oracle 10g/11g Data and Database Management Utilities by Hector R Madrid
Two months ago I got mail from PACKT Publishing to review Oracle 10g/11g Data and Database Management Utilities by Hector R Madrid under their free blogger review program. Initially, I promised to finish it by beginning of October, but due to personal reasons, I can only finish it by today. Till I do my review, Hemant K Chitale and Anantha Narayan from Oracle blogosphere already mentioned about the book in their blogs so you can go and check their opinions as well (able to find different opinions, before buying something is definitely a good option)
After marketing and excuse section, now it is time to review the book,
This book promises us to learn (taken from the back cover);
- to optimize time-consuming tasks efficiently by using Oracle DB utilities.
- perform data loads on the fly and replace the functionality of the old exp/imp utilities using data pump or SQL*Loader
- boost defences with Oracle Wallet
- Improve Performance of RMAN backups
- Perform more than just ETL process by taking advantage of the External Tables feature
Can it keep it’s promise ? I think Hector did very well about keeping his promise.
I liked the way he wrote the book, it is again very well organized with very simple easy to understand language. (If you have read my old reviews probably you already know that, I like the books I can finish, so in my opinion a good book must be a page turner as well as being technically satisfactory)
Who should have this book ?
There is already a who is this book written for on the back cover but I have to add some words on top of it.
If you don’t like to read Oracle Official Docs very much, if you can easily get bored or lost during your official docs journey and you want to have a reference on your desk about available Oracle Utilities, this book is definitely written for you.
If you are DBA at the same place more than 5 years (where things are stable enough) and started this job with version 7 or 8 and due to the nature of your company or yourself you don’t have to learn new things that much and can still pay your mortgage this book is a MUST for you. At least you can ease your life, save gazillions of time and look wiser to the new junior DBA when you can able to compare exp with data pump because if you can’t do it they wont trust your experience at least I don’t. Market is very tight and this book gives you enough knowledge to cope with market conditions.
If you are a junior DBA who doesn’t know where to start Oracle Utilities, I strongly recommend this book for your personal development.
Do I happy to have the book ? Sure I do. I did not learn new things that much but it worth reading for just couple of tips and tricks and learning some of the topics I have no experience on.
Now, is the time to go over the summary of topics. (What Hector did was he tried to cover every topic with average 30 pages and enough screenshots and code samples this make book easy to read and avoid boredom of long topics. )
1-Data Pump: This topic is well covered. There is enough information for started. I wish Hector covered the compression and encryption options of 11G, with examples. I liked tuning Data Pump performance section where he covers factors other than parallelism which affects datapump performance.
2-SQL*Loader: I have to confess that SQL*Loader is something very old in Oracle but I am kind a new for it because I never needed to use it at job so my knowledge was depending on simple tests. It was very nice to learn what it is capable of with loads of examples.
3-External Tables: I love and used external tables very much for mostly data and this section brought new areas of usage to my knowledge like reading listener and alert log via external tables.
4- Recovery Manager Advanced Techniques: I think this topic is named wrongly because when you see advanced you expect more but I did not get that much. It basically covers what RMAN can do instead of your old manual backup techniques. If you already an RMAN user and don’t know the new feature called faster backups through intra-file parallel backup restore operations in 11G it will be a good learning for you.
5- Recovery Manager Restore Recovery Techniques: This is the second part of RMAN managed backups which is RMAN managed restore recovery. Nothing new for me and I have to say TSPTR which is the most important feature is missed.
6- Session Management: Overall session monitoring for wait and lock analysis is covered with addition of resource manager. Old school boys will definitely find something new in this chapter.
7- Oracle Scheduler: This chapter can convince you to use this tool more. Job Chains should be covered with a little detail I think.
8- Oracle Wallet Manager: This chapter was new to me and probably new to most of you. I can say that is a good introduction to Oracle Wallet Manager.
9- Security Management: Again good introduction for encryption options available in Oracle. It is mostly practical usage of previous chapter.
10-Database Configuration Assistant: I use DBCA very much and this chapter was a bit fast reading but it is a must for guys who are not aware of what this tool can do other than creating a DB.
11- Oracle Universal Installer: Basically, Hector tried to mention that this tool is not just doing next next next. Cloning Oracle home using OUI was a new learning for me.
12- Enterprise Manager Configuration Assistant: There are nice tips and tricks about emca troubleshooting. You will like this topic if you have problems with this tool and don’t know where to look.
13-Opatch: This chapter is very well detailed and it adds Enterprise Manager usage for opatch utility. A must read for the ones who use opatch when applying patch.
Biggest problem of this book is lack of references. I really don’t like something without references. The author cannot know them by himself, he should have learned them from somewhere and it would be very nice if he shared them with us too so the book can point the users to the right directions to finalize their journey about utility they look for.
Well that’s about it. I want to thank PACKT Publishing for free review option and Hector for this nice work.
If I can find time to read, Next Book review probably will be Practical Oracle 8i :Building Efficient Databases , which I finally got my copy of it and willing to read it asap. Luckily Christmas coming and it will be quite at work
New ADF Faces Caching filter in JDeveloper 11g R1 Patch Set 1
As a note to myself, so I don't forget about this new (late arrival) feature that becomes available in the upcoming JDeveloper 11g R1 Patch Set 1 release:
ADF Faces Rich Client provides a caching filter that allows you to write gzip compressed content to the client.
AdfFacesCachingFilter
The new AdfFacesCachingFilter marks the application resources for caching at external Web Cache and/or user-agents (browsers). It also provides functionality for compression, in which a gzip-compressed response is sent to the user-agent. Advantage with this filter is that application developers don't need to configure Web Cache for this filter to work.
Only caching-rules need to be configured for the resources in application's adf-config.xml file. Caching-rules are based on file extension or path prefix. ADF faces jars comes with the default caching-rules for it static resources. If application developer defines their rules in adf-config.xml and their rules takes precedence over the default rules in jar.
The filter must be configured in web.xml if you want to use it. It also must be the first filter in the chain of filters:
PLAIN TEXT XML:- <filter>
- <filter-name>ACF</filter-name>
- <filter-class>oracle.adfinternal.view.faces.caching.filter.AdfFacesCachingFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>ACF</filter-name>
- <url-pattern>*</url-pattern>
- </filter-mapping>code]
Caching-rules are defined in adf-config.xml. Following codes shows the example caching-rules for all the js and jpeg files to be cached and/or compressed at Web Cache and user-agents:
PLAIN TEXT XML:- <adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
- <caching-rules>
- <caching-rule id="cache js">
- <cache>true</cache>
- <compress>true</compress>
- <duration>99999</duration>
- <agent-caching>true</agent-caching>
- <cache-key-pattern>*.js</cache-key-pattern>
- </caching-rule>
- <caching-rule id="cache jpeg">
- <cache>true</cache>
- <compress>false</compress>
- <duration>99999</duration>
- <agent-caching>true</agent-caching>
- <cache-key-pattern>*.jpeg</cache-key-pattern>
- </caching-rule>
- </caching-rules>
- </adf-faces-config>
Frank
Blogroll Report 23/10/2009-30/10/2009
<—- Blogroll Report 16/10/2009 – 23/10/2009
1-Solution to ASMLIB creadisk problem with EMC Power Path
Orhan Biyiklioglu-ASMLIB createdisk problem on emcpower devices — solved
2-How to create a database link in another users schema ?
Marko Sutic-Create a Database Link in another user’s schema
3-How DST works for current running sessions?
Freek D’Hooge-Wintertime (again)
4-How join key effects CBO for multi-column joins ?
Randolf Geist-Multi-column joins
5-More on How Intra-Block Row chaining effects with tables with more than 255 columns?
Hemant K Chitale-Some MORE Testing on Intra-Block Row Chaining
6-pros/cons of linux distrubutions for Oracle from DBA perspective
Ronny Egners-Oracle on linux – yes of course – but what linux?
7-What happens when you drop table during select operation?
Uwe Hesse-Dropping a table during SELECT
8-How to tune kernel settings for Linux-x86_64 Error: 28: No space left on device?
Surachart Opun-Shared Memory Tuning: startup database – ORA-27102: out of memory Linux-X86_64 Error: 28: No space left on device
9-How to move datafiles in ASM with ASMCMD CP command?
Surachart Opun-MOVING DATAFILE IN ASM BY ASMCMD(cp)
10-Tom Kyte’s Favourites from 11GR2 New Features
Tom Kyte-Looking at the New Edition
11-How partitioning can cause bad performance on wrong partition implementations?
Martin Widlake-Partitions are Not for Performance
12-New semantic hints on 11GR2 ?
Rob Van Wijk-Three new “hints”
13-How to apply PSU for 11.1.0.7.1 ?
John Hallas-PSU for 11.1.0.7.1
14-How to find waiters with oradebug in 11GR2 ?
Miladin Modrakovic-Find waiter with Oradebug 11gR2
15-How to install TOra on Ubuntu 9.10 ?
Brad Hudson-Installing TOra with Oracle Support on Ubuntu 9.10 (Karmic Koala)
16-Reasons to move 11GR2 ?
Kerry Osborne-11g Release 2 Technology Day – Dallas Cowboy Stadium
17-Netbackup 6.5.4 does not work with 11GR2
Jason Arneil-Netbackup 6.5.4 and Oracle 11gR2
18-Ways to copy schema stats from one schema to another schema?
Ronny Egner-How to copy schema stats from one schema to another schema
19-All about checkpoints
Harald Van Breedore-Checkpoint presentation presented at the RAC SIG
20-How to recover from crashed ASM disk in normal/high redundancy ?
Ronny Egner-ASM resilvering – or – how to recover your crashed cluster – Test no 5
21-Logging “log file parallel write” relationship and nologging with dataguard
Jonathan Lewis-logging
Business Logic Groups in Oracle ADF 11g
Download sample application with working Business Logic Group defined for Employees EO - BusinessGroups.zip.
In order to define Business Logic Group, you need to specify which attribute from EO will be used as discriminator to choose between available Business Logic Units:
Next step is to define Business Logic Unit. Its very important at this step to enter correct Unit Name. It should reflect discriminator value for this Business Logic Unit. In my case it is IT_PROG, for employees working as programmers. It is a place where you need to specify discriminator:
In sample application I have created two Business Logic Units, one for IT_PROG and another for ST_CLERK JobId's:
In Business Logic Unit, you need to override attributes you want to change. Then you can change those attributes properties, add validation rules. In this example I have created validation rule for overridden Salary attribute:
Another validation rule for Salary attribute is defined in ST_CLERK Business Logic Unit:
I have specified different Salary attribute labels for IT_PROG and ST_CLERK Business Logic Units:
Additionally through Business Logic Unit you can implement custom behavior in Business Logic Unit Java class:
On runtime you can see Business Logic Group related behavior for IT_PROG:
And for ST_CLERK:
PayPhrase Attacks Paypal! News at 11.
Zero ajax label help tooltips for Apex?
New Release White Paper Through Contractors Network
Contractors Network is pleased to announce the latest free of charge release into our extensive Oracle Apps related White Paper Library of:
Using 11g Change Data Capture for Database Auditing
Authored by Matt Canning
About Matt;
Matt is an Oracle Certified Professional DBA and has worked with Oracle databases from versions 7.3.4 to 11g R1, running on Windows and UNIX platforms. He has worked with clients across Vehicle Management, Banking, Insurance, Security, Government, Telecoms and Technology sectors. Matt’s experience spans across every stage of the project lifecycle from initial development to go-live, then on to live support and eventual decommissioning.
Who Should Read Matt’s Paper;
Database Administrators, Security Administrators, Developers and anyone else who is interested in the auditing capabilities of Oracle Change Data Capture.
If you would like request a copy please email myself on rebecca.bragg@oraclecontractors.com or register via the White Paper library today.
Testing Syntax highlighting
So lets give it a try for the languages I use most.
SQL
SELECT ename, empno
FROM emp
WHERE empno = 7654;
PL/SQL (same highlighting as SQL)
BEGIN
FOR r in (SELECT ename, empno
FROM emp)
LOOP
htp.p(r.ename);
END LOOP;
END;
JavaScript
$(document).ready(function() {
$(".btn-download").click(function(){
callMyFunction();
});
});
XML
Would you like some management with that appliance?
Andi Mann recently wrote an interesting post about virtual appliances . He uses the domain name pleasediscuss.com for his blog so I figured I’d do just that. More specifically, I have three comments on his article.
Opaque or transparent appliance
Andi’s concerns about the security and management problems posed by virtual appliances are real, but he seems to assume that the content of the appliance is necessarily opaque to the customer and under the responsibility of the appliance provider. Why can’t a virtual appliance be transparent in the sense that the customer is able to efficiently manage at least some aspects of the software installed on it? “You can’t put agents on most virtual appliances, they don’t come with WMI, and most have only a GUI for management” says Andi. Why can’t an appliance come with an agent (especially in these days of consolidation where many vendors provide many layers of the stack – hypervisor / OS / application container / application / management tools – including their agent)? Why can’t it implement a standard management API (most servers nowadays implement WBEM, WS-Management and/or IPMI pre-boot – on the motherboard – which is a lot more challenging to do than supporting a similar protocol in a virtual appliance). Andi is really criticizing the current offering more than the virtual appliance model per se and in this I can join him.
Let me put it differently, since this is probably just a question of definition: what would Andi call a virtual appliance that does expose management APIs for its infrastructure (e.g. WS-Management for the OS, JMX for the java stack) or that comes with an agent (HP, IBM, BMC, Oracle…) installed on it?
Such an appliance (let’s call it a “transparent virtual appliance” for now) doesn’t provide all the commonly claimed benefits of an appliance (zero config/admin) but as Andi points out these benefits come with major intrinsic drawbacks. A transparent virtual appliance still drastically simplifies installation (especially useful for test/dev/demo/POC). It doesn’t entirely free you of monitoring and configuration but at least it provides you with a very consistent and controlled starting point, manageable from the start (no need to subsequently install an agent). In addition, it can be made “just enough” (just enough OS, just enough app server…) to require a lot less maintenance than an application stack that you assemble yourself out of generic parts. We’ll always have trade offs between how optimized/customized it is versus how uniform your overall environment can be, but I don’t see the use of an appliance as a delivery mechanism as necessarily cornering you into a completely opaque situation, from a management perspective.
Those who attended Oracle Open World a few weeks ago were treated to an example of such an appliance, if they attended any of the sessions that covered Oracle’s Appliance Builder (the main one was, I believe, Virtualizing Oracle Fusion Middleware in the Modern Data Center, in case you have access to the Open World On Demand replay and slides). I believe it’s probably the same content that @jayfry3 was shown when he tweeted about “Oracle is demoing their private cloud self-service app”. These appliances are not at all opaque from a management perspective. To the contrary, they are highly manageable, coming with an Enterprise Manager agent installed that can manage everything in the appliance (and when that “everything” doesn’t include the OS, it’s because there isn’t one thanks to JRockit Virtual Edition, making things slimmer, faster, safer and more manageable). And of course the OVM-based environment in which you deploy these appliances is also managed by Enterprise Manager. OK, my point here wasn’t to go into marketing mode, but this is cool stuff and an example of what virtual appliances should be. BTW, this was also demonstrated during Hasan Rizvi’s keynote at OpenWorld, including the management of these systems through Enterprise Manager.
In the long run it’s irrelevant
As with all things computer-related, the issue is going to get blurrier and then irrelevant . The great thing about software is that there is no solid line. In this case, we will eventually get more customized appliances (via appliance builders or model-driven appliance generation) blurring the line between installed software and appliance-based software.
Waiting for PaaS
Towards the end of his post, Andi paints an optimistic vision of the future: “I also think that virtual appliances have a bright future – but in some ways I continue to see them as a beta version of what could (or should) come next. By adding in capabilities for responsible and accountable management, they could form the basis of more fully-functional virtual service management containers. These in turn could form the basis of elastic, mobile, network-deployed, responsible cloud appliances that deliver complete end-to-end service management without regard to physical location or domain of control.”
I mostly agree with this vision, though when I describe it it is in the guise of a PaaS platform. Where your appliance (which today goes from the OS all the way to the app) has shrunk to an application template that you deploy in the PaaS environment (rather than in a hypervisor). If/when the underlying PaaS environment has reached the right level of management automation you get all the benefits of an appliance while maintaining the consistency of your environment and its adherence to your management policies (because the environment is the PaaS platform and its management is driven from your policies).
[As is often the case, this started as a comment (on Andi's blog) and quickly outgrew that environment, leading to this new post. Plus, Andi's blog is brand new and seems to be well worth spreading the word about (Andi himself is under-marketing it).]
Thinking about Design Patterns
I have this friend who is an ambitious young corporate climber. When I was started out as a team lead, I was totally overwhelmed by the office politics I was suddenly exposed to. Naturally, I turned to my friend for advice. She told me to read Machiaveli’s “The Prince”. So I did. Its an interesting read, but not that amazing as far as management advice goes. When I later tried to discuss the book with my friend, I found out that she never actually read the book herself – she just thought it is good advice.
6 years later and I still believe people when they tell me that I have to read a book. I’m naive like that.
So I spent the last two weeks reading “The Timeless Way of Building”. Its an architecture book. Architecture as in cities and buildings. The reason I spent two weeks reading a professional book intended for a different profession is that at some point in history (1994, I believe), some people though that the ideas in the book are relevant to software development. These days you can’t really be a Java developer without being fully fluent in the development pattern language.
And of course, everyone was saying “You have to read The Timeless Way of Building. It will change the way you think about software.”. From my days in development, I still remember quite a bit of stuff about design patterns, and I never really liked that particular approach to software development, but I didn’t really figure out why. After reading the authoritative source on patterns, I can say the following:
- Christopher Alexander had some good ideas about patterns. The book is readable to non-architects and is very enlightening. I recommend reading it if you are interested in what makes some cities and buildings feel better than others.
- I am pretty sure that his advice on how to design good buildings is not really applicable to software development field.
A lot of his ideas are based on the fact (which he did the research to prove) that people intuitively know how buildings should be designed, and that when you ask a large number of people “How do you imagine you will feel in such room?”, you’ll get an overwhelming consensus. This is far from being true in the software field. - What is common known today as software design patterns is so far removed from what Christopher Alexander recommended for architects, that software developers should really go and find a different name for what they are doing.
I’m still rather shocked by the differences between Christopher Alexander’s patterns, and what design patterns look like today. It is not few tiny differences that occur whenever ideas are translated from one domain to another. Some of the changes are profound.
First of all, Christopher Alexander says that patterns describe the way people already do things. “Night Life” and “Parallel Streets” existed before the book “A Pattern Language” was written. I’m not at all sure this is the case for design patterns. People buy design pattern books to learn the patterns themselves, not just the language or which patterns are better than others.
Second, patterns should have an intuitive meaning and intuitive name. Again, you don’t need a book to know what is a “Bus Stop” or “Small Parking Lots”. You may want to read the book to find out why they are a good idea, or how to make a good bus stop, but you know what it is. I don’t believe that anyone knew what is an “Abstract Factory” before reading a document about design patterns. Even patterns that have been used for decades got a fancy name. It can take a while to figure out that a Singleton is a global variable. One of the simplest and most common patterns in software development “A function that does exactly one task” is missing from software design patterns. “A Loop” is also a pattern which is missing in action. All this gives the wrong impression that patterns are very complicated and something that can be mastered by experts only – which is exactly the opposite of what Christopher Alexander intended.
Third, patterns are abstract concepts. They are always implemented in a different way, because the entire idea is to be sensitive to the context, which is never the same twice. There is a pattern called “Six-foot balcony”, but it would be wrong to mass-manufacture six-foot balconies and start attaching them to buildings. Six-foot balcony is the idea, the exact shape of the balcony will be designed to match the building, the view, the trees, the sun, etc.
So it is rather annoying to discover that all patterns have “implementation examples”, which developers enjoy copying into their code. I’m all for code reuse, but this is not patterns mean.Wikipedia has a decent description of what defines a pattern, and “being implementable in one or two simple classes that can be copy-pasted” is not part of it.
Executive summary: “Timeless Way of Building” is an interesting book on architecture, with some good insights about how humans like to live and a bit of a Zen feel. You will not learn anything about software development from reading it. If you already know software design patterns, you will be struck by how different the ideas in the book seem.
Who uses asktom.oracle.com?
AskTom officially moved to apex.oracle.com on 18-SEP-2009. I turned on Google Analytics a day or two later. So my snapshot of asktom.oracle.com covers the period from September 20, 2009 through November 2, 2009 - not quite a month and a half.
Some interesting statistics:
- There were 517,599 "visits" and 1,005,189 page views.
- 78% of the page views were from hits from search engine results pages (thanks for the clarification, John Scott).
- 53% of the browsers are Internet Explorer - a number that I suspect gradually declines over time
- People found the site searching for 'ORA-00604' more than they found it by searching for 'tom kyte'. As a shareholder of Oracle, this statistic concerns me.
- The lion's share of visits comes from the United States, followed by India, United Kingdom, Germany and Canada.
asktom.oracle.com Google Analytics - 20091102
Landmark achievement for my team - Cisco announced as overall winner for SOA implementation award by CIO magazine and SOA Consortium.

Cisco SOA Team Wins SOA Consortium / CIO Magazine Award
Cisco has been selected as the overall winner of the 2009 CIO Magazine “SOA Case Study Competition“ organized by the SOA Consortium. Please see detailed news article here.
Cisco was recognized by industry experts for its SOA initiatives, platform and implementation successes.
The SOA Case Study Competition highlights business success stories and lessons learned to provide proof points and insights for other organizations considering or pursuing SOA adoption. The contest was open to organizations of all sizes, including government agencies that have successfully delivered business or mission value using an SOA approach.
CIO Magazine, launched in 1987, produces award-winning content and community resources for information technology executives. The SOA Consortium is a group of renowned industry experts and practitioners, who through the years honor companies for outstanding achievement with this award.
If you are interested in the case study then please contact me offline at arjain@cisco.com
What a Treat! The Leadership Carnival is here!
Consider all the goodies you get from Dan’s Great Leadership blog regularly and then multiply that by 30. That’s a full bag of candy! Consider taking the day off just to eat read these treats …
including our own post referring back to Dan’s Talent Management Challenge … oh my, I think I’ve gone into a sugar coma!



