前言

MySQL和Oracle是开发中常用到的两个关系型数据库管理系统,接上一期内容,这一期在Docker中完成oracle-12c的安装和配置。

安装oracle-12c

1、拉取oracle-12c镜像

启动Docker Desktop后在cmd窗口中执行docker search oracle命令,搜索Oracle相关的镜像,可以看到搜索结果中的truevoly/oracle-12c 不指定版本则默认下载oracle-12c最新版本的镜像,Oracle的镜像文件较大,拉取镜像会久一些。

# 拉取镜像(默认下载oracle-12c最新版本的镜像)

docker pull truevoly/oracle-12c

2、创建并启动容器

cmd中执行以下命令,在docker中创建并启动一个oracle-12c容器,对物理机暴露2122、9090和1521三个端口分别映射到容器内的22、8080和1521端口,并且将容器内的oracle目录挂载到物理机的D盘中

# 创建oracle-12c容器并启动

docker run -d -p 2122:22 -p 9090:8080 -p 1521:1521 -v D:\lingSoftware\Docker\WorkSpace\Oracle:/u01/app/oracle/ --name oracle-12c truevoly/oracle-12c

查看容器启动日志(看到Import finished Database ready to use. Enjoy! 即容器创建并启动完成)

# 查看oracle-12c启动日志

docker logs -f oracle-12c

若日志中出现以下报错,是因为对外暴露的端口不可用访问权限已被禁止,只要更改创建容器时对外暴露的端口即可

docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:1521 -> 0.0.0.0:0: listen tcp 0.0.0.0:1521: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

可在cmd中执行以下命令查看哪些端口被禁用TCP协议

# cmd命令查看哪些端口被禁用TCP协议

netsh interface ipv4 show excludedportrange protocol=tcp

3、修改oracle账号密码设置

truevoly/oracle-12c镜像创建的容器默认有sys和system两个用户,密码都是oracle,默认的一个SID/服务名是xe,Oracle的用户密码默认有效期是180天,180天后用户会自动锁住,下面进入oracle-12c容器内将密码的有效期设置为永久!

# 进入oracle-12c容器内

docker exec -it oracle-12c /bin/bash

# 切换成oracle用户

su oracle

# 进入sqlplus

$ORACLE_HOME/bin/sqlplus / as sysdba

# 设置密码有效期为无限制

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

# 解锁system用户

SQL> alter user SYSTEM account unlock;

4、物理机连接oracle-12c

使用PL/SQL或Navicat等工具测试连接oracle-12c

拓展

Oracle创建表空间与用户

以下创建一个ling_mf3数据表空间

-- 创建ling_mf3数据表空间

create tablespace ling_mf3 datafile '/u01/app/oracle/data/ling_mf3.dbf' size 50M;

创建表空间成功,同时也会在挂载的目录下生成相应数据文件 以下创建一个用户ling并授权,且设置ling_mf3为它的默认表空间

-- 创建ling用户密码为meet0and1#202302并设置ling_mf3为它的默认表空间

create user ling identified by "meet0and1#202302" default tablespace ling_mf3;

-- 给用户ling授权 dba:管理员的权限

grant connect,resource,dba to ling;

重启Oracle服务

在Docker Desktop中可以一键重启,但实际开发中一般是在Linux环境中,我这里演示用命令重启Oracle服务

-- 查看监听状态

lsnrctl status

-- 停监听

lsnrctl stop

sqlplus / as sysdba

-- 停止oracle

SQL>shutdown immediate;

-- 启服务

SQL>startup;

SQL>exit

-- 启监听

lsnrctl start

更多常用…

-- 删除表空间

drop tablespace ling_mf3;

-- 查询所有的表空间

select tablespace_name from dba_tablespaces;

-- 查看当前的用户和表空间

select username,default_tablespace from user_users;

-- 查看当前用户的角色

select * from user_role_privs;

-- 查询实例名/SID/服务名

select instance_name from v$instance;

-- 查看Oracle版本

select * from v$version;

-- 查看数据库允许的最大连接数

select value from v$parameter where name = 'processes';

-- 查看当前连接数

select count(*) from v$process;

-- 查看数据库当前会话的连接数

select count(*) from v$session;

-- 查看数据库当前的并发连接数

select count(*) from v$session where status = 'ACTIVE';

后记

若有问题可在公众号遇见0和1后台加群艾特我咨询!

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: