Linux docker oracle 部署

此刻,oracle的数据正在一条条地插入数据库。虽然命令行的表名还是乱码,但是oracle 客户端已经能查出数据了。反观这次 Linux docker  oracle之旅。充满了艰辛,我像一个盲人一样四下摸索,终于在此刻摸出了Linux docker这个大象的轮廓。根据以往的经验,问题解决了就圆满结局了。但是,最近开始清醒地意识到记录与表达的重要性,所以还是决定克服惰性,做一下记录。一来做个备忘,二来刻意联系自己的表达能力。

  大前提还是要说说的。因为笔者喜欢没事就喜欢折腾系统,所以在某个地方偷得源码与数据一份(。dmp)。因为在大学时曾经被oracle的吃内存搞怕过,所以不想在自己的机子上直接安装oracle。于是打算搞了一台虚拟机(centos)专门来跑oracle。笔者是一台Mac电脑,虚拟机软件为parallel。Linux选择了最小化安装。啥玩意都没有。因为之前有尝试过docker跑一些服务。于是就打算在Linux中安装docker。docker再跑oracle。这样就可以随意地恢复磁盘。docker使用的是以下镜像https://my.oschina.net/Cleverdada/blog/801124 。安装镜像倒没有遇到任何困难。倒是学习了很多docker命令。算是入门了docker

因为之前对oracle了解的也不多,因此此次更多的是对oracle在Linux中的尝试。以下对遇到的问题做一个归纳总结。

1 docker镜像启动了,但是oracle服务数据库无法启动。为期好几天业余时间都在找解决方案。后面再该镜像的issue列表中找到解决方案。

造成的原因是因为宿主Linux的selinux权限相关配置没有关闭

https://my.oschina.net/Cleverdada/blog/801124

所以用到哪些资源的话遇到问题应该先在问题列表里找方案。

2 使用imp命令导入.dmp文件时中文乱码。

    因为一些特殊原因,dmp中甚至出现了很多表的名称为中文。因此在导入时中文表全部无法导入。这个问题困扰了我一个礼拜。但对此对docker容器,宿主的概念。Linux的locale配置,source ,export , apt-get命令有了比较详细的了解。

 1.1是了解到docker容器内可与宿主机一样在线安装软件。虽然很基础的概念,但是以前真的不知道。

 1.2Linux的locale配置主要设置一些国际化的参数。以下是一些主要的概念

http://yintech.iteye.com/blog/397380 

1.3 oracle的这个docker容器默认没有安装中文支持zh_CN.gbk因此需要通过apt-get install 中文支持。https://zhuanlan.zhihu.com/p/31078295

1.4 docker容器中的apt-get可能会因为Linux宿主容器没有开启ipv4跳转而导致网络不可用,docker ipv4 forwarding is disabled 因此需要开启

https://stackoverflow.com/questions/41453263/docker-networking-disabled-warning-ipv4-forwarding-is-disabled-networking-wil

1.5 docker容器中apt-get 可能因为dns服务器没设置好导致网络不可访问,因此可通过

https://yeasy.gitbooks.io/docker_practice/content/network/dns.html进行修改

1.6 准备好中文支持后切换语言时会出现中文乱码,可能出现的原因为1命令行编码配置

2本地编码配置

1.7 因为oracle容器默认的字符集不是zhs16gbk,因此需要停掉oracle服务重新设置。

http://www.cnblogs.com/wq3435/p/8024480.html

1.8 由于自己粗心大意没有修改NLS_LANG 只改了oracle服务器的编码 因此导入一直都没能成功。此处切记设置NLS_LANG。因为我一直以为自己提供的是oracle服务端的服务,因此客户端的配置都不需要了。但是,从某各种意义上讲,exp等命令也都是oracle服务的客户端,因此如果需要通过exp,imp ,sqlplus等连接客户端的都需要NLS_LANG

以上是整个 Linux docker oracle 部署过程中遇到的问题。

你可能感兴趣的:(Linux docker oracle 部署)