抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言

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

安装Oracle-12c

1.拉取Oracle-12c镜像

启动「Docker Desktop」后在cmd窗口中执行docker search oracle命令,搜索Oracle相关的镜像,可以看到搜索结果中的「truevoly/oracle-12c」

img

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

image-20230731143043568

2.创建并启动容器

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

docker run -d -p 2122:22 -p 9090:8080 -p 1521:1521 -v /var/app/oracle:/u01/app/oracle/ --name oracle-12c truevoly/oracle-12c

image-20230731144548093

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

# 查看oracle-12c启动日志
docker logs -f oracle-12c

image-20230731144821838

3.修改oracle账号密码设置

truevoly/oracle-12c镜像创建的容器「默认有syssystem两个用户,密码都是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;

Oracle创建表空间与用户

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

-- 创建ling_mf3数据表空间
create tablespace ling_mf3 datafile '/u01/app/oracle/oradata/ling_mf3.dbf' size 50M;

image-20230731150424822

以下创建一个用户ling并授权,且设置ling_mf3为它的默认表空间

重启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';

评论