zoukankan      html  css  js  c++  java
  • [批处理]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 "HKCUConsole\%%SystemRoot%%_system32_cmd.exe" /v ScreenBufferSize
    ::查询注册表中是否有CMD的记录,如果没有则直接去设置“缓冲区大小”
    if %errorlevel% ==1 goto :setBufferSize
    reg query "HKCUConsole\%%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 "HKCUConsole\%%%%SystemRoot%%%%_system32_cmd.exe" /v ScreenBufferSize /t REG_DWORD /d 0x%BufferSize% /f
    ::设置CMD的窗口大小为高度25(高4位0019),宽不变为80(低4位0050)
    echo reg add "HKCUConsole\%%%%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

  • 相关阅读:
    Java基础之泛型——使用通配符类型参数(TryWildCard)
    Java基础之泛型——使用二叉树进行排序(TryBinaryTree)
    Java基础之泛型——使用泛型链表类型(TryGenericLinkedList)
    Java基础之序列化对象——反序列化对象(DeserializeObjects)
    Java基础之序列化对象——将对象写入到文件中(SerializeObjects)
    拷贝excel里的内容转为JSON的js代码
    asp.net 正则获取url参数
    vs2013给类添加默认注释
    日货EmEditor的使用小技巧
    express不是内部或外部命令
  • 原文地址:https://www.cnblogs.com/xxcanghai/p/4583788.html
Copyright © 2011-2022 走看看