An often discussed topic is Java in Oracle Forms. There are various sites out there that explain how to build and deal with PJCs and Beans. Rarely covered is some basic functionality Forms has builtin since it's on the web (6i). That's the Java-Importer. Basically you have the possibility to use Java not just on Client side (with PJCs and Beans) you also are able to use Java via your frmweb process on the application Server. I recently needed it - once again. I tried to complete the implementation of the CELLWRAPPER parameter in the Reports Server (see previous post). It should be enough to put the file in the REPORTS_PATH, but that DOES NOT WORK . So I tried to get the workingDirectory, and found out that the easiest way is to use the Java System Class. First import the Java Class within your Formsbuilder:
  • Program -> Import Java Classes
  • enter "java.lang.System" as in "Import Classes"
  • Press "Import"
This few steps created a complete PL/SQL Wrapper for the java System Class. Now it's an easy task to get the user-directory (a bit reading of the java-doc) with:
SYSTEM.getProperty('user.dir')
Especially when using Java you need a better exception handling here's an rudimentary example of this:
BEGIN

  MESSAGE (SYSTEM.getProperty('user.dir'));
  PAUSE;
  
-- just an example, of course some better errorhandling should be done here
EXCEPTION
 -- important that you handle JAVA_ERROR AND EXCEPTION_THROWN
 -- you could even do a better handling by importing the Exception class
 WHEN ORA_JAVA.JAVA_ERROR then 
      MESSAGE('Java Error occured: '||ORA_JAVA.LAST_ERROR);
      PAUSE;
 WHEN ORA_JAVA.EXCEPTION_THROWN then                    
       MESSAGE('Java Exception occured');                  
       PAUSE;
 WHEN OTHERS THEN
       MESSAGE('others occured....');
       PAUSE;
END;
Have fun! Let me know if anybody needs more examples!

If you use the output format DELIMITEDDATA in Oracle Reports, that exports the report as CSV file, then sometimes you need to use a wrapper (e.g. if there are CR in a field) means output is not like

SCOTT;TIGER;TESTUSER;
CAPERS;JONES;TESTUSER2;
it's
"SCOTT";"TIGER";"TESTUSER";
"CAPERS";"JONES";"TESTUSER2";
In Reports it's pretty easy, there is a parameter that you can set called CELLWRAPPER. With this parameter you can define which character should be used to wrap the cells. If you use double quotes (") then you get FRM-41214 Unable to run Report (when running from Forms, another error when running from rwservlet directly). I am currently working on 11g, but it seems thats something that's not fixed since 10g. So it's kind of terrible that for such a long time there is a bug that has not been fixed. Metalink Note 397279.1 describes a workaround, by using another parameter CMDFILE, basically a file that contains parameters for the reports. In this file you put in your CELLWRAPPER=" (UX) or CELLWRAPPER='"' (WIN) parameter, and call it with CMDFILE=/tmp/mycmdfile.cmd. Means you change your Url (or forms parameter lists whatever...) from
http://myreportsserver....&desformat=delimited&cellwrapper="
to
http://myreportsserver....&desformat=delimited&cmdfile=/tmp/mycmdfile.cmd.

Almost everybody who is using SSH knows Putty well. If you have multiple servers to administrate putty lacks of the feature to easily administrate these. Of course it's possible, but not very easy to use.

On Windows I an using the "Putty Connection manager", a pretty nice tool thats doing the job. It has some minor bugs, is not supported anymore, but works well on any flavour of windows.

After (already mentioned several times) moving to Gnome, I needed some kind of substitute and stumbled upon a incredible good piece of software called "Gnome Connection Manager". After using it for several weeks, I can say it is so simple and powerful that I just can just recommend it to everybody working on Linux.

As you can see in this screenshots, you can easily define connection details, tunnels, startup commands, X11 forwarding.

screenshot1 gnome connection manager

Also more advanced features, like the sending of host-commands to multiple connections is supported.

screenshot2 gnome connection manager Heavily recommended, get it!!!

