拉取oracle11g镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
创建11g容器
docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
查看容器是否创建成功
docker ps -a
导出oracle容器,查看正在运行的 Docker 容器的 ID 或名称,假设容器的名称为oracle11g
docker export oracle11g > oracle11g.tar
给导出容器加775权限
chmod 775 oracle11g.tar
离线环境先重启docker
sudo systemctl restart docker
把oracle11g.tar拷贝到离线环境,用以下命令加载docker镜像
docker load -i oracle11g.tar
查看镜像
docker images
修改镜像版本名称和名字
docker tag id name:v
修改成功后再查看
docker images
启动oracle,把docker 里面的db文件外挂到宿主机,做文件的持久化
docker run -d -p 1521:1521 --name oracle11g -v /my/local/path/oracle11g:/opt/oracle/oradata oracle11g:v1
这条命令运行一个名为 oracle11g的容器,映射主机的1521端口到容器的1521端口,并将容器内的 /opt/oracle/oradata目录映射到主机上的 /my/local/path/oracle11g路径。下面是一些解释:
-d :以守护进程方式在后台运行容器。
-p 1521:1521:将主机的1521端口映射到容器的1521端口,允许通过主机访问Oracle数据库服务。
--name oracle11g:为容器指定一个名称为 oracle11g,方便管理和识别容器。
-v /my/local/path/oracle11g:/opt/oracle/oradata :将主机上的 /my/local/path/oracle11g目录挂载到容器内的 /opt/oracle/oradata目录,用于持久化存储Oracle数据库数据。
oracle11g:v1:运行的镜像名称及版本。
综上所述,这个命令的目的是以后台模式运行一个 Oracle 11g 数据库容器,可以通过主机的1521端口访问数据库服务,并且数据存储在主机的 /my/local/path/oracle11g目录中。如果镜像名称和版本正确,并且本地路径 /my/local/path/oracle11g存在且合适,那么这个命令会成功运行容器。
配置oracle
docker exec -it oracle11g bash
切换到root下
su root
密码:helowin
配置profile文件
vi /etc/profile
在最后加3行
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
保存:wq
让配置生效:source /etc/profile
创建连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
切换到oracle账户
su - oracle
修改sys、system密码
sqlplus /nolog
conn /as sysdba
alter user system identified by oracle;
alter user sys identified by oracle;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改中文编码
select * from nls_database_parameters;
alter database character set ZHS16GBK;
如果遇到不能修改,则调用以下步骤:
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 ZHS16GBK;
当系统提示字符集必须为旧字符集的超集时,可用下面的句强制修改字符集
alter database character set internal_use ZHS16GBK;
查看实例
lsnrctl status
到上面数据库就准备好了
解决连接受限问题
ALTER SYSTEM DISABLE RESTRICTED SESSION:
连接成功
参考:Docker安装Oracle_11g的方法_docker安装oracle11g-CSDN博客