1、使用docker 命令搜索oracle 镜像,前提是已安装了Docker
docker search oracle
2、下载相应版本的oracle 镜像
docker pull sath89/oracle-12c
3、查看docker 安装下的oracle 镜像
docker images
4、根据下载的oracle 镜像创建oracle容器
(-v /var/lib/oracle/oradata:/u01/app/oracle/oradata) 这个oracle数据绑定到宿主映射文件夹好像有问题,发现有部分文件未同步,导致启动oracle失败,不明原因,还望大神解答,故保持数据存储在容器中(这种方式会随着容器的删除导致数据丢失,还望勿用于生产环境)。
docker run --restart=always -d --name docker-oracle -p 1521:1521 -p 8080:8080 sath89/oracle-12c:latest
命令详解:
--restart always 假如docker进程挂掉了,重启时把这个容器也启动起来;
-d 在后台运行
--name 这个容器的名称
-p 映射服务端口到虚拟机
-v 挂载的目录,把数据卷挂到本地,防止数据丢失
sath89/oracle-12c 镜像名称
latest 镜像的版本号
5、查看运行的docker 容器
docker ps
6、配置oracle默认字符类型为utf8, 进入容器
docker exec -it [容器名/容器id(docker ps 可查看)] /bin/bash
7、修改Oracle 为UTF8字符集
su oracle
cd $ORACLE_HOME/bin
sqlplus "/as sysdba"
shutdown immediate;
startup mount;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
alter database character set internal_use utf8; (/alter database character set internal_use utf8; 两命令任选一)
shutdown immediate;
startup;
8、注:pl/sql客户端环境也需要安装相同字符集,否则客户端插入中文会有乱码
(1) 注册表
regedit->HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->ORACLEKEY_OraClient12Home1->NLS_LANG
(2)环境变量
(3)重启PL/SQL客户端,查看Help 的SupportInfo 里的NLS_LANG是否有更新为AMERICAN_AMERICA.UTF8
(4)进入pl/sql 客户端,执行
select userenv('language') from dual;
出现如下结果。3者一致即大功告成
(5)执行以下SQL可查看相关数据文件,控制文件以及日志文件路径
//数据文件
select name from v$datafile;
//控制文件
select name from v$controlfile;
//日志文件
select member from v$logfile;
本人辛苦归纳总结成果,若对你有帮助请不吝点个推荐,谢谢喔 ~ ~!!