CentOS 7安装Oracle 11gR2以及设置自启动

一、环境准备

1、正确无误的CentOS 7系统环境

CentOS 7安装http://www.cnblogs.com/VoiceOfDreams/p/8043958.html

2、正确的JDK环境

 CentOS 7安装JDK:http://www.cnblogs.com/VoiceOfDreams/p/8376978.html

3、Oracle11g安装包

下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

 

安装包包含两个文件

linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip

二、  安装前准备

1、创建oracle数据库的系统用户和用户组

[admin @localhost ~]$ su root
Password:
[root@localhost admin]# groupadd oinstall                      #创建用户组oinstall
[root@localhost admin]# groupadd dba                           #创建用户组dba
[root@localhost admin]# useradd -g oinstall -G dba -m oracle   #创建oracle用户,并加入到oinstalldba用户组
[root@localhost admin]# passwd oracle                          #设置用户oracle的登陆密码
Changing password for user oracle.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:                                            #确认密码
passwd: all authentication tokens updated successfully.
[root@localhost admin]# id oracle                                #查看新建的oracle用户
uid=1001(oracle) gid=1002(dba) groups=1002(dba)
[root@localhost admin]#
-g:指定用户所属的群组
-G:指定用户所属的附加群组
-m:自动建立用户的登入目录

2、创建oracle数据库安装目录

[root@localhost admin]# mkdir -p /usr/oracle                                   #安装目录
[root@localhost admin]# mkdir -p /usr/oraInventory                             #配置文件目录
[root@localhost admin]# mkdir -p /usr/orapackage                               #软件包解压目录
[root@localhost admin]# cd /usr
[root@localhost usr]# ls 
orapackage  oracle  oraInventory ...
[root@localhost usr]# chown -R oracle:oinstall /usr/oracle                     #设置目录所有者为oinstall用户组的oracle用户
[root@localhost usr]# chown -R oracle:oinstall /usr/oraInventory
[root@localhost usr]# chown -R oracle:oinstall /usr/orapackage
[root@localhost usr]#  

3、安装包准备

由于使用U盘安装,首先进行U盘挂载,再将安装包拷贝到对应目录

查看文件系统的磁盘空间占用情况:

[root@localhost admin]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root       50G   22G   29G  43% /
devtmpfs                 1.8G     0  1.8G   0% /dev
tmpfs                    1.9G  6.3M  1.9G   1% /dev/shm
tmpfs                    1.9G  9.0M  1.8G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                    494M  227M  267M  46% /boot
/dev/mapper/centos-home      412G  4.3G  407G   2% /home
tmpfs                    370M   32K  370M   1% /run/user/1000
/dev/sdb1                15G    7.3G  7.3G   51%  /run/media/admin/4291-25E5
[root@localhost admin]#

红色为U盘信息

创建U盘挂载目录,进行U盘挂载

[root@localhost admin]# mkdir –p /mnt/usb
[root@localhost admin]# mount /dev/sdb1 /mnt/usb

将U盘中的安装包拷贝到自己指定目录

[root@localhost admin]# cp –r /mnt/usb/oracle/* /usr/orapackage
[root@localhost admin]# cd /usr/orapackage
[root@localhost orapackage]# ls
linux.x64_11gR2_database_1of2.zip   linux.x64_11gR2_database_2of2.zip

解压缩到当前目录

[root@localhost orapackage]# unzip linux_11gR2_database_1of2.zip
[root@localhost orapackage]# unzip linux_11gR2_database_2of2.zip
[root@localhost orapackage]# ls
database  linux.x64_11gR2_database_1of2.zip   linux.x64_11gR2_database_2of2.zip

U盘使用完成后卸载U盘挂载点

[root@localhost admin]# umount /dev/sdb1

4、修改OS系统标识

oracle默认不支持CentOS系统安装,修改文件 /etc/RedHat-release

[root@localhost admin]# cat /proc/version 
Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) 
[root@localhost admin]# cat /etc/redhat-release  
CentOS Linux release 7.2.1511 (Core) 
[root@localhost admin]# vi /etc/redhat-release         #进入编辑界面,将内容更改为redhat-7
[root@localhost admin]# cat /etc/redhat-release 
redhat-7 
[root@localhost admin]# 

