Today marks the entrance of a new developerWorks blog - IDS Experts.
IDS Experts is a team blog with contributing engineers from various worldwide Tech Support and R&D teams. There is no particular agenda though I anticipate articles will be mostly technical, given that engineers are involved. The blog is currently sporting a photo of a spotty cat - I wonder why that could be.
This is the first Informix specific team blog, so I'm interested to see where this goes. Set your browsers to http://www.ibm.com/developerworks/blogs/page/idsteam and keep an eye on it. Also take the opportunity to post comments, your feedback goes straight to Development and tech support.[Read More]
Administrating and Developing with Informix
gbowerman 100000B5T0 2,615 Views
Critics might argue that this blog has over the years become a little sparse on actual weighty topics related to application development, and somewhat abundant when it comes to reprinting random announcements and links to other posts. It could be further argued, by the most exacting of readers, that my average post takes about 25 seconds to type, and I don't even bother checking it for typos..
Therefore I am very pleased to welcome Mark Jamison, an enterprise support engineer, trenchant Informix developer advocate, and posessor of many other talents.. as a technical author for this blog. You'll be seeing posts from Mark over the coming months.
Update 6/12/07: The article has been updated and is back online!
Want a summary of IDS 11.10 features in a developerWorks article, with handy links to the documentation for each feature? IBM Software Engineers Inge Halilovic, Mohan Saraswatipura, Radhika Gadde and Priyambada Behera have published such an article: What's new in IDS Cheetah (IDS 11)? It makes for a good digest of the major Cheetah features - useful to scan through if you think you know all the major enhancements, or have missed the hype and want to know what Cheetah is all about.[Read More]
I was chatting about DBA skills recently (with a DBA no less) and the discussion drifted to the skills required by technical support engineers. Having spent the last 18 years in and around database and operating system technical support, here's my monologue on the subject. Many of these could be regarded as common sense and applied to other professions. Note I don't claim to possess any of these skills. There's a lot to be said for making something up and hoping for the best.
Top 10 Tech Support Skills
10. Subject and specialist skills. Expertise on the supported product is a given, but as often as nota problem occurs at the interface of a supported product and another component. Hence aknowledge of all operating systems your product supports, all programming languages that clients can be written in, the networking layer used by your product, the assemblerlanguage it compiles to, are indispensable.
In a tech support team if each person can specialize in one subset of the knowledge, that's a lot of specialist knowledge. This is good foreach engineer, though at an organizational enough shared knowledge needs to exist to survive any individual moving on in their career.
Subject matter skills naturally extend to bug fixing and product development skills as you gain experience in a product.
9. The appearance of memory. Learning something, only to forget it when you need it 6 months later is a waste of time. Write down everything you learn and dump it ina Wiki or some other knowledge base for easy access.
8. Search engine skills. Often the truth is out there and a tech support engineer just needs to be better at finding it. A knack for using the right search criteria can be all it takes.
7. Generic problem solving skills. A good tech support engineer should be able to apply generic problem solving skills to troubleshoot any kind of problem, including for products they know nothing about.
6. Debugging skills. The ability to debug any code on any platform.
5. Communication skills. A tech support engineer should be adept at sharing information with other engineers and customers, and building a network of technical contacts across departments, teams and other companies in order to get things done even when proceduresget in the way.
4. Diplomatic skills. A support engineer needs to know how to diffuse high pressure situations by effective communication with all levels of management. What do you do ifsomeone is criticising your product and company, and you know they are right? (Of course thiswould never happen with Informix.) A diplomatic tech support engineer knows how to listen well, and move the focus of the discussion to what can be done to improve thesituation - which ultimately is what everyone wants, even if they need to let off some steam first.
3. DBA skills. This one sometimes gets overlooked. Many database tech support engineers go theirwhole careers without really understanding what DBAs do. If you want to help a DBA solve a problem you need to understand why the problem exists in the first place.
2. Fanatical devotion to problem resolution. Problem resolution does not mean getting acustomer to agree to close a case, it means doing whatever it takes to understand and solve the problem. In some cases if there is a fundamental disconnect between what the product is designed to do and what someone wants it to do it can mean enhancing the product, or understanding the customer needs in a wider context and looking for other ways to solve the problem.
1. Commitment to destroying your job. As with any service industry a good tech support engineer knows that their ultimate goal is to make their job unnecessary - for example push for code development methodology that reduces bugs, work with QA to improve testing, work to improve documentation and customer access to knowledge bases, to the point where the need for a tech support engineer is obviated. This is of course an ideal, with the positive benefits of striving toward such a goal realized along the way.
What did I miss? Comments welcome...[Read More]
Suppose you find your IDS instance hung? There are users waiting and you need to run some diagnostics quickly.. what information do you collect? Hopefully you'll never be in that situation thanks to IDS's legendary uptime but it's good to be prepared..
A new Technote is available which includes a (UNIX) script to gather information that will be useful to Technical Support: What to collect if a IBM Informix IDS server gets hung. Give it a try and see what you think. You can enter feedback directly, or put it here and I'll forward it to the author.[Read More]
So the next question we have , now we know why we encrypt, is what to encrypt.
Ultimately we have only two areas to encrypt. The first area is encrypting our network connection, and the data that goes against them. The second is encrypting the actual data when it is "at rest", which is an industry term indicating encrypting the data where it had permanent or near permanent storage.
Different Compliance standards requests different things. Some only care about the storage, others only the "in flight", and some require both. You have to know what your requirements are if you only want to do some encryption, versus going wholesale.
Important to remember is that any encryption requires a performance cost. Some less than others, but a cost nonetheless.
My next post on this comment will be the network options for encryption.
So as I'm messing around with the Informix Ultimate-C edition for Mac, I also am looking at CSDK 3.50 too. And while there is nothing wrong with the product, it does make me wonder what else a Developer might like to see with the product. In out (C)lient (S)oftware (D)evelopment (K)it we have the following:
If you happen to be on a platform other than Mac, you also get JDBC.
What else would you like to see in a CSDK bundle? Maybe I'm getting spoiled but looking at Microsoft and Apple, if you get an SDK you actually get a a real toolkit, something that also helps you build rapid prototypes, or even full fledged applications. I honestly think that IBM has a solution there already too. The free version is called Data Studio, and with just a little tweaking IMHO, could be the exact gui programming tool I see missing from the CSDK bundle. Even then though, I think all we would see on Unix platforms would be JCC, JDBC, ESQL/C and ODBC, and the question then is "is that enough, or do you want more?"
Would PHP, Ruby, and perl be enough? What else could/should a developer want for a CSDK bundle? I want to hear you thoughts on the matter.
I had a mail from the CSDK team manager saying "I am looking for customer feedback/pain points or any other feature which they would like to see to be addressed in CSDK".
So.. what would you like to see in the Informix Client Software Development Kit? Feel free to leave comments or email me directly.
Off the top of my head I'd like to see:
I've been putting IDS 11.50.xC2 though its paces this week and it has been a pleasure to see a few long standing usability issues addressed, particularly on Windows. For everyone who uses IDS on Windows I strongly recommend upgrading to 11.50.xC2. In this post I'll mention a few of the new features in xC2 that make it worthwhile. To see the full list of changes in xC2 take a look at the Release notes for UNIX and Release notes for Windows. Update 9/13/08: See also Fernando's Blog.
Multiple Installations of IDS on the Same Windows machine
When the IDS installer switched to using Installshield as its framework in version 11.10 this implementation caused a slight problem. Only one copy of each major version of IDS could be installed, so you couldn't for example have a separate development and production installation of 11.10 on your machine. At least you could still create multiple instances via the Instance Manager.
In IDS 11.50.xC1 support for multiple installations was reintroduced via an undocumented "-multiple" command line argument to the setup.exe program. Every time you ran "setup.exe -multiple" a new installation would be created in the path of your choice.
In IDS 11.50.xC2 the multiple installation support is once again the default behavior. Any time you run setup.exe, if there is an existing installation of IDS on the machine, you will be prompted to create a new instance. If you want to run setup.exe to maintain an existing installation, you can use the new -path or -instnum arguments to identify a specific installation.
Note for backward compatibility the "-multiple" argument is still supported, though no longer required.
The ISM GUI Program is back
If you're very old you might remember earlier versions of IDS 7.x included a graphical interface for the Informix Storage Manager called ISM.exe that allowed you to create and view storage devices, monitor storage manager operations and other tasks. In some ways it provided equivalent functionality to the UNIX ism_watch program. For obscure reasons, shrouded in mystery, the ISM GUI was dropped from the distribution some time in 7.3x and never seen again. Until 11.50.xC2 when it has been resurrected and rebuilt by popular demand.
The Configuration Wizard is improved
The configuration wizard was a new install feature introduced in IDS 11.50.xC1 thanks in part to input we received from usability sessions. For the first time you could have the install program detect your hardware configuration (CPU settings, disk size and speed), ask you some questions about the expected number of decision support and OLTP users and create an optimized onconfig file for you. Internal TPCC benchmarks showed that performance from a Config Wizard versus a manually tuned configuration file was very close and significantly better than the default configuration based on onconfig.std (incidently onconfig.std was also improved in 11.50 - with better inline documentation for parameters and more realistic values).
One usability issue with the Config Wizard on Windows in xC1 was that the onconfig file it would generate would have some UNIX specific values for parameters such as for Java stored procedures (JVPJAVAVM etc) which would mean extra work configuring those features on Windows. In xC2 the config wizard was redesigned to layer its onconfig enhancements on top of the onconfig.std file for each platform, resulting in an optimized onconfig file tailored to the platform it was installed on.
Banishing DLL Hell with SHMNOACCESS
Anyone who likes to use large shared memory configurations on 32-bit Windows has to think about where DLL's are loaded in memory by processes such as oninit.exe, onmode.exe, onstat.exe and onbar.exe. Any process that attaches to a shared memory segment needs a matching contiguous range of address space, and any DLL loaded by that process potentially fragments the address space. I have ranted about the DLL hell issue on previous occasions (part 1, part 2, part 3, part 4).
Even with all Microsoft and IBM fixes, it was still possible to get into a situation where the oninit process creates a shared memory segment that overlaps with where another process that needs to attach to that segment has loaded a DLL, resulting in a "Unable to attach to shared memory" error. Enter the SHMNOACCESS onconfig parameter. You can use this to exclude any regions of address space where you do not want oninit to create a shared memory segment. As of 11.50.xC2 it works on all types of segment (resident, virtual etc). This was the final tool needed to avoid 32-bit DLL problems in large memory configurations. As an anonymous tech support engineer (Tim Steele) said, "the Windows witch is dead!".
Debug libraries are included on Windows
This is one of those features most customers do not need to care about, but makes tech support and development engineers who need to debug optimized code very happy. The .PDB debug libraries for the IDS executable processes are now included in the install media (but not installed). Using these it is possible to see a valid stack if you attach a debugger to an oninit process or analyze a crash dump. This can dramatically reduce the time to find the root cause of a problem.
Better Windows Server 2008 Support
In most cases IDS 11.50 works fine on Windows Server 2008, but in FC1 (64-bit) there was one class of Intel CPU (Intel64) that the installer wouldn't recognize. This and a few other Win2K8 issues have been fixed in xC2. One fix is still to come - getting the finderr utility working again without needing to download Winhelp. There are plans in place to fix this soon.
Why IDS on Windows anyway?
I talk about IDS on Windows a lot. Being the Windows architect might be a factor, but there are reasons why the Windows port of IDS is important. Windows is one of our top 5 production platforms along with Linux, Solaris, HP and AIX (in no particular order). Windows is also often the platform people see IDS on for the first time, simply because the Developer Edition is freely downloadable on the web and a lot of people are using Windows when they download it. We also provide it on the IDS Discovery DVD we give away at conferences. That's why I'm very happy to see a release of IDS that has significant improvements for Windows.
If you deploy IDS on non-Windows platforms, there's a reasonable chance you have a laptop running Windows. IDS has a small footprint so you can have the Developer Edition running for free on your laptop without much overhead. There it's good for learning/training, development and demonstrations. As well as IDS on my XP OS, I also have it running via VMWare on Ubuntu, SLES, XP (again) and Windows Server 2003 all on the same machine. Running multiple instances of IDS on multiple operating systems at the same time does not put much strain on the machine.
Mac OS X Installer improvements
11.50.FC1 saw our first Mac OS X port, and with FC2 the installer has been improved. Now it can automatically make any required adjustments to kernel parameters, and it creates a terminal icon for easier access to the demo instance. A lot of development work is going into to making further installer improvements for Mac OS.
Update 9/9/08: Check this developerWorks article: Demystifying the Informix Database bundle (IDS and CSDK) installation on Mac OS X for more detail.
IDS Developer Edition is now upgraded every fixpack
For IDS 11.10 there was only one version of the free Developer Edition provided, 11.10.xC1. I had issues with this, because any defects found in xC1 were not going to get fixed for people developing with and evaluating IDS for the first time. Now with IDS 11.50 the Developer Edition is upgraded every fixpack so you get the latest and greatest. Get your free 11.50.xC2 IDS Developer Edition for the platform of your choice here.
Enterprise Replication Hardening (all platforms)
One other area I'll talk about is ER. There has been a big focus on improving the resilience of ER, making it more efficient with memory and better able to handle low memory situations, and generally work better in an embedded environment. Among improvements in xC2 are:
There are various other new features, such as improvements to OAT and SQL enhancements, as well as numerous defect fixes. 11.50.xC2 is one of those releases where you really want to take a look at the release notes to see what you are getting and what you can make use of.[Read More]
Well a crazy workday kept me from blogging yesterday. I was , however, reminded of an important piece to trouble shooting applications, even database instances. What was that piece? Never get hung up on a single test box, or a single test instance. The reason why may be obvious, but the problem is that if you get hung up on a single instance or box , you can miss the actual problem.
Take yesterday, for example, I was helping a customer with a box that recently migrated to 11.50.FC5 , their app was crashing every time the engine came on-line, and in the process was crashing the Informix engine as well. Now as a support engineer you tend to focus on the assertion failure file and shared memory dump , just like an application developer would focus on debug logs and a core file. Well to make a long story short, after trying to identify the problem, I finally asked them to test on a separate box that had 11.50.FC5, if they had one. They did have another test box, and tested their application which did not crash and worked as expected. It turned out there was no problem with Informix, or the application, but the original test box had significant issues all its own, due to an unforseen accident that both the developers and myself were not originally aware of.
It's so easy these days, in this "whose to blame" society that we forget sometimes, that conditions exist where no one is to blame. Accidents happen, and it's what we do to idenify and correct the issue, accidental or not, that helps make our application, and ourselves , successful.
Currently trying (without much success) to ignore all distractions and work on my presentation for the Informix Tech Fair next week.
Question of the hour
Q. Is there an easy way to see which users have been granted dba privileges for a database?
A. Connect to the database and run the following query:
select username from sysusers where usertype = 'D' and username != 'informix';[Read More]
So I'm sure I can hear now, why even bother with asking the question "why encrypt" , we've been told to do it, and so we need to. You can certainly look at it that way, but the different reasons to encrypt impact application developers differently. In some cases it means you have to make changes to you application, in other cases it means major changes to your application, and in even other cases it means no changes to your application at all.
A quick legend for those unfamiliar with the terminology of securing data:
"over the wire" means that you encrypt or secure your network connection, using SSL is a common method of "over the wire" encryption.
"at rest" means where your data is stored is secured. I would love to call this "disk level encryption", but the truth is DLE is a method used for encrypting data "at rest", and therefore just causes too much confusion when used.
Here are the primary reasons to get into the encryption game, and the impact it likely has on an application developer:
A closed beta for the Windows 64-bit port of IDS is scheduled to begin around mid-May. The 64-bit port has some performance advantages, including support for shared memory greater than 4GB. Here's an example onstat -g seg from a pre-beta test instance showing >5GB shared memory. Note that SHMBASE is now placed above 2GB (0x80000000).
D:\disks\ids\x64>onstat -g seg
Update 4/7/07: Note that this is a x86_64 (also known as AMD64) port. No IA64 version is currently planned.
If anyone is interested in participating in this beta please contact the project manager Anita McKeithen.[Read More]
If you've ever used dbaccess on Windows and have your Command prompt screen buffer height set to greater than the old default of 25 lines, you've probably seen the screen buffer corrupted after exiting from dbaccess. A typical symptom is getting a directory listing by running 'dir' and seeing the listing obscured by fragments of earlier screen output.
I'm pleased to report this problem is finally resolved, with the fix of product defect 175362:
DBACCESS CORRUPTS CONSOLE BUFFER WHEN EXITING ON WINDOWS
With the fix in place, the screen buffer is saved when dbaccess is started, and correctly restored upon exit. Look for this in the next IDS interim version, 10.00.TC5, or for those who can't wait, the fix is already available in the 10.00.TC4W2 post-interim drop.
So, you might be wondering, when is IBM going to offer a fully featured interactive GUI SQL editor for Informix?
There are some interesting projects currently underway in this area, I hope to provide more updates soon.[Read More]
After a rather hectic week I am finally finding the time to write about an recent trip to a Windows Server 2008 Application Compatibility Readiness Lab in Redmond to put Informix Dynamic Server through its paces on Windows Server 2008. We did a similar exercise for Windows Vista last year (#1, #2) that proved very useful in identifying compatibility problems early on and testing performance improvements.
The readiness labs are located in the Platform Adoption Center, building 20. This year I went along with Mirav from our kernel performance team. We had the same lab as last time as far as I can tell, which by default has 4 W2K8 machines configured to order. As we wanted to run comparative performance tests in addition to compatibility tests we were fairly demanding of hardware and ended up setting a record for number of machines crammed into the lab (Win2K8, 32-bit, 64-bit, with HyperVisor & without, Win2K3, Linux, etc..) - a task our hosts cheerfully took on.
Mirav and I getting to grips with Windows Server 2008
The readiness program consists of some presentations on Windows Server 2008 features, which have some overlap with Vista features, an introduction to the WS08 Logo Program, Windows Error Reporting, and a Security Analysis. The rest of the time we are free to play around with the machines and try out new features.
I plan two more posts this week describing running IDS on Windows Server 2008 in more detail, but here is a quick summary for the impatient:
Additional articles planned will cover: Compatibility in more detail, Performance, Server 2008 Core and Virtualization.
I noticed one key difference from last year. The ice cream freezer stayed well stocked throughout the week. As always, copious quantities of snacks were provided along with meals. I can only put this down to fear of what might happen if sleep-deprived bloggers lose their sugar high. Of course being entirely focussed on the technology I didn't give any of this much thought.
A quick survey of the freezer contents
As for the Vista program last year, the W2K8 readiness program proved most valuable for identifying incompatibilities early and testing performance improvements. We also found we learned a lot in having the opportunity to dedicate a few days to using the OS and its new features, and also having experts on hand who could help us with solve problems such as how to do function profiling which will benefit follow-up performance analysis.
From a DBA perspective Windows Server 2008 provides a good performance improvement with sufficiently powerful hardware and has some useful file system improvements. I particularly liked the efforts around improved command line interface, and I think the concept of the Server Core has a lot of potential - more on this later.[Read More]