用docker启动一个oracle 11g服务器

用docker启动一个oracle 11g服务器

操作
安装Oracle 11g是一件有一定难度的问题。如果我们能够把Oracle给容器化,那么,部署一台Oracle数据库将变得非常简单。接下来,本文将为大家讲述如何将Oracle容器化。
本文建议使用Ubuntu 16.04 LTS作为host操作系统,这是因为Docker对Ubuntu的支持最好,且docker.com的安装文档也以Ubuntu为操作系统进行描述。
因此,在进行接下来的步骤之前,本文建议读者您先准备好一台安装好了最新的docker和docker-compose的Ubuntu 16.04 LTS服务器。本文就不具体描述如何安装docker了,请您参考docker.com上的 文档 。如果您需要用其他的Linux发行版安装docker,请分别参考  CentOS安装docker
接下来,您需要根据 https://github.com/ufoscout/docker-oracle-11g  去手动build一个oracle 11g的镜像(docker image)
就可以得到Oracle 11g的镜像了。
root@sdata03:~# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEufoscout/oracle-11g latest 2099eeed1c5b 3 months ago 12.2 GBroot@sdata03:~#
启动Oracle数据库也非常简单。只需要在您的Ubuntu上执行
docker run --network=host -p 1521:1521 -p 1158:1158 --name oracle -d ufoscout/oracle-11g
您就启动了一个名为oracle的docker container。
不过,此时,由于我们还没有启用docker volumes,所以,如果容器被销毁,数据库的数据就消失了。为了保证数据在容器被销毁和重建的时候不消失,我们应该进行如下操作
mkdir -p /srv/docker/oracle/u01docker cp oracle:/u01 /srv/docker/oracle/u01docker stop oracle && docker rm oracledocker run --network=host -v /srv/docker/oracle/u01:/u01 -p 1521:1521 -p 1158:1158 --name oracle -d ufoscout/oracle-11g
这样,我们就将ubuntu上的/srv/docker/oracle/u01映射到了oracel容器中的/u01目录,数据库的数据就不会因为容器的销毁和丢失了。
此时,我们还应该编辑一下ubuntu下的/srv/docker/oracle/u01/app/oracle/product/11.2/db_1/dbs/initORCL.ora文件。
例如,如果我们的服务器是64GB内存,那么,该文件可以修改成如下内容
db_name='ORCL'# memory_target=1Gprocesses = 8000SHARED_POOL_SIZE=48GSTREAMS_POOL_SIZE=2G# db_block_size=8192# db_domain=''db_create_file_dest='/u01/app/oracle/oradata'db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'db_recovery_file_dest_size=2Gdiagnostic_dest='/u01/app/oracle'dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'control_files='/u01/app/oracle/oradata/ORCL/controlfile/o1_mf_dbzl5nsk_.ctl','/u01/app/oracle/fast_recovery_area/ORCL/controlfile/o1_mf_dbzl5nvy_.ctl'open_cursors=300remote_login_passwordfile='EXCLUSIVE'undo_tablespace='UNDOTBS1'# You may want to ensure that control files are created on separate physical# devices# control_files = (ora_control1, ora_control2)compatible ='11.2.0.0.0'
接下来,我们可以通过sqlplus启动oracle服务器了。
进入sqlplus
docker exec -ti oracle sudo -u oracle -i bash -c "export NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8' && sqlplus / as sysdba"
在sqlplus中执行
startup pfile='/u01/app/oracle/product/11.2/db_1/dbs/initORCL.ora'
最后,我还建议大家讲oracle的字符集修改为AL32UTF8。具体的步骤是,在sqlplus中执行以下命令
shutdown immediate; //关闭数据库服务器startup mount pfile='/u01/app/oracle/product/11.2/db_1/dbs/initORCL.ora';alter session set sql_trace=true;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 session set sql_trace=false;shutdown immediate;startup pfile='/u01/app/oracle/product/11.2/db_1/dbs/initORCL.ora';
补充一点,如果您还需要Oracle的WMSYS用户的话,那么,您还需要在sqlplus中执行以下命令
@/u01/app/oracle/product/11.2/db_1/rdbms/admin/owmctab.plb;@/u01/app/oracle/product/11.2/db_1/rdbms/admin/owmaggrs.plb;@/u01/app/oracle/product/11.2/db_1/rdbms/admin/owmaggrb.plb;@/u01/app/oracle/product/11.2/db_1/rdbms/admin/owminst.plb
现在,Oracle服务器已经可用了。您可以通过imp导入数据,也可以通过sqlplus创建新的用户,表空间和表,等等。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值