Linux中安装oracle

# 文件来自 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值