如何在Ubuntu 14.04上安装Oracle 11gR2?


Answers:


72

步骤1:下载 Oracle Database Express Edition。

步骤2:安装Oracle之前的说明

  1. 复制下载的文件并将其粘贴到主目录中。

  2. 使用以下命令解压缩:

    unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip 
    
  3. 使用以下命令安装所需的软件包:

    sudo apt-get install alien libaio1 unixodbc
    
  4. 使用以下命令进入Disk1文件夹:

    cd Disk1/
    
  5. 使用以下命令将RPM软件包格式转换为DEB软件包格式(Ubuntu使用):

    sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm
    
  6. 使用以下命令创建所需的chkconfig脚本:

    sudo pico /sbin/chkconfig
    

    pico文本编辑器已启动,命令显示在屏幕底部。现在,将以下内容复制并粘贴到文件中并保存:

    #!/bin/bash
    # Oracle 11gR2 XE installer chkconfig hack for Ubuntu
    file=/etc/init.d/oracle-xe
    if [[ ! `tail -n1 $file | grep INIT` ]]; then
        echo >> $file
        echo '### BEGIN INIT INFO' >> $file
        echo '# Provides: OracleXE' >> $file
        echo '# Required-Start: $remote_fs $syslog' >> $file
        echo '# Required-Stop: $remote_fs $syslog' >> $file
        echo '# Default-Start: 2 3 4 5' >> $file
        echo '# Default-Stop: 0 1 6' >> $file
        echo '# Short-Description: Oracle 11g Express Edition' >> $file
        echo '### END INIT INFO' >> $file
    fi
    update-rc.d oracle-xe defaults 80 01
    
  7. 使用以下命令更改chkconfig文件的权限:

    sudo chmod 755 /sbin/chkconfig  
    
  8. 设置内核参数。Oracle 11gR2 XE需要其他内核参数,您需要使用以下命令来设置这些参数:

    sudo pico /etc/sysctl.d/60-oracle.conf
    
  9. 将以下内容复制到文件中并保存:

    # Oracle 11g XE kernel parameters 
    fs.file-max=6815744  
    net.ipv4.ip_local_port_range=9000 65000  
    kernel.sem=250 32000 100 128 
    kernel.shmmax=536870912 
    
  10. 使用以下命令验证更改:

    sudo cat /etc/sysctl.d/60-oracle.conf 
    
  11. 您应该看到之前输入的内容。现在加载内核参数:

    sudo service procps start
    
  12. 使用以下命令验证是否已加载新参数:

    sudo sysctl -q fs.file-max
    

    您应该看到之前输入的文件最大值。

  13. 为Oracle设置/ dev / shm挂载点。使用命令创建以下文件:

    sudo pico /etc/rc2.d/S01shm_load
    
  14. 将以下内容复制到文件中并保存。

    #!/bin/sh
    case "$1" in
    start)
        mkdir /var/lock/subsys 2>/dev/null
        touch /var/lock/subsys/listener
        rm /dev/shm 2>/dev/null
        mkdir /dev/shm 2>/dev/null
    *)
        echo error
        exit 1
        ;;
    
    esac 
    
  15. 使用以下命令更改文件的权限:

    sudo chmod 755 /etc/rc2.d/S01shm_load
    
  16. 现在执行以下命令:

    sudo ln -s /usr/bin/awk /bin/awk 
    sudo mkdir /var/lock/subsys 
    sudo touch /var/lock/subsys/listener
    

    现在,重新启动系统

步骤3:安装Oracle

  1. 使用以下命令安装oracle DBMS:

    sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb
    
  2. 使用以下命令配置Oracle:

    sudo /etc/init.d/oracle-xe configure 
    
  3. 通过编辑.bashrc文件来设置环境变量:

    pico ~/.bashrc
    
  4. 将以下行添加到文件的末尾:

    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
    export ORACLE_SID=XE
    export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
    export ORACLE_BASE=/u01/app/oracle
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    export PATH=$ORACLE_HOME/bin:$PATH
    
  5. 通过执行您的配置文件来加载更改:

    . ~/.bashrc
    
  6. 启动Oracle 11gR2 XE:

    sudo service oracle-xe start
    
  7. 使用以下命令将用户YOURUSERNAME添加到dba组:

    sudo usermod -a -G dba YOURUSERNAME
    