5、安装oracle数据库所需要的软件包

参考:https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm

Oracle Linux 7 and Red Hat Enterprise Linux 7  

The following packages (or later versions) must be installed:

binutils-2.23.52.0.1-12.el7.x86_64 
compat-libcap1-1.10-3.el7.x86_64 
compat-libstdc++-33-3.2.3-71.el7.i686
compat-libstdc++-33-3.2.3-71.el7.x86_64
gcc-4.8.2-3.el7.x86_64 
gcc-c++-4.8.2-3.el7.x86_64 
glibc-2.17-36.el7.i686 
glibc-2.17-36.el7.x86_64 
glibc-devel-2.17-36.el7.i686 
glibc-devel-2.17-36.el7.x86_64 
ksh
libaio-0.3.109-9.el7.i686 
libaio-0.3.109-9.el7.x86_64 
libaio-devel-0.3.109-9.el7.i686 
libaio-devel-0.3.109-9.el7.x86_64 
libgcc-4.8.2-3.el7.i686 
libgcc-4.8.2-3.el7.x86_64 
libstdc++-4.8.2-3.el7.i686 
libstdc++-4.8.2-3.el7.x86_64 
libstdc++-devel-4.8.2-3.el7.i686 
libstdc++-devel-4.8.2-3.el7.x86_64 
libXi-1.7.2-1.el7.i686 
libXi-1.7.2-1.el7.x86_64 
libXtst-1.2.2-1.el7.i686 
libXtst-1.2.2-1.el7.x86_64 
make-3.82-19.el7.x86_64 
sysstat-10.1.5-1.el7.x86_64

To use ODBC on Linux x86-64, the following additional ODBC RPMs are required:

On Oracle Linux 7, and Red Hat Enterprise Linux 7:

unixODBC-2.3.1-6.el7.x86_64 or later
unixODBC-2.3.1-6.el7.i686 or later
unixODBC-devel-2.3.1-6.el7.x86_64 or later
unixODBC-devel-2.3.1-6.el7.i686 or later

安装所需安装包

[root@localhost admin]# yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686

 检测是否31个包都有安装

[root@localhost admin]# rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst  make sysstat  unixODBC unixODBC-devel
binutils-2.23.52.0.1-12.el7.x86_64 
compat-libcap1-1.10-3.el7.x86_64 
compat-libstdc++-33-3.2.3-71.el7.i686
compat-libstdc++-33-3.2.3-71.el7.x86_64
gcc-4.8.2-3.el7.x86_64 
gcc-c++-4.8.2-3.el7.x86_64 
glibc-2.17-36.el7.i686 
glibc-2.17-36.el7.x86_64 
glibc-devel-2.17-36.el7.i686 
glibc-devel-2.17-36.el7.x86_64 
ksh
libaio-0.3.109-9.el7.i686 
libaio-0.3.109-9.el7.x86_64 
libaio-devel-0.3.109-9.el7.i686 
libaio-devel-0.3.109-9.el7.x86_64 
libgcc-4.8.2-3.el7.i686 
libgcc-4.8.2-3.el7.x86_64 
libstdc++-4.8.2-3.el7.i686 
libstdc++-4.8.2-3.el7.x86_64 
libstdc++-devel-4.8.2-3.el7.i686 
libstdc++-devel-4.8.2-3.el7.x86_64 
libXi-1.7.2-1.el7.i686 
libXi-1.7.2-1.el7.x86_64 
libXtst-1.2.2-1.el7.i686 
libXtst-1.2.2-1.el7.x86_64 
make-3.82-19.el7.x86_64 
sysstat-10.1.5-1.el7.x86_64
unixODBC-2.3.1-6.el7.x86_64
unixODBC-2.3.1-6.el7.i686
unixODBC-devel-2.3.1-6.el7.x86_64
unixODBC-devel-2.3.1-6.el7.i686

版本号只能大于规定的版本,不能小于

6、关闭防火墙

CentOS 7默认使用的是firewall作为防火墙

[root@localhost admin]# systemctl status firewalld.service                    #查看防火墙状态
 firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2016-04-07 18:54:29 PDT; 2h 20min ago
