前言
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后台加群艾特我咨询!