Oracle用户的初始化问题
上一篇博文介绍了关于.bashrc和.bash_profile的相关知识,在oracle的用户设置中能发挥作用。
场景:上周准备学习一下oracle,下载了安装文件后,在linux上新建了一个用户oracle,然后在这个用户下面安装的。也不太记得当时什么情况了,前些天通过oracle系统提供的sqlplus访问,一切正常。今天我想通过终端su到oracle用户下,然后用sqlplus命令打开sqlplus,遇到了不少问题,这里做一个总结。
1. oracle用户密码忘记了。
这个比较容易,打开terminal,登录到root用户下,更改oracle用户密码。
[root@win ~]# passwd oracle
2. 修改密码,登录后问题就多了,发现bash中不会显示成 [oracle@win ~] 这样的模式,而是 bash-4.1$。输入任何命令都不能运行,当然输入sqlplus也不行,提示找不到命令。
查看oracle用户的HOME目录,上一篇文章提到了怎么查找,因为登录后任何命令都不能执行,所以不能通过命令来获取,要手动查。
查看得知HOME=/u01/app/oracle
查看此目录下的文件,发现没有.bashrc 和 .bash_profile文件,也就是说,没有设置任何环境变量与bash配置,当然不可能找到任何命令。
解决方法:
从其他用户那儿拷贝这两个文件,当然如果你非常熟悉的话也可以自己编写,不过建议拷贝过来做修改。
我从Jack用户那儿拷来了这两个文件,将它们放在了oracle home目录下。应用这两个脚本:
bash-4.1 $ source .bashrc bash-4.1 $ source .bash_profile
执行后,bash中就显示成 [oracle@win~] 这样的形式了。这是因为之前没有设置任何变量,执行脚本后,设置了SP1变量,显示恢复正常。
此时常用的命令也可以执行了。
3. 现在的问题就剩下这个了,网上有不少人讨论的,输入sqlplus后提示命令找不到。
这种情况就是要环境变量的设置问题了。前一篇文章中已经提到了,我们可以在.bashrc中进行配置,一定会在bash启动时执行。最终的bash设置如下:
[oracle@win ~]$ cat .bashrc # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions ORACLE_BASE=/u01/app ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/xe ORACLE_SID=XE PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID
这里设置了四个环境变量,分别是:ORACLE_BASE, ORACLE_HOME, ORACLE_SID 和 PATH。
在设置这些环境变量的过程中出现了三个问题。
1. SP2-0750: you may need to set ORACLE_HOME to your Oracle software directory
由于我没有设置ORACLE_HOME环境变量,注意这里选择oracle内bin前面的路径就好了。
ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/xe
2. ORA-12162: TNS:net service name is incorrectly specified
这个错误是由于没有设置ORACLE_SID环境变量导致。查询ORACLE_SID的方法如下:
SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- XE
我们根据这个设置ORACLE_SID环境变量。
ORACLE_SID=XE
3. 明明我在另一个sqlplus中已经启动了数据库,可是在这个bash中连接时却提示:“Connected to an idle instance. ” ,即不能登陆到数据库中 。
此时,所有的环境变量我已经设置好了,PATH设置好了,sqlplus命令正常执行,可是到底是由于什么原因导致这个错误的呢?
还是考虑环境变量,经检查发现一个隐晦的小错误。我的ORACLE_BASE设置成了如下形式:
ORACLE_BASE=/u01/app/
ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/xe
很明显,这里ORACLE_BASE最后面多了一个斜线,导致了这个错误,修改完成后,就完全正常了。
上面这整个流程,就是手动配置oracle用户的环境变量的整个过程。由于是第一次配置,所以犯了不少错误,但是这些错误让我更加理解整个过程。最后,设置了环境变量后别忘了在最后export进去。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!