对于程序员来说,数据库是必不可少的。工作中一般都是由DBA来完成数据库的搭建与管理,程序员一般只负责开发工作。但是我们身为程序员有经常会在家里自己学习或者在家办公,就像现在的新冠疫情之下浦东全封了,只好在家办公了。此时,如果没有VPN或者不能远程连接公司电脑,自己家里就可能需要一个数据库了。工作中我们用到的数据库可能各种各样,但是大家了解的比较多的、面试中问的比较多的、各种视频教程公开课讲的比较多的,还是MySQL。就拿oracle来说,可能用的人比较多,但是大家还是对mysql了解的多。这么多年的工作中我用到Oracle的时候比较少,当然了解的也不多,至于搭建Oracle,之前都没有做过,也没有想着搭建Oracle是否容易。最近因为工作的缘故,需要自己先搭建Oracle数据库,原以为和mysql一样,不管是在windows上还是Linux上,抑或是容器中,都很简单。谁知道,真正在做这件事的时候发现,没有想象的那么容易。

啰嗦了这么一大堆,其实就是想表达这么几点:

  1. 对于Oracle,大多数人了解的都不如mysql;
  2. Oracle的安装搭建比较难;
  3. 事非亲为不知难。

关于上面第二点,安装过Oracle的朋友们应该有所感受,而我这次的感受是特别强烈,一个字,难;两个字,真难;N个字,这特么什么跟什么啊,怎么安装个Oracle都这么难啊!具体怎么个难呢?简单来说,搞坏了我两台半的虚拟机。我们一一来说,这个不算啰嗦话,等我讲完就知道了。

开始之前,我们说一下虚拟机的情况,虚拟机是 CentOS 8-Stream。注意这一点,我后面的很多错误,个人感觉都与这个有关,而且解决起来比较麻烦,网上的解决方案都是依托于 CentOS 8 或者 CentOS 7。通过这次安装 Oracle,个人深深体会了,程序员还是不要太想着追去新的东西啊!

第一轮

我是在Linux上安装的Oracle,这个对于一个有一些经验的程序员来说都是正常现象,毕竟我们的虚拟机不能让它在那吃灰是吧?

第一次安装的是11g版本的,网上找了几个教程,对比之后找到一个还不错的,一步步的走下去,结果走不下去了,把我虚拟机搞的原来好好的东西都搞坏了。

这算坏了半台。

11g不行就换了一个19c的版本安装,以为这次找到了不错的文章,结果还是gg。也可能与我的虚拟机的操作系统有关,我的是CentOS 8 Stream的版本。这个直接不知道怎么搞的,把虚拟机搞的开不了机了。这个太狠了。反正就是各种问题,各种想办法,整了整整一天。

后来换了 一台电脑 ,分别安装11g和19c都是失败。

以上四次安装 ,花费了我整整一天半的时间,在家办公全程工作的那种。

这是我电脑上下载的19c的安装包:

就叫这个名字:WINDOWS.X64_193000_db_home.zip

总结:在Linux上安装Oracle很难。

第二轮

既然Linux上安装这么难,我们就换 Windows 吧,毕竟 Windows 上也没有什么区别,不就是连数据库嘛——实际是领导催得太紧了,它张口一句半天搞定,一天搞不定搞不定就是。。。话是没什么问题,可实际上是另一个团队的leader都说了不好搞,我告诉他之前没搞过。

不说这个了,我们接着在 Windows 上安装吧!下面是我下载的 Windows 版的 Oracle。

直接安装失败,换一台物理机还是失败,不想多说了。

第三轮

第一次:docker安装Oracle19c

我们在 docker 容器中安装。

第一次,把虚拟机的 /var 目录空间直接搞没了,空间不足。报错如下:

Failed to set locale, defaulting to C.UTF-8
Config error: [Errno 28] No space left on device: '/var/log/dnf.log': '/var/log/dnf.log'

又是查看磁盘空间、查看当前目录空间的,又是清理空间,又是迁移文件,又是搞软链接、硬链接的,折腾了半天,结果还是gg。

Docker CE Stable - x86_64                                                         11 kB/s | 2.3 kB     00:00    
Errors during downloading metadata for repository 'docker-ce-stable':
  - Status code: 404 for https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/x86_64/stable/repodata/rep

这样不明显,截图如下:

Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                                                          73  B/s |  38  B     00:00    
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

这貌似是docker加速器没配,那好我们配置docker加速器。

vi /etc/docker/daemon.json

插入如下内容:

{"registry-mirrors": ["https://阿里云你的域名.mirror.aliyuncs.com","https://mirror.baidubce.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","https://mirror.ccs.tencentyun.com"]
}

上面那个阿里云的域名就是你登陆阿里云给你的,每个人 一个,不买阿里云也有,只要登陆,查看方式:

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

