内网docker装oracle
一、内网装dorcker
-
下载docker源码
按需下载
- 将下载好的的包上传到对应服务器
解压
tar -zxvf docker-26.1.4.tgz
解压完之后的文件夹是docker
-
移动到可执行文件目录下
mv docker/* /usr/bin/
-
配置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
-
启动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
-
上传docker-oracle镜像包
-
导入镜像包
docker load -i 镜像包
-
执行
docker images
检查是否存在镜像oracle:oracle11g
存在则导入成功
-
创建并启动容器
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
这个卷的路径就是数据持久化存放的位置
-
进入容器进行配置
docker exec -it oracle11g bash
-
创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
#可以全局使用sqlplus -
登录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; 配置密码不过期
-
创建用户并指定表空间,授权
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
-
提示数据库没有打开
输入:alter datebase open
还有出现:datebase not mountd
-
提示数据库没有被挂载
输入: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