Sunday, February 17, 2008

Russian input does not work in programs launched with Wine

I use en_US.UTF-8 locale on my laptop (openSuSe 10.3), but sometimes I need windows programs with russian input to be launched with wine.

I wrap each exe with sh file similar to the following:

export LC_ALL=ru_RU.UTF-8
wine BMCity.exe

One very important step is to create the following link to make ru_RU.UTF-8 locale available to wine.

sudo ln -s /usr/lib/locale/ru_RU.utf8 /usr/share/X11/locale/ru_RU.UTF-8

Friday, January 25, 2008

Why does VMware crash during startup from ntfs-3g?

VMware tries to use shared writable mmap for paging files from version 5.0 but it can't detect that it's not yet supported.

Workaround: Set "mainMem.useNamedFile=FALSE" in the .vmx file. It will disable paging files and VMware will work fine, often with much better performance.

Status: This has been worked one in the kernel and FUSE for three years. The solutions is complex and several experimental patches are available. VMware has also fixed their virtual machine recently.

Friday, January 11, 2008

"No space left on device" error from Xen

xenstored database may get corrupted sometimes and upon vm startup it would give a very misleading message like.

# xm create /etc/xen/win2k3
Using config file “/etc/xen/win2k3”.
Error: (28, ‘No space left on device, while writing /local/domain/0/backend/vbd/
18/768/online : 1′)

The workaround is documented here. In short, you have to do the following:
  1. Stop xend "/etc/init.d/xend stop"
  2. Kill xenstored as the above script does not shut it down (I also killed xenconsoled, just in case)
  3. Delete all tdb file from /var/lib/xenstored/tdb*
  4. Start xend
  5. Attempt to start your vm.
  6. If you see the following error just reboot the machine.

    # xm create /etc/xen/win2k3
    Error: Device 0 (vif) could not be connected. Hotplug scripts not working.
  7. After reboot everything should be fine.

Tuesday, November 20, 2007

how to send a message to a user on another Linux terminal

I've googled this several time already, but keep on forgetting the commands. Hope this note will help next time I try to search it again :)
Taken from here http://www.htmlforums.com/archive/index.php/t-64292.html

command write
http://www.linuxdevcenter.com/linux/cmd/cmd.csp?path=w/write
Initiate or respond to an interactive conversation with user. A write session is terminated with EOF. If the user is logged into more than one terminal, specify a tty number. See also talk; use mesg to keep other users from writing to your terminal.

command talk
http://www.linuxdevcenter.com/linux/cmd/cmd.csp?path=t/talk
Talk to another user. person is either the login name of someone on your own machine or user@host on another host. To talk to a user who is logged in more than once, use ttyname to indicate the appropriate terminal name. Once communication has been established, the two parties may type simultaneously, with their output appearing in separate windows. To redraw the screen, type Ctrl-L. To exit, type your interrupt character; talk then moves the cursor to the bottom of the screen and restores the terminal.

command mesg
http://www.linuxdevcenter.com/linux/cmd/cmd.csp?path=m/mesg
Change the ability of other users to send write messages to your terminal. With no options, display the permission status.

and of course wall
http://www.linuxdevcenter.com/linux/cmd/cmd.csp?path=w/wall
Write to all users. Depending on your Linux distribution, wall uses one of the two syntaxes shown. In both versions, the default is for wall to read a message from standard input and send the message to all users currently logged in, preceded by "Broadcast Message from..."

Saturday, November 17, 2007

How to enable XA transactions in Oracle

Thanks to David P. for this guide.

You need to login to the oracle server as the sys user:

my-server# sqlplus SYS as SYSDBA

and run the sql included in these two files:

$ORACLE_HOME/javavm/install/initxa.sql
$ORACLE_HOME/javavm/install/initjvm.sql

From sqlplus it looks like:
SQL> @/opt/oracle/10.2.0/javavm/install/initxa.sql
SQL> @/opt/oracle/10.2.0/javavm/install/initjvm.sql

It is possible that initjvm.sql has already been run by installer so second script may fail with such warning.

You then need to run the following grant statements:

grant select on pending_trans$ to public;
grant select on dba_2pc_pending to public;
grant select on dba_pending_transactions to public;

Then execute the following grant statement once for each oracle user you want to participate in XA transaction

grant execute on dbms_system to ;

where is your username (don't include the angle brackets)

Configuring autostart of Oracle10g on Linux

Change /etc/oratab so each database has Y for autostart
ORCL10:/opt/oracle/10.2.0:Y

Create the following script as /etc/init.d/oracle
The script starts listener, database and enterprise manager.
dbstart is also able to start listener automatically in Oracle10g if ORACLE_HOME_LISTNER env. variable is set

---cut here---
#!/bin/bash
#
# chkconfig: 345 79 79
# description: Starts oracle listener and database

ORA_HOME=/opt/oracle/10.2.0/
ORA_OWNER=oracle

case "$1" in
start) echo "Starting Oracle Database(s) "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start; $ORA_HOME/bin/dbstart; $ORA_HOME/bin/emctl start dbconsole"
# su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start; $ORA_HOME/bin/dbstart"
touch /var/lock/subsys/oracle
;;
stop) echo "Shutting down Oracle Database(s) "
rm -f /var/lock/subsys/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut; $ORA_HOME/bin/lsnrctl stop; $ORA_HOME/bin/emctl stop dbconsole"
# su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut; $ORA_HOME/bin/lsnrctl stop"
;;
*)
echo "usage: $0 {start|stop}"
exit
;;

esac
---cut here---

Change permissions:
chmod 750 /etc/init.d/oracle

Add the script to autostart:
chkconfig --add oracle

Instalation of Oracle10g 64bit on CentOS5 64bit

I used official Oracle docs as well as the following guide

http://www.dizwell.com/prod/node/681?page=0%2C3

Installed all packages recommended. Configured all users, env variables etc.
However, I've got several install failures (info from the install log):

Problem 1: crt1.o could not been found
Resolution: install glibc-devel 32bit package and add /usr/lib64 to oracle user PATH

Problem 2: libstdc++.so.5 could not been found
Resolution: install compat-libstdc++-33-3.2.3-61 rpm

That's it