然后看这里:

也可以按照它给的方式去配置加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

然后 重载配置、重启docker:

systemctl daemon-reload //重载配置
systemctl restart docker //重启docker

折腾半天之后还是gg了。

yum源的配置也出问题:

没有baseos那一个,貌似和上图第二个是类似的东西。

其实是配置过的:

但是就像上面说的可能与 CentOS 8 Stream有关,网上的都是CentOS 8。

还有其他的错误:

什么 找不到policy.33文件了:

我只有 policy.31文件。

由于之前 /var 分区空间不足,我移动了文件,结果导致docker启动不了了,执行命令如下:

 docker exec -it oracle19c /bin/bash

错误如下:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

貌似docker没有启动,实际上是启动的。我们再启动试试:

systemctl start docker

然后执行上面的语句,结果还是如此。

总结:配置docker加速器后依然失败,/var 分区空间不足,后面折腾的docker启动失败,算是废了一台虚拟机。

我们换一台虚拟机——重新搭建了一台虚拟机,这次没有配置分区,就默认分区了。

第二次:docker安装Oracle19c

找了一个朋友帮忙,先安装的19c版本的。

先上链接:docker安装oracle19c

不多说了,反正结果是失败的,貌似这篇文章看着感觉应该是OK的,不知道为什么,朋友远程帮我也不行,他说可能是这个Oracle19c的镜像有问题,毕竟都不是官方的镜像,而是个人自己构建的镜像。

第三次:docker安装Oracle11g

上一个链接失败了,我们又换一个,也不一定非要使用Oracle19c,11g不也一样嘛,只要可用就行,不追求新的,新的坑多。

上链接:Docker 安装 oracle

我们也跟着记录一下,自己总结一下。

1、拉取 oracle11g 的镜像

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

结果如下:

2、安装 oracle (这里没有配置自动启动容器 和 文件映射)

上文中的命令如下:

docker run -d –p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

我使用这个命令执行的时候会报错,不行。换了如下命令是OK的:

docker run -d --name oracle11g -p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

其实就是:

# 这个 oracle11g 是你给它起的名字,我当时少写了个 g,也是ok的
# 后面的镜像名字不能错,这是docker镜像仓库中的名字
docker run -d --name oracle11g -p 1521:1521 镜像名字

这是我采用原文的命令执行的结果:

换做我的那个那个命令的结果:

3、启动容器

docker start oracle11g

注意:因为我在执行 run 命令时,给它的名字是oracle11,没有g,所以报错了。

4、配置 oracle

# 注意这个 oracle11 还是对应 run 命令时你起的名字
docker exec -it oracle11 bash

5、切换oracle数据库的root用户下,密码:helowin

su root

切记:此时不要退出 docker,这个就是在 docker 容器中的操作。下面是我当时的操作。

当时没有看文章,以为是虚拟机的登陆用户,结果输入密码错误,后来一看原来是在docker中,然后就退出来了。接着就进行了下面的步骤,一直到切换回 oracle 用户时报错了,我以为这篇文章又是坑爹的。后来才发现是我错了。不应该退出 docker ,直接在docker中切换 root 用户。

错误示范:

看到 用户 oracle 不存在我傻眼了,感觉自己错了。

6、修改profile的配置文件,打开profile文件,在末尾添加配置

vi /etc/profile

然后在最下面插入:

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2

export ORACLE_SID=helowin

export PATH=$ORACLE_HOME/bin:$PATH

以上插入的内容不用修改,直接 copy 即可。

7、刷新文件

source /etc/profile

8、创建软连接 

ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

9、切换oracle环境

su - oracle

 

截图中红框就是镜像的id,这几步没有相应信息。

10、登录sqlplus,修改sys、system用户密码,创建用户

# 登录
sqlplus /nolog# 连接
conn /as sysdba# 修改密码
alter user system identified by system;
alter user sys identified by sys;# 创建用户
create user dev identified by dev;# 并给用户赋予权限
grant connect,resource,dba to dev;

最后的 quit 退出 SQL 是凭借感觉输入的,结果还是OK的。exit就是退出docker的命令。

 注意:这10个步骤都是在 docker 中操作的,不要退出 docker。

总结

三轮下来,我们分别在 Linux、Windows 和 docker 容器中尝试安装了 oracle,尝试了oracle19c、oracle11g等版本,最终发现:

  1. oracle的安装比较困难;
  2. 遇到报错,解决很难;
  3. 不建议在 Linux 和 Windows 上安装。

最重要一点,我们在 docker 容器中成功地安装了 Oracle11g。

