博文目录
文章目录
- 说明
- 命令
- Navicat
- SYSTEM
- PDBADMIN
- 扩展
- 公共用户
- 本地用户
说明
Oracle 官方镜像仓库
Database 23ai Free | Oracle
Docker 官方没有提供 Oracle Database 相关镜像, 但是 Oracle 官方镜像仓库有提供, 打开上面的链接, 选择 Database, 选择合适的版本, 如 enterprise, express 和 free, 这里以 free 为例. Free 分为 FULL 和 LITE 两个版本, 这里以 LITE 为例
Oracle Database Free 有使用限制, 前台进程最多 2 个 CPU, 2 GB RAM 和 12 GB 用户数据(硬盘)
Oracle Database 23ai Free offers the ability to experience Oracle Database, which businesses throughout the world rely on for their mission-critical workloads. The resource limits for Oracle Database Free are up to 2 CPUs for foreground processes, 2 GB of RAM and 12 GB of user data on disk. It is packaged for ease of use and simple download.
数据卷 | 数据卷印射在容器内的路径 |
---|---|
oracle | /opt/oracle/oradata |
容器内的路径 | 说明 |
---|---|
/opt/oracle/oradata | 数据目录 |
/opt/oracle/scripts/startup | 数据库启动后要运行的自定义脚本目录 |
命令
docker run -d --name oracle -p 1521:1521 -e TZ=Asia/Shanghai -e ORACLE_PWD=Mrv587.. -v oracle:/opt/oracle/oradata container-registry.oracle.com/database/free:23.4.0.0-lite
# 查看日志
docker logs oracle
# 跟踪日志
docker logs -f oracle
docker logs --follow oracle
# 查看最后10条日志
docker logs --tail 10 oracle
# 查看最近10分钟的日志
docker logs --since 10m oracle
# 进入容器并执行 bash
docker exec -it oracle bash
# 退出容器
exit
# 直接从主机进入客户端
docker exec -it oracle sqlplus sys/Mrv587..@FREE as sysdba
docker exec -it oracle sqlplus system/Mrv587..@FREE
docker exec -it oracle sqlplus pdbadmin/Mrv587..@FREEPDB1
# 创建公共用户
# -- 以具有DBA权限的用户连接到数据库
CONNECT sys/password AS SYSDBA;
# -- 切换到根容器
ALTER SESSION SET CONTAINER = CDB$ROOT;
# -- 创建公共用户
CREATE USER C##COMMON_USER IDENTIFIED BY password;
# -- 授予公共用户权限
GRANT DBA TO C##COMMON_USER;
# 创建本地用户
# -- 以具有DBA权限的用户连接到数据库
CONNECT sys/password AS SYSDBA;
# -- 切换到目标 PDB,例如 freepdb1
ALTER SESSION SET CONTAINER = freepdb1;
# -- 创建本地用户
CREATE USER LOCAL_USER IDENTIFIED BY password;
# -- 授予本地用户权限
GRANT CONNECT, RESOURCE TO LOCAL_USER;
Navicat
SYSTEM
PDBADMIN
扩展
Oracle PDB(Pluggable Database,可插拔数据库)是 Oracle Multitenant 架构的一部分,这一架构在 Oracle 12c 中引入。Multitenant 架构允许一个单独的容器数据库(Container Database,CDB)容纳多个独立的 PDB。每个 PDB 可以被认为是一个完全独立的数据库实例,具有自己的数据文件、系统表空间和用户表空间。
在 Oracle Multitenant 架构中,每个 PDB 都有一个默认的管理账户,通常命名为 PDBADMIN。这个账户类似于单实例 Oracle 数据库中的 SYSTEM 用户,但它的权限范围仅限于 PDB 本身。
在 Oracle 12c 及其后的版本中,引入了多租户架构,支持容器数据库(CDB)和可插拔数据库(PDB)。在这种架构中,用户可以分为公共用户(Common Users)和本地用户(Local Users)。这两种用户类型有不同的特性和用途。
- 公共用户(Common Users):在整个 CDB 中具有统一身份,必须以 C## 开头,管理范围覆盖所有 PDB,适用于全局性管理和操作。
- 本地用户(Local Users):仅存在于特定 PDB 中,没有命名规则限制,管理范围仅限各自 PDB,适用于特定应用或业务需求。
公共用户
- 公共用户是一个在 CDB 的根容器(CDB$ROOT)和所有 PDB 中都存在的用户。这个用户在创建时自动存在于每个 PDB 中。
- 公共用户的名称必须以 C## 或 c## 开头。例如:C##ADMIN。
- 公共用户在 CDB 和所有 PDB 中具有统一的身份。创建、修改或删除公共用户时,这些操作会自动应用到 CDB 和所有 PDB。
- 公共用户通常用于管理和维护整个 CDB。例如,DBA 可能会创建一个公共用户来管理所有 PDB 中的资源或执行全局性操作。
本地用户
- 本地用户是只存在于特定 PDB 中的用户。每个 PDB 可以有自己的本地用户,这些用户只能在各自的 PDB 中操作。
- 本地用户的名称没有特殊的命名规则限制,可以是任何合法的 Oracle 用户名(不需要以 C## 开头)。
- 本地用户只能在创建它的 PDB 中存在和操作。本地用户无法访问其他 PDB,也不能在根容器(CDB$ROOT)中存在。
- 本地用户通常用于特定应用程序或业务单元,只需要访问和操作一个特定 PDB 中的数据。