一、环境准备
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用户,并加入到oinstall和dba用户组
[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
错误原因:dbstart和dbshut脚本文件中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
修改完成