当前位置:   article > 正文

使用docker急速搭建Oracle测试环境(完全离线)_docker-entrypoint-initdb.d

docker-entrypoint-initdb.d

前言:

Oracle作为一个重型的关系型数据库,还是十分优秀的,那么,在生产环境正式使用前,我们通常还是需要一套测试环境的,而本地安装Oracle又比较繁琐,麻烦,并且,在不想使用会劝退一大波人的,因此 ,虚拟化安装---docker快速安装部署好Oracle的测试环境还是十分有必要的。

在写这篇文章前,也看了不少关于docker安装Oracle12c的博客,给人的感觉总是,大部分只说了docker安装部署Oracle,并没有说Oracle的可视化工具的选择和安装,而一套完整的测试环境,可视化数据库开发工具是必不可少的哦。

因此,本文将着重讲述docker部署安装完Oracle,并安装好Oracle的可视化数据库开发工具。(基于Linux的centos7版本使用docker快速安装部署Oracle12c并完成全套的测试环境搭建)

实验环境介绍:

本次实验使用centos7,小版本不限,docker安装的Oracle版本是12c,可视化开发工具选择的是sqldevelope19.2.1.247,磁盘空间至少需要预留8G

链接:https://pan.baidu.com/s/1B4fRcbULE_8LsFvJxt0zJQ 
提取码:orac 
docker环境安装见本人博客:
docker的离线安装以及本地化配置_zsk_john的博客-CSDN博客_docker离线升级

可视化工具使用的是sqldeveloper,有Windows版本和Linux版本(选择这个工具的原因是这个是Oracle所开发的,和Oracle数据库比较亲和)

docker-12c-oracle 这个文件是离线镜像,具体镜像版本是如下(5.7G那个镜像):

  1. [root@hdp-1 data]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. mysql 5.7.22 6bb891430fb6 3 years ago 372MB
  4. hub.c.163.com/springwen/oracle12c latest 62ebb35e7a2e 3 years ago 5.7GB

搭建步骤:

step1:

Linux操作系统关闭防火墙和selinux,防止不必要的干扰,如何关闭就不用说了。

docker环境安装完毕。这个是基本的运维就不详细说了。

jdk环境准备完毕。也就是安装jdk ,为可视化工具安装做准备,jdk安装是基础中的基础,也不说了。

Linux需要安装桌面,并进入到桌面,安装命令为:

yum group install "GNOME Desktop" -y

step2:

编写docker-compose启动脚本,脚本内容如下(这个文件是精华,十分重要):

  1. version: '3'
  2. services:
  3. oracle:
  4. restart: always
  5. image: hub.c.163.com/springwen/oracle12c
  6. container_name: oracle
  7. volumes:
  8. - /usr/local/oracle/data:/u01/app/oracle
  9. - /usr/local/oracle/source:/docker-entrypoint-initdb.d
  10. environment:
  11. - "TZ=Asia/Shanghai"
  12. - "DBCA_TOTAL_MEMORY=16192"
  13. - "IMPORT_FROM_VOLUME=true"
  14. ports:
  15. - 53432:1521
  16. - 36888:8080
  17. logging:
  18. driver: "json-file"
  19. options:
  20. max-size: "1g"

主要是这么几行比较重要

volumes:
      - /usr/local/oracle/data:/u01/app/oracle
      - /usr/local/oracle/source:/docker-entrypoint-initdb.d
    environment:
      - "TZ=Asia/Shanghai"
      - "DBCA_TOTAL_MEMORY=16192"
      - "IMPORT_FROM_VOLUME=true"

/usr/local/oracle/data:/u01/app/oracle和/usr/local/oracle/source,两个外接挂载,这里主要是挂载容器的数据库文件和下面将要执行的SQL文件。

IMPORT_FROM_VOLUME=true 这个环境变量,表示任何情况下都检测/usr/local/oracle/source这个目录下有没有SQL文件,如果有就立刻执行

DBCA_TOTAL_MEMORY=16192 表示限制此容器使用的内存是16192M,如果没有资源限制,很可能拖垮宿主机的哦。

编写一个初始化zsk用户的脚本,该脚本内容如下,将该脚本放置到/usr/local/oracle/source目录下(此脚本名称为create.sql,仅仅建立一个zsk用户并赋予初始密码123456)

  1. [root@hdp-1 ~]# cat /usr/local/oracle/source/create.sql
  2. create user zsk identified by 123456;

