Win10 docker部署 oracle12
前言
oracle的win10安装时比较费劲的,在安装的过程中,只要某一个环节出错,都有可能导致你整个服务不可用,然后系统中的oracle就相当于一个摆设了,卸载起来比较麻烦,除了单纯地通过控制面板 - 卸载程序,是卸载不干净的,还要手动去删除注册表,不小心将注册表误删/错删,其他应用就不可用了,严重的,系统可能会出现一点问题,所以,我觉得用容器化去部署oracle12,非常重要,当然这是自娱自乐的。本地测试使用比较好。
容器环境
目前比较流行的容器技术就是docker,所以我们需要在系统中安装docker Desktop工具。下载链接:https://www.docker.com/get-started,安装过程并不复杂。
安装完成之后,配置国内相对比较快的加速镜像服务器。如图所示:
选择settings:
第一个是个人的阿里云镜像加速器,要用自己去申请。
网易:https://hub-mirror.c.163.com/
七牛云:https://reg-mirror.qiniu.com
oracle12的镜像
通过命令搜索:
docker search oracle
选择描述中显示copy of sath89/oracle-12c该镜像进行拉取:
docker pull truevoly/oracle-12c
该镜像比较大,时间会比较久,如果本地下载很慢的话,且不想等很久,建议使用阿里云镜像加速器,很快,地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
镜像完成下载后就是利用docker去运行镜像了。
运行镜像
我是通过docker-compose文件去执行的,贴出里面内容:
version: "3"
services:
oracle-12c:
image: registry-internal.cn-hangzhou.aliyuncs.com/oct/oracle-12c
ports:
- "8099:8080"
- "1521:1521"
environment:
- WEB_CONSOLE=false
- DBCA_TOTAL_MEMORY=1024
- TZ=Asia/Shanghai
- IMPORT_FROM_VOLUME=true
volumes:
- /E/DockerData/oracle/data:/data
- /E/DockerData/oracle/mnt:/mnt
container_name: oracle_12c
#docker run -d --name oracle -p 8087:8080 -p 1521:1521 -v /E/ockerData/oracle/mnt:/mnt -v /E/DockerData/oracle/data:/u01/app/oracle -e TZ=Asia/Shanghai registry-internal.cn-hangzhou.aliyuncs.com/oct/oracle-12c
后面注释掉的是直接可以通过docker命令运行的;
运行之后的日志显示:
2020-08-11T02:45:37.627849372Z Database not initialized. Initializing database.
2020-08-11T02:45:37.638158971Z Starting tnslsnr
2020-08-11T02:45:52.167310448Z Copying database files
2020-08-11T02:45:52.214444959Z 1% complete
2020-08-11T02:46:04.500290488Z 3% complete
2020-08-11T02:46:04.526485495Z 11% complete
2020-08-11T02:46:44.530772558Z 18% complete
2020-08-11T02:47:34.536193189Z 26% complete
2020-08-11T02:47:39.217292954Z 37% complete
2020-08-11T02:47:39.218889554Z Creating and starting Oracle instance
2020-08-11T02:48:03.478852891Z 40% complete
2020-08-11T02:48:10.803260971Z 45% complete
2020-08-11T02:51:43.861129800Z 50% complete
2020-08-11T02:51:44.298604707Z 55% complete
2020-08-11T02:51:45.261419223Z 56% complete
2020-08-11T02:51:46.113015238Z 60% complete
2020-08-11T02:51:46.113626038Z 62% complete
2020-08-11T02:51:46.114579038Z Completing Database Creation
2020-08-11T02:55:10.235189300Z
2020-08-11T02:55:10.235375900Z PL/SQL procedure successfully completed.
2020-08-11T02:55:10.235385500Z
2020-08-11T02:55:10.250473400Z Starting import from '/docker-entrypoint-initdb.d':
2020-08-11T02:55:10.258941400Z ls: cannot access /docker-entrypoint-initdb.d/*: No such file or directory
2020-08-11T02:55:10.258961700Z Import finished
2020-08-11T02:55:10.258971000Z
2020-08-11T02:55:10.258974400Z Database ready to use. Enjoy! ;)
2020-08-11T03:34:11.816308855Z Terminated
2020-08-11T05:11:11.178876204Z found files in /u01/app/oracle/oradata Using them instead of initial database
2020-08-11T05:11:15.233445131Z ORACLE instance started.
2020-08-11T05:11:15.253678738Z
2020-08-11T05:11:15.253732738Z Total System Global Area 805306368 bytes
2020-08-11T05:11:15.253759738Z Fixed Size 2929552 bytes
2020-08-11T05:11:15.253795138Z Variable Size 318770288 bytes
2020-08-11T05:11:15.253837438Z Database Buffers 478150656 bytes
2020-08-11T05:11:15.253873738Z Redo Buffers 5455872 bytes
2020-08-11T05:11:19.427077251Z Database mounted.
2020-08-11T05:11:21.730643925Z Database opened.
2020-08-11T05:11:21.736795014Z Disabling web management console
2020-08-11T05:11:22.537255076Z
2020-08-11T05:11:22.537349075Z PL/SQL procedure successfully completed.
2020-08-11T05:11:22.537358875Z
2020-08-11T05:11:22.540568769Z Starting import from '/docker-entrypoint-initdb.d':
2020-08-11T05:11:22.545722759Z ls: cannot access /docker-entrypoint-initdb.d/*: No such file or directory
2020-08-11T05:11:22.545834859Z Import finished
2020-08-11T05:11:22.545843159Z
2020-08-11T05:11:22.545872059Z Database ready to use. Enjoy! ;)
这个日志是我已经创建了自己内部的账户,重启的日志,起始运行的话,后半部分内存占用情况是没有的,最终输出Database ready to use. Enjoy! 😉,表示已经成功了。该oracle实例镜像信息:
hostname:localhost
port:1521
sid:xe
username:system
password:oracle
进入容器:
C:\Users\hspcadmin> docker exec -it 容器id /bin/bash
#切换到oracle用户
root@5fa2e222e1f1:/# su oracle
#使用sysdba登录
oracle@5fa2e222e1f1:/$ $ORACLE_HOME/bin/sqlplus / as sysdba
#创建表空间 及表数据存储路径
oracle@5fa2e222e1f1:/$ create tablespace 表空间名称 datafile 表空间路径 size 3000m
#创建用户默认使用哪个表空间
oracle@5fa2e222e1f1:/$ create user 用户名 identified by 密码 default tablespace 刚创建表空间名称
#给用户赋权限
oracle@5fa2e222e1f1:/$ grant dba,connect to 用户名
完成之后退出镜像系统,返回原有系统。通过工具连接oracle。
连接Oracle
使用navicat连接(工具随意,看个人爱好)
点击测试连接
大功告成,可以开用。