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相关
- 可以进行多行语句,它会逐行执行