[root@localhost admin]# systemctl stop firewalld.service                    #关闭防火墙
[root@localhost admin]# systemctl status firewalld.service                  #再次查看防火墙状态
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Thu 2016-04-07 21:15:34 PDT; 9s ago
[root@localhost admin]# systemctl disable firewalld.service                 #关闭开机制动启动

 7、关闭selinux(需重启生效)

[root@localhost /]# vi /etc/selinux/config
[root@localhost /]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled                                                 #此处修改为disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

8、修改内核参数

[root@localhost admin]# vi /etc/sysctl.conf 
[root@localhost admin]# cat /etc/sysctl.conf 
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744                       #设置一个进程可以打开的最大打开文件数
fs.aio-max-nr = 1048576                     #限制未完成的并发请求,避免I/O系统故障
kernel.shmall = 2097152                     #共享内存的总量,应不小于shmmax/page_size缺省值就是2097152
kernel.shmmax = 2147483648                  #最大共享内存的段大小,不小于物理内存的一半
kernel.shmmni = 4096                        #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128              #设置的信号量
net.ipv4.ip_local_port_range = 9000 65500   #可使用的IPv4端口范围
net.core.rmem_default = 262144              #默认接收缓冲区大小
net.core.rmem_max= 4194304                  #接收缓冲区最大值
net.core.wmem_default= 262144               #默认的发送缓冲区大小
net.core.wmem_max= 1048576                  #发送缓冲区最大值
[root@localhost admin]#

使配置参数生效

[root@localhost admin]# sysctl –p

9、设置用户限制,提高软件运行性能

[root@localhost admin]# vi /etc/security/limits.conf 
[root@localhost admin]# cat /etc/security/limits.conf
…
#@student        -       maxlogins       4

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
# End of file

10、配置用户的环境变量

 

[root@localhost /]# vi /home/oracle/.bash_profile 
[root@localhost /]# cat /home/oracle/.bash_profile
…
export PATH

export ORACLE_BASE=/usr/oracle                            #oracl安装目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1       #oracle路径
export ORACLE_SID=orcl                                    #oracle启动数据库实例名
export ORACLE_TERM=xterm                                  #xterm窗口模式安装
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH              #添加系统环境变量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib     #添加系统环境变量
export LANG=C                                             #防止安装过程出现乱码
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK    #设置Oracle客户端字符集,必须与Oracle客户端安装时设置的字符集保持一致。有的是设为AL32UTF8,根据需要自行设定。

使配置生效

[root@localhost admin]# source /home/oracle/.bash_profile

三、oracle安装

 

1、使用Oracle账户登录

2、为了防止安装时提示框出错无法显示,启动安装时添加本地JDK路径

查看配置文件
[oracle@localhost ~]$ vi + /etc/profile
…
#Path JDK1.8
JAVA_HOME=/usr/java/jdk1.8
JRE_HOME=/usr/java/jdk1.8/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
[oracle@localhost ~]$ cd /usr/orapackage/database
[oracle@localhost database]$ ls
doc  install  response  rpm  runInstaller  sshsetup  stage  welcome.html
[oracle@localhost database]$ ./runInstaller –jreLoc /usr/java/jdk1.8

3、安装界面安装流程

去除选中,不自动接收Oracle的安全更新,next。

确定,next

第一项为企业级应用

第二项只安装数据库

第三项为升级现有数据库


第一项为桌面类:一般适用于台式机和笔记本,包含最小数据库和最低配置要求,安装时只有基本选项。

第二项为服务类:适用于服务器,例如,它会向您提供数据中心和用于支持企业级的应用程序。

会自动根据配置的环境变量获取路径,设置orcl用户的密码,确认密码

默认选择

这几个系统报错是因为现有的包的版本比检测要高,忽略即可

若有需要可以保存一下文件,Finish

当安装进度达到68%时,会出现如上图所示报错

查找安装目录下该文件:/usr/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk

[admin @localhost ~]$ su root
Password:
[root@localhost admin]# vim /usr/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk

修改如下文件内容(11行左右)

ctxhx: $(CTXHXOBJ) 
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) 
修改为: 
ctxhx: $(CTXHXOBJ) 
-static $(LINK_CTXHX) $(CTXHXOBJ)$(INSO_LINK) /usr/lib64/libc.a

保存(:wq)后,点击Retry继续安装

有如下图所示报错

打开此安装目录下文件:/usr/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk

