Docker安装oracle19c
1. 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
2. 创建目录并赋权
mkdir -p /docker/oracle19c/oradata
chmod 777 /docker/oracle19c/oradata
3. 构建容器并启动
docker run -d -p 1521:1521 -p 5502:5500 -e ORACLE_SID=ORCLCDB -e ORACLE_PDB=ORCLPDB -e ORACLE_PWD=oracle -e ORACLE_EDITION=standard -e ORACLE_CHARACTERSET=AL32UTF8 -v /docker/oracle19c/oradata/:/opt/oracle/oradata/ -v /etc/localtime:/etc/localtime:ro
--name oracle_19c registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
=========================================================
- docker run: 运行 Docker 容器的命令。
- -d: 指定容器在后台运行(detached mode)。
- -p 1521:1521: 将容器的 1521 端口映射到主机的 1521 端口,Oracle 数据库监听端口。
- -p 5502:5500: 将容器的 5500 端口映射到主机的 5502 端口,用于 Oracle Enterprise Manager Express 访问的端口。
- -e ORACLE_SID=ORCLCDB: 设置 Oracle 实例的 SID(System Identifier),这里设置为 ORCLCDB。
- -e ORACLE_PDB=ORCLPDB: 设置 Oracle 的 Pluggable Database(PDB)的名称,这里设置为 ORCLPDB。
- -e ORACLE_PWD=oracle: 设置 Oracle 系统用户 SYS 和 SYSTEM 的初始密码为 oracle。
- -e ORACLE_EDITION=standard: 设置 Oracle 的版本为标准版(standard),这影响 Oracle 的功能集。
- -e ORACLE_CHARACTERSET=AL32UTF8: 设置 Oracle 数据库的字符集为 AL32UTF8,即 Unicode 字符集。
- -v /docker/oracle19c/oradata/:/opt/oracle/oradata/: 将主机上的 /docker/oracle19c/oradata/ 目录挂载到容器内的 /opt/oracle/oradata/ 目录,用于持久化存储数据库文件。
- –name oracle_19c: 指定容器的名称为 oracle_19c。
- registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c: 指定要运行的 Docker 镜像,这里是从阿里云的镜像仓库中拉取并运行名为 oracle:19c 的镜像。
-v /etc/localtime:/etc/localtime:ro
这个命令的作用是将宿主机上的时区设置文件(/etc/localtime
)挂载到Docker容器中相同的位置,使容器能够使用与宿主机相同的时区设置。
具体来说,这个命令的各部分意义如下:
-v
:这是Docker命令用来指定挂载卷的标志(Volume)。/etc/localtime
:这是宿主机上时区文件的路径。该文件包含了当前时区的信息。:/etc/localtime
:这是容器内部的挂载点,即容器内与宿主机/etc/localtime
文件对应的路径。:ro
:这表示以只读方式挂载(Read-Only)。容器可以读取该文件,但无法修改它,这样可以防止容器的操作影响宿主机的时区设置。
这样做的好处是保证容器内的应用程序可以正确处理与时区相关的操作,例如记录日志的时间戳、执行定时任务等。这对于需要时区一致性的应用程序来说非常重要。例如,如果你在上海运行宿主机,而你的容器也应当使用东京的时区,通过这种方式挂载/etc/localtime
,你的容器将会自动采用上海的时区,而无需在容器内单独配置时区。
这个命令通过 Docker 在后台运行 Oracle 19c 数据库容器,并配置了数据库实例的 SID、PDB 名称、密码、字符集等参数,同时将数据库数据目录挂载到主机上的指定目录,确保数据持久化。
============================================================
4. 查看日志
安装有点慢,请耐心等待执行完成
5. 登录docker容器里面
docker exec -it oracle_19c /bin/bash
6. 登录sqlplus 创建PDB用户
sqlplus / as sysdba
在 Oracle 数据库中,sqlplus / as sysdba 是一种连接到数据库的方式,其中:
sqlplus 是 Oracle 提供的交互式 SQL 工具,用于与 Oracle 数据库进行交互和执行 SQL 命令。
/ as sysdba 是一种特殊的连接方式,其中 / 表示连接时不需要输入用户名,sysdba 是系统管理员角色的一种,具有最高权限,可以执行数据库的管理操作。
因此,当你使用 sqlplus / as sysdba 命令连接到 Oracle 数据库时,你将以系统管理员 (sysdba) 的身份登录,拥有对数据库实例进行各种管理操作的权限。这种连接方式常用于执行数据库的操作和维护,例如创建和修改数据库对象、备份和恢复数据等。需要谨慎使用,以免误操作导致不可逆的损坏。
7. 查看show pdbs
show pdbs
7. 切换数据库
alter session set container=ORCLPDB;
8. 创建用户
9. 授权
在 Oracle 数据库中,GRANT DBA TO user; 是一种授权命令,用于赋予指定用户(user)数据库管理员 (DBA) 的权限。具体到你的问题 grant dba to root;,这个命令的含义如下:
GRANT: 这是 Oracle 数据库中用于授权的关键字,用于给予用户特定的权限。
DBA: 是一个预定义的角色(Role),代表数据库管理员角色,具有数据库的最高权限。DBA 角色允许用户管理数据库对象、执行系统级别的任务等。
TO: 表示授权的目标,即要授予权限的用户或角色。
root: 在你的命令中,root 可能指的是操作系统中的 root 用户,但需要注意,在 Oracle 数据库中,通常需要使用数据库用户(例如 SYS 用户)来执行授权操作,而不是操作系统的 root 用户。
10. 使用navicat连接