前期准备
首先安装好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"
服务器重启,再次开机自启设置完毕。