On the day that Apple announced iPad the bigger news for corporate developers was the completion of Oracle’s acquisition of Sun. The announcement was accompanied by a five hour press briefing and claims the company will be hiring two thousand more employees. Personally, however, I am inclined to agree with this downbeat assessment made when the acquisition was first announced last year.
Author: Piers C
Windows 7 is doing phenomenally well
According to this article on Ars Technica even if Windows is slowly losing share, Windows 7 is doing phenomenally well.
Installing Oracle XE on Ubuntu
Oracle XE is available for 32-bit architecture (i386) Linux only, although it may be possible to force installation on a 64-bit host. It will run in 512KB RAM but requires a 1GB swap space. Add:
deb http://oss.oracle.com/debian unstable main non-free
to /etc/apt/sources.list and then as root:
wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add - apt-get update apt-get install oracle-xe
‘libaio’ and ‘bc’ are in the repository, so dependencies will pull them in if the user doesn’t have them.
Incanto
After months of delay I’ve finally switched all my database creation scripts to Incanto. The most obvious benefit is that my Ant build scripts are now more portable, as I am no longer exec’ing a shell script wrapper to sqlplus, and I no longer need Cygwin to run the build scripts on my Windows workstation. One of the nice features about Incanto is that it allows you to pass in an Ant propertyset which is used to define SQL*Plus variables for the invoked scripts. I find this useful for overriding schema names and allowing multiple sets of application schemas to be created in the same developer database, for example when researching support issues alongside new development. The Incanto website has a page of best practices including a <macrodef> which I placed in a shared build file and <import>ed into my various Ant scripts.
Incanto requires sqlplus to be on the PATH, so I handle that and setting login parameters in .antrc. One strange issue I encountered on SLES while making this transition was that even although sqlplus was on my PATH and executable from my shell scripts, when I used Incanto I got
java.io.IOException: java.io.IOException: sqlplus: not found
Changing the permissions on sqlplus from 750 to 755 resolved the issue, even though the executable already belonged to a secondary group of which I was a member. Note that if you don’t need the advanced features of sqlplus you can still execute PL/SQL with Ant’s sql task.
Google Officially Launches Chrome Extensions
With support for Xmarks, AdThwart and IE Tab I’m finally considering it as an alternative to Firefox. Chrome is fast, this video explains DNS pre-resolution.
Subversion on Ubuntu – Multiple Repositories
Eighteen months have passed since I setup Subversion on Ubuntu and I’ve found multiple repositories are valuable for providing finer grained access control and easier storage management. Here is a revised incantation:
su - adduser --system --home /srv/svnrepos --gecos "System account to run svnserve" svn apt-get install subversion xinetd cat >> /etc/xinetd.d/svn << "EOF" service svn { port = 3690 socket_type = stream protocol = tcp wait = no user = svn server = /usr/bin/svnserve server_args = -i -r /srv/svnrepos } EOF /etc/init.d/xinetd restart # for each repository, eg. myrepo1 $repo=myrepo1 svnadmin create /srv/svnrepos/$repo chown -R svn:nogroup /srv/svnrepos # uncomment line to use default password file vi ~svn/$repo/conf/svnserve.conf cat >> ~svn/$repo/conf/passwd << "EOF" [users] fred = ***** ...
Renaming a Linux Host
Renaming a Linux host I found this command useful:
grep -r -l $(hostname) /etc
Windows 7 Backup & Restore
I had my first disk failure this week of my Windows 7 laptop hard drive. Fortunately I’ve been using Windows 7 Backup, and all I had to do was plug in the external USB drive with my backups to another machine, boot off the Windows 7 installation CD, and select ‘Repair…’ using the latest system image from the USB drive. Even restoring a system image from a Dell Latitude to a Toshiba Tecra (with the same sized drive and dual core x64 CPU) was painless, all the necessary drivers were changed automatically with no fuss. The only problem was reestablishing trust with a Windows domain, which was worked around by changing the computer name and re-adding to the domain. The default Windows 7 Backup configuration is to create a system image and backup all files in Libraries, which works just fine for me.
Google Trends – Databases & Languages
Google Trends is a great tool for graphing search term popularity over time. Here is a comparison of searches for several makes of database.
Perhaps it’s a quirk of the phrases I used, but I was surprised to see Oracle so dominant, and even MySQL more popular than SQL Server. PostgreSQL languishes in obscurity compared to MySQL, and Ingres barely registers at all.
Here’s some languages that I’m interested in. Java is hugely dominant.
Let’s take out Java and zoom in. I was surprised to see Ruby’s recent decline relative to Python. Books on Scala have come out only recently.
Looking more specifically at JVM language dialects I’m surprised to see Jython competing so strongly with JRuby. I’m not sure if I picked the right phrase for Groovy.
Choosing tools solely on the basis of popularity is obviously not a great idea, but I do feel better now about continuing to use Oracle, Java and Python.
P.S. See also the TIOBE Programming Community Index
Oracle tablespace utilization
I stole this from VS Babu
SELECT a.TABLESPACE_NAME, a.BYTES bytes_used, b.BYTES bytes_free, b.largest, round( ( ( a.BYTES - b.BYTES ) / a.BYTES ) * 100, 2 ) percent_used FROM ( SELECT TABLESPACE_NAME, sum( BYTES ) BYTES FROM dba_data_files GROUP BY TABLESPACE_NAME ) a, ( SELECT TABLESPACE_NAME, sum( BYTES ) BYTES, max( BYTES ) largest FROM dba_free_space GROUP BY TABLESPACE_NAME ) b WHERE a.TABLESPACE_NAME = b.TABLESPACE_NAME ORDER BY ( ( a.BYTES - b.BYTES ) / a.BYTES ) DESC