哥们姐们,今天跟大家聊聊当年我刚入行那会儿,怎么被Oracle服务启动这事儿给折腾得够呛。那时候我跟着一个老项目组,负责的活儿就是每天得把开发环境给搭起来。偏偏那个Oracle数据库,它就跟个大爷一样,说不启动就不启动,搞得我每次都得手忙脚乱。
本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.icu
我记得很清楚,刚开始那会儿,每次重启电脑,或者环境出了点小毛病,Oracle就罢工了。那会儿我啥也不懂,就只知道个双击图标,结果发现根本没用。找带我的师傅,师傅就甩给我几句话,什么“你看看监听开了没”,“数据库启动了没”,我一听就懵了,这都是啥跟啥?
没办法,师傅忙,也顾不上手把手教我。我只能自己上网,翻资料,那会儿资料也没现在这么全,很多都是讲理论的,我这种小白根本看不懂。于是我就开始瞎琢磨,瞎试。我记得我是找到一个叫“服务”的窗口,在里面找到跟Oracle有关的服务,然后一个一个去点“启动”。每次点完,都祈祷它能活过来,但往往是报错,或者压根没反应。
后来我才知道,好多东西不能直接在服务里点,得用命令行。这个是真把我给整明白了。我头一次知道,原来Oracle这家伙,它有个“监听器”,就跟个门卫一样,你得先把门卫叫醒,大家才能进去办事。我就学着在命令行里敲:
- lsnrctl status:这个是先看看门卫在不在岗,是不是睡着了。我第一次敲这个,看到“状态”那栏写着“未运行”,心里一凉。
- lsnrctl start:门卫睡了,赶紧把他叫醒。敲完这句,回车,看它跑几行字,显示“命令成功完成”,心里才踏实点。
把监听器搞定之后,这还不算完,数据库本身还得启动!这又是一个坑。我当时就知道个SQL Plus,但每次进去都告诉我连接不上。后来我才知道,原来要以管理员身份进去,不然你连跟数据库说话的资格都没有。于是我就学着这么搞:
- sqlplus / as sysdba:这句是真牛逼,直接以系统管理员的身份进去,啥权限都有了。进去之后,命令提示符就从“SQL>”变成了“SQL>”。
进去了,还不算完。数据库还有好几种启动模式,把我搞得头大。最开始我是只知道一个:
- startup:这句敲下去,一般就能把数据库从头到尾启动起来了。我记得那会儿每次敲完,就盯着屏幕看,等到它显示“数据库已打开”,我才敢喘口气。
但有时候,数据库启动不起来,报错了,或者我发现我需要做一些维护工作,不能让其他人随便进来。这时候我才学到,原来启动还有好几种方式:
- startup nomount:这个是只启动实例,不加载任何控制文件。我当时用到这个,通常是在数据库文件有问题,需要恢复的时候。
- startup mount:这个是在nomount的基础上,加载了控制文件,但数据文件还没打开。这个模式下可以做一些数据库的恢复操作,或者比如要改个数据库的名字啥的,都得先到这个模式。
- startup open:这就是最常见的,完全打开数据库,大家都可以正常使用了。我平时用得最多的就是直接`startup`,它默认就是`startup open`。
学了启动,就得学关闭,不然服务器资源一直被占用,或者我要打个补丁啥的,总不能直接拔电源。关闭也有讲究,我第一次学的时候,就直接用`shutdown`,结果把正在执行的同事的程序给干掉了,被骂了一顿。后来才知道,关闭也有好几种温柔程度:
- shutdown normal:这个最温柔,它会等所有用户都断开连接后才关闭。我一般下班前,没人用了才敢用这个。
- shutdown transactional:这个会等所有正在进行的事务提交或回滚后,再把连接断掉,然后关闭。比`normal`快一点,也比较安全。
- shutdown immediate:这个就比较暴力了,会直接把所有连接都断掉,然后回滚未提交的事务,接着关闭。一般我在开发环境,或者时间紧迫的时候,就会用这个。
- shutdown abort:这个是最暴力的,直接关掉,不回滚事务,可能导致下次启动需要实例恢复。不到万不得已,我是不敢用这个的。
搞明白这些命令,我感觉自己一下子就从一个啥也不懂的小白,变成了能“伺候”Oracle的人了。虽然每次遇到问题还是会心惊胆战,但至少我知道从哪里入手,怎么一步步去排查了。这个过程真是让我印象深刻,也让我明白了,学东西得从实践中来,不能光看书。
现在这些命令我都用得门儿清了,但想起当年,真是被它折磨得够呛,但也确实是这么一点点学起来的。新手朋友们,别怕,命令这东西,多敲几遍,慢慢就熟了。