使用Docker搭建Oracle19c运行环境

一、拉取镜像(这里是我使用oracle官方的dockerfile构建的镜像)

$ docker pull registry.cn-hangzhou.aliyuncs.com/it-boy/oracle19c
Using default tag: latest
latest: Pulling from it-boy/oracle19c
f09c1d3b7e7b: Pull complete
e21babc95602: Pull complete
0f5197b95f24: Pull complete
81249adac3a0: Pull complete
2bd243282769: Downloading [=======================>                           ]  1.241GB/2.611GB
c97d0f42641c: Download complete

二、启动容器(这里我用作测试就没挂载数据目录,有需要 可以配置挂载到容器的/opt/oracle/oradata目录)

docker run -d --name oracle-19c --restart=always \
 -e ORACLE_SID=ORCL \
 -e ORACLE_PDB=TEST \
 -e ORACLE_PWD=123456 \
  -p 1521:1521  -p  5500:5500 \
registry.cn-hangzhou.aliyuncs.com/it-boy/oracle19c:latest

三、创建用户

从Oracle 12C开始引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图。
————————————————版权声明:本文为CSDN博主「晨港飞燕」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq877507054/article/details/81209967

通常在CDB上建立的用户是common user,新建用户名前要加C##。在PDB上创建的用户是local user。