P.S. Screenshots taken directly from kuthulu.com

Recently I needed to split a delimited string with PL/SQL. I just did not want to write the xx version of a "parse delimited string" package, and so I stumbled upon Alex Nuijtens Blog. This solution was not the least complex, but so beautiful I almost wanted to cry ;-). !Thanks for sharing your solution at this point Alex! It worked perfectly and so I implemented it in my programs. After a few more tests with larger string (~5000-10000) I noticed huge performance issues. So I did a fast check with using a "normal" loop and not the hierachic query Alex is using. Same result, terribly slow (~30s). After thinking a bit (...happens from time to time...) it was clear, normally if you parse a delimited string, you always cut the part off the front, that you parsed and put it somewhere else (collection....), what did not happen by using this solution. So I rewrote the pure SQL approach to a PL/SQL function. So The code looks now:

vParseString := pParseText;
FOR i IN 1..length (regexp_replace (vParseString,vRegExp))  + 1
LOOP
            vToken := REGEXP_SUBSTR (vParseString,vRegExp);
            vCutPos := REGEXP_INSTR(vParseString,vRegExp,1,2);
            vParseString := substr(vParseString,vCutPos);
            DBMS_OUTPUT.PUT_LINE(vToken);
      EXIT WHEN vCutPos = 0;
END LOOP;
The complete programs needs below 0.1 seconds to finish in comparison to 30 before. So Alex program is good for small strings, but does not fit my needs in this case. Probably it's much faster if you use analytic functions, where you always replace the string of the previous line... I think if I have some time I will give that a try, because a pure SQL solution would be much more beautiful than a PL/SQL approach ;-).

I use Icedove (Thunderbird) since years, and think it's really a good piece of software, in my opinion it's much better than Outlook, I was using for several years too. After splitting up my data into "OS" and "real data", I also moved the .icedove folder from my home directory by symlink to my data-harddisk. Mails worked fine, but lightning would display any evens, you also could not even create any new calendar, events. After I while I saw the following error in the error-console:

