开篇废话
最近一个项目需要测试用的Oracle数据库,但是使用公司资源得经过各种协调,自己电脑上的Oracle早就废了,调试或者重新安装又觉得费时间,总之一大堆理由让我想到了Docker。
为了避免无用社交和节省时间,也为了以后随时都有一个可用的Oracle数据库给我玩,所以有了以下的过程。
安装过程
1 找镜像先去Docker Hub转一下,看看有没有官方的,带有DOCKER CERTIFIED标志的是首选。你需要注册一个Docker Hub账号,登录后搜索Oracle,果然找到了。居然还有Weblogic,有机会也要安装下试试。
2 这是一个12C的镜像,不过也足够我用的了,点击进去,继续点击“Proceed to Checkout”。虽然Proceed to Checkout翻译为“进入结算”,不过不用担心。跳转到下面的页面后,填写一些个人信息,并且选中前两个条款就好。
3 点击“Get Content” 后,就会来到了安装说明页面。先使用页面右侧的docker命令拉取镜像, 然后再慢慢看文档吧。记得docker pull之前, 先登录 docker login。
docker pull store/oracle/database-enterprise:12.2.0.1
4 镜像拉取成功后,就可以启动容器了,文档中说明了镜像的使用方法,我就不翻译了,这里只说一些要点。
启动命令:
docker run -d --name oracle -p 1521:1521 -e DB_SID=orcl -v /opt/oracle/data:/ORCL store/oracle/database-enterprise:12.2.0.1
正常启动过程大约1分钟,STATUS 含有 healthy 字样。
不过,多数可能会报错,用 docker logs 命令来查下日志, 会发现:
这个错误的一些常规解决方法都不行,比如:
1) 设置宿主机映射文件目录权限
2) chcon命令
3) --privileged=true
以上都不好使, 后来去google了一下,在 Github 上找到了一个关于 Oracle 镜像的 Issue,“Permission denied error for oracle/database:12.2.0.1-se2 container”。阅读后发现了一个留言:
竟然是这样子, 好, 执行下试试吧。
chown -R 54321:54321 /opt/oracle/data
启动成功了!
然后就可以愉快的使用了,根据文档描述,默认用户名 sys 密码 Oradoc_db1。刚才docker run创建的 sid 是 orcl。有了这些就可以配置PL/SQL Developer了。
登录,报错!
这个错误很常见了,检查配置吧。还是打开docker logs日志,会发现这样的信息:
原来人家已经告诉咱们怎么配置了,真是太贴心了。修改 SERVICE_NAME 为 orcl.localdomain, 终于PL/SQL Developer 也可以用了。
尾声
Oracle镜像还有个瘦身版的database-enterprise:12.2.0.1-slim,过程一致。
好了,Oracle搭建好了, 可以开始搬砖了。使用过程中的问题会继续记录跟踪的。
追加
虽然 tnsnames.ora 文件中配置的是 SERVICE_NAME=orcl.localdomain,但是在写数据源配置时不能写成下面这种形式:
spring.datasource.url=jdbc:oracle:thin:@192.168.18.152:1521:orcl.localdomain
需要改写成:
spring.datasource.url=jdbc:oracle:thin:@192.168.18.152:1521:orcl