db_conn_coll.cmd 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992
  1. @Echo off
  2. SetLocal EnableDelayedExpansion
  3. SetLocal EnableExtensions
  4. :checking_connection_type
  5. setlocal
  6. for /f "delims=" %%i in (oracle_homes_a.txt) do (
  7. set stOracleHome=%%i
  8. goto :endfor
  9. )
  10. :endfor
  11. if exist oracle_homes_u.txt ( del oracle_homes_u.txt )
  12. set "prev="
  13. for /f "delims=" %%F in ('sort oracle_homes_a.txt') do (
  14. set "curr=%%F"
  15. setlocal enabledelayedexpansion
  16. if !prev! neq !curr! echo !curr!>> oracle_homes_u.txt
  17. endlocal
  18. set "prev=%%F"
  19. )
  20. if "!REMOTE_DB!" == "YES" ( goto :REMOTE_DB ) else (
  21. goto :WHILE_HOME)
  22. :REMOTE_DB
  23. echo REMOTE DB Script Start Time= %date%_%time% >> db_con_coll.log
  24. set "DBLICAGREE=!LICAGREE!"
  25. if "%DBLICAGREE%" == "True" ( set "DBLICAGREE=YES" ) else (
  26. set "DBLICAGREE=NO" )
  27. set "DBALLPRODLIST=!ALLPRODLIST!"
  28. IF /i "%DBALLPRODLIST:EBS=%"=="%DBALLPRODLIST%" (set "DBALLPRODLIST=DB") ELSE (set "DBALLPRODLIST=EBS~DB")
  29. set "SQLSCRIPT=db_conn_coll_main.sql"
  30. set "V_SQL=%SQLSCRIPT% %DBLICAGREE% %DBALLPRODLIST%"
  31. echo ------------------------------------------------------------------------------
  32. echo Entering details for connecting SQL*Plus to the database via listener.
  33. goto :ASK_FOR_CONNECTION_TYPE
  34. EndLocal
  35. Goto :EOF
  36. REM CONNECT&COLLECT
  37. :WHILE_HOME
  38. set ANSWER="n"
  39. echo.
  40. set ANSWER=%1
  41. set db_list=%2
  42. set ANSWER=%ANSWER:Y=y%
  43. set ANSWER=%ANSWER:N=n%
  44. if "%ANSWER%" == "y" goto :COLLECT_DB
  45. if "%ANSWER%" == "n" goto :PROMPT_DB
  46. echo You have entered %ANSWER%. Try again and choose a valid option.
  47. goto :WHILE_HOME
  48. :COLLECT_DB
  49. SetLocal EnableDelayedExpansion
  50. set counter_=0
  51. set ListDB1=%ListDB%
  52. echo Script Start Time= %date%_%time% >> db_con_coll.log
  53. for /f "skip=1 tokens=*" %%x in (!db_list!) do (
  54. set "pLINE=%%x"
  55. set "pLINE=!pLINE:,,=,#NULL#,!"
  56. set "pLINE=!pLINE:,,=,#NULL#,!"
  57. for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14 delims=," %%a in ("!pLINE!") do (
  58. set "V_CONNECTION_METHOD=%%a"
  59. set "V_ORACLE_HOME_SERVER=%%b"
  60. set "V_ORACLE_SID=%%c"
  61. set "V_OS_USER=%%d"
  62. set "V_TNS_NAME=%%e"
  63. set "V_TNS_HOST=%%f"
  64. set "V_TNS_PORT=%%g"
  65. set "V_TNS_SERVICE_NAME=%%h"
  66. set "V_TNS_SID=%%i"
  67. set "V_DB_USER=%%j"
  68. set "V_SQL=%%k"
  69. set V_SQL=!V_SQL:^|=#!
  70. set "res=FALSE"
  71. set /A counter_+=1
  72. rem check DB selected from the list
  73. echo. !ListDB1! | findstr /C:",!counter_!," 1>nul && (
  74. set res=TRUE
  75. ) || (
  76. set res=FALSE
  77. )
  78. if "%ANSWER%"=="y" set res=TRUE
  79. if "!res!"=="TRUE" (
  80. rem :LOCAL Connection
  81. if "!V_CONNECTION_METHOD!"=="LOCAL" (
  82. call :LOCAL_CONNECTION
  83. )
  84. rem :TNS_NAME
  85. if "!V_CONNECTION_METHOD!"=="TNS_NAME" (
  86. call :TNS_NAME_CONNECTION
  87. )
  88. rem :HOST_PORT_SERVICE_NAME
  89. if "!V_CONNECTION_METHOD!"=="HOST_PORT_SERVICE_NAME" (
  90. call :HOST_PORT_SERVICE_NAME
  91. )
  92. rem :HOST_PORT_SID
  93. if "!V_CONNECTION_METHOD!"=="HOST_PORT_SID" (
  94. call :HOST_PORT_SID
  95. )
  96. )
  97. )
  98. )
  99. echo Script End Time= %date%_%time% >> db_con_coll.log
  100. Endlocal
  101. goto :EOF
  102. :PROMPT_DB
  103. SetLocal EnableDelayedExpansion
  104. SetLocal ENABLEEXTENSIONS
  105. set /A counter2=0
  106. echo All Databases
  107. for /f " skip=1 tokens=1,2,3 delims=, " %%a in (!db_list!) do (
  108. set /A counter2=counter2+1
  109. echo !counter2! %%a %%c
  110. )
  111. echo Please insert wich DB you want to collect using following format list : 1,3,5
  112. set /p ListDB= Insert the list of databases
  113. set ListDB=,!ListDB!,
  114. goto :COLLECT_DB
  115. Endlocal
  116. goto :EOF
  117. :CHECK_SQLPLUS
  118. SetLocal
  119. set V_ORACLE_HOME=%1
  120. if exist "%V_ORACLE_HOME%\bin\sqlplus.exe" ( set /A svar=0 ) else ( set /A svar=1 )
  121. Endlocal & set "%~2=%svar%"
  122. goto :EOF
  123. :CHECK_TNSPING
  124. SetLocal
  125. set V_ORACLE_HOME=%1
  126. if exist "%V_ORACLE_HOME%\bin\tnsping.exe" ( set /A tvar=0) else ( set /A tvar=1 )
  127. Endlocal & set "%~2=%tvar%"
  128. goto :EOF
  129. :CHECK_TNSPING_CONNECTION
  130. setlocal
  131. %2\bin\tnsping %1 >> db_con_coll.log
  132. if "%errorlevel%"=="0" ( set /A tvar=0 ) else ( set /A tvar=1 )
  133. endlocal & set "%~3=%tvar%"
  134. goto :EOF
  135. :CHECK_DB_USER
  136. setlocal EnableDelayedExpansion
  137. echo %~1 | FINDSTR /C:"as sysdba" >nul && (
  138. for /f "tokens=1" %%s in (%1) do (
  139. set "V_DB_USER=%%s"
  140. set "V_SYS= as sysdba"
  141. )
  142. ) || ( set "V_DB_USER=%~1"
  143. set "V_SYS=")
  144. endlocal & set V_DB_USER=%V_DB_USER% & set V_SYS=%V_SYS%
  145. goto :EOF
  146. :CHECK_LOCAL_DB
  147. SetLocal ENABLEEXTENSIONS
  148. echo. > checkconn.txt
  149. set SQLPLUS_ORACLE_HOME=%1
  150. set NLS_LANG=AMERICAN_AMERICA.UTF8
  151. set ORACLE_HOME=%1
  152. echo ------------------------------------------------------------------------------
  153. echo Trying to connect to local instance !V_ORACLE_SID!
  154. echo set echo off > check.db
  155. echo set verify off >> check.db
  156. echo set termout off >> check.db
  157. echo spool checkconn.txt >> check.db
  158. echo select 'Connected' ^|^| ' successfully' from v$database; >> check.db
  159. echo exit >> check.db
  160. echo Check Connection Local Database !V_ORACLE_SID! %date%_%time% >> db_con_coll.log
  161. type check.db | %SQLPLUS_ORACLE_HOME%\bin\sqlplus "/ as sysdba" >> db_con_coll.log 2>>&1
  162. type checkconn.txt >>db_con_coll.log
  163. Endlocal
  164. goto :EOF
  165. :CHECK_TNS_NAME_DB
  166. SetLocal ENABLEEXTENSIONS
  167. echo. > checkconn.txt
  168. set V_DB_USER=%~1
  169. call :CHECK_DB_USER "%V_DB_USER%" %V_SYS%
  170. set V_DB_PASSWORD=%2
  171. set SQLPLUS_ORACLE_HOME=%3
  172. set NLS_LANG=AMERICAN_AMERICA.UTF8
  173. set ORACLE_HOME=%3
  174. set V_TNS_NAME=%4
  175. echo Trying to connect to TNS_NAME !V_TNS_NAME!
  176. echo Check Connection TNS_NAME %4 %date%_%time% >>db_con_coll.txt
  177. (
  178. echo set echo off
  179. echo set verify off
  180. echo set termout off
  181. echo set define off
  182. echo connect %V_DB_USER%/%V_DB_PASSWORD%@%V_TNS_NAME% %V_SYS%
  183. echo select 'Connected' ^^^|^^^| ' successfully' from v$database;
  184. echo exit
  185. ) | %SQLPLUS_ORACLE_HOME%\bin\sqlplus /nolog >checkconn.txt
  186. type checkconn.txt | findstr /c:"SP2-" /c:"ORA-" >>db_con_coll.log
  187. Endlocal
  188. goto :EOF
  189. :CHECK_HOST_PORT_SERVICE_NAME
  190. SetLocal ENABLEEXTENSIONS
  191. echo. > checkconn.txt
  192. set V_DB_USER=%~1
  193. call :CHECK_DB_USER "%V_DB_USER%" %V_SYS%
  194. set V_DB_PASSWORD=%2
  195. set SQLPLUS_ORACLE_HOME=%3
  196. set NLS_LANG=AMERICAN_AMERICA.UTF8
  197. set ORACLE_HOME=%3
  198. set V_TNS_HOST=%4
  199. set V_TNS_PORT=%5
  200. set V_TNS_SERVICE_NAME=%6
  201. set conn_str="(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = %V_TNS_HOST%)(PORT = %V_TNS_PORT%)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = %V_TNS_SERVICE_NAME%)))"
  202. echo Trying to connect to HOST %4
  203. echo Check Connection SERVICE_NAME %6 %date%_%time% >>db_con_coll.log
  204. (
  205. echo set echo off
  206. echo set verify off
  207. echo set termout off
  208. echo set define off
  209. echo connect %V_DB_USER%/%V_DB_PASSWORD%@%conn_str% %V_SYS%
  210. echo select 'Connected' ^^^|^^^| ' successfully' from v$database;
  211. echo exit
  212. ) | %SQLPLUS_ORACLE_HOME%\bin\sqlplus /nolog >checkconn.txt
  213. type checkconn.txt | findstr /c:"SP2-" /c:"ORA-" >>db_con_coll.txt
  214. Endlocal
  215. goto :EOF
  216. :CHECK_HOST_PORT_SID
  217. SetLocal ENABLEEXTENSIONS
  218. echo. > checkconn.txt
  219. set V_DB_USER=%~1
  220. call :CHECK_DB_USER "%V_DB_USER%" %V_SYS%
  221. set V_DB_PASSWORD=%2
  222. set SQLPLUS_ORACLE_HOME=%3
  223. set NLS_LANG=AMERICAN_AMERICA.UTF8
  224. set ORACLE_HOME=%3
  225. set V_TNS_HOST=%4
  226. set V_TNS_PORT=%5
  227. set V_TNS_SID=%6
  228. set conn_str="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=%V_TNS_HOST%)(PORT=%V_TNS_PORT%))(CONNECT_DATA=(SID=%V_TNS_SID%)))"
  229. echo Trying to connect to HOST %V_TNS_HOST% SID %V_TNS_SID%
  230. echo Check Connection HOST %4 SID %6 %date%_%time% >>db_con_coll.log
  231. (
  232. echo set echo off
  233. echo set verify off
  234. echo set termout off
  235. echo set define off
  236. echo connect %V_DB_USER%/%V_DB_PASSWORD%@%conn_str% %V_SYS%
  237. echo select 'Connected' ^^^|^^^| ' successfully' from v$database;
  238. echo exit
  239. ) | %SQLPLUS_ORACLE_HOME%\bin\sqlplus /nolog >checkconn.txt
  240. type checkconn.txt | findstr /c:"SP2-" /c:"ORA-" >>db_con_coll.log
  241. Endlocal
  242. goto :EOF
  243. :ORACLE_HOME_CHECK_SQLPLUS
  244. SetLocal
  245. ECHO sqlplus is not found on %1\bin\
  246. set /p ANSWER1= Enter a valid ORACLE_HOME location for the SQL*Plus client to be used (y/n)?
  247. set ANSWER1=%ANSWER1:Y=y%
  248. set ANSWER1=%ANSWER1:N=n%
  249. if "%ANSWER1%" == "y" (
  250. set /p SORACLE_HOME= Enter a valid ORACLE_HOME location for the SQL*Plus client to be used:
  251. echo %SORACLE_HOME%
  252. set /p ANSWER2= Is this correct? [y/n]
  253. set ANSWER2=%ANSWER2:Y=y%
  254. set ANSWER2=%ANSWER2:N=n%
  255. if "%ANSWER2%" == "y" goto :EOF
  256. if "%ANSWER2%" == "n" ( echo ORACLE_HOME not set correctly - try again
  257. goto :ORACLE_HOME_CHECK_SQLPLUS )
  258. )
  259. if "%ANSWER1%" == "n" (
  260. set SORACLE_HOME=
  261. )
  262. Endlocal & set %1=%SORACLE_HOME%
  263. goto :EOF
  264. :ORACLE_HOME_CHECK_TNSPING
  265. SetLocal
  266. ECHO tnsping is not found on %1\bin\
  267. set /p ANSWER1= Do you want to enter (again) the path for ORACLE_HOME (needed for the tnsping )? [y/n]
  268. set ANSWER1=%ANSWER1:Y=y%
  269. set ANSWER1=%ANSWER1:N=n%
  270. if "%ANSWER1%" == "y" (
  271. set /p SORACLE_HOME= Enter a valid ORACLE_HOME location for the SQL*Plus client to be used:
  272. echo %SORACLE_HOME%
  273. set /p ANSWER2= Is this correct? [y/n]
  274. set ANSWER2=%ANSWER2:Y=y%
  275. set ANSWER2=%ANSWER2:N=n%
  276. if "%ANSWER2%" == "y" goto :EOF
  277. if "%ANSWER2%" == "n" ( echo ORACLE_HOME not set correctly - try again
  278. goto :ORACLE_HOME_CHECK_SQLPLUS )
  279. )
  280. if "%ANSWER1%" == "n" (
  281. set SORACLE_HOME=
  282. )
  283. Endlocal & set %1=%SORACLE_HOME%
  284. goto :EOF
  285. :ORACLE_HOME_CHECK
  286. SetLocal ENABLEEXTENSIONS
  287. echo ------------------------------------------------------------------------------
  288. echo Enter a valid ORACLE_HOME location for the SQL*Plus client to be used.
  289. rem check if file is empty
  290. set "filemask=oracle_homes_u.txt"
  291. for %%A in (%filemask%) do if %%~zA LSS 3 ( goto :ENTER_OH )
  292. echo Location(s) found on this machine:
  293. type oracle_homes_u.txt
  294. echo.
  295. if defined stOracleHome (
  296. echo Enter ORACLE_HOME or press Return to accept the default
  297. echo !stOracleHome!
  298. set "SORACLE_HOME=!stOracleHome!"
  299. set /p SORACLE_HOME=
  300. goto :OH
  301. )
  302. if not defined stOracleHome (
  303. echo Enter ORACLE_HOME
  304. set /p SORACLE_HOME=
  305. goto :OH)
  306. :ENTER_OH
  307. echo Enter a valid ORACLE_HOME location for the SQL*Plus client to be used
  308. set /p SORACLE_HOME=
  309. :OH
  310. Endlocal & set "%1=%SORACLE_HOME%" & set "stOracleHome=%SORACLE_HOME%"
  311. goto :EOF
  312. :WRONG_HOMEMSG
  313. echo.
  314. echo sqlplus is not found or not executable at : %SORACLE_HOME%bin
  315. echo Please confirm location of ORACLE_HOME and that an sql client exists
  316. echo.
  317. goto :ORACLE_HOME_CHECK
  318. :ASK_FOR_DB_PASSWORD
  319. :PINPUT
  320. SetLocal DisableDelayedExpansion
  321. echo ------------------------------------------------------------------------------
  322. Echo Enter password
  323. Set "Line="
  324. For /F %%# In (
  325. '"Prompt;$H&For %%# in (1) Do Rem"'
  326. ) Do Set "BS=%%#"
  327. :PLoop
  328. Set "Key="
  329. For /F "delims=" %%# In (
  330. 'Xcopy /W "%~f0" "%~f0" 2^>Nul'
  331. ) Do If Not Defined Key Set "Key=%%#"
  332. Set "Key=%Key:~-1%"
  333. SetLocal EnableDelayedExpansion
  334. If Not Defined Key goto :PEND
  335. If %BS%==^%Key% (Set /P "=%BS% %BS%" <Nul
  336. Set "Key="
  337. If Defined Line Set "Line=!Line:~0,-1!"
  338. ) Else Set /P "=*" <Nul
  339. If Not Defined Line (EndLocal &Set "Line=%Key%"
  340. ) Else For /F delims^=^ eol^= %%# In ("!Line!") Do EndLocal &Set "Line=%%#%Key%"
  341. Goto :PLoop
  342. :PEND
  343. endlocal& endlocal& set "%1=%Line%" & echo.
  344. goto :eof
  345. :ASK_for_DB_USER
  346. SetLocal
  347. echo ------------------------------------------------------------------------------
  348. echo Enter database user (e.g. SYS AS SYSDBA, SYSTEM, SCOTT)
  349. set /p p_DB_USER=
  350. Endlocal & set "%~1=%p_DB_USER%"
  351. goto :EOF
  352. :ASK_for_TNS
  353. SetLocal
  354. echo ------------------------------------------------------------------------------
  355. echo Enter value for TNS_NAME, as registered in your Oracle Names
  356. echo solution (tnsmanes.ora, Oracle Internet Directory, etc)
  357. set /p p_TNS=
  358. Endlocal & set "%~1=%p_TNS%"
  359. goto :EOF
  360. :ASK_for_TNS_HOST
  361. SetLocal
  362. echo ------------------------------------------------------------------------------
  363. echo Enter value for listener HOST (network name or IP address)
  364. set /p p_TNS_HOST=
  365. Endlocal & set "%~1=%p_TNS_HOST%"
  366. goto :EOF
  367. :ASK_for_TNS_PORT
  368. SetLocal
  369. echo ------------------------------------------------------------------------------
  370. echo Enter value for listener PORT
  371. set /p p_TNS_PORT=
  372. Endlocal & set "%~1=%p_TNS_PORT%"
  373. goto :EOF
  374. :ASK_for_SERVICE_NAME
  375. SetLocal
  376. echo ------------------------------------------------------------------------------
  377. echo Enter value for database SERVICE_NAME, as known by the listener.
  378. echo For container databases, enter the value for the CDB$ROOT container.
  379. set /p p_SERVICE_NAME=
  380. Endlocal & set "%~1=%p_SERVICE_NAME%"
  381. goto :EOF
  382. :ASK_for_V_TNS_SID
  383. echo ------------------------------------------------------------------------------
  384. SetLocal
  385. echo Enter value for database SID.
  386. set /p p_SID=
  387. Endlocal & set "%~1=%p_SID%"
  388. goto :EOF
  389. :ASK_FOR_ANOTHER_DB
  390. echo ------------------------------------------------------------------------------
  391. SetLocal
  392. echo Do you want to proceed with another database (y/n)?
  393. call :ASK_ANSWER ANSWER
  394. if "!ANSWER!" == "y" ( goto :ASK_FOR_CONNECTION_TYPE )
  395. if "!ANSWER!" == "n" ( goto :ENDREMOTE )
  396. goto :ASK_FOR_ANOTHER_DB
  397. EndLocal
  398. goto :EOF
  399. :ASK_ANSWER
  400. SetLocal
  401. set /p ASKANSWER=
  402. if "%ASKANSWER%" == "Y" (set "ASKANSWER=y")
  403. if "%ASKANSWER%" == "N" (set "ASKANSWER=n")
  404. if "%ASKANSWER%" == "y" (goto :END_ASK_ANWER)
  405. if "%ASKANSWER%" == "n" (goto :END_ASK_ANWER)
  406. goto :ASK_ANSWER
  407. :END_ASK_ANWER
  408. EndLocal & set "%1=%ASKANSWER%"
  409. goto :EOF
  410. :ERROR_CATCH
  411. SetLocal
  412. if "%2"=="YES" (
  413. set "v_m1=DB: CT-02011 : Failed to connect to instance %1"
  414. for /f "tokens=*" %%a in ('type checkconn.txt ^| findstr /C:"ORA-"') do (
  415. set v_m2=%%a
  416. echo !v_m1! !v_m2! > error.txt
  417. )
  418. type error.txt>> DB_errors.log
  419. )
  420. if "%2"=="NO" (
  421. set "v_m1=DB: CT-02011 : Failed to connect to instance %1"
  422. for /f "tokens=*" %%a in ('type checkconn.txt ^| findstr /C:"ORA-"') do (
  423. set v_m2=%%a
  424. echo !v_m1! !v_m2! > error.txt
  425. )
  426. )
  427. Endlocal
  428. goto :EOF
  429. :ASK_FOR_CONNECTION_TYPE
  430. rem echo ------------------------------------------------------------------------------
  431. SetLocal
  432. echo.
  433. echo Select connection description method:
  434. set "V_CONNECT_METHOD=2"
  435. echo 1) Enter TNS_NAME registered in your Oracle Names solution(ex. tnsmanes.ora)
  436. echo 2) Enter listener HOST (name or IP address), PORT and database SERVICE_NAME
  437. echo 3) Enter listener HOST (name or IP address), PORT and database instance SID
  438. echo 4) SKIP
  439. echo Enter selection or press Return to accept the default (2)
  440. set /p V_CONNECT_METHOD=
  441. if "!V_CONNECT_METHOD!"=="1" (
  442. echo ask_connection_method = !V_CONNECT_METHOD! %date%_%time% >> db_con_coll.log
  443. call :ORACLE_HOME_CHECK V_ORACLE_HOME_SERVER
  444. call :ASK_for_TNS V_TNS_NAME
  445. call :ASK_for_DB_USER V_DB_USER
  446. call :ASK_FOR_DB_PASSWORD V_DB_PASSWORD
  447. call :TNS_NAME_CONNECTION
  448. goto :EOF
  449. )
  450. if "!V_CONNECT_METHOD!"=="2" (
  451. echo ask_connection_method = !V_CONNECT_METHOD! %date%_%time% >> db_con_coll.log
  452. call :ORACLE_HOME_CHECK V_ORACLE_HOME_SERVER
  453. call :ASK_for_TNS_HOST V_TNS_HOST
  454. call :ASK_for_TNS_PORT V_TNS_PORT
  455. call :ASK_for_SERVICE_NAME V_TNS_SERVICE_NAME
  456. call :ASK_for_DB_USER V_DB_USER
  457. call :ASK_FOR_DB_PASSWORD V_DB_PASSWORD
  458. call :HOST_PORT_SERVICE_NAME
  459. goto :EOF
  460. )
  461. if "!V_CONNECT_METHOD!"=="3" (
  462. echo ask_connection_method = !V_CONNECT_METHOD! %date%_%time% >> db_con_coll.log
  463. call :ORACLE_HOME_CHECK V_ORACLE_HOME_SERVER
  464. call :ASK_for_TNS_HOST V_TNS_HOST
  465. call :ASK_for_TNS_PORT V_TNS_PORT
  466. call :ASK_for_V_TNS_SID V_TNS_SID
  467. call :ASK_for_DB_USER V_DB_USER
  468. call :ASK_FOR_DB_PASSWORD V_DB_PASSWORD
  469. call :HOST_PORT_SID
  470. goto :EOF
  471. )
  472. if "!V_CONNECT_METHOD!"=="4" (
  473. echo ask_connection_method = !V_CONNECT_METHOD! %date%_%time% >> db_con_coll.log
  474. goto :EOF
  475. )
  476. goto :ASK_FOR_CONNECTION_TYPE
  477. Endlocal
  478. goto :EOF
  479. :LOCAL_CONNECTION
  480. SetLocal ENABLEEXTENSIONS
  481. set NLS_LANG=AMERICAN_AMERICA.UTF8
  482. set ORACLE_HOME=!V_ORACLE_HOME_SERVER!
  483. set ORACLE_SID=!V_ORACLE_SID!
  484. set SQLPLUS_ORACLE_HOME=!V_ORACLE_HOME_SERVER!
  485. REM checking sqlplus as sysdba connection
  486. call :CHECK_SQLPLUS %SQLPLUS_ORACLE_HOME%, chksqlp
  487. if "%chksqlp%" == "0" ( set "SQLPLUS_ORACLE_HOME=%SQLPLUS_ORACLE_HOME%" ) else (
  488. if not "!DBLICAGREE!"=="YES" (
  489. echo sqlplus is not found at: %SQLPLUS_ORACLE_HOME%\bin
  490. echo sqlplus executable was not found in $V_ORACLE_HOME/bin.
  491. echo Do you want to re-enter the connection details? ^(y/n^)
  492. call :ASK_ANSWER ANSWER
  493. if "!ANSWER!" =="y" ( call :ORACLE_HOME_CHECK S_ORACLE_HOME_SERVER && set SQLPLUS_ORACLE_HOME=%S_ORACLE_HOME_SERVER% ) else ( goto :EOF)
  494. )
  495. )
  496. REM check local connection
  497. if not %SQLPLUS_ORACLE_HOME%=="#NULL#" (
  498. call :CHECK_LOCAL_DB %SQLPLUS_ORACLE_HOME%
  499. findstr /c:"Connected successfully" checkconn.txt && (
  500. echo Connected successfully to local instance !V_ORACLE_SID!, !ORACLE_HOME!, !V_SQL! >> db_con_coll.log
  501. echo GREPME_DB_LIST^>^>,LOCAL,!ORACLE_HOME!,!V_ORACLE_SID!,!V_OS_USER!,,,,,,,!V_SQL!,%date%_%time% >> db_con_coll.log
  502. rem : executing sql script
  503. :ProcessSQLlist_local_connection
  504. for /f "tokens=1* delims=#" %%a IN ("!V_SQL!") DO (
  505. if "%%a" NEQ "" (
  506. set _V_SQL=%%a
  507. echo ------------------------------------------------------------------------------
  508. echo Running !_V_SQL! on local instance !V_ORACLE_SID!...
  509. %SQLPLUS_ORACLE_HOME%\bin\sqlplus "/ as sysdba" @!_V_SQL!
  510. call logcolstat.cmd DB NO
  511. call logcolstat.cmd EBS NO)
  512. if "%%b" NEQ "" (
  513. set V_SQL=%%b
  514. goto :ProcessSQLlist_local_connection)
  515. )
  516. ) || (
  517. call :ERROR_CATCH !V_ORACLE_SID! YES
  518. type checkconn.txt >> db_con_coll.log
  519. if not "!DBLICAGREE!"=="YES" (
  520. echo Failed to connect "sqlplus / as SYSDBA" using:
  521. echo OS user: !V_OS_USER!
  522. echo ORACLE_SID: !V_ORACLE_SID!
  523. echo ORACLE_HOME: !ORACLE_HOME!
  524. echo ^(errors are logged in db_con_coll.log file^)
  525. echo Most common causes: your OS user does not have SYSDBA permission or
  526. echo the database is not properly open or mounted.
  527. echo.
  528. echo You can address the error and rerun the tool later or, alternately,
  529. echo you can continue now by trying to connect to this database via listener.
  530. GOTO :ASK_FOR_CONNECTION_TYPE
  531. )
  532. )
  533. )
  534. Endlocal
  535. goto :EOF
  536. :TNS_NAME_CONNECTION
  537. SetLocal ENABLEEXTENSIONS
  538. if not !V_ORACLE_HOME_SERVER!=="#NULL#" (
  539. set NLS_LANG=AMERICAN_AMERICA.UTF8
  540. set ORACLE_HOME=!V_ORACLE_HOME_SERVER!) else (
  541. call :ORACLE_HOME_CHECK %V_ORACLE_HOME_SERVER%)
  542. set SQLPLUS_ORACLE_HOME=%V_ORACLE_HOME_SERVER%
  543. set TNSPING_ORACLE_HOME=%V_ORACLE_HOME_SERVER%
  544. call :CHECK_SQLPLUS %SQLPLUS_ORACLE_HOME%, sqlplus_result
  545. if not %sqlplus_result%==0 (
  546. echo sqlplus executable was not found in %SQLPLUS_ORACLE_HOME%/bin.
  547. echo Do you want to re-enter the connection details ^(y/n^)?
  548. call :ASK_ANSWER ANSWER
  549. if "!ANSWER!"=="y" ( call :ORACLE_HOME_CHECK SQLPLUS_ORACLE_HOME ) else ( goto :ASK_FOR_CONNECTION_TYPE )
  550. )
  551. set V_TNS_NAME=!V_TNS_NAME!
  552. set V_DB_USER=!V_DB_USER!
  553. if "%V_TNS_NAME%" == "#NULL#" ( call :ASK_for_TNS V_TNS_NAME)
  554. if "%V_DB_USER%" == "#NULL#" ( call :ASK_for_DB_USER V_DB_USER )
  555. call :CHECK_TNSPING_CONNECTION %V_TNS_NAME% %SQLPLUS_ORACLE_HOME% v_tnsping
  556. if "%v_tnsping%"=="0" (
  557. call :CHECK_TNS_NAME_DB "%V_DB_USER%", "%V_DB_PASSWORD%", %SQLPLUS_ORACLE_HOME%, %V_TNS_NAME%
  558. findstr /c:"Connected successfully" checkconn.txt && (
  559. echo Connected successfully to TNS_NAME !ORACLE_HOME!,%V_TNS_NAME%,!V_SQL! >> db_con_coll.log
  560. echo GREPME_DB_LIST^>^>,TNS_NAME_CONNECTION,!ORACLE_HOME!,,!V_OS_USER!,,,,%V_TNS_NAME%,,%V_DB_USER%,!V_SQL!,%date%_%time% >> db_con_coll.log
  561. :ProcessSQLlist_tns_connection
  562. for /f "tokens=1* delims=#" %%a IN ("!V_SQL!") DO (
  563. if "%%a" NEQ "" (
  564. set _V_SQL=%%a
  565. echo ------------------------------------
  566. echo Running !_V_SQL! on TNS_NAME %V_TNS_NAME%...
  567. set NLS_LANG=AMERICAN_AMERICA.UTF8
  568. set ORACLE_HOME=%SQLPLUS_ORACLE_HOME%
  569. set V_TNS_NAME=%V_TNS_NAME%
  570. call :CHECK_DB_USER "%V_DB_USER%" %V_SYS%
  571. %SQLPLUS_ORACLE_HOME%\bin\sqlplus "!V_DB_USER!/%V_DB_PASSWORD%@%V_TNS_NAME% !V_SYS!" @!_V_SQL!
  572. call logcolstat.cmd DB NO
  573. call logcolstat.cmd EBS NO
  574. )
  575. if "%%b" NEQ "" (
  576. set V_SQL=%%b
  577. goto :ProcessSQLlist_tns_connection)
  578. )
  579. goto :ASK_FOR_ANOTHER_DB
  580. ) || (
  581. call :ERROR_CATCH %V_TNS_NAME% NO
  582. echo Failed to connect to the database.
  583. findstr /c:"ORA-01017" /c:"ORA-28009" /c:"ORA-01031" checkconn.txt >nul 2>&1 && (
  584. echo Connection error: invalid username/password
  585. echo Do you want to re-enter the database user and password? ^(y/n^)
  586. call :ASK_ANSWER ANSWER
  587. if "!ANSWER!" == "y" (
  588. call :ASK_FOR_DB_USER V_DB_USER
  589. call :ASK_for_DB_PASSWORD V_DB_PASSWORD
  590. call :TNS_NAME_CONNECTION
  591. )
  592. if "!ANSWER!" == "n" (
  593. echo Do you want to re-enter the connection details? ^(y/n^)
  594. call :ASK_ANSWER ANSWER
  595. if "!ANSWER!" == "y" (goto :ASK_FOR_CONNECTION_TYPE)
  596. if "!ANSWER!" == "n" (goto :ENDREMOTE )
  597. )
  598. ) || (
  599. echo Do you want to re-enter the database user and password? ^(y/n^)
  600. call :ASK_ANSWER ANSWER
  601. if "!ANSWER!" == "y" (
  602. call :ASK_FOR_DB_USER V_DB_USER
  603. call :ASK_for_DB_PASSWORD V_DB_PASSWORD
  604. call :TNS_NAME_CONNECTION
  605. )
  606. if "!ANSWER!" == "n" (goto :ASK_FOR_ANOTHER_DB )
  607. )
  608. )
  609. ) else (
  610. echo TNSPING test failed for the specified connection description.
  611. :ASK_CONN_DETAILS
  612. echo Do you want to re-enter the connection details ^(y/n^)?
  613. set /p TANS=
  614. set "TANS=!TANS:Y=y!"
  615. set "TANS=!TANS:N=n!"
  616. if "!TANS!"=="y" (goto :ASK_FOR_CONNECTION_TYPE)
  617. if "!TANS!"=="n" (goto :ASK_FOR_ANOTHER_DB)
  618. goto :ASK_CONN_DETAILS
  619. )
  620. Endlocal
  621. goto :EOF
  622. :HOST_PORT_SERVICE_NAME
  623. SetLocal EnableExtensions EnableDelayedExpansion
  624. if not !V_ORACLE_HOME_SERVER!=="#NULL#" (
  625. set NLS_LANG=AMERICAN_AMERICA.UTF8
  626. set ORACLE_HOME=!V_ORACLE_HOME_SERVER!) else (
  627. call :ORACLE_HOME_CHECK %V_ORACLE_HOME_SERVER%)
  628. set SQLPLUS_ORACLE_HOME=!V_ORACLE_HOME_SERVER!
  629. set TNSPING_ORACLE_HOME=!V_ORACLE_HOME_SERVER!
  630. call :CHECK_SQLPLUS %SQLPLUS_ORACLE_HOME%, sqlplus_result
  631. if not %sqlplus_result%==0 (
  632. echo sqlplus executable was not found in $V_ORACLE_HOME/bin.
  633. echo Do you want to re-enter the connection details ^(y/n^)?
  634. set /p ANSWER=
  635. call :ASK_ANSWER ANSWER
  636. if "!ANSWER!"=="y" ( call :ORACLE_HOME_CHECK SQLPLUS_ORACLE_HOME ) else ( goto :EOF )
  637. )
  638. set "V_TNS_HOST=!V_TNS_HOST!"
  639. set "V_TNS_PORT=!V_TNS_PORT!"
  640. set "V_TNS_SERVICE_NAME=!V_TNS_SERVICE_NAME!"
  641. set "V_DB_USER=!V_DB_USER!"
  642. if "%V_TNS_HOST%" == "#NULL#" ( call :ASK_for_TNS_HOST V_TNS_HOST )
  643. if "%V_TNS_PORT%" == "#NULL#" ( call :ASK_for_TNS_PORT V_TNS_PORT )
  644. if "%V_TNS_SERVICE_NAME%" == "#NULL#" ( call :ASK_for_SERVICE_NAME V_TNS_SID )
  645. if "%V_DB_USER%" =="#NULL#" ( call :ASK_for_DB_USER V_DB_USER )
  646. set conn_str=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = %V_TNS_HOST%)(PORT = %V_TNS_PORT%)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = %V_TNS_SERVICE_NAME%)))
  647. call :CHECK_TNSPING_CONNECTION "%conn_str%" %SQLPLUS_ORACLE_HOME% v_tnsping
  648. if "%v_tnsping%"=="0" (
  649. call :CHECK_HOST_PORT_SERVICE_NAME "%V_DB_USER%", "%V_DB_PASSWORD%", %SQLPLUS_ORACLE_HOME% , %V_TNS_HOST%, %V_TNS_PORT%, %V_TNS_SERVICE_NAME%
  650. findstr /c:"Connected successfully" checkconn.txt && (
  651. echo Connected successfully to %V_TNS_SERVICE_NAME% %V_TNS_HOST% %V_TNS_PORT% !V_SQL! >> db_con_coll.log
  652. echo GREPME_DB_LIST^>^>,HOST_PORT_SERVICE_NAME,,,,%V_TNS_HOST%,%V_TNS_PORT%,%V_TNS_SERVICE_NAME%,,%V_DB_USER%,!V_SQL!,%date%_%time% >> db_con_coll.log
  653. rem : executing sql scripts
  654. :ProcessSQLlist_host_port_connection
  655. for /f "tokens=1* delims=#" %%a IN ("!V_SQL!") DO (
  656. if "%%a" NEQ "" (
  657. set _V_SQL=%%a
  658. echo ------------------------------------
  659. echo Running !_V_SQL! on TNS_NAME %V_TNS_SERVICE_NAME%...
  660. set NLS_LANG=AMERICAN_AMERICA.UTF8
  661. set ORACLE_HOME=%SQLPLUS_ORACLE_HOME%
  662. call :CHECK_DB_USER "%V_DB_USER%" %V_SYS%
  663. %SQLPLUS_ORACLE_HOME%\bin\sqlplus "!V_DB_USER!/%V_DB_PASSWORD%@%conn_str% !V_SYS!" @!_V_SQL!
  664. call logcolstat.cmd DB NO
  665. call logcolstat.cmd EBS NO
  666. )
  667. if "%%b" NEQ "" (
  668. set V_SQL=%%b
  669. goto :ProcessSQLlist_host_port_connection)
  670. )
  671. goto :ASK_FOR_ANOTHER_DB
  672. ) || (
  673. call :ERROR_CATCH %V_TNS_SERVICE_NAME% NO
  674. echo Failed to connect to the database.
  675. findstr /c:"ORA-01017" /c:"ORA-28009" /c:"ORA-01031" checkconn.txt >nul 2>&1 && (
  676. echo Connection error: invalid username/password
  677. echo Do you want to re-enter the database user and password? ^(y/n^)
  678. call :ASK_ANSWER ANSWER
  679. if "!ANSWER!" == "y" (
  680. call :ASK_FOR_DB_USER V_DB_USER
  681. call :ASK_for_DB_PASSWORD V_DB_PASSWORD
  682. call :HOST_PORT_SERVICE_NAME
  683. )
  684. if "!ANSWER!" == "n" (
  685. echo Do you want to re-enter the connection details? ^(y/n^)
  686. call :ASK_ANSWER ANSWER
  687. if "!ANSWER!" == "y" (goto :ASK_FOR_CONNECTION_TYPE)
  688. if "!ANSWER!" == "n" (goto :ENDREMOTE )
  689. )
  690. ) || (
  691. echo Do you want to re-enter the database user and password? ^(y/n^)
  692. call :ASK_ANSWER ANSWER
  693. if "!ANSWER!" == "y" (
  694. call :ASK_FOR_DB_USER V_DB_USER
  695. call :ASK_for_DB_PASSWORD V_DB_PASSWORD
  696. call :HOST_PORT_SERVICE_NAME
  697. )
  698. if "!ANSWER!" == "n" (goto :ASK_FOR_ANOTHER_DB )
  699. )
  700. )
  701. ) else (
  702. echo TNSPING test failed for the specified connection description.
  703. :ASK_CONN_DETAILS
  704. echo Do you want to re-enter the connection details ^(y/n^)?
  705. set /p TANS=
  706. set "TANS=!TANS:Y=y!"
  707. set "TANS=!TANS:N=n!"
  708. if "!TANS!"=="y" (goto :ASK_FOR_CONNECTION_TYPE)
  709. if "!TANS!"=="n" (goto :ASK_FOR_ANOTHER_DB )
  710. goto :ASK_CONN_DETAILS
  711. )
  712. Endlocal
  713. goto :EOF
  714. :HOST_PORT_SID
  715. SetLocal ENABLEEXTENSIONS
  716. if not !V_ORACLE_HOME_SERVER!=="#NULL#" (
  717. set NLS_LANG=AMERICAN_AMERICA.UTF8
  718. set ORACLE_HOME=!V_ORACLE_HOME_SERVER! ) else (
  719. call :ORACLE_HOME_CHECK %V_ORACLE_HOME_SERVER%)
  720. set SQLPLUS_ORACLE_HOME=%V_ORACLE_HOME_SERVER%
  721. set TNSPING_ORACLE_HOME=%V_ORACLE_HOME_SERVER%
  722. call :CHECK_SQLPLUS %SQLPLUS_ORACLE_HOME%, sqlplus_result
  723. if not %sqlplus_result%==0 (
  724. echo sqlplus executable was not found in $V_ORACLE_HOME/bin.
  725. echo Do you want to re-enter the connection details ^(y/n^)^?
  726. call :ASK_ANSWER ANSWER
  727. if "!ANSWER!"=="y" ( call :ORACLE_HOME_CHECK SQLPLUS_ORACLE_HOME ) else ( goto :EOF )
  728. )
  729. set "V_TNS_HOST=!V_TNS_HOST!"
  730. set "V_TNS_PORT=!V_TNS_PORT!"
  731. set "V_TNS_SID=!V_TNS_SID!"
  732. set "V_DB_USER=!V_DB_USER!"
  733. if "%V_TNS_HOST%" == "#NULL#" ( call :ASK_for_TNS_HOST V_TNS_HOST )
  734. if "%V_TNS_PORT%" == "#NULL#" ( call :ASK_for_TNS_PORT V_TNS_PORT )
  735. if "%V_TNS_SID%"=="#NULL#" ( call :ASK_for_V_TNS_SID V_TNS_SID )
  736. if "%V_DB_USER%"=="#NULL#" ( call :ASK_for_DB_USER V_DB_USER )
  737. set ORACLE_SID=%V_TNS_SID%
  738. set ORACLE_HOME=%SQLPLUS_ORACLE_HOME%
  739. set conn_str=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = %V_TNS_HOST%)(PORT = %V_TNS_PORT%))(CONNECT_DATA=(SID = %V_TNS_SID%)))
  740. call :CHECK_TNSPING_CONNECTION "%conn_str%" %SQLPLUS_ORACLE_HOME% v_tnsping
  741. if "%v_tnsping%"=="0" (
  742. call :CHECK_HOST_PORT_SID "%V_DB_USER%", "%V_DB_PASSWORD%", %SQLPLUS_ORACLE_HOME%, %V_TNS_HOST%, %V_TNS_PORT%, %V_TNS_SID%
  743. findstr /c:"Connected successfully" checkconn.txt && (
  744. echo Connected successfully to %V_TNS_SID% %V_TNS_HOST% %V_TNS_PORT% !V_SQL! >> db_con_coll.log
  745. echo GREPME_DB_LIST^>^>,HOST_PORT_SID,%SQLPLUS_ORACLE_HOME%,,,,%V_TNS_HOST%,%V_TNS_PORT%,%V_TNS_SID%,%V_DB_USER%,!V_SQL!,%date%_%time% >> db_con_coll.log
  746. rem : executing sql scripts
  747. :ProcessSQLlist_port_sid
  748. for /f "tokens=1* delims=#" %%a IN ("!V_SQL!") DO (
  749. if "%%a" NEQ "" (
  750. set _V_SQL=%%a
  751. echo ------------------------------------
  752. echo Running !_V_SQL! on TNS_NAME %V_TNS_SID%...
  753. set NLS_LANG=AMERICAN_AMERICA.UTF8
  754. set ORACLE_HOME=%SQLPLUS_ORACLE_HOME%
  755. call :CHECK_DB_USER "%V_DB_USER%" %V_SYS%
  756. %SQLPLUS_ORACLE_HOME%\bin\sqlplus "!V_DB_USER!/%V_DB_PASSWORD%@%conn_str% !V_SYS!" @!_V_SQL!
  757. call logcolstat.cmd DB NO
  758. call logcolstat.cmd EBS NO
  759. )
  760. if "%%b" NEQ "" (
  761. set V_SQL=%%b
  762. goto :ProcessSQLlist_port_sid)
  763. )
  764. goto :ASK_FOR_ANOTHER_DB
  765. ) || (
  766. call :ERROR_CATCH %V_TNS_SID% NO
  767. echo Failed to connect to the database.
  768. findstr /c:"ORA-01017" /c:"ORA-28009" /c:"ORA-01031" checkconn.txt >nul 2>&1 && (
  769. echo Connection error: invalid username/password
  770. echo Do you want to re-enter the database user and password? ^(y/n^)
  771. call :ASK_ANSWER ANSWER
  772. if "!ANSWER!" == "y" (
  773. call :ASK_FOR_DB_USER V_DB_USER
  774. call :ASK_for_DB_PASSWORD V_DB_PASSWORD
  775. call :HOST_PORT_SID
  776. )
  777. if "!ANSWER!" == "n" (
  778. echo Do you want to re-enter the connection details? ^(y/n^)
  779. call :ASK_ANSWER ANSWER
  780. if "!ANSWER!" == "y" (goto :ASK_FOR_CONNECTION_TYPE)
  781. if "!ANSWER!" == "n" (goto :ENDREMOTE )
  782. )
  783. ) || (
  784. echo Do you want to re-enter the database user and password? ^(y/n^)
  785. call :ASK_ANSWER ANSWER
  786. if "!ANSWER!" == "y" (
  787. call :ASK_FOR_DB_USER V_DB_USER
  788. call :ASK_for_DB_PASSWORD V_DB_PASSWORD
  789. call :HOST_PORT_SID
  790. )
  791. if "!ANSWER!" == "n" (goto :ASK_FOR_ANOTHER_DB )
  792. )
  793. )
  794. ) else (
  795. echo TNSPING test failed for the specified connection description.
  796. :ASK_CONN_DETAILS
  797. echo Do you want to re-enter the connection details ^(y/n^)?
  798. set /p TANS=
  799. set "TANS=!TANS:Y=y!"
  800. set "TANS=!TANS:N=n!"
  801. if "!TANS!"=="y" (goto :ASK_FOR_CONNECTION_TYPE)
  802. if "!TANS!"=="n" (goto :ASK_FOR_ANOTHER_DB )
  803. goto :ASK_CONN_DETAILS
  804. )
  805. Endlocal
  806. goto :EOF
  807. :TRIM
  808. SetLocal EnableDelayedExpansion
  809. Call :TRIMSUB %%%1%%
  810. EndLocal & set %1=%tempvar%
  811. GOTO :EOF
  812. :TRIMSUB
  813. set tempvar=%*
  814. GOTO :EOF
  815. goto :EOF
  816. :ENDREMOTE
  817. type error.txt >> DB_errors.log
  818. Endlocal