第一次启动容器时的命令:

  1. [root@hdp-1 ~]# docker-compose -f oracle.yaml up -d
  2. Creating oracle ... done

此时,使用docker logs oracle 命令可以看到如下:

  1. [root@hdp-1 ~]# docker logs oracle
  2. Database not initialized. Initializing database.
  3. Starting tnslsnr
  4. [root@hdp-1 ~]# docker logs oracle
  5. Database not initialized. Initializing database.
  6. Starting tnslsnr
  7. Copying database files
  8. 1% complete

 耐心等待几分钟,等待数据库初始化完毕即可使用Oracle数据库啦。结尾应该是这样的:

  1. Import finished
  2. Database ready to use. Enjoy! ;)

SQL脚本执行情况可用命令

docker logs oracle 

查看,大体情况如下所示

下面显示我这个镜像已启动过,因此,挂载目录/usr/local/oracle/data里有历史存留文件。

found files in /u01/app/oracle/oradata Using them instead of initial database
ORACLE instance started 这一段意思是,本次启动直接读取历史存留文件并初始化数据库,数据库状态最终为Database opened,并启动了web界面管理控制台。

found file /docker-entrypoint-initdb.d//docker-entrypoint-initdb.d/init.sql 

这句是说找到了一个叫init.sql的SQL文件,并执行了它,此SQL文件的执行结果比如User created.都在后面一一列出了

  1. [root@hdp-1 ~]# docker logs oracle
  2. found files in /u01/app/oracle/oradata Using them instead of initial database
  3. ORACLE instance started.
  4. Total System Global Area 1610612736 bytes
  5. Fixed Size 2924928 bytes
  6. Variable Size 553651840 bytes
  7. Database Buffers 1040187392 bytes
  8. Redo Buffers 13848576 bytes
  9. Database mounted.
  10. Database opened.
  11. Starting web management console
  12. PL/SQL procedure successfully completed.
  13. Starting import from '/docker-entrypoint-initdb.d':
  14. found file /docker-entrypoint-initdb.d//docker-entrypoint-initdb.d/init.sql
  15. [IMPORT] /entrypoint.sh: running /docker-entrypoint-initdb.d/init.sql
  16. SP2-0606: Cannot create SPOOL file "c:oraclehr_spool.lst"
  17. DROP USER hr CASCADE
  18. *
  19. ERROR at line 1:
  20. ORA-01918: user 'HR' does not exist
  21. User created.
  22. User altered.
  23. User altered.
  24. 。。。。。。。。略略

关于  /docker-entrypoint-initdb.d/这个目录中的SQL脚本何时运行,可以明确的告诉大家,只会在第一次初始化数据库的时候运行一次,如果有多个SQL文件,无法保证执行顺序,这就需要引入 sh 文件,思路是在docker-entrypoint-initdb.d 目录下放置 sh 文件。




# Oracle Web管理端连接参数(根据上面的yaml文件):

http://192.168.88.11:36888/apex

workspace: INTERNAL

user: ADMIN

password: 0Racle$

登录进去后会要求修改默认密码,这里注意,密码有复杂度要求,请大小写加特殊符号和数字组合,修改完密码后点击右侧的return在重新使用刚设置的新密码登陆即可。




可视化数据库管理工具的安装:

Linux篇:

 在Linux桌面内,安装下载的sqldeveloper-19.2.1.247.2212.noarch.rpm这个文件,安装命令没什么好说的:

rpm -ivh sqldeveloper-19.2.1.247.2212.noarch.rpm

安装完毕后,打开命令终端,输入命令即可,如下:

这里需要注意,sqldeveloper是基于java运行的,因此,Linux必须要有Java环境哦,这点别忘了。

Windows篇:

Windows比较简单了

解压这个文件,直接使用就行了,这个是绿色免安装的版本哦,用户还是sys,密码仍然是oracle,端口也仍然是53432

 多说一句,这个版本自带Java环境,什么都不需要,开箱即用哦。

相比较于navicat这些可视化工具,无疑亲儿子sqldeveloper功能更为强大,和Oracle亲和度更高,推荐使用:十颗星⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/419949
推荐阅读
相关标签
  

闽ICP备14008679号