实战篇:Oracle不会部署?来,教你玩

实战篇:Oracle不会部署?来,教你玩之前在顺德工作服务器是Win,导致我的服务器一直都是Win,换工作到广州,服务器基本都是Linx,发现Linx各种好,对于我现在,空间是一道硬伤,于是我决定迁移成Linx系统,以项目来驱动学习吧。

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

  • 在线音乐戳我呀!
  • 音乐博客源码上线啦!
  • 前两个月有一段时间没有写文章了,不是我懒,而是最近项目加班太严重了,连续加班一个星期,项目经理自己下班早,看不到凌晨三点努力的我们,就说版本不可延期,上线后请一天假休息还撕破嘴皮。
  • 做一件事,最心酸的莫过于你已经很努力干活了,甚至没有一点怨言,只想听到别人对你的赞扬,心里可能就足矣,最怕人家根本不领情,反倒过来说你这不好,那不好。
  • 当然晚上还是会花点时间学习,毕竟时间就像牛奶一样,挤一点总会有的。
  • 之前在顺德工作服务器是Win,导致我的服务器一直都是Win,换工作到广州,服务器基本都是Linx,发现Linx各种好,对于我现在,空间是一道硬伤,于是我决定迁移成Linx系统。
  • 下面一步一步带你走进全过程 | Oracle篇。

余生我捕鱼,你划船,安享晚年。

69.jpg

需求

目前音乐博客部署在Win7上,应用主要有:

需要将以上应用迁移到Linx上,干!

很多公司不让碰服务器,现在可以看看关注我,记录从Linux上无到有,全过程。
这一篇是主要还是写给还在用win服务器的、准备迁移Linux的朋友,可以练习迁移服务器到Linux,Linux有很多好处,最可见的就是空间、速度快…
迁移过程中,势必会有很多坑等着你来解决,上方的需求都会写上,本篇主要讲解Docker部署Oracle,其他应用后续持续更新,敬请期待!

Docker安装Oracle并连接

因为在Linux中安装oracle非常麻烦,人家docker已经帮我们把他封成镜像,我们只需要拉下来,配置一下,即可使用,开箱即用它不香吗~

所以选择用docker安装。

顺便一提:Java 17 正式发布,Oracle推出免费JDK许可证,Spring 6 以 Java17为基准。

免费了,挺好,挺好的。

70.png

一、 拉取oracle镜像

这个oracle镜像大概有6个G,这个时候,我们可以点杯靓靓的奶茶,开心一下啦。

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

二、 下载完成后,查看镜像

docker images

49.png

三、 运行镜像生成容器

docker run -d -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

50.png

五、 进行软连接

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

51.webp

保存后执行source /etc/profile 加载环境变量。

七、 创建软连接

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

八、 切换到oracle 用户

52.png

一定要写中间的内条 –   必须要,否则软连接无效。

九、 登录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; --修改数据库最大连接数据;

53.png

十、 重新启动数据库

修改以上信息后,需要重新启动数据库。

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的连接

57.png

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

下面讲一下安装过程中遇到的坑以及解决。

oracle常见的错误

十二、 database not open

当执行修改密码的时候出现 :database not open

提示数据库没有打开。

注意了:这里也许还会提示  : ORA-01507: database not mounted

54.png

解决方法

输入:alter database mount;

输入 :alter database open;

55.png

然后就可执行 修改数据库密码的命令了

改完之后输入:ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

刷新下表  exit  是退休sql 软连接。

56.png

十三、 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

翻译过来就是:示监听程序当前无法识别连接描述符中请求的服务。

61.png

这时我们需要去看一下oracle 的 lsnrctl 服务。

62.png

看到这两个了么,任选其一,修改 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 修改连接配置的操作,是不会出现这个错误的,因为上面已经帮你配置正确了,这里给可能会出现此错误的小伙子,留个解决方法哦。

配置成功后,我们重新去登录,成功!

63.png

13.2 Navicat篇

如果你用Navicat连接Oracle数据库时候,报了ORA-12514:TNS:listener does not currently know of service requested in connect descriptor这个错误。

64.png

因为忽略了一个默认选项,就是服务名或SID。

查看一下tnsnames.ora文件里的这个数据库服务名是不是默认的,我查看发现不是ORCL而是另外的名字,我修改成另外的名字后,重新连接,成功。

65.png

66.png

最后

我们完成了需求之一:Java连接Oracle,需要安装Oracle镜像。

目前到这里,已经安装完:JavaNodeMysqlNginx,还有今天这篇Oracle在线音乐需要的环境也基本都安装并且使用成功。

但革命尚未成功,还有后续应用的坑,还继续总结实战过程中遇到的很多好玩的问题。

如:数据库被人疯狂攻击如何加层防护、Linux、Docker命令总结、导入数据库存在的问题、如何买服务器等等。

我们总是喜欢以项目来驱动学习,不是吗?

我也是,通过个人项目 – 在线音乐 来驱动我学习Linux系统、Docker、Java、Nginx等等前端可能接触不到的知识,我想这可能就是管理层的“广度”。

下篇见啦,回见啦~

如果对您有帮助,你的点赞是我前进的润滑剂,Thanks!!!😁

相关文献

docker安装oracle11g史上最全步骤(带图文)

Linux中基于docker安装oracle

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

以往推荐

Typora拖拉图片生成在线图片 | Gitee图床

多图详解,一次性啃懂原型链(上万字)

Vue-Cli3搭建组件库

Vue实现动态路由(和面试官吹项目亮点)

项目中你不知道的Axios骚操作(手写核心原理、兼容性)

VuePress搭建项目组件文档

vue-typescript-admin-template后台管理系统

原文链接

juejin.cn/post/702429…

今天的文章实战篇:Oracle不会部署?来,教你玩分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/17945.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注