做程序开发工作,不免会与数据库打交道,掌握一招万能的数据库处理技巧变得尤为重要,比如,重启数据库(重启一次不好,就多重启几次,哈哈哈~)

一、登陆安装Oracle服务的系统,一般通过SSH、Xshell等工具进行连接
二、指令:cd  $ORACLE_HOME,切换到oracle的安装目录
三、指令:echo  $ORACLE_SID,查看当前Oracle实例
        若存在多个实例,可以通过指令:ps -ef|grep pmon,查看当前服务安装的哪些实例:
        (比如查询出来有 ora_pmon_Aikes,ora_pmon_Robert)
        然后再通过指令:export  ORACLE_SID=实例名,切换实例(export  ORACLE_SID=Aikes)。

注:这里补充一下,一个服务器是可以安装多个Oracle实例的,而一个实例上又可以创建多个用户。例如:在PLSQL等数据库操作工具中,可以看到数据库连接信息为:AAAA@Aikes、BBBB@Aikes,CCCC@Robert,这里的Aikes就是Oracle实例,AAAA、BBBB只是实例上的不同用户而已;而Aikes和Robert就是两个不同的实例,它们也可以装在同一个服务器上。而AAAA和BBBB如果权限足够可以访问对方的表数据,AAAA.emp、BBBB.dept等;但是对于CCCC就需要创建dblink才能访问,这些都不是本章重点。

四、切换到正确实例后,就可以输入指令:sqlplus /nolog,进入SQLPlus窗口
五、接下来再sqlplus中,用系统管理员登录:connect / as sysdba,然后就可以进行重启数据库操作啦,常规都是先使用该指令停止数据库:shutdown immediate,然后使用:startup,启动数据库,完成重启操作。

注:停止数据库还有其他指令,但是immediate是相对安全稳妥的操作。

六、启动成功后,通过指令:exit退出即可。

 

-----------------------------------------------补充一个在重启数据库过程中遇到的问题及解决方法:

问题描述:在连接成功后,执行shutdown immediate时,卡顿了很久,我就强制将Xshell关闭。之后重新打开Xshell,输入nolog连接时,提示信息:connect to an idle instance ,然后输入connect /as sysdba指令后提示no log on。

问题分析(本人猜测):在进行shutdown immediate操作时存在未终止的Oracle进程,当我们强制中断后,Oracle显示为数据库关闭,但是其仍有进程在活动,导致重新连接提示:连接到一个空闲实例,进行登录操作又无法验证登录信息。此时数据库无法正常使用,也无法进行启动数据库等操作。

解决方案:该报错信息在网上也有记载,但大都是Oracle初始配置时产生的,其解决方案涉及到调整监听信息等对于该情况的问题毫无意义。正确的做法是终止掉该实例所有相关进程,重新使用系统管理员登录,启动Oracle实例即可。

解决步骤:
1.    使用该指令:ps -ef|grep ora_dbw0_$ORACLE_SID,查找残留的Oracle进程
       oracle    35709  22137  0 15:12 pts/2    00:00:00 grep ora_dbw0_Aikes  (35709即为进程对应pid)
2.    通过kill -9 pid,杀死残留进程
3.    打开到Oracle安装目录,切换到对应实例,输入指令:sqlplus sys as sysdba,连接到sqlplus
4.    可能会提示输入密码,直接回车就可以跳过
5.    输入指令:startup;,启动数据库实例,至此问题得以解决

 

若有描述不清或描述有误的地方,欢迎大家在评论区提问和指正。