CentOS7 安装 oracle11g

参考网站:https://huaweicloud.csdn.net/6356076ed3efff3090b58e46.html?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-4-121384247-blog-124495807.pc_relevant_recovery_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-4-121384247-blog-124495807.pc_relevant_recovery_v2&utm_relevant_index=9&q=ORA-01081%3A%20cannot%20start%20already-running%20ORACLE%20-%20shut%20it%20down%20first

Oracle11g需要准备至少:2核CPU、2G内存、8GB的硬盘空间

  • 查看cpu详细信息

    lscpu
    
  • 查看内存详细信息

    free -h
    
  • 查看存储盘详细信息

    lsblk

安装过程如下:

1、建立oracle用户和用户组

# 在Linux中创建名为oinstall的用户组
groupadd oinstall
# 创建dba用户组
groupadd dba
# 创建oper用户组
groupadd oper
# 为dba和oper用户组创建oracle用户
  # -g 主用户组
  # -G 附加组
useradd -g oinstall -G dba,oper oracle
# 将oracle用户的密码设置为oracle
echo "oracle"|passwd oracle --stdin

2、为Oracle的安装创建相关目录

# 建文件夹
mkdir -p /u01/app/oracle/product/11.2.0/db_1
# 改变属主和属组
chown -R oracle:oinstall /u01/app
# 为文件夹授权
chmod -R 775 /u01/app

 3、优化OS内核参数

vim /etc/sysctl.conf
# 添加如下内容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
# kernel.shmmax 参数设置为物理内存的一半
kernel.shmmax = 1200000000
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
# 因为刚自定义配置了shmmax、shmmni、shmall,所以注释掉原有自带的shmmax、shmall这些属性

 保存退出后,执行如下命令使其生效

sysctl -p

3、限制oracle用户的shell权限

vim /etc/security/limits.conf 
# 在文件末尾添加下面四行
# 设置进程数软限制
oracle soft nproc 2047
# 设置进程数硬限制
oracle hard nproc 16384
# 设置文件数软限制
oracle soft nofile 1024
# 设置文件数硬限制
oracle hard nofile 65536
# 进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启用该认证
vim /etc/pam.d/login # 在文件最后添加下面一行
session required /lib64/security/pam_limits.so
# 一般都是64位系统,64位系统需要设置为/lib64/security/pam_limits.so 否则重启服务器后就会出现命令行无法登录,但是通过桌面方式能登录的情况
session required pam_limits.so
source /etc/profile

4、为Oracle用户添加Oracle环境变量

su - oracle
vim .bash_profile
# 添加如下内容
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
PATH=$PATH:$ORACLE_HOME/bin
ORACLE_SID=orcl
NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
source .bash_profile

5、配置hostname

查看本机hostname:

hostname
vim /etc/hosts
# 添加如下内容
0.0.0.1   localhost
0.0.0.0   master   #(为hostname查询到的主机名称)
vim /etc/sysconfig/network
# 添加如下内容
NETWORKING=yes
HOSTNAME=master #替换为自己hostname值
# 服务器IP
GATEWAY=192.168.222.30 #替换为自己的IP
NTPSERVERARGS=iburst

6、安装相关依赖

配置yum

cd /etc
mv yum.repos.d yum.repos.d.bak
mkdir yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理缓存
yum clean all
# 建缓存
yum makecache
#安装epel源
yum -y install epel-release
#图形界面必备`X Window System`
yum -y groupinstall "X Window System"
#安装VNC+图形、oracle需要的依赖(软件)
yum -y install \
binutils \
compat-libcap1  \
compat-libstdc++-33 \
compat-libstdc++-33*.i686 \
elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc*.i686 \
glibc \
glibc-devel \
glibc-devel*.i686 \
ksh \
libgcc*.i686 \
libgcc \
libstdc++ \
libstdc++*.i686 \
libstdc++-devel \
libstdc++-devel*.i686 \
libaio \
libaio*.i686 \
libaio-devel \
libaio-devel*.i686 \
make \
sysstat \
unixODBC \
unixODBC*.i686 \
unixODBC-devel \
unixODBC-devel*.i686 \
libXp

检查是否完成安装

rpm -q \
binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
pdksh \
sysstat \
unixODBC \
unixODBC-devel | grep "not installed"

我这里 安装不上 pdksh,通过yum 也安装不成功,自己去网站上找到的对应的包然后自己手动安装的。

链接:百度网盘-链接不存在
提取码:vcuy

rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

如果安装报错可以强制安装

rpm -i --force --nodeps pdksh-5.2.14-37.el5_8.1.x86_64.rpm

7、关闭防火墙

8、上传oracle文件

mkdir /u01/oracle
chown -R oracle:oinstall oracle

su - oracle
cd /u01/oracle

将对应的文件上传到 /u01/oracle下面

 

 解压

unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip

切回root操作

