[批处理]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

你可能感兴趣的:(oracle)