当前位置: 首页 > news >正文

docker装Oracle

内网docker装oracle

一、内网装dorcker
  1. 下载docker源码
https://download.docker.com/

按需下载

  1. 将下载好的的包上传到对应服务器

解压

tar -zxvf docker-26.1.4.tgz

解压完之后的文件夹是docker

  1. 移动到可执行文件目录下
mv docker/* /usr/bin/
  1. 配置docker.service
vim /usr/lib/systemd/system/docker.service

将下面的内容填进去

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target

  1. 启动docker服务并开启自启动
systemctl daemon-reload
systemctl start docker.service
docker info
systemctl enable docker

如果习惯用容器编排,附带docker-compose下载地址

https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64

给他可执行的权限

sudo chmod +x /usr/bin/docker-compose

检查是否成功安装

docker-compose --version
二、安装docker-oracle
  1. 上传docker-oracle镜像包

  2. 导入镜像包

docker load -i 镜像包
  1. 执行docker images 检查是否存在镜像 oracle:oracle11g

存在则导入成功

  1. 创建并启动容器
docker run -itd \
  --name oracle11g \
  -p 1521:1521 \
  -p 5500:5500 \
  --mount source=oracle_vol,target=/opt/oracle/app/oradata \
  -e ORACLE_HOME=/opt/oracle/app/product/11.2.0/dbhome_1 \
  -e ORACLE_SID=orcl \
  -e PATH=$ORACLEHOME/bin:PATH \
  --restart always \
  yycx/oracle11 
  
  挂载的数据有点大 run的时候可能会比较慢,如果只是为了测试搭建,可以不挂载数据持久化

-p 宿主机映射端口:docker端口

–name 容器的名字

–restart=alway 开机自启动

–mount source=oracle_vol,target=/opt/oracle/app/oradata \ 挂载磁盘实现数据持久化

-e ORACLE_SID=ORCL \ 实例名字用来连接的

#新建docker卷-----docker volume create oracle11g

#查看docker卷-------docker volume ls

#卷路径-------find / -name oracle11g

这个卷的路径就是数据持久化存放的位置

  1. 进入容器进行配置
docker exec -it oracle11g bash
  1. 创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
#可以全局使用sqlplus
  1. 登录Oracle的一些初始化操作
su - oracle  切换oracle

sqlplus /nolog  启动sqlplus但不立即登录数据库
 
connect /as sysdba  以sysdba去登录oracle

alter user system identified by nomax;  修改system的密码是nomax
alter user sys identified by nomax;  修改sys 的密码是nomax 
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;  配置密码不过期
alter system set processes=3000 scope=spfile;  修改最大连接数是1000

/var/lib/docker/overlay2/5d0e62177be4567dd6f55c8edfaa13d2165bb4ba54e7f831d54602bad7f5d5f8/merged/opt/oracle/auditlogs


dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -gdbname $ORACLE_SID \
  -sid $ORACLE_SID \
  -responseFile NO_VALUE \
  -characterSet AL32UTF8 \
  -sysPassword SysPassword1 \
  -systemPassword SystemPassword1 

sqlplus /nolog 启动sqlplus但不立即登录数据库

connect /as sysdba 以sysdba去登录

alter user system identified by nomax; 设置system的密码是nomax
alter user sys identified by nomax; 设置sys的密码是nomax

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 配置密码不过期

  1. 创建用户并指定表空间,授权
SQL> create user nomax IDENTIFIED BY nomax default tablespace nomax;

User created.

SQL> grant connect,resource,dba to nomax;

Grant succeeded.

创建一个nomax的用户,分配表空间nomax,密码是nomax,授予他connect,resource,dba的权限

题外话:

conn /as sysdba;
shutdown immediate; --关闭数据库
startup; --启动数据库
show user;

修改密码的时候会出现:database not open

  1. 提示数据库没有打开
输入:alter datebase open

还有出现:datebase not mountd

  1. 提示数据库没有被挂载
输入:alter database mount;
输入:alter database open;

这个没被挂载是因为宿主机和docker 挂载磁盘出现的问题,有可能是权限dockers的oracle没有权限存放到映射的宿主机目录,也有可能是操作问题,本来我是直接-v映射的,但是一直出现这个问题,后来索性用了挂载volume卷,解决了。

审计日志
#查看审计日志是否开启
show parameter aud;

#修改审计记录方式(xml,extend)
alter system set audit_trail=xml,extended scope = spfile;

#开启 sysdba 或 sysoper 审计
alter system set audit_sys_operations=true scope =spfile;

#查看审计
show parameter aud 
show parameter audit_trail

#更新审计日志存放路径
alter system set audit_file_dest='/opt/oracle/auditlogs' deferred;

shutdown immediate
startup


#开启所用账号,所有表 insert/update/delete/select 审计
audit insert table,update table,delete table,select table;
audit execute procedure;

#开启 drop table、alter table 和 create table 审计
AUDIT table BY ACCESS;

清除docker 构建的缓存

docker builder prune

相关文章:

  • Spring MVC源码分析のinit流程
  • Rust语言:开启高效编程之旅
  • 线程安全---java
  • 阿里发布新开源视频生成模型Wan-Video,支持文生图和图生图,最低6G就能跑,ComFyUI可用!
  • 比特币中的相关技术
  • Oracle数据恢复:闪回查询
  • 工程化与框架系列(26)--前端可视化开发
  • 【芯片验证】verificationguide上的36道UVM面试题
  • 模型压缩技术(二),模型量化让模型“轻装上阵”
  • USB2.0 学习(1)字段和包
  • 游戏官方网站:pc页面与移动端布局做到响应式的因素
  • 点云从入门到精通技术详解100篇-基于深度学习的三维点云分类分割
  • Spring Boot 调用DeepSeek API的详细教程
  • Python Flask 使用不同的 HTTP 方法类型处理请求
  • Maxkb——无需代码,快速构建自己的AI助手
  • DeepSeek写重力球迷宫手机小游戏
  • SGM: Sequence Generation Model for Multi-Label Classification
  • C++【类和对象】
  • neo4j随笔-将csv文件导入知识图谱
  • 正则表达式(3)常见的正则表达式及语法明细
  • 国家卫生健康委通报关于肖某引发舆情事件调查处置进展情况
  • 财政部党组召开2025年巡视工作会议暨第一轮巡视动员部署会
  • 在稳市场稳预期下,投资者教育给了散户更多底气
  • 外企聊营商|特雷通集团:税务服务“及时雨”
  • 美政府以拨款为要挟胁迫各州服从移民政策,20个州联合起诉
  • 习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式