目录
前言
在CSDN里面虽然有很多Mac安装Oracle的教程,但是本人在实际安装过程中遇到了一些不理解的步骤或者小坑,然后又要额外去尝试很多其他的教程或者资料,为了避免其他人再次遇到此类麻烦,因此撰写本文:
这篇文章主要是详细的安装步骤,再补充一些安装过程中的细节汇总,主要面向和我一样首次使用mac安装数据库,并且对期间涉及到的一些命令行语句和操作系统不太了解的小白。
声明一下本人的mac系统和处理器配置:macOS Monterey 12.5 + intel处理器(所以M1芯片的实际安装过程中遇到的问题可能会与本文内容有所差异)
安装步骤
1.下载并安装Docker
简单说明两个问题:
(1) 为什么Mac安装Oracle需要用Docker?
因为Oracle没有Mac可用的版本。如果想要在Mac系统内安装Oracle,则需要使用虚拟机(如VMWare)或者Docker。而虚拟机的安装和使用相对比较麻烦,尤其在使用过程中,如果存在文件的输入输出,则可能需要在虚拟和Mac系统中来回切换。
(2) Docker是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows操作系统的机器上,也可以实现虚拟化。
首先去Docker官网下载软件,并进行常规的软件安装操作(注意本人这里下载的是intel配套的,不确定是否存在M1配套的版本)。
安装完毕以后,首次运行Docker应该会弹出一个tutorial界面,这个主要是指导你下载并设置官方的docker-tutorial这个Container和配套Images(Container和Image的概念请自行查阅,这里不做扩展),类似于新手教学,建议跟着步骤操作一遍建立首个测试容器。全部设置完毕以后,应该能看到如下所示界面,说明Docker安装和设置完成。
2.查看并拉取Oracle镜像
打开终端,输入如下命令并按回车运行,可以查看现有的oracle-11g-xe版本的镜像(注意,mac的终端在用户输入密码的时候不会显示任何字符,这个过程中的任何输入,包括大小写转换、回退操作等,都是生效的,只不过需要盲输而已,正常输完密码以后按回车即可)。
sudo docker search docker-oracle-xe-11g
Oracle版本的简单说明
Oracle官网目前推荐的版本是19c (正式版),而我们下载的镜像是11g (xe精简版本),区别简单论述如下:
Oracle 10g是第一个为网络计算设计的数据库管理系统;
Oracle 11g合并和扩展了Oracle特有的功能,以实现网格计算的优势,将数据中心从分散的系统资源孤岛转换为包含服务器和存储的共享池;10g和11g的g是grid。
Oracle 12c及之后的版本都是为云计算设计的;
19c其实也属于12c的一个小版本,只是Oracle改变了版本策略,现在都叫18c\19c\20c,一年一个版本;
12c的c是cloud。
至于选择11g的xe(精简版)还是正式版,可以根据个人需求而定,(注意,xe版本最多只能存储11GB的用户数据,使用1GB内存,使用一个主机上的CPU。如果非个人学习用途,请酌情考虑安装正式版。)
如果想要安装xe版本,可以依据返回的列表,选择拉取下载量最多的Oracle镜像。不过使用search语句没有找到特别好的正式版镜像,后来本人从网上搜了一下决定拉取阿里云的正式版镜像(xe版本和正式版选一个就行,不要把两条命令都复制了):
## 下载11g正式版
## 这个是阿里云的镜像
sudo docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
## 下载11g-xe版本
sudo docker pull deepdiver/docker-oracle-xe-11g
整个拉取的过程可能会比较长,耐心等待所有拉取项pull complete并最终显示完成,可输入如下命令查看是否拉取成功:
docker images
由于本人后面使用的是正式版,所以后续步骤都以正式版为基础介绍。
3.创建Docker容器并进行软连接
在终端输入如下命令创建Docker 容器:
## --name后面的名字可设置成自己想要的容器名称
## 但是容器名称后面的地址必须是刚刚拉取的镜像地址
## 正式版
docker run -d -p 1521:1521 --name oracle registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
这里的-d参数表示在后台运行,-p参数就是将容器里的1521端口映射到本机的1521端口,--name后面的名字可设置成自己想要的容器名称,但是容器名称后面的地址必须是刚刚拉取的镜像地址。
创建成功后会返回容器ID,在Docker Desktop界面也可以查看和复制容器ID:
创建完成后,在终端中输入如下命令启动容器:
## start后面就是刚刚创建的容器名称
docker start oracle
然后进入容器进行配置:
## -it后面是你的容器名
docker exec -it oracle bash
到这一步之后,有很多教程会告诉你输入sqlplus /nolog或者sqlplus system/oracle从而进入Oracle,但实际上首次输入会报错,提示command not found,这是因为我们没有进行软连接所必须的相关配置。
在容器内切换到root用户:
## 如果是xe版本应该是没有密码
## 如果是正式版密码为helowin
su root
我们需要通过编辑oracle path变量来配置SID和PATH,从而建立软连接,所以输入如下命令进入配置文件:
vi /home/oracle/.bashrc
进入配置文件以后你会发现是不可编辑的,在输入法英文模式下点击i进入编辑模式(如果是中文输入模式是无效的),并在文件的最后输入如下内容:
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
编辑完成后按esc退出编辑模式,再输入如下命令保存并退出配置文件(同样需要在英文输入法模式下输入,光标停留在任意位置均可输入,会自动显示在文件最末端):
:wq!
修改完成后,输入如下命令建立软连接:
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
切换到Oracle用户(注意,这里-左右都必须有空格,否则无效):
su - oracle
到这一步,我们才能顺利通过sqlplus /nolog进入到Oracle SQL命令行:
## /nolog表示无日志无登录进入SQL命令行
sqlplus /nolog
切换到sysdba用户下(sysdba是oracle最高权限用户):
conn /as sysdba
更改sys和system用户的密码,并设置密码有效期为永久:
## by后面就是你想要设置的密码
alter user system identified by xxxxxxx;
alter user sys identified by xxxxxx;
## 设置密码有效期为永久
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
在设置密码的时候如果出现database not open的错误提示,可以参考这篇文章解决(因为本人没有遇到过该问题,在这里就忽略了):
Docker 拉取 oracle 11g镜像配置_荡漾-的博客-CSDN博客_docker 访问oracle
此外,也可以创建一个新的用户并给用户赋权(非必须步骤):
## 创建用户并设置密码
create user test identified by test;
## 给该用户赋权
grant connect,resource,dba to test;
## 设置密码有效期为永久
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
设置完毕后,可以直接在SQL命令行内进行数据库各类操作(增删改查),输入exit退出SQL命令行(到这里先不要退出容器)。
4.通过Navicat或者DBeaver等可视化操作工具连接数据库
一般而言,我们不习惯于直接使用命令行进行数据库的管理,所以这个时候需要用到第三方的可视化操作工具,常用的Oracle或者MySQL操作工具为Navicat或者DBeaver
下载并安装Navicat
Navicat是收费的,面向个人的永远使用权差不多是5000-6000RMB,可以去官网下载。
Navicat官网地址:http://www.navicat.com.cn/
当然如果实在想用也可以去网上下载破解版(不推荐),一个常用的下载网站是macwk:Navicat Premium 16.1.1_zh-CN 中文破解版 for Mac 强大的数据库管理工具
注意,根据微步在线发布的威胁情报通报,该网站提供的Navicat Premium破解版曾被攻击者偷毒用以窃取数据库数据,在2022.2.15-2022.2.21期间在该网站下载的Navicat Premuim均可能中招,可以通过在终端输入以下命令自查,如果提示no such file or directory则表明无问题,如果出现其他提示则表明已中招:
ls -ah /Applications/Navicat\ Premium.app/Contents/Frameworks/libcrypto.2.dylib
详情可以查阅知乎的相关文章:
如何看待macwk网站上的navicat被黑客投毒以窃取数据。? - 知乎
下载并安装DBeaver
DBeavr是有开源免费的社区版本,可以去官网下载。
DBeaver官网地址:DBeaver Community | Free Universal Database Tool
下载并安装好软件以后,我们就可以通过建立新连接来管理Oracle数据库,这里以Navicat为例:
我们可以通过在终端输入如下命令查询之前安装Oracle镜像的服务名(注意,此时我们仍然在容器内):
lsnrctl status
在刚刚Navicat新建连接的界面输入相应的服务名后,点击建立连接即可(本人用的是helowin),到这一步,我们就可以使用Navicat来管理Oracle数据库了。
需要注意的是,下次进入Oracle的时候记得一定要保证相应的Docker容器处于运行状态(可以直接在Docker Desktop启动容器,也可以通过 docker start 你的容器名 来启动。
参考文章
https://blog.csdn.net/qq_37145397/article/details/89462153?spm=1001.2014.3001.5506
https://blog.csdn.net/qq_38380025/article/details/80647620
https://blog.csdn.net/weixin_46654114/article/details/115470037
https://www.zhihu.com/question/518077695