This is an old revision of the document!
There're many articles that described how to install Oracle on the Linux, so this article is a work log. I wrote it because I met several problems, one of them is I can't create the DB via dbca. I installed Oracle on the real box and the virtual box more than 3 times to find out where's wrong, but I got nothing. So I have no choice except to create the DB manually.
My real server is headless which runs Ubuntu 7.0.4 server. And I want to install the oracle remotely, so ssh + x11-forward is the best choice.
Install software
0. software
oracle 10g for linux ubuntu server 7.0.4 xming putty
1. Update ubuntu
sudo apt-get update sudo apt-get upgrade
2. install the development environment and libraries
sudo apt-get install build-essential sudo apt-get install xauth libxp6 libxt6 libxtst6 sudo apt-get install libaio1
The whole x-windows is not necessary, some articles said that we should install the x-windows and WM, it's probably not a good idea to install these software only for installing another software.
Note: xauth makes x11-forward work, libaio1 makes sqlplus work.
3. add user oracle and group dba
sudo groupadd dba sudo useradd -m -g dba oracle sudo passwd oracle su - oracle cat > .bash_profile << EOF export $ORACLE_HOME=/home/oracle/product/10.2.0 export $ORACLE_SID=orcl export $PATH=$PATH:$ORACLE_HOME/bin EOF exit
4. set the system parameters
sudo cat > /etc/sysctl.conf << EOF kernel.shmmax = 3147483648 kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 EOF sudo sysctl -p sudo cat > /etc/security/limits.conf << EOF oracle soft nofile 65536 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384 EOF
5. upload the oracle 10g to the server and unpack.
6. configure the putty to enable x11-forward. The next lines should be uncommented in /etc/ssh/sshd_config:
X11Forwarding yes X11DisplayOffset 10
7. connect the server, the environment variable DISPLAY shoule be set
DISPLAY=localhost:10.0
8. run installer
su - oracle $ /where_oracle_media/runInstaller
choice custom install, not create DB. Maybe there's an error: libagtsh.so: undefined reference to 'nnfyboot', run the next commands:
export $ORACLE_HOME=/home/oracle/product export LD_LIBRARY_PATH=$ORACLE_HOME/lib sudo ln -s /usr/bin/basename /bin/basename sudo ln -s $ORACLE_HOME/lib/libclient10.a $ORACLE_HOME/lib/libagtsh.a sudo $ORACLE_HOME/bin/genagtsh $ORACLE_HOME/lib/libagtsh.so 1.0
9. create the startup file of oracle
sudo cat > /etc/init.d/oracle << OEF
# startup of oracle 10.2.0
ORA_OWNR=oracle
ORACLE_HOME=/home/oracle/product
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
su $ORA_OWNR -c $ORACLE_HOME/bin/dbstart
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
su $ORA_OWNR -c $ORACLE_HOME/bin/dbshut
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0
EOF
sudo chmod +x /etc/init.d/oracle
sudo ln -s /etc/init.d/oracle /etc/rc3.d/S99oracle
sudo ln -s /etc/init.d/oracle /etc/rc1.d/K09oracle
sudo ln -s /etc/init.d/oracle /etc/rc0.d/K09oracle
Create DB
1. become user oracle
su - oracle mkdir oradata/orcl
2. make a copy of init.ora in $ORACLE_HOME/dbs
cp $ORACLE_HOME/dbs/init.ora $ORACLE_HOME/dbs/initorcl.ora vi $ORACLE_HOME/dbs/initorcl.ora
change db_name to oracle_sid such as orcl
change shared_pool_size to 64M
change control_files to the absolute path such as /home/oracle/oractl/control1, two files at least
add the next line:
undo_management=auto
3. run sql script to create DB
# connect SYS/change_on_install as SYSDBA
connect SYS/admin as SYSDBA
set echo on
spool CreateDB.log
startup nomount pfile="/home/oracle/product/dbs/initorcl.ora"
CREATE DATABASE orcl
USER SYS IDENTIFIED BY admin
USER SYSTEM IDENTIFIED BY admin
LOGFILE GROUP 1 ('/home/oracle/oradata/orcl/redo01a.log') SIZE 10M,
GROUP 2 ('/home/oracle/oradata/orcl/redo02a.log') SIZE 10M,
GROUP 3 ('/home/oracle/oradata/orcl/redo03a.log') SIZE 10M
MAXINSTANCES 1
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 3276
MAXDATAFILES 100
MAXLOGHISTORY 1
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/home/oracle/oradata/orcl/system_01.dbf'
SIZE 512M REUSE
AUTOEXTEND ON
NEXT 10240K
MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/home/oracle/oradata/orcl/sysaux_01.dbf'
SIZE 120M REUSE
AUTOEXTEND OFF
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/home/oracle/oradata/orcl/temp_01.dbf'
SIZE 512M REUSE
AUTOEXTEND OFF
DEFAULT TABLESPACE users
DATAFILE '/home/oracle/oradata/orcl/users_01.dbf'
SIZE 64M REUSE
AUTOEXTEND OFF
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
UNDO TABLESPACE undo
DATAFILE '/home/oracle/oradata/orcl/undo_01.dbf'
SIZE 1024M REUSE
AUTOEXTEND ON
NEXT 5120K
MAXSIZE UNLIMITED;
spool off
exit;
4. initialize DB
connect SYS/admin as SYSDBA @$ORACLE_HOME/rdbms/admin/catalog.sql @$ORACLE_HOME/rdbms/admin/catproc.sql exit
5. create a test user
connect SYS/admin as SYSDBA
CREATE USER ora IDENTIFIED BY pwd DEFAULT TABLESPACE users TEMPORARY TABLESPACE tablespace temp;
GRANT CONNECT, RESOURCE TO ora;
CONNECT ora/pwd
CREATE TABLE test(name varchar(32));
INSERT INTO test VALUES('ora');
SELECT * FROM test;
exit;
Finished!