kubernetes集群部署oracle 11g数据库服务

news2024/11/15 11:15:16

背景:

因业务上线需要,研发中心要求在kubernetes测试集群部署一个oracle 11g的数据库,用于业务功能调试。

一、实施部署oracle 11g数据库: 

1、拉取oracle 11g的镜像:

[root@harbor-02 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/images-speed-up/oracle_11g
2017-latest: Pulling from images-speed-up/oracle_11g
699451820735: Pull complete 
861e6e6e8e5e: Pull complete 
4403d783b046: Pull complete 
Digest: sha256:3b913841850a4d57fcfcb798be86acc88ea0f2acc5478bc0c140a43e91c4a545
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/images-speed-up/oracle_11g:latest

2、上传postgre 12.6镜像到私库:

先tag处理一下

[root@harbor-02 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/images-speed-up/oracle_11g dockerhub.jiang.com/jiang-public/oracle:iatebes-11g

再上传到私有harbor库

[root@harbor-02 ~]# docker push dockerhub.jiang.com/jiang-public/oracle:iatebes-11g
The push refers to repository [dockerhub.jiang.com/jiang-public/oracle]
fdfec26b634f: Pushed 
ef3ecb9d5e46: Pushed 
548a79621a42: Pushed 
2017-latest: digest: sha256:ff8a63a2c900cf3201b9485267ff804db58fbeaed83287c94edd3b3359708854 size: 954

3、创建PersistentVolume、PersistentVolumeClaim存储:

因kubernetes集群环境是对接了hpe(华三)的iscsi存储,所以直接通过stoageclass创建pvc存储即可。不过这里会展示pvc存储的yml配置内容。

pvc存储yml配置:

apiVersion: storage.k8s.io/v1
kind: PersistentVolumeClaim
metadata:
  name: oracle-11g-pvc
  namespace: main-data-test
  annotations:
    boundinfo: >-
      [{"podName":"oracle-db-zmbuy-75f497f78d-gdjr5","containerName":"oracle","volumeMount":{"name":"oracle-11g-pvc","mountPath":"/opt/oracle/app/oradata/"}}]
    pv.kubernetes.io/bind-completed: 'yes'
    pv.kubernetes.io/bound-by-controller: 'yes'
    system/support-expansion: 'true'
    volume.beta.kubernetes.io/storage-provisioner: csi.hpe.com
  finalizers:
    - kubernetes.io/pvc-protection
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  volumeName: pvc-284a18aa-e560-44fb-8fa2-a19854b657bf
  storageClassName: hpe-san
  volumeMode: Filesystem

4、创建无状态的postgre数据库:

这里的无状态就是deployment控制器的配置。

1、先不要挂载存储,因为需要复制orcl数据库的内容到pvc存储里 

kind: Deployment
metadata:
  name: oracle-db-zmbuy
  namespace: main-data-test
  labels:
    app: oracle-db-zmbuy
    name: oracle-db
    version: 11.2.0
  annotations:
    deployment.kubernetes.io/revision: '3'
    sidecar.istio.io/inject: 'false'
spec:
  replicas: 1
  selector:
    matchLabels:
      app: oracle-db-zmbuy
      name: oracle-db
  template:
    metadata:
      labels:
        app: oracle-db-zmbuy
        name: oracle-db
        version: 11.2.0
      annotations:
        cni.projectcalico.org/ipv4pools: '["172.25.0.0/16"]'
        sidecar.istio.io/inject: 'false'
        system/container-registry-map: '{"oracle":"default"}'
        system/registry: default
        v1.multus-cni.io/default-network: kube-system/calico@eth0
    spec:
      containers:
        - name: oracle
          image: 'dockerhub.jxstjh.com/jxstjh-public/oracle:iatebes-11g'
          ports:
            - containerPort: 1521
              protocol: TCP
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
            requests:
              cpu: '1'
              memory: 1Gi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
          securityContext:
            privileged: false
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
  strategy:
    type: Recreate
  minReadySeconds: 10
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600

生效oracle到deployment配置:

# kubectl apply -f oracle-11g.yml

 

2、将没有挂载存储里的orcl数据库的内容复制文件到本地

kubectl cp oracle-db-zmbuy-7f59695454-fwcnp:/opt/oracle/app/oradata/orcl ./orcl

注:这时候在本地有一个orcl的文件夹

3、修改oracle到deployment配置内容,挂载pvc存储:

kind: Deployment
metadata:
  name: oracle-db-zmbuy
  namespace: main-data-test
  labels:
    app: oracle-db-zmbuy
    name: oracle-db
    version: 11.2.0
  annotations:
    deployment.kubernetes.io/revision: '3'
    sidecar.istio.io/inject: 'false'
spec:
  replicas: 1
  selector:
    matchLabels:
      app: oracle-db-zmbuy
      name: oracle-db
  template:
    metadata:
      labels:
        app: oracle-db-zmbuy
        name: oracle-db
        version: 11.2.0
      annotations:
        cni.projectcalico.org/ipv4pools: '["172.25.0.0/16"]'
        sidecar.istio.io/inject: 'false'
        system/container-registry-map: '{"oracle":"default"}'
        system/registry: default
        v1.multus-cni.io/default-network: kube-system/calico@eth0
    spec:
      volumes:
        - name: oracle-11g-pvc
          persistentVolumeClaim:
            claimName: oracle-11g-pvc
      containers:
        - name: oracle
          image: 'dockerhub.jxstjh.com/jxstjh-public/oracle:iatebes-11g'
          ports:
            - containerPort: 1521
              protocol: TCP
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
            requests:
              cpu: '1'
              memory: 1Gi
          volumeMounts:
            - name: oracle-11g-pvc
              mountPath: /opt/oracle/app/oradata/
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
          securityContext:
            privileged: false
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
  strategy:
    type: Recreate
  minReadySeconds: 10
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600

生效deplyment控制器

# kubectl apply -f oracle-11g.yml

4、替换control02.ctl文件:

进入到oracle到pod容器中

# kubectl exec -it oracle-db-zmbuy-75f497f78d-gdjr5 bash

删除oracle的机制文件
 

# rm -rf /opt/oracle/app/flash_recovery_area/helowin/control02.ctl 

复制新的oracle的机制文件

# cp /opt/oracle/app/oradata/orcl/control01.ctl /home/oracle/app/flash_recovery_area/orcl/control02.ctl 

修改属性 control02.ctl文件的属性

# chown oracle:oinstall /opt/oracle/app/flash_recovery_area/control02.ctl

5、重启oracle数据库:

# su - oracle

$ source ~/.bash_profile

$ sqlplus / as sysdba

SQL> shutdown immediate;

SQL> startup;

5、设置oracle登入配置:

#登录sqlplus
SQL> sqlplus / as sysdba   

#修改system用户账号密码
SQL> alter user system identified by system; 

#修改sys用户账号密码 
SQL> alter user sys identified by system;  

#创建内部管理员账号密码都是test  
SQL> create user test identified by test;  

#将dba权限授权给内部管理员账号和密码
SQL> grant connect,resource,dba to test;  

#修改密码规则策略为密码永不过期 
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 

#修改数据库最大连接数据
SQL> alter system set processes=1000 scope=spfile;  #修改数据库最大连接数据

6、使用连接工具进行验证:

注:到此就完成了oracle 11g的部署,但是这里目前无法自定义sid的值,等我研究好了,再分析給大家。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2034109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java之MySQL

1、数据库三大范式 每个字段不可再分,不冗余 非主键字段完全依赖于主键 2、drop 删除整张表,不可回滚;delete删除部分数据行;truncate保留表 删除所有数据 3、innodb存储引擎 支持行级锁、表级锁 支持事务 支持异常奔溃后的安…

拓普壹的选品师项目怎么操作更好?

在拓普壹的选品师项目中,成功的关键在于精细化的操作和系统化的策略。这不仅要求选品师具备深厚的自身能力,还需要明智的选择平台和有效利用新技术。本文将从这三个方面探讨如何更好地操作拓普壹选品师项目。 1. 自身能力培养 选品师的核心任务是从众多商…

SPRING07_自动装配如何加强、@Autowired注解debug分析、总结

文章目录 ①. Spring启动一行代码:②. ApplicationContex增强功能③. 自动装配如何装配进来④. Autowired自动注入细节xml版⑤. Autowired注解版分析⑥. 总结一下 ①. Spring启动一行代码: ①. 创建一个IOC容器,传入容器的xml配置文件,Spring在整个创建容器的过程中全部都准备…

Docker安装达梦数据库详细教程

达梦数据库(DM,Dameng Database)是中国自主研发的关系型数据库管理系统。它由武汉达梦数据库有限公司开发,最早可以追溯到1982年,至今已有几十年的发展历史。达梦数据库在中国市场上具有较高的知名度和市场占有率,特别是在政府、金融、电信、能源等行业有广泛的应用。 自…

深度学习——神经网络(neural network)详解(一). 带手算步骤,步骤清晰0基础可看

深度学习——神经网络(neural network)详解(一). 带手算步骤,步骤清晰0基础可看 我将以最简单,基础的形式说明神经网络的训练过程。 搭配以下文章进行学习: 深度学习——卷积神经网络&#xf…

Day18 Linux系统编程学习--文件

文件 (file) 是程序设计中一个重要的概念。所谓“文件”一般指存储在外部介质上数据的集合。C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为 AS…

【森气随笔】python绘图找不同,揭秘不同函数绘图差异。

【森气随笔】python绘图找不同,揭秘不同函数绘图差异。 准备了两组图片,运用了不同绘图函数绘制。然而,令人无语的是,有人竟直言不讳地表示难以察觉其中的差别。非常好奇,是差异太小还是不愿意承认呢?感兴趣…

Linux-服务器硬件及RAID配置实验

系列文章目录 提示:仅用于个人学习,进行查漏补缺使用。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 4.Linux 命令安装(rpm、install) 5.Linux账号管理 6.Linux文件/目录权限管理 7.Linux磁盘管理/文件系统 8.Linu…

利用shell脚本一键查询ceph中bucket桶的占用大小

在 Ceph 对象存储中(例如使用 RADOS Gateway 提供的 Swift 或 S3 接口),你可能需要了解某个桶(bucket)的占用大小。 以下是如何在 Ceph 中查看桶的占用大小的方法: 1. 使用 radosgw-admin 工具 radosgw-a…

2024最新整理Python基础知识点汇总(可下载)期末复习必备!

前言 由于篇幅限制,我把所有的Python基础知识点和实战代码全部打包上传至CSDN官方认证的微信上,需要的同学可以自取!下载保存在你自己的电脑上(保证100%免费) 1 变量和简单数据类型 变量命名格式:变量名 …

Linux-Shell管道命令及脚本调试-06

上一章我们讲了一半的管道命令,今天把剩下的讲完 1、管道命令 字符转换命令 tr, col, join, paste, expand 1.1 tr 一种可将字符进行替换、压缩、删除,可以将一组字符转换成另一组字符 格式; tr [-parameter] [string1] [string2] 参数: 参数说…

vs2019 QtConcurrent多线程使用方法

QtConcurrent::run(xxx) 1.打开QT Project Setting-》点击Qt Modules 2.头文件包含&#xff1a; #include <QtConcurrent/QtConcurrent> 3.使用方法&#xff1a; QFuture<void> future1 QtConcurrent::run(this, &auto_pack_line_demo::UpdateVisionComm)…

漏洞复现-Apache Kafka Clients JNDI注入漏洞 (CVE-2023-25194)

1.漏洞描述 Apache Kafka 是一个开源分布式事件流平台&#xff0c;被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型应用程序。 在版本3.3.2及以前&#xff0c;Apache Kafka clients中存在一处JNDI注入漏洞。如果攻击者在连接的时候可以控制属性sasl.jaas.conf…

今是科技携手福瑞莱,共筑环境微生物检测技术创新与发展

近日&#xff0c;成都今是科技有限公司&#xff08;以下简称“今是科技”&#xff09;与福瑞莱环保科技&#xff08;深圳&#xff09;股份有限公司&#xff08;以下简称“福瑞莱”&#xff09;正式宣布达成深度战略合作。此次合作旨在将双方的优势资源与技术力量相结合&#xf…

再见,Midjourney | FLUX 彻底改变了 AI 图像游戏

Flux 刚发布一周&#xff0c;大家都疯了&#xff01; 因为真的是分不清是AI还是真实啊&#x1f3f4;‍☠️ Flux生成 Flux生成 FLUX 彻底改变了 AI 图像游戏。 02 黑深林 Black Forest Labs由Stable Diffusion模型的原班人马创立&#xff0c;旨在开发并开源高质量的图像和…

无字母数字_$ webshell之命令执行

题解分析&#xff1a; 代码案例 当然&#xff0c;这道题的限制&#xff1a; webshell长度不超过35位 不包含字母数字&#xff0c;还不能包含$和_ 所以&#xff0c;如何解决这个问题&#xff1f; shell下可以利用.来执行任意脚本 Linux文件名支持用glob通配符代替 第一点.…

Java语言程序设计基础篇_编程练习题**16.19(控制一组风扇)

**16.19&#xff08;控制一组风扇&#xff09; 编写一个程序&#xff0c;在一组中显示三个风扇&#xff0c;有控制按钮来启动和停止整组风扇&#xff0c;如图16-44所示。 习题分析 要完成这道题目&#xff0c;需要将16.18中的代码变成一个自定义面板(继承自BorderPane)&#…

考研概率论如何复习最高效?能拿满分

概率论跟哪写老师的课程&#xff1f; 推荐三个老师&#xff1a; 喻老&#xff1a;基础讲的很好 喻老的线性代数课在今年已经非常有名&#xff0c;但其实他讲授的概率论课程同样十分出色。喻老的课程特点在于讲解非常细致&#xff0c;特别适合基础较为薄弱的学生。此外&#…

MySQL练手题——case when ... then ...

一、准备工作 Create table If Not Exists Seat (id int, student varchar(255)); Truncate table Seat; insert into Seat (id, student) values (1, Abbot); insert into Seat (id, student) values (2, Doris); insert into Seat (id, student) values (3, Emerson); inser…

spark3.3.4 上使用 pyspark 跑 python 任务版本不一致问题解决

问题描述 在 spark 上跑 python 任务最常见的异常就是下面的版本不一致问题了&#xff1a; RuntimeError: Python in worker has different version 3.7 than that in driver 3.6, PySpark cannot run with different minor versions. Please check environment variables PY…