修改如下内容(190行左右)

$(MK_EMAGENT_NMECTL)
修改为   
$(MK_EMAGENT_NMECTL) -lnnz11

保存(:wq)后,点击Retry继续安装

点击OK

打开控制端,以root权限执行所示两个脚本

[root@localhost /]# sh /usr/oraInventory/orainstRoot.sh
[root@localhost /]# sh /usr/oracle/product/11.2.0/db_1/root.sh
此处输入红色部分的路径回车:
Enter the full pathname of the local bin directory: [/usr/local/bin]: 
 Copying dbhome to /usr/local/bin ...
 Copying oraenv to /usr/local/bin ...
 Copying coraenv to /usr/local/bin ...

点击OK,安装完成,关闭界面

4、创建Oracle监听

[oracle@localhost ~]$ netca

选择监听器协议,默认TCP,点击Next

配置监听端口,默认1521,点击Next

配置完成,提示是否增加另外的监听器,选择No,点击Next

点击Next

点击Finish结束配置程序,命令行界面会提示配置的信息并将新的监听器启动

Listener configuration complete.
Oracle Net Listener Startup:
    Running Listener Control: 
      /usr/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER
    Listener Control complete.
    Listener started successfully.
Oracle Net Services configuration successful. The exit code is 0

监听器的启动和停止

lsnrctl start LISTENER            #启动名为LISTENER的监听器
lsnrctl stop LISTENER             #关闭名为LISTENER的监听器

查看监听器运行状态

lsnrctl status LISTENER           #查看名为LISTENER的监听器的运行状态

5、安装oracle数据库实例

[oracle@localhost ~]$ dbca

默认选择,点击Next

默认为普通的事务数据库,点击Next

填写数据的全局名称和数据库id

默认,点击Next

设置密码,所有用户使用同一密码,点击Next

选择用本地的数据文件模版地址,点击Next

设置数据恢复路径,默认,点击next

设置创建实例方案表空间,可以不创建,点击Next

设置数据库内存,作为服务器数据库设置为70%,切换到连接数设置的时候会报以下错误

 

如果使用自动内存管理,默认设置的/dev/shm 大小不够用,此时需要去修改/dev/shm的空间大小。

1)、在/etc/fstab中明确指定/dev/shm的挂载sizes大小参数

查看/dev/shm的大小

[oracle@localhost ~]$ df –h /dev/shm
Filesystem               Size  Used Avail Use% Mounted on
tmpfs                    1.9G   29M  1.8G   2% /dev/shm

可以看到/dev/shm的大小为1.9G,设置为70%的时候所需空间的大小为2582M,已经超出其最大空间。/dev/shm默认为物理内存大小的一半,根据需要我将其设为3G,以root权限执行以下命令:

[root@localhost oracle]# vi /etc/fstab
tmpfs                   /dev/shm                tmpfs   defaults        0 0
修改为
tmpfs                   /dev/shm                tmpfs   defaults,size=3G        0 0

如果没有就直接添加上去,保存退出(:wq)

2)、将/dev/shm重新挂载

[root@localhost oracle]# mount -o remount /dev/shm
[root@localhost oracle]# df –h /dev/shm
Filesystem               Size  Used Avail Use% Mounted on
tmpfs                    3.0G   25M  3.0G   1% /dev/shm

此种方式是永久更改/dev/shm 的空间大小,如果只要临时更改(重启无效),执行如下命令:

[oracle@localhost ~]$ sudo mount -o size=3G -o remount /dev/shm

设置连接数,默认为150,根据需要设置

设置字符集,选择与安装Oracle时的设置相同的字符集ZHS16GBK如果Oracle用的字符集为AL32UTF8,就选择AL32UTF8。当然,如果这里字符集选错了,安装好了也是可以修改的,只是稍有麻烦。

设置连接类型,共享内存或者独享内存,也可以默认,点击Next

点击Next

选择Generate Database Creation Scripts(生成数据库创建脚本),可以为手工建库脚本提供参考

点击Finish,完成创建

创建数据库,创建完成后点击Exist退出

6、创建表空间和用户授权

1)、连接数据库

[oracle@localhost ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Jan 19 10:23:13 2018
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
SQL> conn / as sysdba
Connected.
SQL>

2)、创建数据表空间

