页首Html代码

[批处理]Oracle启动助手

前段日子开始学Oracle数据库,但是由于Oracle数据库的服务启动时间很长

所以机房的里面所有电脑的Oracle服务全部是被禁用的

所以每次上机使用的时候都要先进服务管理,然后把禁用更改为手动模式,再开启服务

再进sqlplus,系统用户登录之类的才能用,很是繁琐。

不仅如此,sqlplus还不支持使用右键菜单,只能改为编辑模式才能用复制粘贴等功能,也很麻烦

遂想做一个自动启动的程序,免去繁琐的操作。

最后还是用CMD脚本编写的。

 

说下特色吧:

1,使用此BAT启动的Oracle可以正常使用右键的复制粘贴查找等功能,因为是在CMD下启动程序,而不是直接在windows下打开,所以可以正常使用右键菜单

2,拥有超大5000行的缓冲区,基本上可以将几个小时以内的操作全部记录下来,默认的300行太少了,写不了几行代码再想看前面写的东西就都没了,所以增加到5000行,这个也是另外一个最重点的功能。

就 是自动设置缓冲区,没少费劲,因为设置缓冲区是要向注册表写入值,而且还是要重启CMD才有效的,这块的设置比较麻烦,如果是第一次运行此脚本就会发现程 序会闪好几下,那是检测到需要更改缓冲区,然后把相应的设置缓冲区的代码输出到当前目录下的set.bat文件,并退出当前bat去执行那个设置,完成后 再从新打开一遍此脚本,此时缓冲区就已经设置成功了。

当第二次打开时检测不需要修改缓冲区大小了,也就不会再出来闪屏的现象了。
3,可自定义颜色:请编辑第1行,color 07中0为背景颜色7为字体颜色,取值为0~F,反正我喜欢的还是标准的黑底灰字
4,可自定义缓冲区大小:请编辑第2行set BufferSize=13880050,其中1388为16进制的行数为5000行,0050为16进制的列数为50列,可以自行编辑

 ==注意==    
※本BAT只能运行在WinXP或以上系统中,Win2000系统中reg命令不可用!

※本BAT的文件名中不得出现空格以及%或&等特殊符号,否则会出现异常!

※本BAT需运行在可写的目录下,否则设置缓冲区功能将失效,其他功能不受影响

※如果已安装了Oracle但无法使用本BAT请检测环境变量 
※本BAT会写入注册表,如果想恢复系统的默认值请把第二行的设置缓冲区 set BufferSize=13880050改为012c0050,再重新运行一次即可恢复
※从第二行开始到:menu为止的命令均可删除,不影响使用
※如果出现意外情况发生CMD无限弹出的问题,可按Pause键停止弹出          
在新CMD下执行taskkill /f /im cmd.exe命令关闭全部已弹出的窗口

 

 


 

使用方法极其简单,如果是一般正常使用的话打开后之后回车即可以SYS用户登陆数据库

如果有其他需求的话再选择其他功能,默认为选择第一项

 

批处理代码,保存到bat文件运行即可:

@echo off&color 07&title Oracle启动助手      By:小小沧海
::要设置的缓冲区大小
set BufferSize=13880050

set myname="%~n0"
if NOT %myname%==%myname: =% echo [错误]本BAT文件名中不可出现空格或&或%等特殊符号!请修改后再运行&echo 按任意键退出...&pause>nul&exit

::=============检测当前系统CMD的缓冲区大小是否为设置值==========
reg query "HKCU\Console\%%SystemRoot%%_system32_cmd.exe" /v ScreenBufferSize
::查询注册表中是否有CMD的记录,如果没有则直接去设置“缓冲区大小”
if %errorlevel% ==1 goto :setBufferSize
reg query "HKCU\Console\%%SystemRoot%%_system32_cmd.exe" /v ScreenBufferSize |find "ScreenBufferSize">%temp%\value.txt
::读取CMD的ScreenBufferSize的值到临时目录下的Value.txt文件中
set/p value=<%temp%\value.txt
set value=%value:x=00%
::再读回内存变量中,如果相等则直接进入菜单
if %value:~-8%==%BufferSize% del %temp%\value.txt & goto menu

::=================生成设置缓冲区大小的BAT文件==================
:setBufferSize
::如果查询到的缓冲区大小不符设置则将下述命令输出到set.bat执行设置操作
echo @echo off>set.bat
(::设置CMD的缓冲区大小为高度5000(高4位1388),宽不变为80(低4位0050)
echo reg add "HKCU\Console\%%%%SystemRoot%%%%_system32_cmd.exe" /v ScreenBufferSize /t REG_DWORD /d 0x%BufferSize% /f
::设置CMD的窗口大小为高度25(高4位0019),宽不变为80(低4位0050)
echo reg add "HKCU\Console\%%%%SystemRoot%%%%_system32_cmd.exe" /v WindowSize /t REG_DWORD /d 0x00190050 /f
echo start %~nx0 ^& del %%0 ^& exit
)>>set.bat
start set.bat&exit


::检测Oracle是否已经安装
sqlplus -v 1>nul 2>nul
if %errorlevel% == 9009 echo Oracle没有正确安装,按任意键退出...&pause>nul&exit

