Product:
Cognos Controller 10.4
Microsoft Windows 2016 server
Oracle 12c database
Problem:
How write the date to a text file to keep a log of a batch file. For example we use a SQL COMMAND to optimize the controller database from the outside.
Solution:
Use the WMIC function in new Windows to get the date, this will work independent on of the region setting on the windows server.
Create a BAT file with this contents:
REM —- Start of file —-
@echo off
setlocal enableextensions disabledelayedexpansion
REM only get the time – date is found in wmic command
REM SET MyDate=%date:~10,4%-%date:~4,2%-%date:~7,2%
set MyTime=%time:~0,2%:%time:~3,2%:%time:~6,2%
REM Get date and time in YYYYMMDDhhmmss format for filename
for /f “tokens=2 delims==.” %%a in (‘wmic OS Get localdatetime /value’) do set “dt=%%a”
REM put underscore in the middle of date and time stamp
set CTRLTIME=%dt:~0,8%_%dt:~8,6%
set MyDate=%dt:~0,8%
set FilePath= D:\script\logs\Controller_%CTRLTIME%.log
echo %MyDate% %MyTime% “Optimization Started” >> %FilePath%
REM below is call on a oracle command, then in the sql statement will call a PRC_ANALYZE_SCHEMA process.
sqlplus /nolog @”D:\script\db_optimize.sql”
REM timeout 10
REM get new time values when it was started
set MyTime=%time:~0,2%:%time:~3,2%:%time:~6,2%
echo %MyDate% %MyTime% “Optimization finished” >> %FilePath%
REM —- END of FILE —-
Run optimize of controller database schema every week.
The SQL file should contain something like this, please test before using;
connect CTRLDBNAME/CTRLDBPASSWORD@TNSALIAS
exec CTRLDBNAME.PRC_ANALYZE_SCHEMA;
More information:
https://ss64.com/nt/wmic.html
https://ss64.com/nt/timeout.html
https://www.ibm.com/support/knowledgecenter/en/SS9S6B_10.2.1/com.ibm.swg.ba.cognos.ctrl_inst.10.2.1.doc/t_run_oracle_batchjob_prc_analyze_schema.html