阅读量:0
下载docker
- 首先下载docker 为什么要下载docker 因为Mac 系统并不提供可用的安装包,无法下载客户端;
- 如果你的mac 已经安装了 colima 轻量化的容器工具,那么不需要重新下载Docker Desktop;我这里用的是Docker Desktop;
- 进入官网下载Docker Desktop 我下载的是 App 的那个版本;需要注册一个账号;
- 下载完成后 可以在终端运行 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
- 至此 容器也已经成功运行了(Running)
- 进入容器 配置一下 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
- 以上配置没有问题的话 切换用户
su - oracle sqlplus /nolog connect / as sysdba
- 以上步骤应该都不会出现问题的;以下是我出现的问题汇总
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
- 当你配置好监听文件后 查看一下监听状态
-- 先重启让监听生效 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天;走了很多弯路 不一一赘述了;如果有问题欢迎留言 看见就回;
也欢迎各位大神指点;