步骤4:使用Oracle XE命令外壳

  1. 使用以下命令启动Oracle XE 11gR2服务器:

    sudo service oracle-xe start
    
  2. 使用以下命令以系统管理员身份启动命令行shell:

    sqlplus sys as sysdba
    

    输入您先前配置Oracle时提供的密码。现在,您将被放置在仅了解SQL命令的SQL环境中。

  3. 使用SQL命令在Oracle中创建一个普通用户帐户:

    create user USERNAME identified by PASSWORD;
    

    将USERNAME和PASSWORD替换为您选择的用户名和密码。请记住该用户名和密码。如果执行上述操作时出错并显示有关复位日志的消息,请执行以下SQL命令,然后重试:

    alter database open resetlogs;
    
  4. 使用SQL命令向用户帐户授予特权:

    grant connect, resource to USERNAME;
    

    将USERNAME和PASSWORD替换为您选择的用户名和密码。请记住该用户名和密码。

  5. 使用SQL命令退出sys admin shell:

    exit;
    
  6. 使用以下命令以普通用户身份启动命令行shell:

    sqlplus
    

    现在,您可以运行sql命令...


在第6步中,我得到Starting Oracle Net Listener...touch: cannot touch '/var/lock/subsys/listener': No such file or directory Done Configuring database... Database Configuration failed. Look into /u01/app/oracle/product/11.2.0/xe/config/log for details
天网

2
@天网。我遇到了同样的错误。尽管我听不懂这些命令,但我尝试并能够配置oracle XE或linux mint。
截拳道

@天网。并且还尝试了此链接。在扩展后的注释中搜索内容参考:为了使其正常工作,我需要在文件“ /etc/init.d/oracle-xe”的开头添加以下几行...在步骤6(i)和6之间(ii)如果[-L / dev / shm];然后rm -rf / dev / shm mkdir / dev / shm mount -t tmpfs shmfs -o size = 2048m / dev / shm fi如果[!-d / var / lock / subsys]; 然后mkdir / var / lock / subsys touch / var / lock / subsys / listener fi
Jeet

1
/etc/rc2.d/S01shm_load似乎缺少;;指示的替代的端部在管线7
user3523935

2
必须使用sudo service procps restart代替sudo service procps start
ossbuntu

0

感谢您提供详细的教程,但我遇到了错误

touch: cannot touch '/var/lock/subsys/listener' .. 

在步骤中sudo /etc/init.d/oracle-xe configure。因此,如http://meandmyubuntulinux.blogspot.in/2012/05/installing-oracle-11g-r2-express.html上的建议,我在/etc/init.d/oracle-xe

if [ -L /dev/shm ]; then
    rm -rf /dev/shm
    mkdir /dev/shm
    mount -t tmpfs shmfs -o size=2048m /dev/shm
fi

if [ ! -d /var/lock/subsys ]; then
 mkdir /var/lock/subsys
 touch /var/lock/subsys/listener
fi

...对我来说很好


您会收到错误,因为/etc/rc2.d/S01shm_loadSaikat的答案中的脚本中有错误。解决此问题将是一个更清洁的解决方案。我将使用正确的脚本编辑答案。
牧草

算了,评论者是白痴。在第一次第二次尝试纠正脚本失败之后,我放弃了。显然,不加考虑地投票来得分,然后实际尝试理解正在做的事情更为重要。
牧草

0

这工作正常,但是出现以下错误:

sudo /etc/init.d/oracle-xe start
[....] Starting oracle-xe (via systemctl): oracle-xe.serviceJob for oracle-xe.service failed because the control process exited with error code. See "systemctl status oracle-xe.service" and "journalctl -xe" for details.
 failed!

调查:

systemctl status oracle-xe.service
Jan 27 10:01:05 <myusername> su[29699]: No passwd entry for user 'oracle'

我通过简单地添加用户来解决它:

sudo adduser oracle

希望这对某人有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.