记录一次Mac M1芯片安装Oracle 的 辛酸路
创始人
2024-11-06 04:05:49

下载docker

  1. 首先下载docker 为什么要下载docker 因为Mac 系统并不提供可用的安装包,无法下载客户端;
  2. 如果你的mac 已经安装了 colima 轻量化的容器工具,那么不需要重新下载Docker Desktop;我这里用的是Docker Desktop;
  3. 进入官网下载Docker Desktop 我下载的是 App 的那个版本;需要注册一个账号;
  4. 下载完成后 可以在终端运行 docker search oracle 查询可用的image;我这里用的是docker hub 中搜索的akaiot/oracle_11g 镜像;你如果想要用同样的去docker hub 中查看镜像是否还存在;如果不存在了,就选择别的版本
 ```bash  docker pull akaiot/oracle_11g 
5. 挂载你下载的这个镜像到一个容器中;我这里是持久化挂载;映射端口是1521;容器名称是 oracle;  ```bash docker run -d -it -p 1521:1521 --name oracle --restart=always --mount source=oracle_vol,target=/home/oracle/app/oracle/oradata akaiot/oracle_11g 
  1. 至此 容器也已经成功运行了(Running)
    在这里插入图片描述
  2. 进入容器 配置一下 ORACLE_HOME;ORACLE_SID等一系列的环境配置
docker exec -it oracle bash  -- 注意替换容器名 su - root    -- 密码默认 helowin -- vi /etc/profile    source /etc/profile -- vi /home/oracle/.bashrc  source /home/oracle/.bashrc -- 这两个配置文件都加上这个配置。然后source 刷新生效 export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2 export ORACLE_SID=helowin export PATH=$ORACLE_HOME/bin:$PATH 
  1. 以上配置没有问题的话 切换用户
su - oracle sqlplus /nolog connect / as sysdba 
  1. 以上步骤应该都不会出现问题的;以下是我出现的问题汇总

oracle 运行异常汇总

1. Datagrip 连接 问题: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor (CONNECTION_ID=UdpfMb+hTAWewt/eBI9PSQ==) 解决办法: 找到监听文件 /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora  修改如下: SID_LIST_LISTENER =   (SID_LIST =     (SID_DESC =       (SID_NAME = helowin) --这里最好替换成你配置的sid 防止 有问题       (ORACLE_HOME = /path/to/oracle/home)     )   ) LISTENER =   (DESCRIPTION_LIST =     (DESCRIPTION =       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))       (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))这里配置你docker 映射的端口;;     )   )  同文件夹下的 tnsnames.ora。一起修改下 Host 端口号 和服务sid 
  1. 当你配置好监听文件后 查看一下监听状态
-- 先重启让监听生效 lsnrctl stop lsnrctl start -- 查看状态 lsnrctl services   lsnrctl status  都可以查 这时你可能会遇到一个问题  [oracle@a2318ffa95d0 /]$ lsnrctl services  LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 10-JUN-2024 13:47:11  Copyright (c) 1991, 2009, Oracle.  All rights reserved.  Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521))) Services Summary... Service "helowin" has 1 instance(s).   Instance "helowin", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:0 refused:2          LOCAL SERVER The command completed successfully  你的实例处于一个 UNKNOWN 的状态 这时候你用Sqlplus 登录时可用的 但是startup;shutdown;命令是没有用的; 当然你用数据库工具连接也是不行的;可能会提示 [08006][1033] ORA-01033: ORACLE initialization or shutdown in progress. DBMS: Oracle (ver. 11.2.0) Case sensitivity: plain=mixed, delimited=exact [08006][17002] IO 错误: Got minus one from a read call, connect lapse 54 ms., Authentication lapse 0 ms. Got minus one from a read call. 这两个都属于 你连接实例的时候出现了问题; 解决办法: 首先 你可以重启一下你的实例; 然后进入你的容器去查看一下监听的状态 这时你会看见除了一个 UNKNOWN的实例 还会出现一个BLOCK 阻塞的实例; 这时再去切换oracle 用户 并且 登录  ```bash sqlplus /nolog SQL> connect / as sysdba alter database open; 这时又又又报错了: database not mounted; SQL> alter database mount;  这时 如果提示成功了:那恭喜你   SQL> alter database open; 如果到这里 都成功了 那已经成了;可以用datagrip 连接了  

我这里就使用的默认的system/helowin 会提示修改密码 你可以直接在DataGrip 中修改;也可以在sqlplus 中执行

alter user system identified by newpassword; 

在这里插入图片描述

结尾

整个过程装了2天;走了很多弯路 不一一赘述了;如果有问题欢迎留言 看见就回;
也欢迎各位大神指点;

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...