Oracle 21c部署 in Docker

news/2024/7/7 19:19:37

目录

# 热分配新硬盘

# 拉取镜像

# 启动数据库

访问Oracle数据库

本环境的用途为开发测试环境;所以,分配给Oracle的资源相对较低;如果在生产环境下,请提前规范分配的CPU、内存、IO、磁盘(本地磁盘 or 网络存储、磁盘空间大小);

本案例通过docker run启动容器,当然也可以通过docker-compose、kubernetes等平台启动管理。

# 热分配新硬盘

# 手动扫描新硬盘

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

# 磁盘分区和格式化

fdisk /dev/sdd
pvcreate /dev/sdd1 

vgextend  centos_k8s-testing-02-191 /dev/sdd1
lvcreate -l15360 -n oracle centos_k8s-testing-02-191
mkfs.xfs /dev/mapper/centos_k8s--testing--02--191-oracle

#挂载磁盘到/oradata

mkdir /oradata
mount /dev/mapper/centos_k8s--testing--02--191-oracle /oradata

#写入文件系统表

vi /etc/fstab 
/dev/mapper/centos_k8s--testing--02--191-oracle /oradata          xfs     defaults        0 0
 

# 拉取镜像

1、访问https://container-registry.oracle.com/,登录后点击同意《Oracle 标准条款和限制》;
2、然后在容器环境下执行docker login container-registry.oracle.com
3、执行docker pull container-registry.oracle.com/database/enterprise:21.3.0.0
$ docker images |grep enter
container-registry.oracle.com/database/enterprise   21.3.0.0            da441e2c6de2   7 months ago    8.01GB
container-registry.oracle.com/database/enterprise   latest              da441e2c6de2   7 months ago    8.01GB

# 启动数据库

## host上的挂载目录的权限必须保证uid=54321用户的读写,所以这里要赋予777,剩下的交给oracle
chmod 777 /oradata/
id oracle
uid=54321(oracle) gid=54321(oinstall) 组=54321(oinstall),54322(dba),54323(oper)

# 启动前替换##PASSWORD##为所需的密码

docker run -d --name oracle21cee \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_SID=orcl \
-e ORACLE_PDB=orclpdb \
-e ORACLE_PWD=##PASSWORD## \
-e ORACLE_EDITION=ee \
-e ORACLE_CHARACTERSET=ZHS16GBK \
-e TZ="Asia/Shanghai" \
-e ENABLE_ARCHIVELOG=false \
-v /oradata:/opt/oracle/oradata \
container-registry.oracle.com/database/enterprise

通过docker logs -f oracle12cee查看日志。
出现如下标志则表示数据库启动成功:
#########################
DATABASE IS READY TO USE!
#########################
 

访问Oracle数据库

# sqlplus访问数据库
docker exec -it oracle12cee /bin/bash
$ sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on Fri May 19 09:55:57 2023
Version 21.3.0.0.0

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


Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL>

# 远程访问数据库,查看监听状态:The listener supports no services

$ lsnrctl status

LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 19-MAY-2023 10:25:21

Copyright (c) 1991, 2021, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 21.0.0.0.0 - Production
Start Date                19-MAY-2023 10:09:50
Uptime                    0 days 0 hr. 15 min. 31 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/9319863cd1ed/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
The listener supports no services
The command completed successfully

# 解决一:登录数据库,强制注册服务:ALTER SYSTEM REGISTER;         --- 未生效。
SQL> ALTER SYSTEM REGISTER;
System altered.
SQL> quit

# 只能使用静态注册,修改listener.ora并重启监听

cd /oradata/dbconfig/ORCL
cp -p listener.ora{,_bak}
vi listener.ora
LISTENER =
(DESCRIPTION_LIST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
  )
)


SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
    (GLOBAL_DBNAME = ORCL)
    (ORACLE_HOME = /opt/oracle/product/21c/dbhome_1)
    (SID_NAME = ORCL)
  )
  (SID_DESC =
    (GLOBAL_DBNAME = ORCLXDB)
    (ORACLE_HOME = /opt/oracle/product/21c/dbhome_1)
    (SID_NAME = ORCL)
  )
)


DEDICATED_THROUGH_BROKER_LISTENER=ON
DIAG_ADR_ENABLED = off

注意:SID_NAME和GLOBAL_DBNAME要使用大写,否则不可用,访问时报下面的错误信息。

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory


http://lihuaxi.xjx100.cn/news/1149867.html

相关文章

基于单片机的电梯控制系统研究内容及设计步骤

本课题的主要任务就是完成一个电梯系统的调度模块 ,即根据每个楼层不同 顾客的按键需求 ,让电梯做出合理的判断 ,正确高效地知道电梯完成各项载客任 务。根据此任务,本课题需要研究的内容有: 1、根据系统的技术要求,进行系统硬件的总体方案设计; 2、学习单片机的相关知识,并且加…

0601-指针的基础

内存 物理存储器和存储地址空间 物理存储器:实际存在的具体存储器芯片。比如:内存条、RAM芯片、ROM芯片。 存储地址空间:对存储器编码的范围。 编码:对每个物理存储单元(一个字节)分配一个号码寻址&…

计算卸载-论文05-双层优化(无线充电与卸载)

标题:《A Divide-and-Conquer Bilevel Optimization Algorithm for Jointly Pricing Computing Resources and Energy in Wireless Powered MEC》 期刊:IEEE TRANSACTIONS ON CYBERNETICS,2022 一、理论梳理 问题:相比于移动云…

类与对象(中)(一)

1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员 函数。 默认成员函数:用户没有显式实现,编译器…

【Win32】资源文件(对话框),逆向对话框回调函数,消息断点(附带恶意软件源码)

之前在学习windows编程的时候已经写过对话框的创建了,其中包括了对话框的分类,原理等等,大家可以去看一下:【windows编程之对话框】对话框原理,对话框的创建。原理今天就讲的不是很多了,直接给大家给出步骤…

Mybatis中处理特殊SQL处理逻辑

文章目录 0、前言1、模糊查询2、动态表名3、获取自增的组件4、批量删除 0、前言 在MyBatis中可能会有一些特殊的SQL需要去执行,一般就是模糊查询、批量删除、动态设置表名、添加功能获取自增的主键这几种,现在分别来进行说明。 为了方便演示 &#xff0…

激光点云3D目标检测算法之CenterPoint

激光点云3D目标检测算法之CenterPoint 本文首发于公众号【DeepDriving】,欢迎关注。 前言 CenterPoint是CVPR 2021的论文《Center-based 3D Object Detection and Tracking》中提出的一个激光点云3D目标检测与跟踪算法框架,与以往算法不同的是&#xff…

ATA-2000系列高压放大器在压电陶瓷中的典型应用

ATA-2000系列高压放大器在压电陶瓷中的典型应用 压电陶瓷介绍: 压电陶瓷是一种能够将机械能和电能互相转换的陶瓷材料。压电陶瓷除具有压电性外,还具有介电性、弹性等,已被广泛应用于医学成像、声传感器、声换能器、超声马达等。压电陶瓷利用其材料在机…