LevienFontsAfter installing the new font (see previous post) we had another problem. It was a font that was not commonly used, so most of the clients did not have it installed on their PCs.
That means Adobe Reader tries to simulate the font by using MM fonts (see wikipedia for that). The result is awesome, almost the same without installing a font. But it's just almost the same. The customer wanted to have exactly the same one. So we had to decide if we want to use embedding or subsetting (differences are listed here).

We decided for the commonly used subsetting. Subsetting is easy in Oracle reports... most times.... You simply look for your uifont.ali file, edit it and put for example "testfont" = "testfont.ttf" in the [PDF:Subset] section. You can check if the font is embedded by looking in the properties of the generated pdf file.
In my case it did not work.

Reason was, that i took the entry "FontName" from afm file and not the "FamilyName" entry. That means not "testfont" = "testfont.ttf" its "testfontfamily" = "testfont.ttf"
Worked perfectly after reports server restart.

AmharicSampleShort time ago a customer wanted a "corporate identity" font in his report output files (pdf). Installing a new Font in Windows is easy, just copy the .TTF file to c:\windows\fonts and windows will take care of the rest. It's not so easy in Linux/Unix, the Oracle documentation is .... a lot, i counted 5 different sections in the documentation where they were talking about almost the same and there was no short howto. Here is a small cooking-recipe how to install a font on a Linux Reports-Server, i hope i did not forget anything, comments welcome.
  • Download a converter that is able to convert TTF files to Adope Type 1. I did it with ttf2pt1 for windows that can be downloaded here.
  • create the afm file for your font (f.e. c:\program......\gnuwin32\bin\ttf2pt1.exe .\testfont.ttf)
  • create a new directory on the linux reports-server.
  • copy your ttf and afm file in there.
  • change the file $ORACLE_HOME/bin/reports.sh so that it includes the new created directory with the font files
  • ! use dos2unix on the AFM file (f.e. dos2unix testfont.afm) so you can ensure your ftp did not change anything, this step costed me several hours.
  • copy the AFM file to $ORACLE_HOME/guicommon/tk/admin/AFM.
  • edit the printer file (in most circumstanceds screenprinter.ppd) $ORACLE_HOME/guicommon/tk/admin/PPD and add the new font in the *Font section for example: *Font testfont Standard '(00.1001)" Standard ROM !ensure that the font name is the same as the one of the FontName entry in the AFM-file.
  • restart the reports server (by using "opmnctl stopall" and "opmnctl startall"
harddisk crashA time ago i was asked to take a look at a not more working PC, there were some hardware issues, and so i began to make a backup on the internal second harddrive.
Guess what happened... The second drive was corrupted, seems that there is a serious problem with the IDE Controller. So what now, two harddrives, two corrupted, backup corrupted (worst case). So i began to look for reocvery software. I googled a bit and there are several products out there, all of them have a "free" trial version, if you want to restore something they tell you, that you have to buy it. To pay for that software would be ok for me, but to pay and not to know if the data could be recovered is not something i like.
Until i came across TestDisk, a program from Christophe Grenier  it is released under GPL, and so i gave it a try.
It has a simple DOS-like interface, and did the recovery out of the box without any problems. That's the way software should work!
Dont forget to donate to Christophe!

Back at Reports Issues!

If you are getting "REP-1352: The fonts specified for this report cannot be found for the character set specified by NLS_LANG." and there seems nothing wrong with your NLS_LANG, take a look at your AFM file, in my case i simply transferred the AFM file by sftp from windows to linux, after applying dos2unix everything was fine.


oas10If you try to use barcodes in Oracle Reports there is a nice tutorial in the docu that can be found here. Basically it works by using a simple (and very old) java-bean (oraclebarcode.jar) that generates that you pass string and it generates the barcode (a graphic) that is displayed in the report.

In one step they tell you to set your REPORTS_CLASSPATH variable, so that Reports can find the java-class. It works fine on the local Reportsserver. What they don't mention, and what every time i am using it takes me hours is that you have to configure your "big" Reportsserver also, and that does not mean to simple set your REPORTS_CLASSPATH, no you have to change the config-file to include the classpath in every engine that is defined there. For example:


<engine id="rwEng" class="oracle.reports.engine.EngineImpl" initEngine="1" maxEngine="1" 
minEngine="0" engLife="50" maxIdle="30" callbackTimeOut="90000" classPath="/barcode/oraclebarcode.jar" >

<engine id="rwURLEng" class="oracle.reports.urlengine.URLEngineImpl" initEngine="1" maxEngine="1"
minEngine="0" engLife="50" maxIdle="30" callbackTimeOut="60000" classPath="/barcode/oraclebarcode.jar" />



backupAs you probably know there are some issues with the Enterprise-Manager, today i came around some really ugly things. In my Test-Installation i am using Enterprise-Manager on Windows Server, and tried to write a RMAN-Job. When trying to start these jobs i get: "No rman found in c:\oracle\product\11.1.0/bin". In this error-messages there are several issues there is one slash "/" instead of a backslash "\" and the directory is NOT my Oracle-Home.

I installed the newest version of the agent, but it did not work either. So i tried a workaround. I simply wrote a batch-script that starts RMAN and a RMAN-Script with "rman @testscript.txt" in the script i use connect target to connect to the correct instance (not the best way but it works).

Next Error-Message: "Message file RMAN<>.msb not found". This time the ORACLE_HOME variable was not set. ORACLE_HOME on Windows? Isn't that a linux/unix-thing? YES.... normally in windows just the PATH-Variable is rewritten wenn changing Oracle-Homes, but in this case the management seems to rely that there is such an variable. So i simply added a SET ORACLE_HOME=C:\oracle\product\11.1.0\db_1 in my batch-script.

Now it seems to work properly Laughing, i hope they fixed it in the new Enterprise-Manager version already....

passwordIf you are getting a "ORA-1017: invalid username/password; logon denied" when creating a database link, and you ensured to enter the correct password, you probably try it against a 11g database version. In this version is a new feature the "case sensitivity rules". This statement worked from a 11g db to a 10g database, and threw a exception from 10g to 11g.

create public database link testdblink
connect to TESTUSER identified by 'testpw'
using 'test2db';

After using double-quotes it worked fine in every direction.

create public database link testdblink
connect to TESTUSER identified by "testpw"
using 'test2db';

Seems to be a bug or a feature....

If your resolv.conf gets overwritten in Debian after a reboot, and thats not wanted check if you have accidentially installed the package resolvconf. This package is a framework for exchanging name server information, used by several programs. In my case a simple "apt-get remove resolvconf " resolved Wink the problem.

I am currently testing my Amazon4PHP framework and was trying to analyze what items on Amazon are really worth to buy. You can find the results here. If you have any suggestions for the lists let me know. I am thinking on generating them on a regulary base for all Amazon-Sites. The lists here are from Amazon Germany and the Price is including the Austrian VAT of 20%. I was just able to include some Electronical stuff, i will work on a version for books and others

The framework is written in PHP and i am using the Amazon Web Services to retrieve the product-data. If you have any suggestions what would be a nice feature let me know!

The index-files with the links can also be found here: Index File to Amazon-Bestseller

xen_logoOn one of my xen-guests i got "4gb seg fixup" errors after upgrading from etch to lenny. Reason was that the libc6-xen library was not linked correctly. I fixed it with:

  • apt-get remove libc6-xen
  • reboot
  • apt-get  install libc6-xen
  • reboot

Last week i got the following error on a 10gR2 Database when using Views:

ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [__VInfreq__kxccres+1516] [PC:0x2FB0BE4] [ADDR:0xC] [UNABLE_TO_READ] []
alter system set _optimizer_join_elimination_enabled=false scope=both;

bug I ran into the bug Oracle Bug 5579055, the solution for this is documented in note 370701.1

It is solved when you turn a optimizer feature off with:

alter system set _optimizer_join_elimination_enabled=false scope=both;

debianAs before mentioned i am not a Linux-Pro but try to survive on Debian since a while. This time it took me some time to get a solution to this error message "C compiler cannot create executables."
Reason was that you have to install the build-packages for Debian. This can be done with

apt-get install build-essential make bin86