SQL> CREATE TABLESPACE ALS LOGGING DATAFILE '/usr/oracle/oradata/orcl/ALS.DBF' SIZE 50M AUTOEXTEND ON NEXT 50M MAXSIZE 20480M EXTENT MANAGEMENT LOCAL;

说明:

CREATE TABLESPACE 表空间名 LOGGING DATAFILE '存放路径' SIZE 50M AUTOEXTEND ON NEXT 50M MAXSIZE 20480M EXTENT MANAGEMENT LOCAL;

3)、创建用户并指定表空间

SQL> CREATE USER sa IDENTIFIED BY kcsm111 DEFAULT TABLESPACE ALS;

说明:

CREATE USER 用户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 表空间名;

4)、给用户授予权限

SQL>grant connect,resource,dba to sa;

说明:

grant connect,resource,dba to 用户名;

5)、删除表空间

SQL> drop tablespace ALS including contents and datafiles cascade constraints;

说明:

drop tablespace 表空间名 including contents and datafiles cascade constraints;
including contents   删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间无法删除。
including datafiles  删除表空间中的数据文件
cascade constraints  同时删除表空间中表的外键参照

至此所有安装完成

四、  设置数据库自启动

方法一:

1、安装好Oracle数据库后: 执行 dbstart和dbshut

[oracle@localhost ~]$ dbstart
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /usr/oracle/product/11.2.0/db_1/bin/dbstart ORACLE_HOME

错误原因:dbstartdbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题

[oracle@localhost ~]$ vim $ORACLE_HOME/bin/dbstart
[oracle@localhost ~]$ vim $ORACLE_HOME/bin/dbshut

分别打开两个文件修改(50行左右)

ORACLE_HOME_LISTNER=$1
修改为:
ORACLE_HOME_LISTNER=$ORACLE_HOME

修改后保存退出,问题解决

2、Linux启动时自动启动Oracle监听和实例

第一步:修改/etc/oratab文件

