Docker(二)集成Oracle

521 阅读2分钟

前置知识点

docker run [options] image // 创建一个新的容器并运行一个命令
--name="name" // 为容器指定一个名称
-d // 后台运行容器,并返回容器ID
-p // 指定端口映射,格式为:主机(宿主)端口:容器端口 e.g: -p 80:80 将宿主机的80端口映射到容器的80端口
--dns 8.8.8.8 // 指定容器使用的DNS服务器,默认和宿主一致
--volume | -v // 绑定一个卷,将外部文件绑定到容器内配置文件 e.g: nginx.config绑定到外部文件
-e path="dev" // 设置一个环境变量
--rm  // 在容器退出后默认不会清空用户数据方便保留,加上 --rm可以在删除时清空用户数据

Oracle镜像拉取

## 查找oracle镜像
docker search oracle

image-20211122152504278.png 这里选取了wnameless/oracle-xe-11g-r2这个镜像

## 拉取镜像
docker pull wnameless/oracle-xe-11g-r2

运行Oracle镜像

## 运行镜像 - 映射1521端口,后台运行,允许外部连接
docker run -d -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g-r2

## 查看镜像状态
docker ps

image-20211122153023065.png

## 查看对应端口号状态
lsof -i:1521
## 进入容器 查看orcale数据库信息 [name]对应docker容器名称
docker exec -it [name] bash

## 进入sqlplus
sqlplus /nolog

## 使用sysdba角色登录sqlplus
conn sys/oracle as sysdba

## 查询当前实例下的数据库
select name from v$database;

## 退出
SQL > exit;	# 退出sqlplus
root@20bd6a9226b3:/ exit; # 退出容器

使用navicat链接oracle

image.png

创建表空间

进入sqlplus之前要先做两步 首先为表空间创建目录,不然会报错no such file or directory 其次,要打开对应文件的读写权限,不然会报错Linux-x86_64 Error: 13: Permission denied

ps. 就离谱,查了半天全都是直接create templatespace 名都一样,全是复制粘贴的

## 进入容器后 新增目录
docker exec -it [name] bash
cd /home
mkdir oracle
cd oracle
## 只是我放在这里了
mkdir data
## 放宽读写权限
chmod -R 777 /home/oracle/data
sqlplus /nolog
conn sys/oracle as sysdba
## 创建表空间 
## create tablespace dev datafile '/home/oracle/data/dev.dbf' size 512M reuse autoextend on next 50M;
create templatespace [tablename] datafile [path] [options]
## 创建用户 关联表空间
## create user user identified by 123456 default tablespace dev;
create user [username] identified by [password] default tablespace [tablename];
## 给用户添加权限
grant [connect | dba | sysdba...] to [username] [...options]