镜像下载

容器镜像有近 7 个 G,所以 我们使用 nohup 挂后台下载

  1. # nohup:即使退出终端也会继续下载
  2. # & 保持后台运行
  3. nohup docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g &

启动容器

  1. # 端口 1521 映射到宿主机
  2. docker run -d -p 1521:1521 --name oracle_11g registry.aliyuncs.com/helowin/oracle_11g

容器配置

进入容器

  1. docker exec -it oracle_11g

切换到 root

  1. su root
  2. # passwd: helowin

配置环境变量

  1. vi /etc/profile
  2. # 添加如下配置
  3. export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
  4. export ORACLE_SID=helowin
  5. export PATH=$ORACLE_HOME/bin:$PATH
  6. # wq 保存

软链接 sqlplus/usr/bin

  1. ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

数据库配置

切换用户回 oracle

  1. su oracle
  2. # passwd: oracle

登录 sqlplus

  1. # 进入SqlPlus 控制台
  2. sqlplus /nolog
  3. # 以系统管理员登录
  4. conn /as sysdba

修改 systemsys 密码为 oracle

  1. alter user system identified by oracle;
  2. alter user sys identified by oracle;
  3. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

添加用户空间和用户

  1. # 先查看用户空间路径
  2. select name from v$datafile;
  3. # 创建一个名为 kyc 大小为 1024M 的用户空间
  4. create tablespace kyc datafile '/home/oracle/app/oracle/oradata/helowin/kyc.dbf' size 1024M;
  5. # 创建一个名为 kyc 密码为 kyc123456 的用户,默认用户空间为 kyc
  6. create user kyc identified by kyc123456 default tablespace kyc;
  7. # 赋予用户 kyc 具有 dba 和 connect 权限
  8. grant dba,connect to kyc;

连接配置

现在我们就可以使用 Oracle SQL Delvelpoer 等连接工具进行连接了,具体连接配置可参考如下

  • 主机名:IP地址
  • 端口:1521
  • 服务名:helowin
  • 用户名:kyc
  • 密码:123456

SpringBoot 项目中,我们的配置文件中的配置示例如下

  1. datasource:
  2. type: org.apache.tomcat.jdbc.pool.DataSource
  3. driver-class-name: oracle.jdbc.driver.OracleDriver
  4. url: jdbc:oracle:thin:@<IP>:1521:helowin
  5. username: kyc
  6. password: kyc123456
  7. platform: oracle

可能会遇到的问题

由于我的 Oracle 安装在配置较低的服务器上,经常会出现内存占用较大导致数据库自动关闭的情况,这种情况的解决办法是

  1. docker exec -it oracle_11g bash # 进入容器
  2. su - oracle # 切换至 oracle 用户
  3. # (passwd: oracle)
  4. # 以管理员登录
  5. dba
  6. conn /as sysdba
  7. startup # 启动数据库
  8. # shutdown immediate # 如果是关闭数据库
  9. exit # 退出sqlplus控制台
  10. lsnrctl # 进入监听器控制台
  11. start #启动监听器
  12. exit #退出监听器控制台
  13. #重启数据库结束