centos7 在docker中使用oracle并配置持久化
程序员文章站
2022-06-02 18:27:54
...
拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
创建容器
在创建容器之前首先要在服务器或者虚拟机上创建一个data_temp的目录(当然这个名字可以随便取,看个人喜好),并且赋予可读写权限,为了下面运行容器做映射。
mkdir /usr/local/data_temp
chown -R 500.500 /usr/local/data_temp
创建一个文件目录,用于挂载到容器内,做oracle数据备份时数据存放的位置,保证备份数据不丢失。并将文件的权限给到 500.500 这个是在容器内的oracle用户的sid。不用管,后面会用到…
创建命令:
[[email protected] ~]# docker run -d --name oracle_11g -p 1521:1521 -v /usr/local/data_temp:/home/oracle/data_temp registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
其中,oracle_11g是名称,-p是端口映射,-v是将宿主机的/usr/local/data_temp 目录映射到容器内的 /home/oracle/data_temp内。
编辑环境变量 vi /etc/profile 在文件的末尾添加一下内容
按i进入编辑模式,输入上述命令后,按ESC键退出编辑模式,再输入 :wq!保存退出
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
加载一下,使得修改生效。
[[email protected] ~]# source /etc/profile
查看容器
[[email protected] ~]# docker ps
输出
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d81351c03420 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g "/bin/sh -c '/home/o…" 41 minutes ago Up 41 minutes 0.0.0.0:1521->1521/tcp oracle_11g
NAMES 下看的到一个名字 oracle_11g
进入容器
可以通过名字或者id都行。
[[email protected] ~]# docker exec -it oracle_11g /bin/bash
进入以后加载一下用户环境变量
[[email protected] /]$ source ~/.bash_profile
接下来依次进行:
sqlplus /nolog ## 使用sqlplus 工具,进去命令行
SQL> connect /as sysdba ## 使用sysdba 连接oracle,最大权限,os认证,只能在本机上登陆使用。
SQL> alter user system identified by oracle; ## 修改用户 system 的密码为 oracle ,oracle可以自定义
持久化
SQL> create or replace directory DATA_TEMP as '/home/oracle/data_temp';
## 将挂载进来的目录/home/oracle/data_temp创建到oracle的directoy中。
创建之后,导出的数据可以指定导出到这个目录,那么数据可以直接在宿主机上的对应目录中拿到,持久化保存。另外需要导入的数据文件也是直接放到这个目录,在容器中则可以调用impdp命令进行导入;至此,基础的操作配置已完成,你可以重新提交这个容器作为新的镜像以保存修改。
自此已经可以进行连接了!