3.1 在CDB上创建用户
3.1.1 连接并创建用户
$ docker exec -it oracle-19c /bin/bash
[oracle@2079a6e391ad ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 11 13:44:08 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>select name,cdb from v$database;

NAME      CDB
--------- ---
ORCL      YES

SQL> create user C##test identified by testpass;

User created.
3.1.2 授权
SQL> grant dba,connect,resource,create view to C##test;

Grant succeeded.
SQL> grant create session to C##test;
SQL> grant select any table to C##test;
SQL> grant update any table to C##test;
SQL> grant insert any table to C##test;
SQL>  grant delete any table to C##test;
3.1.3 删除用户
SQL> drop user C##test cascade;

User dropped.
3.2 在PDB上创建用户
3.2.1 查看PDB name并进入
SQL> select pdb_id,pdb_name,dbid,status,creation_scn from dba_pdbs;

    PDB_ID
----------
PDB_NAME
--------------------------------------------------------------------------------
      DBID STATUS     CREATION_SCN
---------- ---------- ------------
         3
TEST
1104146582 NORMAL          2123203

         2
PDB$SEED
2864464127 NORMAL          2002450

    PDB_ID
----------
PDB_NAME
--------------------------------------------------------------------------------
      DBID STATUS     CREATION_SCN
---------- ---------- ------------


SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;

    CON_ID       DBID
---------- ----------
NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------
         2 2864464127
PDB$SEED
READ ONLY

         3 1104146582
TEST
READ WRITE

    CON_ID       DBID
---------- ----------
NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------


SQL> alter session set container=TEST;
3.2.2 在PDB上创建用户并授权
SQL> create user test2 identified by test2pass;

User created.

SQL> grant dba,connect,resource,create view to test2;

Grant succeeded.

SQL> grant select any table to test2;

Grant succeeded.
3.2.3 登录方式 sqlplus 用户名/密码@PDB
[oracle@2079a6e391ad ~]$ sqlplus test2/test2pass@TEST

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 11 14:02:52 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

四、SpringBoot中配置连接方式

4.1 CDB模式
spring.datasource.url=jdbc:oracle:thin:@192.168.186.10:1521:ORCL
spring.datasource.username=C##test
spring.datasource.password=testpass
4.2 PDB模式
spring.datasource.url=jdbc:oracle:thin:@//192.168.186.10:1521/TEST
spring.datasource.username=test2
spring.datasource.password=test2pass
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在无网环境下安装 Oracle 19c 需要做以下几个步骤: 1. 准备安装文件 在有网环境中下载 Oracle 19c 的安装文件,可以是 zip 或 tar.gz 格式,然后将其复制到无网环境下的服务器上。 2. 安装依赖 Oracle 19c 的安装需要一些依赖,如 libaio、libnsl、libXext、libXrender、libXtst 等,需要先在无网环境中安装这些依赖。可以使用以下命令安装: ``` yum install -y libaio libnsl libXext libXrender libXtst ``` 3. 创建 Dockerfile 创建一个 Dockerfile 文件,指定使用的基础镜像、安装 Oracle 19c、创建数据库实例、配置监听等。下面是一个示例 Dockerfile 文件: ``` FROM oraclelinux:7-slim # 设置环境变量 ENV ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 \ ORACLE_SID=ORCLCDB \ PATH=$ORACLE_HOME/bin:$PATH \ LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib # 安装必要软件 RUN yum install -y libaio libnsl libXext libXrender libXtst openssl && \ yum clean all && \ rm -rf /var/cache/yum # 创建用户和组 RUN groupadd -g 54321 oinstall && \ groupadd -g 54322 dba && \ useradd -u 54321 -g oinstall -G dba oracle && \ echo "oracle:oracle" | chpasswd && \ mkdir -p /opt/oracle && \ chown -R oracle:oinstall /opt/oracle # 拷贝安装文件 COPY linuxx64_193000_db_home.zip /tmp/ # 解压安装文件 RUN unzip /tmp/linuxx64_193000_db_home.zip -d /tmp && \ rm /tmp/linuxx64_193000_db_home.zip && \ /tmp/database/runInstaller -silent -ignorePrereq -waitforcompletion \ oracle.install.option=INSTALL_DB_SWONLY \ ORACLE_HOSTNAME=localhost \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=/opt/oraInventory \ SELECTED_LANGUAGES=en \ ORACLE_HOME=$ORACLE_HOME \ ORACLE_BASE=/opt/oracle \ oracle.install.db.InstallEdition=EE \ oracle.install.db.OSDBA_GROUP=dba \ oracle.install.db.OSOPER_GROUP=dba \ oracle.install.db.OSBACKUPDBA_GROUP=dba \ oracle.install.db.OSDGDBA_GROUP=dba \ oracle.install.db.OSKMDBA_GROUP=dba \ oracle.install.db.OSRACDBA_GROUP=dba \ SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \ DECLINE_SECURITY_UPDATES=true # 配置监听 COPY listener.ora tnsnames.ora /opt/oracle/product/19c/dbhome_1/network/admin/ RUN chown oracle:oinstall /opt/oracle/product/19c/dbhome_1/network/admin/*.ora && \ chmod 644 /opt/oracle/product/19c/dbhome_1/network/admin/*.ora # 创建数据库实例 USER oracle RUN $ORACLE_HOME/bin/dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname ORCLCDB -sid ORCLCDB \ -sysPassword oracle \ -systemPassword oracle \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName ORCLPDB1 \ -pdbAdminPassword oracle \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement false \ -totalMemory 1024 \ -redoLogFileSize 50 \ -emConfiguration NONE \ -datafileDestination /opt/oracle/oradata # 暴露监听端口 EXPOSE 1521 # 启动监听 CMD $ORACLE_HOME/bin/tnslsnr && tail -f $ORACLE_HOME/network/log/listener.log ``` 在该示例中,我们使用的基础镜像是 Oracle Linux 7,安装了 libaio、libnsl、libXext、libXrender、libXtst 和 openssl。我们创建了用户和组 oracle、oinstall 和 dba,并拷贝了安装文件 linuxx64_193000_db_home.zip。在 Dockerfile 中执行安装过程,并配置了监听、创建了一个名为 ORCLCDB 的实例。最后,我们暴露了监听端口 1521,并在启动容器时启动了监听。 4. 构建镜像 在 Dockerfile 所在目录执行以下命令构建镜像: ``` docker build -t oracle:19c . ``` 5. 运行容器 使用以下命令运行容器: ``` docker run -d -p 1521:1521 --name oracle19c oracle:19c ``` 其中,`-d` 表示在后台运行容器,`-p` 指定容器内外端口映射,`--name` 指定容器名称。 以上是在无网环境下通过 Docker 安装 Oracle 19c 的基本步骤,具体细节可能会因环境而异。在实际操作中需要根据具体情况进行调整。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值