su - root
mkdir /home/oracle/etc/
cp /u01/oracle/database/response/* /home/oracle/etc/
chmod 777 /home/oracle/etc/*.rsp

登录 oracle用户 修改db_install.rsp

这里需要注意,修改的时候 不要将内容直接复制过去,而是需要 一个指标一个指标的找到并且替换其中的内容!!!!

su – oracle
vi /home/oracle/etc/db_install.rsp
# 信息如下:
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOSTNAME=oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.memoryLimit=512
oracle.install.db.config.starterdb.password.ALL=oracle
DECLINE_SECURITY_UPDATES=true

执行安装命令:

su - oracle
cd /u01/oracle/database
./runInstaller -silent -force -responseFile /home/oracle/etc/db_install.rsp -ignorePrereq

执行的时候可能会报swap分区 太小的错误,解决办法如下:

# 创建文件 创建一个名为swapfile的4G 空文件(写0占用磁盘)
dd if=/dev/zero of=/etc/swapfile bs=1024 count=4096000
# mkswap /etc/swapfile
mkswap /etc/swapfile
#让Swap文件生效
swapon /etc/swapfile

#查看
swapon -s



自动挂载
vi /etc/fstab

#添加
/etc/swapfile swap    swap    defaults      0    0

9、执行脚本、增加环境变量、配置监听

su - root
/u01/app/oracle/product/11.2.0/db_1/root.sh
su  - oracle
vim ~/.bash_profile

# 添加如下内容
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data



# 添加完成后 使配置生效
source ~/.bash_profile
cd /u01/app/oracle/product/11.2.0/db_1/bin
./netca /silent /responseFile /home/oracle/etc/netca.rsp
#启动监听
/u01/app/oracle/product/11.2.0/db_1/bin/lsnrctl start
#查看监听状态
/u01/app/oracle/product/11.2.0/db_1/bin/lsnrctl status

10、编辑应答文件

注意:里面有数据库创建,没有的话,查看之前配置,这里面会清屏,输入两遍oracle,每次都回车,之后再回车,稍等一会就出来了
su - root
vi /etc/dbca.rsp
GDBNAME="orcl.oracle" 
SID="orcl"
SYSPASSWORD = "oracle" 
SYSTEMPASSWORD = "oracle" 
CHARACTERSET="AL32UTF8" 
NATIONALCHARACTERSET="UTF8"

#建库
su - oracle
# 执行:
$ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/etc/dbca.rsp

11、设置oracle 开机自启动

vim /etc/oratab
# 把“N”改成“Y” 这里是更新 不是添加 如果里面没有这段话 说明之前的配置有错误
orcl:/db/app/oracle/product/11.2.0/db_1:Y 

12、登录oracle

[oracle@oracle bin]$ pwd
/u01/app/oracle/product/11.2.0/db_1/bin
[oracle@oracle bin]$ ./sqlplus /nolog
# 进入系统管理用户
SQL> conn / as sysdba
Connected to an idle instance.
# 启动oracle实例
SQL> startup;
#出现报错,exit退出

[oracle@mydb pfile]$ cd /u01/app/oracle/admin/orcl11g/pfile/
[oracle@mydb pfile]$ls
#将下面的init带数字的复制
[oracle@mydb pfile]$ cp 刚才复制的init带数字的文件到 /u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora


[oracle@mydb pfile]$sqlplus / as sysdba
SQL> startup;
SQL> exit

这里我 startup 遇到了各种错误,这里总结一下:

错误1:

SQL> startup;                                                                                                                                                                                  
ORA-00845: MEMORY_TARGET not supported on this system 

解决办法:
vim /etc/fstab
# 再 swap 的地方 添加size=11G
dev/mapper/vg_testoracle1-lv_swap swap                    swap    defaults,size=11G        0 0       
# 如果没有下面的 加入下面一行
tmpfs                   /dev/shm                tmpfs   defaults,size=11G        0 0




添加完成后,执行
mount -o remount,size=11G /dev/shm

我是按照上面步骤解决的

错误2:                                                                                      

ORA-01102: cannot mount database in EXCLUSIVE mode

先找到oracle 对应的日志目录

登录sqlplus之后执行

select value from v$diag_info where name ='Diag Trace';

可以看到对应的日志文件目录,我的是

 /u01/app/oracle/diag/tnslsnr/master/listener/alert/log.xml

然后 查看对应的日志,里面会显示类似这种的东西

 进入上面报错的文件目录,删除lkPROD,然后kill 掉 上面日志说的 lock held by PID 对应的PID,这里kill -9 1912.

然后再次 startup; 就没有问题了。

13、配置监听器等等文件

修改 tnsnames.ora

[oracle@oracle admin]$ pwd
/u01/app/oracle/product/11.2.0/db_1/network/admin
[oracle@linux admin]$ vi tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

orcl =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =master)(PORT = 1521))  #(HOST =主机名,我的是master)
    (CONNECT_DATA =
      (SID = orcl)
    )
  )

修改 listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST =oracle)(PORT = 1521))  #(HOST =主机名)
    )
  )

SID_LIST_LISTENER =
    (SID_LIST =
        (SID_DESC =
            (GLOBAL_DBNAME = orcl)
            (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
            (SID_NAME = orcl)
        )
    )

DEFAULT_SERVICE_LISTENER = (orcl)
ADR_BASE_LISTENER = /u01/app/oracle

修改sqlnet.ora

# sqlnet.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

ADR_BASE = /u01/app/oracle

14、启动监听

[oracle@linux admin]$ lsnrctl stop
[oracle@linux admin]$ lsnrctl start
[oracle@linux admin]$ lsnrctl status

[root@mydb ~]# vi /etc/rc.d/rc.local
su - oracle -lc /u01/app/oracle/product/11.2.0/db_1/bin/dbstart  ##这个要添加

经过上面步骤 就完成了对应的oracle 安装。安装完成之后,需要创建对应的oracle用户:

输入用户名:sys as sysdba
密码: sys

#创建表空间
create tablespace test;

这里可能会报错,先执行
show parameter db_create_file;
可以看到对应value 值为空。
ALTER SYSTEM SET db_create_file_dest ='/u01/app/oracle/oradata'; #这里的dest为你自己的安装目录下对应的oradata文件目录。

之后再创建表空间就没事了


create user test identified by test;
alter user test default tablespace test ;
grant connect,resource,dba to test;

之后就可以使用oracle数据库了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值