Error: Components.classes[This email address is being protected from spambots. You need JavaScript enabled to view it./calendar/datetime;1'] is undefined
Source File: chrome://calendar/content/calUtils.js
Line: 78 
Solutioin: my data-harddisk was mounted by fstab with rw/user (for whatever reason I did this once...), I changed it to defaults what is equal to "rw,suid,dev,exec,auto,nouser,async on my current Debian Wheezy. After rebooting, everything works fine. I really would appreciate if anybody can explain me why this was the solution to my problem.
Finally it seems to be possible to use the gnome-extension-site with Debian Wheezy. I gave some a try and it's incredible how you can enrich and customize your desktop environment for your personal taste. I begin to love Gnome 3 more every day I work with it!

I setup my Laptop with Gnome3 and was suprised that the printer was not automatically added, I know for sure that it was added automatically with earlier version... Guess that has nothing to do with gnome itself, sometimes there is some other kind of trouble. My Printer is a old multi-functional Canon (scan/print/fax) MP780 the scanning with simplescan (standard program from Gnome3) works pretty well. If you look for drivers in the Inet, there is just commercial software, like Turboprint. I tried it but had some issues after a while, and don't really want a kind os software suite just for printing... I looked further and noticed that there are free drivers called gutenprint, already available in Debian. Basically the steps you need to configure the printer were

 apt-get install cups cups-driver-gutenprint
  • go to configuration page (local on port 631) http://localhost:631
  • choose option from “Adding Printers and Classes”
      Done! Pretty good quality of the printouts!

I have two servers with KVM running, on both I use preseeding to install the guests. It's amazing to watch a guest install automatically by using virt-install and passing some parameters on command line. Basically you need to pass further preseeding parameters in a file. When converting this script to wheezy I ran into a problem. In squeeze, the parameter that defines the disk was named vda (why vda??? however) in wheezy its sda now (more like its in every debian install). Means I had to change the config parameter from

d-i partman-auto/disk string /dev/vda
to
d-i partman-auto/disk string /dev/sda

Still not finished with my Gnome-Desktop, what I can say that there are some great features that I really missed on Windows for years, however I want to use my Thunderbird and Windows parallel and decided to use dual-boot with the same thunderbird-profile-directory. Wheezy still has a 3.x icedove (=thunderbird) client, and my Windows installation already has a 7.0.1, so I needed a new client, and could not find any distribution out there. Means I was forced to build it by myself. There were two guides that helped my with that topic the one was from Mozilla, the other one for an Ubuntu-build. Here is my step-by-step guide:

get sourcecode

get sourcecode from mozilla, in this case for building 7.0.1

wget ftp://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/7.0.1/source/thunderbird-7.0.1.source.tar.bz2

unpack file

tar -vxfj thunderbird-7.0.1.source.tar.bz2

change to direcotry

cd comm-releases

get build-backages

apt-get install build-essential libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev mesa-common-dev autoconf2.13 yasm

and dependencies from the icedove (debian version of thunderbird) package

apt-get build-dep icedove

create .mozconfig file

This file controls what is built and is specific for the mozilla project. In the first line I let the build put the new files in a new directory “thunderbird-7.0.1”

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/thunderbird-7.0.1
ac_add_options --enable-application=mail
mk_add_options MOZ_CO_PROJECT=mail
ac_add_options --enable-optimize
ac_add_options --enable-calendar
ac_add_options --disable-crashreporter

Here I disabled the crashreporter, because you run into a problem with deprecated headers on wheezy, a known bug of the mozilla build.

workaround for bug with 3.0 kernel

A workaround for another open bug with the mozilla build, on 3.0 kernels, just needed if you really are on a 3.0 kernel.

cd mozilla/security/coreconf
cp Linux2.6.mk Linux3.0.mk

start the build

make -f client.mk

after the build finished change to the build-directory

cd thunderbird-7.0.1

create the deb-package

make -j4

there is already a metapackage “thunderbird” on debian so we need to give it another name checkinstall also asks you for some stuff for naming and describing the package

checkinstall -D --install=no --pkgname=´thunderbird-fairtec´ --pkgversion=´7.0.1´

install the package

dpkg -i thunderbird-fairtec_7.0.1-1_amd64.deb
!If there is interest in the pre-built file, let me know, I will take a look if we can find a suitable hosting solution for that!

Last week I setup dual boot on my Laptop for giving Gnome on Debian a try. Worked without any problems, except the sound, the driver was installed correctly, but still had no sound. After reading loads of docs I found the hint of using the Realtek Code-Software here. Here step-by-step what I needed to make it working:

get_build_packages

apt-get install linux-source linux-headers-3.0.0-1-all-amd64 build-essential

get file from realtek - choose your kernel

become root

su root

uncompress file (example!)

tar -vxjf LinuxPkg_5.17Beta.tar.bz2

change to new dir (example!)

cd realtek-linux-audiopack-5.17

do the installation and reboot

./install
reboot


Today I tried to restore a full backup of an old DB to a new database with

RESTORE DATABASE FROM TAG = 'LASTDEV'
what resulted in
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 6 found to restore
After looking for the solution for hours I found out that there is a 5-year!!! old bug open that makes it impossible for RMAN to restore a backuppiece if it's read-only.
The BUG# is "5412531 - RMAN FAILS RESTORING READONLY BACKUPS: ORA-19870 ORA-19587 ORA-27091 ORA-27067"

I am using sqlplus and rman on linux a lot, and one very annoying thing is that there is no history (key-up) as it is on windows. Reason is that in sqlplus/rman is running in a dosbox and the dosbox has the "key-up-history" feature implemented automatically.

But also in Linux it's easy to achieve. The tool you need is "rlwrap". Just install it (example for Debian)

apt-get install rlwrap

and call sqlplus with "rlwrap sqlplus" or rman with "rlwrap rman".

Nothing more to make it run? No, nothing more!

Have fun!