本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
- 在线音乐戳我呀!
- 音乐博客源码上线啦!
- 前两个月有一段时间没有写文章了,不是我懒,而是最近项目加班太严重了,连续加班一个星期,项目经理自己下班早,看不到凌晨三点努力的我们,就说版本不可延期,上线后请一天假休息还撕破嘴皮。
- 做一件事,最心酸的莫过于你已经很努力干活了,甚至没有一点怨言,只想听到别人对你的赞扬,心里可能就足矣,最怕人家根本不领情,反倒过来说你这不好,那不好。
- 当然晚上还是会花点时间学习,毕竟时间就像牛奶一样,挤一点总会有的。
- 之前在顺德工作服务器是Win,导致我的服务器一直都是Win,换工作到广州,服务器基本都是Linx,发现Linx各种好,对于我现在,空间是一道硬伤,于是我决定迁移成Linx系统。
- 下面一步一步带你走进全过程 | Oracle篇。
余生我捕鱼,你划船,安享晚年。
需求
目前音乐博客部署在Win7上,应用主要有:
- 后端有
- 数据库有
- Java连接Oracle,需要安装Oracle镜像(✔️)
- Node连接Mysql,需要安装Mysql镜像(👌🏻)
- 前端项目部署在Nginx,需要安装Nginx镜像(👌🏻)
- 歌词服务也是部署在Node上(👌🏻)
- 音乐文件存放在Minio上
需要将以上应用迁移到Linx上,干!
很多公司不让碰服务器,现在可以看看关注我,记录从Linux上无到有,全过程。
这一篇是主要还是写给还在用win服务器的、准备迁移Linux的朋友,可以练习迁移服务器到Linux,Linux有很多好处,最可见的就是空间、速度快…
迁移过程中,势必会有很多坑等着你来解决,上方的需求都会写上,本篇主要讲解Docker部署Oracle,其他应用后续持续更新,敬请期待!
Docker安装Oracle并连接
因为在Linux中安装oracle非常麻烦,人家docker已经帮我们把他封成镜像,我们只需要拉下来,配置一下,即可使用,开箱即用它不香吗~
所以选择用docker安装。
顺便一提:Java 17 正式发布,Oracle推出免费JDK许可证,Spring 6 以 Java17为基准。
免费了,挺好,挺好的。
一、 拉取oracle镜像
这个oracle镜像大概有6个G,这个时候,我们可以点杯靓靓的奶茶,开心一下啦。
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
二、 下载完成后,查看镜像
docker images
三、 运行镜像生成容器
docker run -d -p 1521:1521 --name oracle11g
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
🍅 命令后面的地址一定要是你下载的镜像地址也就是你拉取镜像名字,否则会出现名字已存在等问题!
在运行镜像的时候,如果空间不足可以清理数据。
删除所有dangling数据卷(即无用的Volume):
docker volume rm $(docker volume ls -qf dangling=true)
当然这里我们写成shell脚本,下次直接运行sh文件来运行容器。
# shell脚本如下:
docker rm -f oracle11;
docker run -it -d -p 1521:1521
-v /data/oracle:/data/oracle
--name oracle11 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
当然如果你运行shell脚本来运行容器也没什么必要,因为我们还要在oracle里面配置。
前有JS,后有SH。(前端有JavaScript,Linux有shell,都是脚本,本质上没什么区别,一个在浏览器上跑,一个在Linux系统上跑)
四、 进入镜像进行配置
上面我们通过几条命令就已经安装好Oracle,现在我们对它进行配置。
进入Oracle的命令环境中进行配置
docker exec -it oracle11 bash
然后需要输入账号密码:root/123helowin456
五、 进行软连接
sqlplus /nolog
发现没有该命令,所以切换root用户。
su root
输入密码:helowin(默认密码)
六、 编辑profile文件配置ORACLE环境变量
打开: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
保存后执行source /etc/profile 加载环境变量。
七、 创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
八、 切换到oracle 用户
一定要写中间的内条 – 必须要,否则软连接无效。
九、 登录sqlplus并修改sys、system用户密码
sqlplus /nolog --登录
conn /as sysdba --
alter user system identified by system;--修改system用户账号密码;
alter user sys identified by system;--修改sys用户账号密码;
create user test identified by test; -- 创建内部管理员账号密码;
grant connect,resource,dba to yan_test; --将dba权限授权给内部管理员账号和密码;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; --修改密码规则策略为密码永不过期;(会出现坑,后面讲解)
alter system set processes=1000 scope=spfile; --修改数据库最大连接数据;
十、 重新启动数据库
修改以上信息后,需要重新启动数据库。
conn /as sysdba
shutdown immediate; --关闭数据库
startup; --启动数据库
exit:退出软链接
到这里,已经安装好,并且配置好,可以正常使用oracle数据库了。
十一、 Plsql客户端安装
plsql软件是来连接oracle数据库。
这里有更详细讲解Plsql工具安装、OracleDatabase客户端投向oracle的怀抱(安装使用oracle)
11.1 instantclient_11_2 软件目录放置到 C:\Program Files目录下
11.2 配置环境变量
变量名:ORACLE_HOME 变量值:C:\Program Files\instantclient_11_2
变量名:TNS_ADMIN
变量值:C:\Program Files\instantclient_11_2
变量名:NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改Path变量:在后面添加 C:\Program Files\instantclient_11_2
11.3 安装
plsqldev11.0.4.exe 除了可以选择安装路径外,其他全部默认。
11.4 配置plsql与客户端 instantclient的连接
11.5 修改连接配置
把instantclient_11_2目录中ADMIN文件夹中的 tnsnames.ora连接配置文件,复制进入instantclient_11_2根目录,并修改连接配置。
host:指代服务所在ip地址。port指代:端口号 SERVICE_NAME 指代服务名
docker_oracle11g =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.6.136)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = helowinXDB)
)
)
11.6 登录
管理员账号sys 密码sys
connect as登录方式 sysdba
下面讲一下安装过程中遇到的坑以及解决。
十二、 database not open
当执行修改密码的时候出现 :database not open
提示数据库没有打开。
注意了:这里也许还会提示 : ORA-01507: database not mounted
解决方法
输入:alter database mount;
输入 :alter database open;
然后就可执行 修改数据库密码的命令了
改完之后输入:ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
刷新下表 exit 是退休sql 软连接。
十三、 TNS:listener does not currently know of service requested in connect descriptor
13.1 Plsql篇
安装完之后的某一天,开开心心的登录打开pl/sql软件想看下数据,结果很自然的报了个错误:
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
翻译过来就是:示监听程序当前无法识别连接描述符中请求的服务。
这时我们需要去看一下oracle 的 lsnrctl 服务。
看到这两个了么,任选其一,修改 tnsnames.ora的 service_name=helowinXDB
docker_oracle11 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.211.135)(PORT =1521))
)
(CONNECT_DATA =
(SERVICE_NAME = helowinXDB)
)
)
其实你要是看了我11.5 修改连接配置的操作,是不会出现这个错误的,因为上面已经帮你配置正确了,这里给可能会出现此错误的小伙子,留个解决方法哦。
配置成功后,我们重新去登录,成功!
13.2 Navicat篇
如果你用Navicat连接Oracle数据库时候,报了ORA-12514:TNS:listener does not currently know of service requested in connect descriptor这个错误。
因为忽略了一个默认选项,就是服务名或SID。
查看一下tnsnames.ora文件里的这个数据库服务名是不是默认的,我查看发现不是ORCL而是另外的名字,我修改成另外的名字后,重新连接,成功。
最后
我们完成了需求之一:Java连接Oracle,需要安装Oracle镜像。
目前到这里,已经安装完:Java、Node、Mysql、Nginx,还有今天这篇Oracle,在线音乐需要的环境也基本都安装并且使用成功。
但革命尚未成功,还有后续应用的坑,还继续总结实战过程中遇到的很多好玩的问题。
如:数据库被人疯狂攻击如何加层防护、Linux、Docker命令总结、导入数据库存在的问题、如何买服务器等等。
我们总是喜欢以项目来驱动学习,不是吗?
我也是,通过个人项目 – 在线音乐 来驱动我学习Linux系统、Docker、Java、Nginx等等前端可能接触不到的知识,我想这可能就是管理层的“广度”。
下篇见啦,回见啦~
如果对您有帮助,你的点赞是我前进的润滑剂,Thanks!!!😁
相关文献
Plsql:TNS:listener does not currently know of service requested in connect descriptor
Navicat:ORA-12514:TNS:listener does not currently know of service requested in connect descriptor
以往推荐
vue-typescript-admin-template后台管理系统
原文链接
今天的文章实战篇:Oracle不会部署?来,教你玩分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/17945.html