Oracle数据库的安装相关推荐

  1. Oracle数据库的安装和配置

    我们今天开始学习ORACLE,ORACLE来学习SQL和PL/SQL,前一个阶段我们已经学习了JAVA基础,Java基础是我们学习的第一个阶段,有了JAVA语言,JAVA应用程序,我们就可以访问WEB ...

  2. 在linux操作系统中启动oracle数据库程序,Linux系统下Oracle数据库的安装和启动关闭操作教程...

    这篇文章主要介绍了Linux系统下Oracle数据库的安装和启动关闭操作教程,并针对在sqlplus下所需执行的命令进行讲解,需要的朋友可以参考下 1.准备: df -H 查看空间剩余   一般准备最 ...

  3. oracle数据库安装提示M,Python第13课:oracle数据库的安装

    Python第13课:oracle数据库的安装 时间 2019-01-22下午4:30 主讲 罗恒丰 地点 四楼电教室 版本:11.2 大小:2.06G 安装文件在专班ftp里python安装文件的文 ...

  4. 一、Oracle数据库的安装和配置

    一.Oracle数据库的安装和配置 Oracle 简介 Oracle 是殷墟出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词 Oracle 公司是全球最大的信息管 ...

  5. 最新19C版Oracle数据库下载安装

    最新19C版Oracle数据库下载安装 一,数据库下载 1,进入Oracle官网下载页面 https://www.oracle.com/downloads/ 补充:首次下载可能需要注册/登录用户 2, ...

  6. Oracle数据库(安装)及一些问题解决方案、PL/SQL安装以及连接Oracle

    ** oracle数据库的安装以及PL/SQL安装(含两者连接) ** oracle 11g客户端下载链接地址:http://www.downza.cn/soft/273064.htmlPLSQL_D ...

  7. Oracle数据库的安装以及访问

    Oracle数据库的安装以及访问 此文参考视频地址:https://www.bilibili.com/video/BV11d4y1o7XF?p=8&vd_source=7d15f545f2dd ...

  8. java ojdbc 还需要装 oracle client 吗,c# 连接Oracle数据库必须安装客户端吗

    使用 ODAC 的 Net 方式 [email]nxyc_twz@163.com[/email] 大多数应用程序使用 OCI 的ODAC 标准方式来连接 Oracle 数据库服务器.这是使用第三方开发 ...

  9. Oracle数据库之安装教程

    一.从官网下载oracle数据库或者我的博客 官网地址:Oracle数据库下载地址 博客地址:博客下载地址 二.安装数据库 注意: 10g的数据库只能在xp操作系统中才有效. 建议安装在虚拟机上,这样 ...

  10. oracle数据库安装自动化,自动化Oracle数据库静默安装

    1.1      解压安装包 Oracle11gR2安装为两个安装包,全部解压后,需要将两个安装包的内容合并在一起后进行安装 Oracle版本 Linux64_11gR2 操作系统 CentOS7.0 ...

最新文章

  1. Jmeter脚本 GUI和非GUI启动方式
  2. vim 打开Linux下文件每一行后面都有^M的样式
  3. 绩效管理领域对管理者的任务和能力要求
  4. Python相对导入导致SystemError的解决方案(译)
  5. 修改系统density适配
  6. 马斯克Neuralink联合创始人宣布离职,此前尚未推出上市产品
  7. XSLT 2.0 in .NET
  8. Windows CE Notification API的使用方法
  9. RxDownload2 文件下载太慢分析
  10. 最优化导论(part2)--对偶问题的性质
  11. Eclipse快捷键 10个最有用的快捷键---摘录
  12. 转帖-win2003各版本的区别
  13. [?]Solaris下两个Oracle同时启动时遇到的问题
  14. C# string转Intptr Intptr转string
  15. html中首行缩进怎么写,HTML怎么实现首行缩进两个字符?
  16. 【AI视野·今日CV 计算机视觉论文速览 第175期】Fri, 10 Jan 2020
  17. mysql mdf修复_LDF文件丢失, 如何仅用MDF文件恢复数据库呢?
  18. Mysql大数据优化方案
  19. 解答千古难题:路由器到底用不用定期关闭?
  20. dubbo学习笔记(一)——dubbo的作用及简单应用

热门文章

  1. 尚硅谷JVM笔记(宋红康主讲)
  2. mdf和ldf是什么文件
  3. Trello:轻量级团队流程协作和列表管理平台[转自http://www.36kr.com/p/46852.html]
  4. Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis
  5. 基于TensorFlow实现自定义层的项目代码
  6. Java基本语句(注释语句、javadoc、System.out.print和println和printf区别)复习2
  7. java future 设计模式_转多线程设计模式 - Future模式之JAVA原生实现
  8. 非受检异常_Java异常(Exception)类型及处理
  9. 最小覆盖模型matlab_用MATLAB实现最小圆覆盖问题!
  10. js实现网页中元素缩放(zoom vs scale)