<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    狼愛上貍

    我胡漢三又回來了

    Installing Oracle 11g on Ubuntu Linux 7.04

    I come from a MySQL background, and I have been given the challenge of learning Oracle. I can’t just play around with our customers’ databases, but I remembered that Paul Vallée said that there is nothing wrong with learning on company time. So I decided to install my own Oracle database, which I’ll be free to destroy in every way I can think of… and of course, free to bring it back to life. Recovering from crashes will probably be the most difficult part of my adventures in the Oracle world, but let’s take one step at a time, shall we?

    Now, onto Oracle 11g (beta 5) on Ubuntu 7.04 (Feisty Fawn). One little issue is that Ubuntu is unsupported by Oracle. So, through this text, we will trick the Oracle installer into thinking it’s actually running on a Red Hat box.

    Step Zero

    This tutorial was based on a document which can be found here. I have adapted it for Oracle 11g.

    Get a copy of Ubuntu 7.04 and install on a machine. I’m using the 32-bit version here (as well as for Oracle). Next, make sure your system is up-to-date. A simple apt-get update followed by a apt-get upgrade will do the trick, although you may prefer using the GUI Synaptic Package Manager — it’s entirely up to you what method you choose. However, I much prefer to use the command line.

    As you go through updates, sometimes a reboot will be needed (usually to boot from a newer, recently-updated kernel). Sometimes it’ll just ask you to restart your web browser or some other program as a new version is installed.

    It’s important to have a few gigabytes of free disk space and a total of 1 GB of memory before starting this. This 1 GB of memory can be RAM alone or the combination of RAM and swap space. Of course, since everything runs faster when in RAM, the more of it, the better.

    Very important: get Java running before trying to move on. My guess is that almost any JRE (java runtime) or JDK (java development kit) will work. I’m not sure which is the minimum version required: I used Sun JDK 1.5.

    Step One

    Install some system requirements. There are a few packages that I had to install on this box (it was a recently installed system which didn’t have all these packages). After several attempts of installing Oracle, the equivalent command-line for installing all the necessary packages at once was something like this:

    # apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio libstdc++5 gawk alien libg++2.8.1.3-glibc2.2 ksh gcc-3.3 g++-3.3 libstdc++5

    It’s possible that when installing the packages mentioned above, the installer will install some other prerequisites as well, as these packages themselves may have prerequisites.

    Step Two

    Choose where you are going to install your Oracle 11g server and create the ORACLE_BASE directory. This is the place where Oracle will be installed. Make sure there is at least 3 GB on the partition/mount point before moving to the next step. After installed, my basic installation took about 3.4 GB on disk (without the starter database!). As your database grows, it will need more space. Reserve a total of at least 6 GB for the unpacked installer and the basic installation. You can get rid of the installer files afterwards.

    # mkdir -p /u01/app/oracle

    Step Three

    Add a few users and change groups to make the installer more comfortable. Remember, we are tricking the installer to think it’s installing on a Red Hat box.

    # addgroup oinstall
    # addgroup dba
    # addgroup nobody
    # useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
    # usermod -g nobody nobody

    The usermod command is needed since because when running, the installer looks for a user called nobody which is part of a group named nobody (in Ubuntu, the user nobody it’s assigned to nogroup by default).

    Step Four

    Make some symlinks. Apparently, the installer uses absolute paths, so it must find the binaries in the right places.

    # ln -s /usr/bin/awk /bin/awk
    # ln -s /usr/bin/rpm /bin/rpm
    # ln -s /usr/bin/basename /bin/basename

    Step Five

    We need to mimic the /etc/rc.d directory structure of a Red Hat box. We do this with more symlinks:

    # mkdir /etc/rc.d
    # ln -s /etc/rc0.d /etc/rc.d/rc0.d
    # ln -s /etc/rc2.d /etc/rc.d/rc2.d
    # ln -s /etc/rc3.d /etc/rc.d/rc3.d
    # ln -s /etc/rc4.d /etc/rc.d/rc4.d
    # ln -s /etc/rc5.d /etc/rc.d/rc5.d
    # ln -s /etc/rc6.d /etc/rc.d/rc6.d
    # ln -s /etc/init.d /etc/rc.d/init.d

    Step Six

    I’ve created a file called /etc/redhat-release and put only one line on it. The same can be achieved by issuing the following as root:

    echo "Red Hat Linux release 4" > /etc/redhat-release

    Step Seven

    We tweak the system default limits on a few items. The shared-memory are specially important, since Oracle relies on shared memory for process communications. There is a file called /etc/sysctl.conf and it should have these lines on it:

    fs.file-max = 65535
    kernel.shmall = 2097152
    kernel.shmmax = 2147483648
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.ipv4.ip_local_port_range = 1024 65000
    net.core.rmem_default = 1048576
    net.core.rmem_max = 1048576
    net.core.wmem_default = 262144
    net.core.wmem_max = 262144

    Now that they are in a config file, these limits will be issued automatically at the next boot sequence. For now, we need to make the system re-read the config file:

    # sysctl -p

    Now, what do those parameters and values actually mean?

    • fs.file-max sets the maximum number of open files that can be handled by the Linux kernel.
    • kernel.shmall determines the total amount of shared memory to be allocated in pages. In this example, I’ve set it to 8GB, which is way above the amount of memory I can handle in my box, even with swap.
    • kernel.shmmax controls the maximum amount of memory to be allocated for shared memory which in this example is 2GB.
    • kernel.shmmni defines the maximum number of segments system-wide.
    • net.core.rmem_default and net.core.rmem_max define the default and maximum read buffer queue for network operations (1 MB in this example)
    • net.core.wmem_default and net.core.wmem_max define the default and maximum write buffer queue for network operations (256 KB in this example)
    • net.ipv4.ip_local_port_range tells the kernel the port ranges that will be used for outbound connections.
    • kernel.sem has four parameters:
      1. SEMMSL - semaphores per array
      2. SEMMNS - max semaphores system-wide (SEMMNI*SEMMSL)
      3. SEMOPM - max operations per semop call
      4. SEMMNI - max number of semaphore arrays

    To check your current semaphores configuration, you can run cat /proc/sys/kernel/sem or ipcs -ls. On my machine, after the modifications on sysctl.conf, these commands output:

    # cat /proc/sys/kernel/sem
    250 32000 100 128

    # ipcs -ls

    ------ Semaphore Limits --------
    max number of arrays = 128
    max semaphores per array = 250
    max semaphores system wide = 32000
    max ops per semop call = 100
    semaphore max value = 32767

    (I really don’t know if these are enough or too much, but I’ll keep you posted.)

    For a better understanding of these kernel-tweaking settings, I’d recommend these resources:

    Step Eight

    Add these lines to /etc/security/limits.conf, letting the oracle user use more resources than the defaults allowed. You may notice that all these values are a power of 2 minus one. When soft limits are exceeded, you’ll get a warning; the hard limits can’t be exceeded in any situation: you’ll get an error. I’m not completely sure, but I think these limits apply to each session/login (and since Oracle doesn’t exactly log in to the machine, my best guess is these limits apply per instance running).

    oracle soft nproc 2047
    oracle hard nproc 16383
    oracle soft nofile 1023
    oracle hard nofile 65535

    Step Nine

    Make sure the limits.conf is being interpreted as the oracle user logs in by adding these lines to /etc/pam.d/login. You will want to make sure that is actually happening, since the defaults are way lower and you may get all sorts of problems.

    session required /lib/security/pam_limits.so
    session required pam_limits.so

    Step Ten

    Unpack and prepare the installation.

    # cd /path/to/zipfile
    # unzip linux_11gR1b5_database.zip

    (And wait… wait a bit more… go get a cup of coffee…)

    After your second cup of coffee, you should have a multi-gigabyte set of files; this is our installer.

    # chown -R oracle:oinstall database
    # chown -R oracle:oinstall /u01/app/oracle

    Step Eleven

    Fire up the installer as the oracle user itself. This is what you will probably see on the output window:

    # su - oracle
    $ cd /path/to/extracted/zip/file
    $ ./runInstaller
    Starting Oracle Universal Installer...

    Checking Temp space: must be greater than 80 MB. Actual 58633 MB Passed
    Checking swap space: must be greater than 150 MB. Actual 2900 MB Passed
    Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed
    Preparing to launch Oracle Universal Installer from /tmp/OraInstall2007-07-11_04-38-56PM. Please wait ...
    Oracle Universal Installer, Version 11.1.0.2.0 Production
    Copyright (C) 1999, 2007, Oracle. All rights reserved.

    ulimit: 1: Illegal option -u
    ulimit: 1: Illegal option -u
    rpm: To install rpm packages on Debian systems, use alien. See README.Debian.
    error: cannot open Packages index using db3 - No such file or directory (2)
    error: cannot open Packages database in /var/lib/rpm
    rpm: To install rpm packages on Debian systems, use alien. See README.Debian.
    error: cannot open Packages index using db3 - No such file or directory (2)
    error: cannot open Packages database in /var/lib/rpm

    There are a few errors that can be safely ignored: the ulimit and the RPM-related errors, since the limits don’t restrict the installer and since we actually don’t have a RPM database on the machine — we are running on Ubuntu, remember?

    After a few moments, you will be prompted to choose where to install the Oracle server. You’ll notice that I asked the installer to not create a starter database — I did that later. Choose the Oracle Base and correct the group if needed. I personally recommend sticking with the defaults if you are a newbie like me.

    sm_o11g_011.png

    As you press the Next button, you will be prompted where to install the Inventory — leave it that way unless you know what you are doing (if this were the case, you wouldn’t be reading this text anyways). Also correct the OS group name if needed and hit Next.

    sm_o11g_021.png

    Since I’ve chosen to install the server in the same directory as the oracle user’s HOME directory, the installer will issue a warning. I simply ignored it and continued with the installation.

    sm_o11g_03.png

    After that warning, I tried to perform some prerequisite tests, and yes — some will fail. Just mark the failed boxes and hit Next (after trying a few times to fix those issues, I’ve decided to call the installer’s bluff and… it worked!)

    sm_o11g_04.png

    After all this warning stuff, it’ll ask you to check the list of products to be installed. I was amazed when I read that 122 different products would be installed on my box. Hit Next.

    Go get some coffee.

    sm_o11g_06.png

    And some more coffee.

    sm_o11g_07.png

    And even more coffee.

    sm_o11g_08.png

    You may like to go to the washroom after so much time drinking coffee. Remember: I was installing on a 3 GHz machine with 1 GiB of RAM with SATA2 disks — this box is supposed be blazing fast.

    sm_o11g_09.png

    At some point, it will ask you to run some commands as root. Do that when it asks, since the install depends on a few modifications on the base system (like creating the /etc/oratab file).

    $ sudo -s
    Password:

    # /u01/app/oracle/oraInventory/orainstRoot.sh
    Changing permissions of /u01/app/oracle/oraInventory to 770.
    Changing groupname of /u01/app/oracle/oraInventory to oinstall.
    The execution of the script is complete

    # /u01/app/oracle/product/11.1.0/db_1/root.sh
    Running Oracle 11g root.sh script...

    The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME= /u01/app/oracle/product/11.1.0/db_1
    [: 185: ==: unexpected operator
    [: 189: ==: unexpected operator
    Copying dbhome to /usr/local/bin ...
    Copying oraenv to /usr/local/bin ...
    Copying coraenv to /usr/local/bin ...

    Creating /etc/oratab file...
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root.sh script.
    Now product-specific root actions will be performed.
    Finished product-specific root actions.

    After these scripts finish their execution (the errors seem to be ignorable), hit the OK button and you’ll have a window that (probably) will look like this one:

    sm_o11g_10.png

    Just hit OK to get out the installer. The basic installation is… not over yet.

    sm_o11g_11.png

    To allow Oracle start on boot-up, create a file called oracledb (or whatever name you want to call it) and put it in /etc/init.d with the contents below. This script was copied and pasted from a tutorial by Graham Williams. It will read the /etc/oratab and fire up any instances it finds.

    #!/bin/bash
    #
    # /etc/init.d/oracledb
    #
    # Run-level Startup script for the Oracle Instance, Listener, and Web Interface

    export ORACLE_HOME=/u01/app/oracle
    export PATH=$PATH:$ORACLE_HOME/bin

    ORA_OWNR="oracle"

    # if the executables do not exist -- display error

    if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
    then
    echo "Oracle startup: cannot start"
    exit 1
    fi

    # depending on parameter -- startup, shutdown, restart
    # of the instance and listener or usage display

    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
    touch /var/lock/oracle

    su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
    echo "OK"
    ;;
    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
    rm -f /var/lock/oracle

    su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
    echo "OK"
    ;;
    reload|restart)
    $0 stop
    $0 start
    ;;
    *)
    echo "Usage: `basename $0` start|stop|restart|reload"
    exit 1
    esac

    exit 0

    After saving the file, make it executable

    # chmod a+x /etc/init.d/oracledb

    and if you want, make it run at every boot:

    # update-rc.d oracledb defaults 99
    Adding system startup for /etc/init.d/oracledb ...
    /etc/rc0.d/K99oracledb -> ../init.d/oracledb
    /etc/rc1.d/K99oracledb -> ../init.d/oracledb
    /etc/rc6.d/K99oracledb -> ../init.d/oracledb
    /etc/rc2.d/S99oracledb -> ../init.d/oracledb
    /etc/rc3.d/S99oracledb -> ../init.d/oracledb
    /etc/rc4.d/S99oracledb -> ../init.d/oracledb
    /etc/rc5.d/S99oracledb -> ../init.d/oracledb

    Before finishing, add the following lines to your /etc/profile . Be careful, since these values are valid system-wide. So make sure the paths are set according to your particular setup (if you have been doing everything according to this text, you should be fine).

    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
    export ORACLE_SID=ORCL
    export PATH=$PATH:/u01/app/oracle/product/11.1.0/db_1/bin

    Last operation: add yourself to the dba group. You can use usermod or just edit the /etc/groups file and add your username at the end of the line that starts with dba (my username is ‘bott’):

    dba:x:1002:oracle,bott

    If you chose to not create a starter database during your install, you’ll have to do two extra steps. You should create a listener (with netca) and after that, create the starter database (also with netca). If you chose to have the installer create a database for you, then you should be fine, since when doing that, it asks for a password for the default accounts (SYS, SYSTEM, and DBSNMP, SYSMAN if you choose to install it with the enterprise manager option selected).

    If everything has gone well, open a terminal window and, as the oracle user, type:

    $ sqlplus 

    SQL*Plus: Release 11.1.0.5.0 - Beta on Wed Jul 11 17:11:53 2007

    Copyright (c) 1982, 2007, Oracle. All rights reserved.

    Enter user-name:

    If you see these messages (and I sincerely hope you do) you’re all set! That means that you have finished a quite long install of Oracle 11g and you are ready to begin destroying it, just as I plan to as I take my first steps with Oracle. Some might say that going from Oracle to MySQL would make for an easier transition — I really don’t know, but I will post further entries on my experiences as I go.

    Anyway, I would greatly appreciate your feedback, especially if we can improve this tutorial so that more people can benefit from it.

    Augusto Bott.


    comefrom:http://www.phpchina.com/batch.viewlink.php?itemid=14789

    posted on 2008-04-27 20:55 狼愛上貍 閱讀(1753) 評論(0)  編輯  收藏 所屬分類: LINUX 、ORACLE

    主站蜘蛛池模板: 亚洲成A人片在线观看无码不卡 | 成年女人男人免费视频播放| 亚洲精品无码成人AAA片| 免费高清A级毛片在线播放| 性做久久久久免费观看| 精品亚洲成a人在线观看| 免费jjzz在线播放国产 | 四虎影视久久久免费观看| 免费人成在线观看网站视频| 国产成人亚洲综合无| 国产成人3p视频免费观看| 污网站在线观看免费| 精品国产亚洲一区二区在线观看| 精品国产免费一区二区三区| 亚洲精品国产综合久久一线| 精品一区二区三区免费视频| 亚洲AV日韩AV永久无码下载| 精品香蕉在线观看免费| 亚洲va久久久久| www.亚洲一区| 久久99青青精品免费观看| 亚洲国产精品专区| 亚洲伊人久久大香线蕉苏妲己| 91久久青青草原线免费| 亚洲国产视频久久| 成人国产精品免费视频| 亚洲V无码一区二区三区四区观看| 亚欧日韩毛片在线看免费网站| 亚洲视频手机在线| 国产成人免费A在线视频| 中国在线观看免费的www| 亚洲国产成人久久三区| 又爽又高潮的BB视频免费看 | 日韩精品无码区免费专区| 国产亚洲情侣久久精品| 久久精品国产亚洲香蕉| 搡女人真爽免费视频大全| 永久免费观看黄网站| 亚洲激情校园春色| 亚洲成A人片在线观看中文| 久久国产精品免费看|