ubuntu16.04(阿里云)安装Oracle11g

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_36632174/article/details/102460679

前期准备

首先安装好java8。

安装Oracle所需要的依赖包:

sudo apt-get install automake
sudo apt-get install autotools-dev
sudo apt-get install binutils
sudo apt-get install bzip2
sudo apt-get install elfutils
sudo apt-get install expat
sudo apt-get install gawk
sudo apt-get install gcc
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
sudo apt-get install ia32-libs
sudo apt-get install ksh
sudo apt-get install less
sudo apt-get install lesstif2
sudo apt-get install lesstif2-dev
sudo apt-get install lib32z1
sudo apt-get install libaio1
sudo apt-get install libaio-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install libc6-i386
sudo apt-get install libelf-dev
sudo apt-get install libltdl-dev
sudo apt-get install libmotif4
sudo apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
sudo apt-get install libpth-dev
sudo apt-get install libpthread-stubs0
sudo apt-get install libpthread-stubs0-dev
sudo apt-get install libstdc++5
sudo apt-get install lsb-cxx
sudo apt-get install make
sudo apt-get install openssh-server
sudo apt-get install pdksh
sudo apt-get install rlwrap
sudo apt-get install rpm
sudo apt-get install sysstat
sudo apt-get install unixodbc
sudo apt-get install unixodbc-dev
sudo apt-get install unzip
sudo apt-get install x11-utils
sudo apt-get install zlibc

阿里云部分依赖包已经有,有的包会自动更新到最新版,此步只需要等待即可。

检查系统变量:

/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep aio-max
/sbin/sysctl -a | grep ip_local_port_range
/sbin/sysctl -a | grep rmem_default
/sbin/sysctl -a | grep rmem_max
/sbin/sysctl -a | grep wmem_default
/sbin/sysctl -a | grep wmem_max

根据上面命令中得到的参数值在/etc/sysctl.conf中增加对应数据:

vim /etc/sysctl.conf

kernel.sem = 32000      1024000000      500     32000
fs.file-max = 811452
fs.aio-max-nr = 65536
net.ipv4.ip_local_port_range = 32768    60999
net.core.rmem_default = 212992
sysctl: net.core.rmem_max = 212992
net.core.wmem_default = 212992
net.core.wmem_max = 212992
kernel.shmall = 18446744073692774399
kernel.shmmax = 18446744073692774399
kernel.shmmni = 4096

运行一下命令更新内核参数:sysctl –p

添加对dong用户的内核限制在 /etc/security/limits.conf 文件中增加以下数据,注:其中test是我ubuntu系统的普通用户:

vim  /etc/security/limits.conf

test soft nproc 2047
test hard nproc 16384
test soft nofile 1024
test hard nofile 65536
test soft stack 10240

创建文件夹:

mkdir /home/test/tools

mkdir /home/test/tools/oracle11g

配置oracle的环境变量:

sudo vim /etc/profile


export ORACLE_BASE=/home/test/tools/oracle11g
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export NLS_LANG=.AL32UTF8
#export PATH=$ORACLE_HOME/bin:$PATH
export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib64

安装Oracle

登录官网下载oracle安装文件:https://www.oracle.com/technetwork/cn/java/112010-linx8664soft-100572.html

下载两个:

需要在ubuntu系统设置图形化页面中进行安装,Oracle的静默安装比较麻烦。

创建一个新的普通用户test,设定好符合规则的密码,归属于用户组oracle。由于安装Oracle需要7.8GB空间,所以还需要对home目录空间进行扩容,切换到root用户由于扩充home目录空间需要对磁盘重新分配个独立的空间挂载到home目录下,而阿里云目前只有一个40GB硬盘再次分区比较麻烦,所以对Oracle重新安装,换成跟目录下/进行安装。我这里是通过更改swap分区使目录空间变大:

先停止交换分区后,删除swap分区文件,停止交换分区:sudo swapoff -a,创建分区文件:mkdir swap,cd swap

dd if=/dev/vda1 of=sfile bs=1024 count=16384000

count=1000000参数代表数量,这个正好是16g,转化为swap文件:sudo mkswap sfile

激活swap文件,sudo swapon sfile。查看效果,再次输入:free -m