[oracle@localhost ~]$ vim /etc/oratab
找到:   orcl:/usr/oracle/product/11.2.0/db_1:N   
修改为: orcl:/usr/oracle/product/11.2.0/db_1:Y
(这个路径跟安装路径有关,$ORACLE_SID:$ORACLE_HOME:<N|Y>

第二步:把lsnrctl start和dbstart添加到rc.local文件中:

root权限执行

[root@localhost oracle]# vim /etc/rc.d/rc.local

添加:

su - oracle -lc "/usr/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su - oracle -lc "/usr/oracle/product/11.2.0/db_1/bin/dbstart"

说明:

第一行为开机启动数据库监听服务,第二行为开机启动数据库。(路径跟安装路径相关)。

注意:CentOs7中/etc/rc.d/rc.local不会开机执行,需添加执行权限。

查看/etc/rc.d/rc.local的权限

[root@localhost oracle]# ll /etc/rc.d/rc.local

添加执行权限

[root@localhost oracle]# chmod +x /etc/rc.d/rc.local

3、重启电脑后查看是否自启动成功

查看监听是否自启动成功

[oracle@localhost ~]$ lsnrctl status LISTENER

查看Oracle服务状态

[oracle@localhost ~]$ ps –ef | grep oracle

4、oracle的启动或关闭管理

[root@localhost oracle]# dbstart                   #启动
[root@localhost oracle]# dbshut                    #停止

方法二:

1、修改/etc/oratab文件

root权限执行

[root@localhost oracle]# vim /etc/oratab
找到:    orcl:/usr/oracle/product/11.2.0/db_1:N   
修改为:  orcl:/usr/oracle/product/11.2.0/db_1:Y
(这个路径跟安装路径有关,$ORACLE_SID:$ORACLE_HOME:<N|Y>

2、新建Oracle服务自启动脚本

[root@localhost oracle]# vim /etc/init.d/oracle

将以下脚本复制到文件中,保存退出(:wq)

#!/bin/sh
# chkconfig: 2345 61 61
# description: Oracle 11g R2 AutoRun Servimces
# /etc/init.d/oracle
#
# Run-level Startup script for the Oracle Instance, Listener, and
# Web Interface
export ORACLE_BASE=/usr/oracle                                          #oracle安装位置
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1                     #Oracle安装路径
export ORACLE_SID=orcl
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
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart
echo "Oracle Start Succesful!OK."
;;
stop)
# Oracle listener and instance shutdown
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut
echo "Oracle Stop Succesful!OK."
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo $"Usage: `basename $0` {start|stop|reload|reload}"
exit 1
esac
exit 0

3、检查脚本能否执行

[root@localhost oracle]# /etc/init.d/oracle start            #启动oracle脚本
[root@localhost oracle]# /etc/init.d/oracle stop             #关闭oracle脚本
[root@localhost oracle]# /etc/init.d/oracle restart          #重启oracle脚本

4、添加执行权限并建立链接

更改oracle脚本的执行权限

[root@localhost oracle]# chmod a+x /etc/init.d/oracle

建立链接

将启动脚本添加到系统服务并设置自启动

[root@localhost oracle]# chkconfig --add oracle

当这个命令被执行的时候,会去脚本文件oracle中寻找# chkconfig: 2345 61 61这行注释,并解析这行注释,根据解析结果分别在

/etc/rc.d/rc2.d

/etc/rc.d/rc3.d

/etc/rc.d/rc4.d

/etc/rc.d/rc5.d

中创建符号连接文件S61oracle,此文件在系统启动时根据运行级别执行,此文件是指向/etc/init.d/oracle文件。启动时系统向此文件发送一个start参数,执行oracle文件中的start分支。另外还会在

/etc/rc.d/rc0.d

/etc/rc.d/rc1.d

/etc/rc.d/rc6.d

中创建符号连接文件K61oracle,此文件在系统关闭时执行,此文件也指向/etc/init.d/oracle文件,关闭时系统向此文件发送一个stop参数,执行oracle文件中的stop分支。

 

# chkconfig: 2345 61 61

# 表明脚本应该在运行级 2, 3, 4, 5 启动,启动优先权为61,停止优先权为 61。

 

修改服务运行等级(虽然脚本里写过,但还是重新设置一下),可以自行设置oracle脚本的运行级别

[root@localhost oracle]# chkconfig --level 2345 oracle on

说明:设置oracle脚本在运行级别为2、3、4、5时,都是on(开启)状态,off为关闭

查看oracle自动启动设置

[root@localhost oracle]# chkconfig –list oracle
Oracle   0:off 1:off 2:on 3:on 4:on 5:on 6:off
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

手动创建符号链接文件(执行效果和执行chkconfig --add oracle是一样,作为知识笔记记录,可以不执行)

[root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc0.d/K61oracle
[root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc1.d/K61oracle
[root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc2.d/S61oracle
[root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc3.d/S61oracle
[root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc4.d/S61oracle
[root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc5.d/S61oracle
[root@localhost oracle]# ln –s /etc/rc.d/init.d/oracle /etc/rc6.d/K61oracle

5、oracle的启动或关闭管理

启动
[root@localhost oracle]# service oracle start
停止
[root@localhost oracle]# service oracle stop
重启
[root@localhost oracle]# service oracle restart

五、  数据库字符集修改

注意事项:修改字符集前先将数据库进行备份

此处演示将ZHS16GBK字符集修改为AL32UTF8

1、修改server端字符集

登录sqlpus查看字符集设置

[oracle@localhost ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Wed Jan 24 13:55:51 2018
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance.                  #数据库未启动,先启动数据库。最好将数据库设未开机启动
SQL> startup
SQL> conn /as sysdba
Connected.                                      #连接成功
SQL> select userenv('language') from dual;      #server端字符集查询

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK

依次执行如下命令

SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;
SQL
> select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.AL32UTF8 SQL>

2、修改client端字符集

查看系统环境变量设置的字符集(client端字符集)

[oracle@localhost ~]$ cat /home/oracle/.bash_profile
...
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH

export ORACLE_BASE=/usr/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK                #客户端字符集
进入编辑界面,将ZHS16GBK改为AL32UTF8,保存退出
[oracle@localhost ~]$ vim /home/oracle/.bash_profile
使配置生效
[oracle@localhost ~]$ source /home/oracle/.bash_profile

修改完成

 

 

 

 

 

 

 

posted @ 2018-01-30 14:23  墨道  阅读(9803)  评论(0编辑  收藏  举报