• Linux下安装docker以及docker安装Oracle19c的全部详细过程及各种问题解决


    1. docker 安装

    • 直接 yum 命令安装

      yum install -y docker
      
      • 1

      在这里插入图片描述

    • 安装之后查看 docker 是否安装成功

      yum list installed |grep docker
      
      • 1

      在这里插入图片描述

    2. docker启动等简单命令

    1. 查看 docker 版本

      docker -v
      docker version
      
      • 1
      • 2

      在这里插入图片描述

    2. 查看 docker 服务状态

      systemctl status docker
      
      • 1
    3. 启动 docker 服务

      sudo systemctl start docker
      
      • 1

      在这里插入图片描述

    4. 停止 docker 服务

      systemctl stop docker
      
      • 1

      在这里插入图片描述

    5. 重启 docker 服务

      systemctl restart docker
      
      • 1

      在这里插入图片描述

    3. 配置 docker 镜像加速

    • 编辑 daemon.json :vim /etc/docker/daemon.json

    • 添加下面的内容:

      {
         "registry-mirrors": [
             "https://mirror.ccs.tencentyun.com"
        ]
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5

      在这里插入图片描述

    • 重载所有修改过的配置文件

      systemctl daemon-reload
      
      • 1
    • 重启服务

      systemctl restart docker
      
      • 1

    4. Docker拉取镜像

    • 命令:docker pull <镜像名称>:<版本号>
    • 比如拉取 redis
      • 查看 redis 版本

        https://hub.docker.com/_/redis
        
        • 1

        在这里插入图片描述

      • 拉取命令:

        docker pull redis:6.2.7
        
        • 1
      • 查看本地镜像

        docker images
        
        • 1

        在这里插入图片描述

    5. docker 安装 oracle19c

    5.1 准备工作

    1. 拉取镜像
      docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
      
      • 1
      在这里插入图片描述
    2. 创建挂载文件、并授权(不授权会导致后面安装失败)
      [root@hello_TQ1 ~]# mkdir -p /opt/myData/oracle/oracleData
      [root@hello_TQ1 ~]# 
      [root@hello_TQ1 ~]# 
      [root@hello_TQ1 ~]# chmod -R 777 /opt/myData/
      
      • 1
      • 2
      • 3
      • 4
      在这里插入图片描述

    5.2 开始安装Oracle 19c

    1. 安装 Oracle
      • 执行下面的 docker run 命令
        docker run -d -it --name orcl19c_03 -p 1521:1521 -p 5500:5500 -e ORACLE_SID=orcl -e ORACLE_PDB=orclPDB1 -e ORACLE_PWD=123456 -e ORACLE_EDITION=standard -e ORACLE_CHARACTERSET=AL32UTF8 -v /opt/myData/oracle/oracleData:/opt/myData/oracle/oracleData registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
        
        • 1
        在这里插入图片描述
      • 上面执行的命令中,备注:
        ORACLE_SID=orcl 是服务名,安装后连接Oracle 时用的服务名,CDB数据库的
        ORACLE_PWD=123456 是安装后 dba 用户的密码,即:123456
        ORACLE_PDB=orclPDB1 是安装后的PDB数据库,想更明白一点,可以往下看6.3.1创建用户的两种方式,一个是在CDB库下,一个是下PDB库下

    5.3 进入Oracle容器

    1. 查看oracle容器id:docker ps
      容器id 可以用上面生成的那串字符串,也可用命令 docker ps 查看

    2. 进入容器(将oracle容器id换成你自己的id)

      docker exec -it oracle容器id bash
      
      • 1

      在这里插入图片描述

    6. docker 下连接Oracle 19c

    6.1 查看安装目录等

    1. 进入容器查看 Oracle 安装目录
      在这里插入图片描述
    2. 配置监听
      • 开始配置1
        	本地实例名 =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 远程数据库IP地址)(PORT = 远程服务器端口号))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = 远程数据库服务名)
            )
          )
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
      • 启动监听
        启动监听命令:lsnrctl start
        在这里插入图片描述
      • 启动监听时,发现问题(待解决)
        The listener supports no services
        
        • 1
      • 重新启动监听

    6.2 多种方式连接Oracle

    6.2.1 sqlplus 免密连接(连接后存在问题,待解决)

    1. 连接 Oracle
      sqlplus / as sysdba
      
      • 1
      或者:sqlplus /nolog 然后 conn /as sysdba
      在这里插入图片描述
    2. 修改 dba 的密码
      • 命令如下:

        alter user system identified by system;
        
        • 1
      • 问题如下:报错,出现问题,如下(待解决)

        ERROR at line 1:
        ORA-01034: ORACLE not available
        Process ID: 0
        Session ID: 0 Serial number: 0
        
        • 1
        • 2
        • 3
        • 4

        在这里插入图片描述
        发现执行任何语句都报这个错,不知道什么情况,待解决!。。

    6.2.2 sqlplus 用户密码连接(错误问题同上)

    • 这个需要注意,这种连接在密码后面需要加上 as sysdba
    • 连接命令:sqlplus system/123456 as sysdba ,如下:
      在这里插入图片描述
      在这里插入图片描述

    6.2.3 sqlplu 远程连接数据库(无错误信息)

    • 两种写法
      • 第一种写法:
        sqlplus 用户名/密码@ip地址:端口号/数据库服务名
        
        • 1
        在这里插入图片描述
      • 第二种写法
        sqlplus 用户名/密码@//ip:1521/orcl
        
        • 1
        在这里插入图片描述

    6.2.4 plsql 工具连接

    • 如下:
      在这里插入图片描述
      在这里插入图片描述

    6.3 plsql 里新增用户、授权、修改密码等

    6.3.1 创建用户

    1. 方式一(CDB库下)
    • 创建语句
      create user c##susu identified by susu;
      
      • 1
    • ORA-65096 问题原因:
      根据 Oracle 的版本不一样确定的,19c需要加:c##
      在这里插入图片描述
      但是这样创建之后,我们创建了一个 c##susu 的用户,这不是我们想要的用户,看着难受,所以我么可以把这个给修改了,试试再说,修改的时候,如果提示没有权限,就用 sys 用户 以 sysdba 进行登录即可修改 用户
      在这里插入图片描述
      • 修改时,只需执行下面一条 update 语句即可,执行完之后 all_users 与 dba_users 的数据都会更新成 susu.

        update all_users t set t.USERNAME='susu' where t.USER_ID='106';
        
        • 1

        在这里插入图片描述

      • 但是修改完之后该用户就不能用了,不能进行授权等,上网搜了一下说刷新,刷新也不好用,

        alter system checkpoint;
        alter system flush shared_pool;
        
        • 1
        • 2

        在这里插入图片描述

    2. 方式2(PDB库下)
    • 真的有点接收不了那个c##,继续查了一下,大概结论是:==在CDB容器中创建用户时,前面必须添加C## ,而PDB数据库不需要加前缀。==尝试试试

    • 查看一下我的PDB数据库,试试切换,下面的 ORCLPDB1 就是上面我们在用 docker run 安装oracle数据库时定义的那个名字,我们接下来就切换到这个数据库试试

      select t.CON_ID,t.name,t.OPEN_MODE from v$containers t;
      
      • 1
      1	1	CDB$ROOT	1646200604	READ WRITE
      2	2	PDB$SEED	313548930	READ ONLY
      3	3	ORCLPDB1	2020570011	READ WRITE
      
      • 1
      • 2
      • 3

      在这里插入图片描述

    • 接下来进入 PDB 容器,ORCLPDB1 是上面查出来的

      alter session set container=ORCLPDB1;
      
      • 1
    • 切换容器之后,再创建用户试试,可以不用加c##来创建用户了
      在这里插入图片描述

    • 创建、授权、修改密码都没有问题,但是登录出了问题
      在这里插入图片描述
      在这里插入图片描述

    • 解决上面登录不上的问题,换一下数据库即可,数据库连错了,要换成对应的pdb数据库orclpdb1
      在这里插入图片描述
      在这里插入图片描述

    6.3.2 给用户授权等

    • 重点是上边的,这个我们就简单写个语句就好了,看下面的即可

    • 给用户并授权,如下:

      --给新创建的用户赋予权限:
      	grant create session to susu;--登录权限】
      	grant connect ,resource,dba to susu;
      	grant create any table to hi;
      
      • 1
      • 2
      • 3
      • 4
    • 授予可执行存储过程的权限
      问题:在Oracle存储过程使用 execute immediate 语句建表时可能会存在权限不足的问题。
      解决问题grant create any table to hi;,执行此语句授权之后即可解决

    • 修改密码

      alter user susu identified by susu123;
      
      • 1

    7. 结束

    7.1 Oracle相关推荐文章

  • 相关阅读:
    2022-06-25 C++老八股之 new 的内存用 free 回收有危险
    SpringBoot——快速整合EasyExcel实现Excel的上传下载
    VTK实现裁剪删除模型功能
    SpringBoot SpringBoot 基础篇 4 基于 SpringBoot 的SSMP 整合案例 4.8 业务层标准开发【基础CRUD】
    串口通信协议
    云目录助力微软 AD 的远程办公场景
    ES6中新增加的Map和Set数据结构的使用场景
    低代码技术研究路径解读|低代码的产生不是偶然,是数字技术发展的必然
    web中间件漏洞-Jenkins漏洞-弱口令、反弹shell
    jQuery相关知识
  • 原文地址:https://blog.csdn.net/suixinfeixiangfei/article/details/127364822