亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

docker install oracle

標簽:
Docker

环境与软件

  • suse12的镜像

  • oracle12c_linux软件

  • windows下的docker VirtualBox
    注意
    因为oracle12需要2G的内存空间,所以给VirtualBox至少分配2G的内存

安装步骤

1. 下载基础镜像

  • 进入docker

  • 查询suse12镜像

docker search suse

  • 获取suse12镜像

docker pull alarmz/suse12

2. 运行suse12

docker run --name rebatch -it -d -p 220:22 alarmz/suse12

进入suse12

docker attach rebatch

3. 安装repo源并更新suse

zypper 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_profile

vi .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/oracle

cd database ./runInstaller


  1. 安装完成后,启动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)   ) )

修改完成后,正常启动服务和监听。


  1. 使用数据卷完成数据持久化

我们使用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打成镜像时不会将数据卷放入其中。

我的oracle12c镜像
https://hub.docker.com/r/xuweizhen/suse12/
可以直接拉取

docker pull xuweizhen/oracle12c:base



作者:xuweizhen
链接:https://www.jianshu.com/p/aaffd2737f54


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
軟件工程師
手記
粉絲
47
獲贊與收藏
152

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消