进入阿里云网站的云服务器管理控制台,点击远程连接:

输入初始的远程连接密码,进入图形化页面进行安装,安装需在进入创建的普通用户test下进行。

把下载好的Oracle安装文件进行解压,两个都解压完成后,进入解压的路径下执行:

./runInstaller

出现"Starting Oracle Universal Installer...",等待弹出可视化安装页面:

记住此处设定好的密码

继续下一步,出现一个错误:

cd /home/test/tools/oracle11g/product/11.2.0/dbhome_1/sysman/lib/

sudo vi ins_emagent.mk

将文件中的$(MK_EMAGENT_NMECTL)修改成$(MK_EMAGENT_NMECTL -lnnz11)即可
继续,会出现第三个错误,第一个错误直接忽略

打开一个命令行输入如下命令:
sudo sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' /home/ora_user/tools/oracle11g/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
sudo sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' /home/ora_user/tools/oracle11g/product/11.2.0/dbhome_1/bin/genorasdksh
sudo sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' /home/ora_user/tools/oracle11g/product/11.2.0/dbhome_1/srvm/lib/ins_srvm.mk
sudo sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' /home/ora_user/tools/oracle11g/product/11.2.0/dbhome_1/network/lib/env_network.mk
sudo sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' /home/ora_user/tools/oracle11g/product/11.2.0/dbhome_1/rdbms/lib/env_rdbms.mk

开启监听器,在终端输入命令:lsnrctl start
查看监听器信息:lsnrctl status

启动数据库:sqlplus /nolog,输入设置好的密码

执行一个select 1 from dual;验证数据库,连接成功!数据库安装成功

创建表空间:
create tablespace test datafile '/home/test/tools/oracle11g/oradata/orcl/lbwzjw.dbf' size 500m;
创建临时表空间:
create temporary tablespace test_temp tempfile '/home/test/tools/oracle11g/oradata/orcl/lbwzjw_temp.dbf' size 300m;
创建用户:
create user test identified by test default tablespace test temporary tablespace test_temp;
阿里云服务器用户名和密码都是test
添加权限:
grant connect,resource,dba to test;
grant create session to test;

Navicat连接远程Oracler

用navicat连接阿里云的oracle出现错误1
ssh tunnel:server does not support diffie-hellman-group1-sha1 forkeyexchange
进入 /etc/ssh/sshd_config 在最下面 加入下面代码
KexAlgorithms diffie-hellman-group1-sha1,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes128-ctr,aes256-ctr
执行下面代码:
ssh-keygen -A
service sshd restart

用navicat连接阿里云的oracle出现错误2

当配置文件没有问题情况下,出现ORA-01034: ORACLE not available说明需要启动数据库startup、shutdown。

用navicat连接阿里云的oracle出现错误3

没有服务监听问题解决:The listener supports no services

参照URL:https://blog.csdn.net/aaron8219/article/details/11672817

两种方法:

1.动态生成监听
SQL> show parameter service_names   --查看服务名称
SQL> alter system register;  --强制注册服务
lsnrctl status  --查看监听状态
此种方法有时候不好用
2.配置静态监听
vim /home/test/tools/oracle11g/product/11.2.0/dbhome_1/network/admin/listener.ora
添加以下内容:
SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = orcl)
  (SID_NAME = orcl)
  )
)
加入以下内容后,如今监听器已经开启,则执行重载lsnrctl reload。查看状态lsnrctl status
Service "orcl" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
show parameter name ---查看各重要参数值
select instance_name from v$instance;---通过v$instance视图查到SID是正确的

Oracle配置开机自启

vim /etc/oratab

找到“/home/test/tools/oracle11g/product/11.2.0/dbhome_1:N”,
改为“/home/test/tools/oracle11g/product/11.2.0/dbhome_1:Y”。
vim /etc/rc.d/rc.local
su ora_user -lc "/home/test/tools/oracle11g/product/11.2.0/dbhome_1/bin/lsnrctl start"
su ora_user -lc "/home/test/tools/oracle11g/product/11.2.0/dbhome_1/bin/dbstart"

服务器重启,再次开机自启设置完毕。

猜你喜欢

转载自blog.csdn.net/qq_36632174/article/details/102460679