本文记录 Docker 创建 Oracle 及账号管理 , 数据库导出导入等一些操作

Docker 及 docker-compose 环境安装

略过

安装 Oracle

这里选择三方修改后的镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3'
services:
oracle11:
image: registry.aliyuncs.com/helowin/oracle_11g
container_name: oracle-11
privileged: true
environment:
- TZ=Asia/Shanghai
restart: always
ports:
- "26521:1521"
volumes:
- ./oracle/data/oracle-11g/data:/u01/app/oracle

启动容器 docker-compose up -d

进入容器进行配置

docker exec -it oracle11 bash

切换到 root 用户下进行配置

1
su root

密码为 helowin

编辑 profile 文件配置 ORACLE 环境变量

1
vi /etc/profile

在文件末尾添加以下3行配置

1
2
3
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH

保存后 , 使配置生效 source /etc/profile

创建软连接

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

切换到 oracle 用户

1
su - oracle

登录 sqlplus 并修改 sys , system 用户密码

1
2
sqlplus /nolog
conn /as sysdba

修改 sys , system 用户密码 , 创建用户并刷新权限

1
2
3
4
5
6
7
8
9
10
11
12
alter user system identified by 新密码;
alter user sys identified by 新密码;

create user 新账号 identified by 新密码;
-- 创建命名空间,注意这里的数据存储文件的位置是在容器的位置,与挂载的数据卷的位置无关
create tablespace <tablespacename> datafile '/u01/app/oracle/oradata/XE/xxx.dbf' size 1000M;
-- 给用户权限
-- 将最高权限授权给用户
grant create session,create table,create view,create sequence,unlimited tablespace to <username>;
grant dba to <username>;
grant sysdba to <username>;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

退出 exit; , 查看以下 oracle 实例状态

1
lsnrctl status

用 navicat 连接 oracle 数据库

服务名: helowin

导入数据泵

将数据泵文件 dmp 上传到 docker-compose.yml 指定的 /dpdump 目录下

然后按照 文章 进行操作

导出数据泵

导出时会从容器向挂载的目录写文件因此需要给文件夹权限

chmod 777 dpdump

1
expdp 账号/密码@helowin owner=ORACLE_JYHC dumpfile=JYHC_$(date "+%Y%m%d").dmp logfile=$(date "+%Y%m%d").log  directory=DATA_PUMP_DIR 

然后配置定时任务即可

docker exec -u 0 容器 bash -c “cd /home/oracle/;source .bash_profile;sh dump.sh”

参考连接

使用docker-compose安装Oracle

【Docker】Docker安装Oracle_11g