docker 拉取oracle_docker install oracle

环境与软件suse12的镜像

oracle12c_linux软件

windows下的docker VirtualBox

注意

因为oracle12需要2G的内存空间,所以给VirtualBox至少分配2G的内存

安装步骤

1. 下载基础镜像进入docker

查询suse12镜像docker search suse

获取suse12镜像docker pull alarmz/suse12

2. 运行suse12docker run --name rebatch -it -d -p 220:22 alarmz/suse12

进入suse12docker attach rebatch

3. 安装repo源并更新susezypper addrepo -f http://mirrors.aliyun.com/opensuse/update/leap/42.1/oss  openSUSE-42.1-Update-Oss zypper addrepo -f http://mirrors.aliyun.com/opensuse/update/leap/42.1/non-oss/ openSUSE-42.1-Update-Non-Oss zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/leap/42.1/repo/oss/ openSUSE-42.1-Oss zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/leap/42.1/repo/non-oss/  openSUSE-42.1-Non-Oss zypper addrepo -f http://mirrors.aliyun.com/packman/openSUSE_Leap_42.1/ aliyun-packman

手动更新zypper refresh

更新所有软件zypper update

4. 启动SSH设置root用户名密码passwd root

/usr/sbin/sshd -f /etc/ssh/sshd_config

报错,要求需要设置秘钥ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key  ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

再次启动ssh/usr/sbin/sshd -f /etc/ssh/sshd_config

5. 安装xhost和xdpyinfo

xhost:zypper addrepo https://download.opensuse.org/repositories/X11:XOrg/openSUSE_Leap_42.3/X11:XOrg.repo zypper refresh zypper install xhost

xdpyinfo:zypper addrepo https://download.opensuse.org/repositories/openSUSE:Leap:42.1/standard/openSUSE:Leap:42.1.repo zypper refresh zypper install xdpyinfo

6. 配置oracle环境变量创建oracle用户和用户组:groupadd oinstall    groupadd dba useradd -d /home/oracle -m -g oinstall -G dba oracle passwd oracle oracle/oracle chown -R oracle:oinstall /home/oracle

创建安装目录:mkdir -p /u01/app/oracle chown -R oracle:oinstall /u01/app/oracle chmod -R 755 /u01/app/oracle

Create Inventory:mkdir -p /u01/app/oraInventory chown -R oracle:oinstall /u01/app/oraInventory chmod -R 755 /u01/app/oraInventory

edit sysctl文件vi /etc/sysctl.conf

insert文本:net.ipv4.ip_forward = 0 net.ipv6.conf.all.forwarding = 0 kernel.shmmax = 68719476736 kernel.shmall = 6029312 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.ip_local_port_range = 9000 65500 fs.file-max = 6815744 fs.aio-max-nr = 1048576 # net.ipv6.conf.all.disable_ipv6 = 1

edit /etc/security/limits.conf文件vi /etc/security/limits.conf

insert文本oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 10240

edit .bash_profilevi .bash_profile

insert文本export TMOUT=0 export ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1; export ORACLE_HOME                       //有的目录是ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1 注意修改 ORACLE_SID=receipt; export ORACLE_SID PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi export PS1='$PWD>'

su oracle 进入/home/oracle

上传oracle压缩包

解压oracle压缩包

设置display环境变量设置display环境变量export DISPLAY=192.168.0.103:0.0

su root 进入root用户xhost +

su oralce 进入/home/oraclecd database ./runInstaller

安装完成后,启动oracle服务和监听

进入sqlplus:sqlplus / as sysdba

启动服务:startup

使用quit退出sqlplus,启动监听lsnrctl start

注意

如果将这个oracle容器做成镜像后,使用镜像重新生成一个容器,正常启动oracle服务和监听会失败。

原因

docker使用的是虚拟的网络,分配的也是虚拟的ip,所以oracle服务的host使用docker容器分配的host。

在listener.ora文件中HOST = ceab82c65b7e,这个HOST值就是docker容器的容器ID。

解决方法

每次使用新容器时,都需要将listener.ora文件中HOST = ceab82c65b7e,修改为新容器的容器ID.

同理,在使用新容器时,oracle的动态监听会失败,所以改为静态监听即可。

直接在listener.ora文件中添加:SID_LIST_LISTENER = (SID_LIST =   (SID_DESC =   (GLOBAL_DBNAME = receipt)   (SID_NAME = receipt)   ) )

修改完成后,正常启动服务和监听。使用数据卷完成数据持久化

我们使用oracle12c创建容器有两种方式:

方式一:创建端口并运行,这样每次退出数据不会保留$ docker run -d -p 8080:8080 -p 1521:1521 sath89/oracle-12c

方式二:用数据卷实现容器和数据的有效分离,实现数据持久化$ docker run -d -p 8080:8080 -p 1521:1521 -v /local_dir:/data sath89/oracle-12c

-v 指定数据卷位置

数据卷的特点

1、可以供多个容器访问,直接共享或者重用

2、独立于容器周期,不会在删除容器时删除其挂载的数据卷

3、数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含的数据这些数据会复制到新的容器中

4、可以直接对数据卷里的内容进行修改

我将27G的数据文件放入数据卷中,每次需要使用这些数据文件时,直接使用数据卷即可,oracle打成镜像时不会将数据卷放入其中。docker pull xuweizhen/oracle12c:base

作者:xuweizhen

链接:https://www.jianshu.com/p/aaffd2737f54

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值