:menu
cls
echo 正在将所有Oracle服务设置为[手动启动]模式,请稍后...
sc config OracleDBConsoleorcl start= demand 1>nul
sc config OracleJobSchedulerORCL start= demand 1>nul
sc config OracleMTSRecoveryService start= demand 1>nul
sc config OracleOraDb11g_home1ClrAgent start= demand 1>nul
sc config OracleOraDb11g_home2ClrAgent start= demand 1>nul
sc config OracleOraDb11g_home2TNSListener start= demand 1>nul
sc config OracleServiceORCL start= demand 1>nul
echo 设置成功!
cls
echo ┏━━━━━━━━━━━━━━Oracle启动助手━━━━━━━━━━━━━━━━┓
echo ┃          1,直接回车只启动OracleServiceORCL服务并以sys用户登陆系统       ┃
echo ┃          2,启动全部Oracle服务                                           ┃
echo ┃          3,以sys用户登陆系统                                            ┃
echo ┃          4,关闭全部Oracle服务                                           ┃
echo ┃          5,相关说明                                                     ┃
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

::echo 当前Oracle版本:
::sqlplus -v
echo [请选择]:(按数字键回车确认/如选择1则直接回车)
set choose=1&set /p choose=
if %choose%==1 goto 1 
if %choose%==2 goto 2
if %choose%==3 goto 3
if %choose%==4 goto 4
if %choose%==5 (goto 5) else echo 选择错误!请重新选择&pause>nul&goto menu

:1
echo 正在启动OracleServiceORCL服务,可能需要1-2分钟
echo 请稍等...
net start OracleServiceORCL
sqlplus sys/null as sysdba
goto end

:2
echo 正在启动全部Oracle服务,可能需要1-2分钟
echo 请稍等...
net start OracleDBConsoleorcl
net start OracleJobSchedulerORCL
net start OracleMTSRecoveryService
net start OracleOraDb11g_home1ClrAgent
net start OracleOraDb11g_home2ClrAgent
net start OracleOraDb11g_home2TNSListener
net start OracleServiceORCL
echo 按任意键继续^>^>&pause>nul&goto menu

:3
echo 以sys用户登陆系统...
sqlplus sys/null as sysdba
echo 按任意键继续^>^>&pause>nul&goto menu

:4
echo 正在关闭全部Oracle服务...
net stop OracleDBConsoleorcl 1>nul 2>nul
net stop OracleJobSchedulerORCL 1>nul 2>nul
net stop OracleMTSRecoveryService 1>nul 2>nul
net stop OracleOraDb11g_home1ClrAgent 1>nul 2>nul
net stop OracleOraDb11g_home2ClrAgent 1>nul 2>nul
net stop OracleOraDb11g_home2TNSListener 1>nul 2>nul
net stop OracleServiceORCL 1>nul 2>nul
echo 操作完成!
echo 按任意键继续^>^>&pause>nul&goto menu


:5
cls
echo ┏━━━━━━━━━━━━━━━━━说明━━━━━━━━━━━━━━━━━━┓
echo ┃   ¤使用此BAT启动的Oracle可以正常使用右键的复制粘贴查找等功能           ┃
echo ┃   ¤拥有超大5000行的缓冲区,基本上可以将几个小时以内的操作全部记录下来   ┃
echo ┃   ¤可自定义颜色:请编辑第1行,color 07中0为背景颜色7为字体颜色,取值为0~F ┃
echo ┃   ¤可自定义缓冲区大小:请编辑第2行,1388为16进制的行数,0050为16进制的列数 ┃
echo ┃                                ==注意==echo ┃   ※本BAT只能运行在WinXP或以上系统中,Win2000系统中reg命令不可用!       ┃
echo ┃   ※本BAT的文件名中不得出现空格以及%或&等特殊符号,否则会出现异常!     ┃
echo ┃   ※本BAT需运行在可写的目录下,否则设置缓冲区功能将失效,其他功能不受影响!┃
echo ┃   ※如果已安装了Oracle但无法使用本BAT请检测环境变量                      ┃
echo ┃   ※本BAT会写入注册表,如果想恢复系统的默认值请把第二行的设置缓冲区      ┃
echoset BufferSize=13880050改为012c0050,再重新运行一次即可恢复          ┃
echo ┃   ※从第二行开始到:menu为止的命令均可删除,不影响使用                    ┃
echo ┃   ※如果出现意外情况发生CMD无限弹出的问题,可按Pause键停止弹出           ┃
echo ┃     在新CMD下执行taskkill /f /im cmd.exe命令关闭全部已弹出的窗口         ┃
echo ┃                                                                          ┃
echo ┃                                                     2011年3月1日         ┃
echo ┃                                                         小小沧海         ┃
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
echo.&echo 按任意键返回主菜单^>^>&pause>nul&goto menu

:end
exit

ERRORLEVEL:
0 - 成功
1 - 失败
9009 - 命令无效
sc config 服务名称 start= demand(设置服务为手动启动)   
sc config 服务名称 start= disabled(设置服务为禁用) 
sc config 服务名称 start= auto(设置服务为自动) 
View Code

 

——原文发表于2011-3-11 14:48

posted @ 2015-06-17 16:57  沧海月明FE  阅读(576)  评论(0编辑  收藏  举报