您的位置:首页 > 数据库 > Oracle

Linux中安装oracle

2016-09-03 17:56 309 查看
# 文件来自 https://gist.github.com/crazycode/53bd7a5b8ea8bad7ec56
# 亲自验证了,环境CentOS 6.5 64位

# ORACLE 11G R2静默安装,配置

## 目录

* [准备工作](#-2)

* [开始安装](#-3)

* [安装后工作](#-4)

    *   [建库](#-5)

    *   [配置监听](#-6)

* [测试](#-7)

## 准备工作

1.依赖性准备

    # yum install make gcc binutils gcc-c++ compat-libstdc++ elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel glibc.i686

2.用户和组准备

    #groupadd oinstall

    #groupadd dba

    #useradd -g oinstall -G dba -d /home/oracle oracle

    #passwd oracle          //设置oracle密码

3.目录准备及权限调整,确保下列目录oracle用户有权限操作

    # mkdir -p /lotus/oracle/product/11.2.0  //数据库系统安装目录

    # mkdir /lotus/oracle/oradata    //数据库数据安装目录

    # mkdir /lotus/oracle/orabackup  //数据备份目录

    # mkdir /lotus/oracle/inventory //清单目录

    # chown -R oracle:oinstall /lotus/oracle/product

    # chown -R oracle:oinstall /lotus/oracle/inventory

    # chown -R oracle:oinstall /lotus/oracle/oradata

    # chown -R oracle:oinstall /lotus/oracle/orabackup

    # chmod -R 775 /lotus/oracle/product

    # chmod -R 775 /lotus/oracle/oradata

  以上工作可通过招待 pre-install.sh 脚本完成.

4.内核参数调整

    #vim /etc/sysctl.conf 在文件最后增加

    fs.aio-max-nr = 1048576

    fs.file-max = 6553600

    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 = 262144

    net.core.rmem_max = 4194304

    net.core.wmem_default = 262144

    net.core.wmem_max = 1048586

    保存文件。

    # /sbin/sysctl -p          //让参数生效

5.用户的限制文件修改

    #vim /etc/security/limits.conf 在文件后增加

    oracle           soft    nproc           2047

    oracle           hard    nproc           16384

    oracle           soft    nofile          1024

    oracle           hard    nofile          65536

    oracle           soft    stack           10240

    保存文件。

    修改/etc/pam.d/login文件,增加如下:

    session  required   /lib64/security/pam_limits.so  //64为系统,千万别写成/lib/security/pam_limits.so,否则导致无法登录

    session     required      pam_limits.so

    修改/etc/profile,增加:

    if [ $USER = "oracle" ]; then

     if [ $SHELL = "/bin/ksh" ]; then

      ulimit -p 16384

      ulimit -n 65536

     else

      ulimit -u 16384 -n 65536

     fi

    fi

6.oracle安装包准备

下载并解压安装包到 /home/oracle/database

## 开始安装

1.打开另外一个终端,用oracle用户登录

2.复制并修改应答文件

复制应答文件

    $cp -R /home/oracle/database/response/db_install.rsp  /home/oracle/database/response/my_db_install.rsp

    #复制一份模板文件,以便改错后回滚

修改应答文件

    $vim my_db_install.rsp,按实际情况修改以下项

        oracle.install.option=INSTALL_DB_SWONLY

        ORACLE_HOSTNAME=o2odb.cplotus.com

        UNIX_GROUP_NAME=oinstall

        INVENTORY_LOCATION=/lotus/oracle/inventory/

        ORACLE_HOME=/lotus/oracle/product/11.2.0

        ORACLE_BASE=/lotus/oracle/product

        oracle.install.db.InstallEdition=EE

        oracle.install.db.isCustomInstall=false

        oracle.install.db.DBA_GROUP=dba

        oracle.install.db.OPER_GROUP=dba

        DECLINE_SECURITY_UPDATES=true

    修改好的应答文件,保存在 db_install.rsp 文件中,可直接使用。

3.根据应答文件,开始安装

     $ sudo su - oracle

     $ cd /home/oracle/database/

     $ ./runInstaller -silent -responseFile /home/oracle/database/response/my_db_install.rsp

4.按提示切换到root用户的终端,依次执行脚本

    # /lotus/oracle/inventory/orainstRoot.sh

    # /lotus/oracle/product/11.2.0/root.sh

    脚本位置会提示

5.切换到oracle用户的终端,敲”回车“,完成安装

6.修改oracle用户环境变量

    $vi ~/.bash_profile

    添加以下内容

# User specific environment and startup programs

export ORACLE_SID=orcl

export ORACLE_BASE=/lotus/oracle/product

export ORACLE_HOME=$ORACLE_BASE/11.2.0

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

PATH=$PATH:$ORACLE_HOME/bin

7.执行`$source ~/.bash_profile` 刷新环境变量

## 安装后工作

#### 建库

1.复制并修改建库应答文件

复制应答文件

    $cp -R /home/oracle/database/response/dbca.rsp  /home/oracle/database/response/my_dbca.rsp

修改应答文件

    $vi /home/oracle/database/response/my_dbca.rsp

    修改以下项

    OPERATION_TYPE = "createDatabase"

    GDBNAME = "orcl11g"

    SID = "orcl"

    SYSPASSWORD = "密码"

    SYSTEMPASSWORD = "密码"

    DATAFILEDESTINATION = /lotus/oracle/oradata

    RECOVERYAREADESTINATION = /lotus/oracle/orabackup

    SYSDBAUSERNAME = "system"

    SYSDBAPASSWORD = "OraPwd11"

    #以上2项可选

    INSTANCENAME = "orcl11g"

    CHARACTERSET = "UTF-8" #按需求设置,建议使用UTF-8

    NATIONALCHARACTERSET= "UTF-8" #可选 "UTF8" or "AL16UTF16" 建议UTF-8

    TOTALMEMORY = "4096" #Oracle使用的最大内存,单位M建库

  

2.使用dbca静默建库

    $ dbca -silent -responseFile /home/oracle/database/response/my_dbca.rsp

这个时候会看到提示和进度

Copying database files

1% complete

26% complete

Creating and starting Oracle instance

40% complete

61% complete

Completing Database Creation

70% complete

100% complete

#### 配置监听

***  Windows下请使用网络配置助手(Net Configuration Assistant)直接配置

1.使用netca静默方式创建监听

    $ netca /silent /responsefile /home/oracle/database/response/netca.rsp

    执行完成会在 $ORACLE_HOME/network/admin目录下生成sqlnet.ora和listener.ora两个文件。

提示:。。。。。。 Oracle Net Services configuration successful. The exit code is 0

2.注册sid

    vi $ORACLE_HOME/network/admin/listener.ora

    在

     LISTENER =

    (DESCRIPTION_LIST =

     (DESCRIPTION =

        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

     )

     )

     之前添加以下内容:

    SID_LIST_LISTENER =

    (SID_LIST =

        (SID_DESC =

        (SID_NAME = orcl)

        (ORACLE_HOME = /lotus/oracle/product/11.2.0)

        )

    )

3.执行`$ lsnrctl reload`重启监听

4.编辑 `/etc/oratab` 把 `orcl11g:/export/servers/oracle/11.2.0:N`的‘N’,改为‘Y’,这样就可以通过`dbstart`启动此实例,也可以通过`dbshut`关闭此实例了。

## 测试

1.查看监听状态

    $ lsnrctl status

    类似以下返回,说明监听状态正常

        Service "ORCL" has 1 instance(s).

        Instance "orcl11g", status UNKNOWN, has 1 handler(s) for this service...

        Service "db1" has 1 instance(s).

        Instance "orcl11g", status READY, has 1 handler(s) for this service...

        Service "orcl11gXDB" has 1 instance(s).

        Instance "orcl11g", status READY, has 1 handler(s) for this service...

2.sqlplus连接测试

    $ export $ORACLE_SID=orcl11g

    $ sqlplus / as sysdba

    正常登陆说明实例正常启动。

## 自启动脚本

加入 /etc/init.d/oracle 文件:

#!/bin/sh -e

# chkconfig: 3 56 10

# description: Oracle 11g custom start/stop script

DAEMON=oracle

ORACLE_HOME=/lotus/oracle/product/11.2.0

ORACLE_OWNER=oracle

restart() {

    stop

    start

}

case $1 in

    'start')

        su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/lsnrctl start"

        su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/dbstart ${ORACLE_HOME}"

        #su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/emctl start dbconsole"

        #su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/isqlplusctl start"

    ;;

    'stop')

        #su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/isqlplusctl stop"

        #su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/emctl stop dbconsole"

        su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/dbshut ${ORACLE_HOME}"

        su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/lsnrctl stop"

    ;;

    restart)

        restart

    ;;

    *)

        echo "Usage: $0 {start|stop}"

        exit

    ;;

esac

exit $?

加入自动启动:

    $ sudo chkconfig --add oracle

另外注意要给上面执行文件加执行权限:

# chmod +x /etc/init.d/oracle

记得要编辑 `/etc/oratab` 把 `orcl11g:/export/servers/oracle/11.2.0:N`的‘N’,改为‘Y’,这样就可以通过`dbstart`启动此实例

## 文档约定

    #开头的命令  说明需要使用root用户执行

    $开头的命令  说明需要用oracle用户执行

Oracle远程命令行测试连接,这个命令只有安装了oracle数据库并正确设置好PATH后才可以用

$ tnsping 192.168.1.13:7521/orcl

Oracle启动问题

Java提示:Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (IO 错误: The Network Adapter could not establish the connection

Oracle提示:

ERROR:

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does not exist

Linux-x86_64 Error: 2: No such file or directory

解决办法:

使用Oracle用户执行下面命令,重启数据库实例和监听控制器

$ sqlplus / as sysdba

SQL> startup

$lsnrctl start

$lsnrctl stop

Oracle链接不上,tns或者listener问题

*** Windows下请使用网络配置助手(Net Configuration Assistant)直接配置

*** Linux可以修改listener.ora或者tnsname.ora配置文件

然后重启数据库实例和监听控制器

修改用户密码

$ sqlplus / as sysdba

SQL> ALTER USER 用户名 IDENTIFIED BY 新密码;

Oracle表死锁的问题

# sqlplus /nolog

SQL> conn sys/sys as sysdba;

先查询锁定记录

SQL> SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;

然后删除锁定记录

SQL> ALTER system KILL session 'SID,serial#';  

其中 SID填写上文中查到的SID数值,serial#填写serial#列的数值如:

ALTER system KILL session '214,23456';

查看Oracle字符编码

SQL> select userenv('language') from dual;

在CentOS上彻底删除Oracle

1.用oracle用户登录

如果要再次安装, 最好先做一些备份工作。

包括用户的登录脚本,数据库自动启动关闭的脚本,和Listener自动启动的脚本。

要是有可能连创建数据库的脚本也保存下来

2.使用SQL*PLUS停止数据库

[oracle@ora920 oracle]$ sqlplus / as sysdba

SQL> shutdown [immediate]

SQL> exit

3.停止Listener

$ lsnrctl stop

三、用dbca命令卸载数据库实例

四、删除/usr/local/bin下的三个文件

# rm –rf coraenv

# rm –rf dbhome

# rm –rf oraenv

五、删除/etc下的两个文件

       ls –lt|grep ora

       rm –f oraInst.loc

       rm –rf oratab

六、删除/opt下的一个目录

       rm –rf ORCLfmap

七、删除oracle安装文件夹下的所有文件

       cd /home/oracle/

       rm –rf *

八、删除用户

       userdel –r oracle

九、删除组

       groupdel oinstall

       groupdel dba
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux oracle 11g 服务器