Oracle 21c部署 in Docker

目录

# 热分配新硬盘

# 拉取镜像

# 启动数据库

访问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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Linux上安装Oracle Database 21c,可以使用Docker容器化技术进行安装。下面是一些基本步骤: 1. 首先,确保你已经在Linux上安装了Docker。如果没有安装,请根据你的Linux发行版文档进行安装。 2. 在终端中运行以下命令,从Docker Hub下载Oracle Database 21c的镜像: ``` docker pull store/oracle/database-enterprise:21.3.0.0 ``` 3. 下载Oracle Database 21c的安装文件。你需要前往Oracle官方网站(https://www.oracle.com/database/technologies/oracle21c-linux-downloads.html)并获取适用于Linux的安装文件。 4. 将下载的安装文件复制到一个目录中,比如 `/opt/oracle21c` 5. 使用以下命令启动Docker容器并安装Oracle Database 21c: ``` docker run -d -it --name oracle21c \ -p 1521:1521 -p 5500:5500 \ -e ORACLE_SID=ORCLCDB \ -e ORACLE_PDB=ORCLPDB1 \ -e ORACLE_PWD=your_password \ -v /opt/oracle21c:/install \ store/oracle/database-enterprise:21.3.0.0 ``` 这个命令会创建一个名为 `oracle21c` 的Docker容器,并将它与主机的1521端口和5500端口进行映射。你需要将 `your_password` 替换为你自己的密码。 6. 运行以下命令进入容器的Bash终端: ``` docker exec -it oracle21c bash ``` 7. 在容器中,将安装文件解压缩到 `/install` 目录: ``` cd /install unzip oracle-database-21c-*.zip ``` 8. 运行安装脚本: ``` ./runInstaller ``` 根据提示进行安装,选择相应的选项和配置。 9. 安装完成后,可以使用Oracle Database 21c了。你可以使用SQL*Plus等工具连接到数据库。 这些是基本的安装步骤,你可以根据实际需要进行调整。请注意,在安装Oracle Database 21c之前,确保你的Linux系统满足Oracle的硬件和软件要求。此外,根据你的需求,你可能需要进行其他配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值