Ubuntu通过Docker安装Oracle 12c并配置DBeaver连接
目录
出于测试和学习的目的,最近想在Ubuntu Linux上安装oracle server端并在windows上通过客户端连接使用。发现可通过Docker快速安装和配置,这里以12c版本为例记录一下我的安装配置过程。
拉取镜像
假定docker已安装,镜像源已配置。
这里为省事就直接用了第三方镜像(若用oracle官方镜像需要先注册,会稍麻烦一些,参考这篇文章)
docker pull truevoly/oracle-12c
这个第三方镜像相关说明可参考github页面
下载好后可运行 docker image ls 确认大小,运行 docker inspect truevoly/oracle-12c 查看imager详情
运行容器
# create local folder for mapping
mkdir -p /home/user_name/app/oracle
chmod 777 /home/user_name/app/oracle
# start container
docker run -d --name oracle-12c \
-p 9090:8080 -p 1521:1521 \
-v /home/user_name/app/oracle:/u01/app/oracle/ \
truevoly/oracle-12c
Note:上面的p选项和v选项分别用于配置host机到容器的端口(port) 和 文件目录/卷 (volume)映射,port选项为了端口转发,volume选项为了数据共享和持久化
启动后运行命令 docker logs oracle-12c 可查看日志,日志中出现 Database ready to use. Enjoy! ;) 说明一切就绪,可以开始下一步

更新配置和创建用户
根据上述github页面说明,容器运行成功之后会有预设的超级用户system和sys,密码均为oracle,其中sys可以sysdba方式连接(sqlplus sys/oracle as sysdba)
进入容器,将 $ORACLE_HOME/bin 加入环境变量,让运行sqlplus更方便
# enter container
docker exec -it oracle-12c /bin/bash
# add env vairable
echo "export PATH=$PATH:$ORACLE_HOME/bin" >> ~/.bashrc
source ~/.bashrc
创建户名 ora_user 并分配权限
# enter sqlplus
sqlplus system/oracle
# or connect as sysdba
# sqlplus sys/oracle as sysdba
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
SQL> CREATE USER ora_user IDENTIFIED BY ora_user;
SQL> GRANT ALL PRIVILEGES TO ora_user;
客户端连接
以DBeaver为例,用普通用户ora_user进行连接:

创建表空间并执行SQL
在DBeaver中执行SQL创建表空间
-- Create tablespace, default path is $ORACLE_HOME/dbs
CREATE TABLESPACE ORA_USER_DATA
DATAFILE 'ora_user_data_01.dbf' SIZE 100M AUTOEXTEND ON
NEXT 10M MAXSIZE 1G;
ALTER USER ora_user DEFAULT TABLESPACE ORA_USER_DATA;

创建Table,然后插入测试数,进行查询:
CREATE TABLE students (
student_id NUMBER(10) PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
birth_date DATE,
enrollment_date DATE DEFAULT SYSDATE
);
INSERT INTO students (student_id, first_name, last_name, birth_date, enrollment_date)
VALUES (1, 'Terry', 'Zhang', TO_DATE('2001-01-01', 'YYYY-MM-DD'), TO_DATE('20250801', 'YYYYMMDD'));
SELECT * FROM students;

至此本地ORACLE测试环境准备完毕, 后续可以按需进行更多操作。
附 - 相关命令- 关闭和重启容器/ORACLE服务
#### stop and start container
# docker container ls -as
docker container stop oracle-12c
docker container start oracle-12c
#### just stop lister
# stop listener
docker exec -it oracle-12c /bin/bash
lsnrctl status
lsnrctl stop
#### just stop oracle instance
# stop service
sqlplus sys/oracle as sysdba
# shut down service
SQL> shutdown immediate;
# start service
SQL> startup;
Note:
- oracle在未启动状态时,可通过
sqlplus sys/oracle as sysdba连接,或切换到oracle用户后通过sqlplus / as sysdba连接 - 以上示例为 Standard Edtion,存在一些功能限制,若想安装完整版本,可安装 Enterprise Edition