赞
踩
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那个镜像):
- [root@hdp-1 data]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- mysql 5.7.22 6bb891430fb6 3 years ago 372MB
- 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:
- version: '3'
- services:
- oracle:
- restart: always
- image: hub.c.163.com/springwen/oracle12c
- container_name: oracle
- 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"
- ports:
- - 53432:1521
- - 36888:8080
- logging:
- driver: "json-file"
- options:
- 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)
- [root@hdp-1 ~]# cat /usr/local/oracle/source/create.sql
- create user zsk identified by 123456;
第一次启动容器时的命令:
- [root@hdp-1 ~]# docker-compose -f oracle.yaml up -d
- Creating oracle ... done
此时,使用docker logs oracle 命令可以看到如下:
- [root@hdp-1 ~]# docker logs oracle
- Database not initialized. Initializing database.
- Starting tnslsnr
- [root@hdp-1 ~]# docker logs oracle
- Database not initialized. Initializing database.
- Starting tnslsnr
- Copying database files
- 1% complete
耐心等待几分钟,等待数据库初始化完毕即可使用Oracle数据库啦。结尾应该是这样的:
-
-
-
- Import finished
-
- 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.都在后面一一列出了
:
- [root@hdp-1 ~]# docker logs oracle
- found files in /u01/app/oracle/oradata Using them instead of initial database
- ORACLE instance started.
-
- Total System Global Area 1610612736 bytes
- Fixed Size 2924928 bytes
- Variable Size 553651840 bytes
- Database Buffers 1040187392 bytes
- Redo Buffers 13848576 bytes
- Database mounted.
- Database opened.
- Starting web management console
-
- PL/SQL procedure successfully completed.
-
- Starting import from '/docker-entrypoint-initdb.d':
- found file /docker-entrypoint-initdb.d//docker-entrypoint-initdb.d/init.sql
- [IMPORT] /entrypoint.sh: running /docker-entrypoint-initdb.d/init.sql
- SP2-0606: Cannot create SPOOL file "c:oraclehr_spool.lst"
- DROP USER hr CASCADE
- *
- ERROR at line 1:
- ORA-01918: user 'HR' does not exist
-
-
-
- User created.
-
-
- User altered.
-
-
- User altered.
- 。。。。。。。。略略
关于 /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亲和度更高,推荐使用:十颗星⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。