Windows下启动/关闭oracle、执行SQL的bat脚本

由于工作中每天需要将新的参数导入,之前的步骤一直是先删除原来的用户、表空间,然后新建,最后在CMD下导入,现采用bat脚本实现一键导入。

打开/关闭oracle服务执行脚本

如果开机直接运行oracle,将会启动特别慢,况且每次也不一定开机就要用oracle;有时oracle启动时间太长,则会占用2G+内存,手动见服务点开又有些麻烦。


@echo off

title Oracle服务管理

cls

color 2f

goto MENU

:MENU

cls

echo. =-=-=-=-=Oracle服务管理=-=-=-=-=

echo.

echo. 1 开启服务

echo.

echo. 2 关闭服务

echo.

echo. 3 退 出

echo.

echo. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

echo. 请输入选择项目的序号:

set /p ID=

if “%id%”==”1” goto cmd1

if “%id%”==”2” goto cmd2

if “%id%”==”3” exit

echo 请输入正确序号!&ping -n 2 127.1>nul&goto MENU

:cmd1

echo.

echo 开启Oracle服务中…

net start|findstr /i /c:”OracleDBConsoleorcl”>nul&&set k=1||set k=0

if %k%==0 (net start “OracleDBConsoleorcl”)

net start|findstr /i /c:”OracleOraDb11g_home1iSQL*Plus”>nul&&set k=1||set k=0

if %k%==0 (net start “OracleOraDb11g_home1iSQL*Plus”)

net start|findstr /i /c:”OracleOraDb11g_home1TNSListener”>nul&&set k=1||set k=0

if %k%==0 (net start “OracleOraDb11g_home1TNSListener”)

net start|findstr /i /c:”OracleServiceORCL”>nul&&set k=1||set k=0

if %k%==0 (net start “OracleServiceORCL”)

echo.

echo Oracle服务已经成功开启…

echo.

pause

exit

:cmd2

echo.

echo 关闭Oracle服务中…

net start|findstr /i /c:”OracleDBConsoleorcl”>nul&&set k=1||set k=0

if %k%==1 (net stop “OracleDBConsoleorcl”)

net start|findstr /i /c:”OracleOraDb11g_home1iSQL*Plus”>nul&&set k=1||set k=0

if %k%==1 (net stop “OracleOraDb11g_home1iSQL*Plus”)

net start|findstr /i /c:”OracleOraDb11g_home1TNSListener”>nul&&set k=1||set k=0

if %k%==1 (net stop “OracleOraDb11g_home1TNSListener”)

net start|findstr /i /c:”OracleServiceORCL”>nul&&set k=1||set k=0

if %k%==1 (net stop “OracleServiceORCL”)

echo.

echo Oracle服务已经成功关闭…

echo.

pause

exit

一键获取并更新参数


echo 步骤:
echo 1.开启服务
echo 2.执行sql语句进行删除操作
echo 3.关闭服务、直接删除文件(确保文件完全删除)
echo 4.开启服务
echo 5.新建表空间用户
echo 6.导入
echo 7.退出
echo ——–一键获取并更新参数.bat————

set b=%cd%
echo —————–1.开启Oracle服务——-
echo 开启Oracle服务中…

net start|findstr /i /c:”OracleDBConsoleorcl”>nul&&set k=1||set k=0

if %k%==0 (net start “OracleDBConsoleorcl”)

net start|findstr /i /c:”OracleOraDb11g_home1TNSListener”>nul&&set k=1||set k=0

if %k%==0 (net start “OracleOraDb11g_home1TNSListener”)

net start|findstr /i /c:”OracleServiceORCL”>nul&&set k=1||set k=0

if %k%==0 (net start “OracleServiceORCL”)

echo.
echo Oracle服务已经成功开启…
echo 2.执行sql语句进行删除操作
SQLPLUS/NOLOG @E:\oneKeyUpdateData\connectDeleteStep.sql
echo 3可以改为现判断文件存在,之后进行关服务、删除。___________________________________________________
echo 3.关闭服务、直接删除文件(确保文件完全删除)
echo ———-关闭Oracle服务———–
echo 关闭Oracle服务中…

net start|findstr /i /c:”OracleDBConsoleorcl”>nul&&set k=1||set k=0

if %k%==1 (net stop “OracleDBConsoleorcl”)

net start|findstr /i /c:”OracleOraDb11g_home1iSQL*Plus”>nul&&set k=1||set k=0

if %k%==1 (net stop “OracleOraDb11g_home1iSQL*Plus”)

net start|findstr /i /c:”OracleOraDb11g_home1TNSListener”>nul&&set k=1||set k=0

if %k%==1 (net stop “OracleOraDb11g_home1TNSListener”)

net start|findstr /i /c:”OracleServiceORCL”>nul&&set k=1||set k=0

if %k%==1 (net stop “OracleServiceORCL”)

echo.
echo Oracle服务已经成功关闭…
echo ———-(检测)并删除表文件,没有这个文件也并不影响———–改进为自动获取用户oracle目录____
del E:\app\用户名\oradata\orcl\表名1.DMP
del E:\app\用户名\oradata\orcl\表名2.DMP
echo —————–4.开启Oracle服务——-
echo 开启Oracle服务中…

net start|findstr /i /c:”OracleDBConsoleorcl”>nul&&set k=1||set k=0

if %k%==0 (net start “OracleDBConsoleorcl”)

net start|findstr /i /c:”OracleOraDb11g_home1TNSListener”>nul&&set k=1||set k=0

if %k%==0 (net start “OracleOraDb11g_home1TNSListener”)

net start|findstr /i /c:”OracleServiceORCL”>nul&&set k=1||set k=0

if %k%==0 (net start “OracleServiceORCL”)

echo.
echo Oracle服务已经成功开启…
echo 5.新建表空间用户
echo —————–连接oracle,新建用户、表———-
SQLPLUS/NOLOG @E:\oneKeyUpdateData\connectCreateStep.sql
echo ————6.导入—————-改进为自动获取最新的________________________
imp 用户名/密码@orcl BUFFER=64000 file=参数路径*.dmp FULL=y COMMIT=y IGNORE=y statistics=none LOG=日志名.log;
echo ————7.退出—————-
pause
exit


———–connectCreateStep.sql——–
—–连接oracle—————
SPOOL D:\a.LOG;
CONNECT 用户名/密码@orcl
———–新建一个表空间 表空间名 ———-
create tablespace 表空间名 datafile ‘D:\app\用户名\oradata\orcl\表空间名.dmp’ size 50M autoextend on next 50M maxsize unlimited;
—————表空间:表空间2————
create tablespace 表空间2 datafile ‘D:\app\用户名\oradata\orcl\表空间2.dmp’ size 50M autoextend on next 50M maxsize unlimited;
————–新建用户————-
create user 新用户 identified by 密码2 default tablespace 表空间名;
————–赋予用户权限————-
grant dba,connect,resource,aq_administrator_role,aq_user_role,authenticateduser to 新用户 ;

SPOOL OFF;
DISCONNECT;
EXIT;


———–connectDeleteStep.sql——–
—–连接oracle—————
SPOOL E:\a.LOG;
CONNECT 用户名/密码@orcl
drop user 用户2 cascade;
DROP TABLESPACE 表空间1 INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE 表空间2 INCLUDING CONTENTS AND DATAFILES;
SPOOL OFF;
DISCONNECT;
EXIT;

总结

bat相关

  • 中文编码GB2312才能正常显示汉字
  • 功能不如Linux下强大,用起来总是感觉有点蹩脚

sqlplus相关

  • 可以进行多行语句,它会逐行执行