1、拉取oracle数据库的镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
(这里需要注意的是,关闭防火墙以及确保磁盘空间够大,因为此镜像 > 6G,下载失败后再次pull就会承接上次下载失败的进度,防火墙相关命令以及docker卸载重载都在文档末尾有说明。)
2、下载镜像成功之后,查看镜像:
docker images
3、创建容器:
docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
4、进入容器:
docker exec -it oracle11g bash
5、切换到root用户:
su root
密码是:helowin
6、编辑profile文件配置oracle
vi /etc/profile
进入后添加如下内容保存:
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
7、加载环境变量
source /home/oracle/.bash_profile
8、使环境变量立即执行:
source /etc/profile
9、切换到oracle 用户
su - oracle
10、登录oracle
11、sqlplus /nolog
SQL> conn /as sysdba
修改sys、system密码
SQL> alter user system identified by system;
SQL> alter user sys identified by sys;
(也可以创建用户 create user test identified by test;
并给用户赋予权限 grant connect,resource,dba to test;)
修改oracle默认用户密码永不过期:
SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
SQL> exit
12、查看监听是否成功启动
lsnrctl status
查看监听配置文件:
$ cat /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora
13、连接oracle数据库时,先检查端口映射是否成功
14、使用Navicat连接oracle:
15、此时的服务名为helowin,用户名和密码都为system.
16、防火墙相关命令:
查看防火墙现在状态:systemctl status firewalld.service 如果显示一行绿色的active说明防火墙是开启状态的
关闭防火墙命令:systemctl stop firewalld.service
永久关闭防火墙命令:systemctl disable firewalld.service
17、如何卸载docker:
第一种方式,开启虚拟机,登录root账户,docker在var/lib目录下,直接放入垃圾回收站中,删除;
第二种方式:在命令行中实现 systemctl status docker 查看dockr的状态,如果为active,则使用systemctl stop docker 停止docker运行,yum list installed |grep docker 此命令是查看docker的安装包,查看docker相关的rpm源文件:rpm -qa |grep docker,使用如下命令yum -y remove docker.x86_64 删除所有安装的docker文件包, 其他的docker相关的安装包同样删除操作,删完之后可以再查看下docker rpm源 rpm -qa |grep docker,删除docker的镜像文件,默认在/var/lib/docker目录下 ,rm -rf /var/lib/docker,此时docker卸载已经完成,重新安装docker: yum -y install docker-io
18、对docker安装oracle的一些看法
Docker安装oracle比传统方式安装要简单些,但是oracle其作为重量级数据库而言部署在docker容器下,如果我们只是仅仅为了简单使用,这么安装没有问题,如果我们还想要除了默认的helowin外的实例,再去创建一个实例,docker下去创建是非常复杂的,没有像传统的在linux下安装出现图形化界面那样方便,而且现在docker技术不太成熟,作为数据库放在docker容器下,如果容器因为操作不当而被删除,那么整个数据库就会丢失,其中数据安全性没有保证。只能说每一种技术都是一把双刃剑,有好的一面也有坏的一面,我们作为使用者应该尽量取其精华去其糟粕。