SLOB2
This guide for configuring SLOB2 is based on the guide here by Chris Buckel.
The guide for 4-node redo log setup is here.
Verify Online Redo Log Logical Sector Size
The logical and physical sector sizes the database ASM diskgroups are using can be verified using the "asmcmd" tool while connected as the linux user which owns the ASM instance (typicall "grid" in a separation environment, or "oracle" in a single-software-owner environment). In this case, this is a separation environment and "grid" is the owner as shown below.
gstanden@vmem1:~$ ssh root@oracle631
root@oracle631's password:
Last login: Tue Aug 26 10:50:33 2014 from 10.207.39.1
[root@oracle631 ~]# su - grid
[grid@oracle631 ~]$ asmcmd
ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 8192 3180 0 3180 0 N DATA/
MOUNTED EXTERN N 512 4096 1048576 8192 5033 0 5033 0 N RECO/
MOUNTED EXTERN N 512 4096 1048576 16384 16318 0 16318 0 N SLOB/
MOUNTED EXTERN N 512 4096 1048576 1024 962 0 962 0 N SYSTEMDG/
ASMCMD> exit
[grid@oracle631 ~]
Set Required Initialization Parameter
If working on 512-byte emulated sector size storage, it will be necessary to set an Oracle initialization parameter before creating the online redo log groups which use 4K sector size. The example shown above is a system that is using 512-byte emulated sector sizes. Therefore, set the initialization parameter as shown below. Note that if the system display in "asmcmd" showed "Sector" as "4096" and "Block" as "4096" it would not be necessary to set the initialization parameter.
[root@oracle631 ~]# su - oracle
[oracle@oracle631 ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 26 10:52:30 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> alter system set "_disk_sector_size_override"=true scope=both;
System altered.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
[oracle@oracle631 ~]$
Create Required Online Redo Log Groups
The redo log groups are recommended to be at least 5 groups of 2 members size 1G each member. The example shown below includes converting from a database that has 512 blocksize redo logs to 4096 blocksize redo log groups. Create the required redo log groups as shown below.
[root@oracle631 ~]# su - oracle
[oracle@oracle631 ~]$ env | grep ORA
ORACLE_SID=prod
ORACLE_HOME=/u00/app/oracle/product/11.2.0/dbhome_1
[oracle@oracle631 ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 26 11:03:38 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> set linesize 200
SQL> column member format a70
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 48 1073741824 512 2 NO CURRENT 1914208 26-AUG-14 2.8147E+14
2 1 0 1073741824 512 2 YES UNUSED 0 0
3 1 0 1073741824 512 2 YES UNUSED 0 0
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ---------------------------------------------------------------------- ---
1 ONLINE +DATA/prod/onlinelog/group_1.267.856608257 NO
1 ONLINE +RECO/prod/onlinelog/group_1.257.856608261 NO
2 ONLINE +DATA/prod/onlinelog/group_2.265.856608343 NO
2 ONLINE +RECO/prod/onlinelog/group_2.259.856608347 NO
3 ONLINE +DATA/prod/onlinelog/group_3.266.856608273 NO
3 ONLINE +RECO/prod/onlinelog/group_3.258.856608277 NO
6 rows selected.
SQL> alter database add logfile group 4 ('+DATA','+RECO') size 1G blocksize 4096;
Database altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 48 1073741824 512 2 NO CURRENT 1914208 26-AUG-14 2.8147E+14
2 1 0 1073741824 512 2 YES UNUSED 0 0
3 1 0 1073741824 512 2 YES UNUSED 0 0
4 1 0 1073741824 4096 2 YES UNUSED 0 0
SQL> alter system checkpoint global;
System altered.
SQL> alter database drop logfile group 2;
Database altered.
SQL> alter database drop logfile group 3;
Database altered.
SQL> alter database add logfile group 2 ('+DATA','+RECO') size 1G blocksize 4096;
Database altered.
SQL> c/group 2/group 3
1* alter database add logfile group 3 ('+DATA','+RECO') size 1G blocksize 4096
SQL> /
Database altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 48 1073741824 512 2 NO CURRENT 1914208 26-AUG-14 2.8147E+14
2 1 0 1073741824 4096 2 YES UNUSED 0 0
3 1 0 1073741824 4096 2 YES UNUSED 0 0
4 1 0 1073741824 4096 2 YES UNUSED 0 0
SQL> alter system switch logfile;
System altered.
SQL> alter system checkpoint global;
System altered.
SQL> alter database drop logfile group 1;
Database altered.
SQL> alter database add logfile group 1 ('+DATA','+RECO') size 1G blocksize 4096;
Database altered.
SQL> alter database add logfile group 5 ('+DATA','+RECO') size 1G blocksize 4096;
Database altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 0 1073741824 4096 2 YES UNUSED 0 0
2 1 49 1073741824 4096 2 NO CURRENT 1916588 26-AUG-14 2.8147E+14
3 1 0 1073741824 4096 2 YES UNUSED 0 0
4 1 0 1073741824 4096 2 YES UNUSED 0 0
5 1 0 1073741824 4096 2 YES UNUSED 0 0
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ---------------------------------------------------------------------- ---
1 ONLINE +DATA/prod/onlinelog/group_1.267.856610167 NO
1 ONLINE +RECO/prod/onlinelog/group_1.257.856610169 NO
2 ONLINE +DATA/prod/onlinelog/group_2.266.856610075 NO
2 ONLINE +RECO/prod/onlinelog/group_2.258.856610077 NO
3 ONLINE +DATA/prod/onlinelog/group_3.265.856610095 NO
3 ONLINE +RECO/prod/onlinelog/group_3.259.856610097 NO
4 ONLINE +DATA/prod/onlinelog/group_4.271.856609999 NO
4 ONLINE +RECO/prod/onlinelog/group_4.256.856610001 NO
5 ONLINE +DATA/prod/onlinelog/group_5.264.856610197 NO
5 ONLINE +RECO/prod/onlinelog/group_5.260.856610201 NO
10 rows selected.
SQL>
Create IOPS Tablespace
This is the tablespace that SLOB will use. Use the SLOB ASM diskgroup as shown below for this tablespace. Verify that the ASM diskgroup for the IOPS tablespace has sufficient space and is mounted for creation of the size 15G IOPS tablespace which is to be created.
gstanden@vmem1:~$ ssh root@oracle631
root@oracle631's password:
Last login: Tue Aug 26 10:56:12 2014 from 10.207.39.1
[root@oracle631 ~]# su - grid
[grid@oracle631 ~]$ asmcmd
ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 8192 1128 0 1128 0 N DATA/
MOUNTED EXTERN N 512 4096 1048576 8192 2981 0 2981 0 N RECO/
MOUNTED EXTERN N 512 4096 1048576 16384 16311 0 16311 0 N SLOB/
MOUNTED EXTERN N 512 4096 1048576 1024 962 0 962 0 N SYSTEMDG/
ASMCMD> exit
[grid@oracle631 ~]$
Create the IOPS tablespace on the +SLOB ASM diskgroup as shown below. This system uses sparse files on an SCST iSCSI Linux SAN, and the SAN needed additional physical volume added to provide sufficient space. If additional physical volume is needed on the oracle651 SCST iSCST Linux SAN machine, use this guide here for how to add the space.
[root@oracle631 ~]# su - oracle
[oracle@oracle631 ~]$ env | grep ORA
ORACLE_SID=prod
ORACLE_HOME=/u00/app/oracle/product/11.2.0/dbhome_1
[oracle@oracle631 ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 26 16:01:28 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> create tablespace IOPS datafile '+SLOB' size 15G;
Tablespace created.
SQL>
Unzip the SLOB2 distribution in the "/home/oracle" directory as the "oracle" linux user as shown below.
[oracle@oracle631 ~]$ tar -xvf 2013.05.05.slob2.tar
SLOB/
SLOB/runit.sh
SLOB/setup.sh
SLOB/slob.conf
SLOB/misc/
SLOB/misc/update_statistics.sql
SLOB/misc/create_database_kit/
SLOB/misc/create_database_kit/create.ora
SLOB/misc/create_database_kit/cr_db.sql
SLOB/misc/create_database_kit/README
SLOB/misc/create_database_kit/drop_database.txt
SLOB/misc/user-contrib/
SLOB/misc/user-contrib/AIX/
SLOB/misc/user-contrib/AIX/runit.sh
SLOB/misc/user-contrib/AIX/setup.sh
SLOB/misc/user-contrib/AIX/README
SLOB/misc/user-contrib/mascot/
SLOB/misc/user-contrib/mascot/SLOB-Mascot.png
SLOB/misc/user-contrib/mascot/README
SLOB/misc/BOM
SLOB/misc/switchlog.sql
SLOB/misc/awr_info.sh
SLOB/misc/dis_resmgr.sql
SLOB/misc/README
SLOB/misc/ts.sql
SLOB/misc/calibrate.sql
SLOB/misc/tsf.sql
SLOB/misc/boot.sh
SLOB/slob.sql
SLOB/README
SLOB/awr/
SLOB/awr/create_awr_report_rac_html.sql
SLOB/awr/awr_snap.sql
SLOB/awr/create_awr_report_html.sql
SLOB/awr/awr_rep.sql
SLOB/awr/list_awr_snaps.sql
SLOB/awr/create_awr_report.sql
SLOB/awr/del_awr.sql
SLOB/simple.ora
SLOB/wait_kit/
SLOB/wait_kit/trigger.c
SLOB/wait_kit/create_sem.c
SLOB/wait_kit/Makefile
SLOB/wait_kit/mywait.c
SLOB/advanced_topics/
SLOB/advanced_topics/iostat.out
SLOB/advanced_topics/db_stats.out
SLOB/advanced_topics/awr.html.gz
SLOB/advanced_topics/slob.conf
SLOB/advanced_topics/awr.txt.128
SLOB/advanced_topics/vmstat.out
SLOB/advanced_topics/mpstat.out
SLOB/advanced_topics/awr_rac.html.gz
SLOB/advanced_topics/typescript
SLOB/advanced_topics/advanced.ora
Review the installed files as shown below.
[oracle@oracle631 ~]$ cd SLOB
[oracle@oracle631 SLOB]$ ls -lrt
total 56
-rw-r--r-- 1 oracle oinstall 1155 May 2 2013 simple.ora
-rw-r--r-- 1 oracle oinstall 8622 May 3 2013 slob.sql
drwxr-xr-x 2 oracle oinstall 4096 May 3 2013 awr
drwxr-xr-x 2 oracle oinstall 4096 May 4 2013 wait_kit
drwxr-xr-x 2 oracle oinstall 4096 May 4 2013 advanced_topics
-rwxr-xr-x 1 oracle oinstall 6763 May 4 2013 runit.sh
-rwxr-xr-x 1 oracle oinstall 7555 May 4 2013 setup.sh
-rw-r--r-- 1 oracle oinstall 1298 May 4 2013 README
drwxr-xr-x 4 oracle oinstall 4096 May 4 2013 misc
-rw-r--r-- 1 oracle oinstall 385 May 5 2013 slob.conf
Install the SLOB wait kit as shown below.
[oracle@oracle631 SLOB]$ cd wait_kit
[oracle@oracle631 wait_kit]$ ls -lrt
total 16
-rw-r--r-- 1 oracle oinstall 1605 Dec 7 2011 trigger.c
-rw-r--r-- 1 oracle oinstall 321 Dec 30 2011 Makefile
-rw-r--r-- 1 oracle oinstall 1673 May 1 2013 create_sem.c
-rw-r--r-- 1 oracle oinstall 1676 May 3 2013 mywait.c
[oracle@oracle631 wait_kit]$
Run make from the wait kit directory as shown below.
[oracle@oracle631 wait_kit]$ make all
rm -fr *.o mywait trigger create_sem
cc -c -o mywait.o mywait.c
cc -o mywait mywait.o
cc -c -o trigger.o trigger.c
cc -o trigger trigger.o
cc -c -o create_sem.o create_sem.c
cc -o create_sem create_sem.o
cp mywait trigger create_sem ../
rm -fr *.o
[oracle@oracle631 wait_kit]$
Run the setup.sh script to create the IOPS tablespace objects as shown below.
[oracle@oracle631 SLOB]$ pwd
/home/oracle/SLOB
[oracle@oracle631 SLOB]$ ./setup.sh IOPS 128 | tee /home/oracle/setup_SLOB.log
NOTIFY: Load Parameters (slob.conf):
LOAD_PARALLEL_DEGREE == 8
SCALE == 10000
ADMIN_SQLNET_SERVICE == ""
CONNECT_STRING == "/ as sysdba"
NON_ADMIN_CONNECT_STRING ==
NOTIFY: Testing connectivity to the instance to validate slob.conf settings.
NOTIFY: ./setup.sh: Successful test connection: "sqlplus -L / as sysdba"
NOTIFY: Creating and loading seed table.
Table created.
PL/SQL procedure successfully completed.
NOTIFY: Seed table loading procedure has exited.
NOTIFY: Setting up user 1 2 3 4 5 6 7 8
NOTIFY: Waiting for background processes - Tue Aug 26 16:24:58 CDT 2014
NOTIFY: Setting up user 9 10 11 12 13 14 15 16
NOTIFY: Waiting for background processes - Tue Aug 26 16:25:06 CDT 2014
NOTIFY: Setting up user 17 18 19 20 21 22 23 24
NOTIFY: Waiting for background processes - Tue Aug 26 16:25:17 CDT 2014
NOTIFY: Setting up user 25 26 27 28 29 30 31 32
NOTIFY: Waiting for background processes - Tue Aug 26 16:25:26 CDT 2014
NOTIFY: Setting up user 33 34 35 36 37 38 39 40
NOTIFY: Waiting for background processes - Tue Aug 26 16:25:34 CDT 2014
NOTIFY: Setting up user 41 42 43 44 45 46 47 48
NOTIFY: Waiting for background processes - Tue Aug 26 16:25:42 CDT 2014
NOTIFY: Setting up user 49 50 51 52 53 54 55 56
NOTIFY: Waiting for background processes - Tue Aug 26 16:25:49 CDT 2014
NOTIFY: Setting up user 57 58 59 60 61 62 63 64
NOTIFY: Waiting for background processes - Tue Aug 26 16:25:58 CDT 2014
NOTIFY: Setting up user 65 66 67 68 69 70 71 72
NOTIFY: Waiting for background processes - Tue Aug 26 16:26:06 CDT 2014
NOTIFY: Setting up user 73 74 75 76 77 78 79 80
NOTIFY: Waiting for background processes - Tue Aug 26 16:26:15 CDT 2014
NOTIFY: Setting up user 81 82 83 84 85 86 87 88
NOTIFY: Waiting for background processes - Tue Aug 26 16:26:24 CDT 2014
NOTIFY: Setting up user 89 90 91 92 93 94 95 96
NOTIFY: Waiting for background processes - Tue Aug 26 16:26:32 CDT 2014
NOTIFY: Setting up user 97 98 99 100 101 102 103 104
NOTIFY: Waiting for background processes - Tue Aug 26 16:26:41 CDT 2014
NOTIFY: Setting up user 105 106 107 108 109 110 111 112
NOTIFY: Waiting for background processes - Tue Aug 26 16:26:49 CDT 2014
NOTIFY: Setting up user 113 114 115 116 117 118 119 120
NOTIFY: Waiting for background processes - Tue Aug 26 16:26:57 CDT 2014
NOTIFY: Setting up user 121 122 123 124 125 126 127 128
NOTIFY: Waiting for background processes - Tue Aug 26 16:27:06 CDT 2014
Table dropped.
NOTIFY: ./setup.sh: Loading procedure complete (140 seconds). Please check ./cr_tab_and_load.out for any errors
Disable the scheduler and resource manager so they don’t interfere (see note 786346.1 at support.oracle.com) as shown below.
[oracle@oracle631 SLOB]$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 26 17:40:49 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> alter system set resource_manager_plan='' scope=both;
System altered.
SQL>
execute dbms_scheduler.set_attribute('WEEKNIGHT_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL> execute dbms_scheduler.set_attribute('WEEKEND_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL> execute dbms_scheduler.set_attribute('SATURDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('SUNDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('MONDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('TUESDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('WEDNESDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('THURSDAY_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('FRIDAY_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL>
PL/SQL procedure successfully completed.
SQL>
PL/SQL procedure successfully completed.
SQL>
PL/SQL procedure successfully completed.
SQL>
PL/SQL procedure successfully completed.
SQL>
PL/SQL procedure successfully completed.
SQL>
PL/SQL procedure successfully completed.
SQL> BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(
client_name => 'sql tuning advisor',
operation => NULL,
window_name => NULL);
END;
/ 2 3 4 5 6 7
PL/SQL procedure successfully completed.
SQL> select window_name from dba_scheduler_windows;
WINDOW_NAME
------------------------------
MONDAY_WINDOW
TUESDAY_WINDOW
WEDNESDAY_WINDOW
THURSDAY_WINDOW
FRIDAY_WINDOW
SATURDAY_WINDOW
SUNDAY_WINDOW
WEEKNIGHT_WINDOW
WEEKEND_WINDOW
9 rows selected.
SQL> execute dbms_scheduler.set_attribute('MONDAY_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL> execute dbms_scheduler.set_attribute('TUESDAY_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL> execute dbms_scheduler.set_attribute('WEDNESDAY_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL> execute dbms_scheduler.set_attribute('THURSDAY_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL> execute dbms_scheduler.set_attribute('FRIDAY_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL> execute dbms_scheduler.set_attribute('SATURDAY_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL> execute dbms_scheduler.set_attribute('WEEKNIGHT_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL> execute dbms_scheduler.set_attribute('WEEKEND_WINDOW','RESOURCE_PLAN','');
PL/SQL procedure successfully completed.
SQL>
Create the slob.ora file as shown below. Important parameters to verify are shown in bold.
[oracle@oracle631 SLOB]$ pwd
/home/oracle/SLOB
[oracle@oracle631 SLOB]$ vi slob.ora
[oracle@oracle631 SLOB]$ cat slob.ora
*._db_block_prefetch_limit=0
*._db_block_prefetch_quota=0
*._db_file_noncontig_mblock_read_count=0
*._disk_sector_size_override=TRUE
*.control_files='+DATA/prod/controlfile/current.261.855500515','+DATA/prod/controlfile/current.260.855500515'
*.cpu_count=1
*.db_block_size=8192
*.db_cache_size=10M
*.db_create_file_dest='+DATA'
*.db_name='prod'
*.db_files=2000
*.db_recovery_file_dest='+RECO'
*.db_recovery_file_dest_size=200G
*.diagnostic_dest='/u01/app/oracle'
*.filesystemio_options='setall'
*.log_buffer=134217728
*.parallel_max_servers=0
*.pga_aggregate_target=1G
*.processes=500
*.recyclebin=OFF
*.resource_manager_plan=''
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=1G
*.undo_tablespace='UNDOTBS1'
[oracle@oracle631 SLOB]$
Restart database using pfile=slob.ora as shown below. Note the exposition of the need to set "compatible='11.2.0.4.0'" as shown below.
[oracle@oracle631 SLOB]$ pwd
/home/oracle/SLOB
[oracle@oracle631 SLOB]$ ls -lrt slob.ora
-rw-r--r-- 1 oracle oinstall 720 Aug 26 18:12 slob.ora
[oracle@oracle631 SLOB]$ env | grep ORA
ORACLE_SID=prod
ORACLE_HOME=/u00/app/oracle/product/11.2.0/dbhome_1
[oracle@oracle631 SLOB]$ srvctl stop database -d prod
[oracle@oracle631 SLOB]$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 26 18:13:35 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup pfile=/home/oracle/SLOB/slob.ora
ORACLE instance started.
Total System Global Area 1253339136 bytes
Fixed Size 2252464 bytes
Variable Size 1090519376 bytes
Database Buffers 16777216 bytes
Redo Buffers 143790080 bytes
ORA-00201: control file version 11.2.0.4.0 incompatible with ORACLE version <-- oops need to set the compatible parameter 11.2.0.4.0
11.2.0.0.0
ORA-00202: control file: '+DATA/prod/controlfile/current.261.855500515'
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@oracle631 SLOB]$ vi slob.ora
[oracle@oracle631 SLOB]$ cat slob.ora | grep compatible
*.compatible='11.2.0.4.0'
[oracle@oracle631 SLOB]$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 26 18:16:04 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup pfile=/home/oracle/SLOB/slob.ora
ORACLE instance started.
Total System Global Area 1253339136 bytes
Fixed Size 2252464 bytes
Variable Size 1090519376 bytes
Database Buffers 16777216 bytes
Redo Buffers 143790080 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
Install the SLOB-harness.sh script in the /home/oracle/SLOB directory as described here by Chris Buckel.
[oracle@oracle631 SLOB]$ pwd
/home/oracle/SLOB
[oracle@oracle631 SLOB]$ cat SLOB2-harness.sh
#!/bin/bash
# SLOB2 Harness - script for driving the Silly Little Oracle Benchmark v2 (SLOB2)
# Author: flashdba (http://flashdba.com)
# For information on SLOB go to: http://lmgtfy.com/?q=oracle+slob
#
# For educational purposes only - no warranty is provided
# Test thoroughly - use at your own risk
# SLOB2 Harness should be installed and run from the SLOB home
# i.e. the location in which you unpacked the SLOB tarball
# Define variables and defaults
DEFAULT_METADATA_FILE="slob2-harness.inf"
# Define counters and flags
ERRORCNT=0 # Count number of errors occurred
SLOBCNT=0 # Count number of SLOB executions
SLOBTOT=0 # Total number of required SLOB runs
SILENT=0 # 0 = No, 1 = Yes
VERBOSE=0 # 0 = No, 1 = Yes
DEBUG=0 # 0 = No, 1 = Yes
# Define constants
EXIT_SUCCESS=0 # Things went well
EXIT_FAILURE=1 # Things didn't go so well
EXIT_INTERRUPT=2 # User interrupted with CRTL-C
# Define functions for printing messages
echoerr() { echo "`date +%Y%m%d-%H%M%S` Error: $@" 1>&2; let ERRORCNT++; }
echoinf() { [[ "$SILENT" = 1 ]] || echo "`date +%Y%m%d-%H%M%S` Info : ${@}" 1>&2; }
echovrb() { [[ "$VERBOSE" = 1 ]] && echo "`date +%Y%m%d-%H%M%S` Info : ${@}" 1>&2; }
echodbg() { [[ "$DEBUG" = 1 ]] && echo "`date +%Y%m%d-%H%M%S` Debug: ${@}" 1>&2; }
# Function for handling a user interrupt (CTRL-C)
trap_user_interrupt() {
echodbg "Entering trap_user_interrupt() with ERRORCNT=$ERRORCNT"
echoerr "Received User Interrupt... exiting SLOB Harness"
echoinf "Warning - SLOB processes may still be running, check with ps -f"
exit_harness $EXIT_INTERRUPT
}
# Trap SIGINT i.e. user interrupting via CTRL-C
trap trap_user_interrupt INT
# Function for printing usage information
usage() {
echodbg "Entering usage() with parameters: $@"
if [ $# -gt 0 ]; then
echo "Error: $@" 1>&2
echo "" 1>&2
fi
echo "Usage: $0 [ -p | -P ] [ -s | -v ] [ -f ]" 1>&2
echo "" 1>&2
echo " Harness for driving SLOBv2 (the Silly Little Oracle Benchmark)"
echo "" 1>&2
echo " Should be run from the directory in which SLOB is installed" 1>&2
echo "" 1>&2
echo " Uses a metadata file to iterate through SLOB runs while varying:" 1>&2
echo " - The number of SLOB worker processes" 1>&2
echo " - The percentage of transactions which are DML" 1>&2
echo "" 1>&2
echo " Options:" 1>&2
echo " -h Help (print this help information)" 1>&2
echo " -m Metadata File (specify non-default metadata file)" 1>&2
echo " -i Infostamp (print additional system information at the tail of each AWR report)"1>&2
echo " -I noInfostamp (do not print the additional system information)" 1>&2
echo " -s Silent (do not print SLOB processing information)" 1>&2
echo " -v Verbose (show extra SLOB processing details)" 1>&2
echo "" 1>&2
echo " If not overridden with the -m flag, the default metadata file is $DEFAULT_METADATA_FILE"1>&2
echo "" 1>&2
exit $EXIT_FAILURE
}
# Function for exiting the SLOB harness via an attempted cleanup
exit_harness() {
echodbg "Entering exit_harness() with parameters: $@"
restore_slob_conf
echoinf "-----------------------------------"
echoinf " Total submitted SLOB jobs: $SLOBTOT"
echoinf " Total completed SLOB jobs: $SLOBCNT"
echoinf "-----------------------------------"
[[ "$1" -gt 0 ]] && echoinf "FAILURE of slob-harness"
exit $1
}
# Function for checking Oracle and SLOB environment
check_slob_environment() {
# Check the environment is correctly setup for both Oracle and SLOB
echodbg "Entering check_slob_environment()"
# Check location of SLOB executable
if [ \! -x ./runit.sh ]; then
echoerr "Cannot locate SLOB run script at ./runit.sh - exiting..."
exit $EXIT_FAILURE
elif [ -z "$ORACLE_SID" ]; then
echoerr "Environment variable ORACLE_SID not set - exiting..."
exit $EXIT_FAILURE
fi
# Check location of SLOB configuration file
if [ \! -r ./slob.conf ]; then
echoerr "Cannot locate SLOB configuration file at ./slob.conf - exiting..."
exit $EXIT_FAILURE
else
SLOB_CONF=slob.conf
source ./slob.conf
fi
# Check to see if non-default metadata file was specified
if [ -z "$METADATA_FILE" ]; then
echovrb "Using default metadata file $DEFAULT_METADATA_FILE"
METADATA_FILE=$DEFAULT_METADATA_FILE
else
echoinf "Using user-specified metadata file $METADATA_FILE"
fi
}
read_metadata_file() {
# Read the SLOB Harness metadata file to get values for workers and update percentage
echodbg "Entering read_metadata_file()"
# Test existence of file
if [ -r "$METADATA_FILE" ]; then
echovrb "Found readable metadata file $METADATA_FILE"
else
echoerr "Unable to read metadata file $METADATA_FILE - exiting..."
exit $EXIT_FAILURE
fi
# Parse metadata file for WORKERS and UPDATE_PCT values
UPDPCT_LIST=`cat $METADATA_FILE | sed '/^\#/d' | sed -n -e '/UPDATE_PCT/,/\/UPDATE_PCT/p' | grep -v"UPDATE_PCT" | tr -d '\r\f'`
WORKER_LIST=`cat $METADATA_FILE | sed '/^\#/d' | sed -n -e '/WORKERS/,/\/WORKERS/p' | grep -v"WORKERS"`
echoinf "`echo Update Pct list : $UPDPCT_LIST | tr -d '\r\f'`"
echoinf "`echo SLOB Worker list : $WORKER_LIST | tr -d '\r\f'`"
# Calculate the total number of SLOB runs required
SLOBTOT=`expr $(echo $UPDPCT_LIST | wc -w) \* $(echo $WORKER_LIST | wc -w)`
echoinf "$SLOBTOT runs of SLOB will be required"
}
backup_slob_conf() {
# Backup the existing slob.conf file prior to performing any manipulation of parameters
echodbg "Entering backup_slob_conf()"
if [ -w "$SLOB_CONF" ]; then
echovrb "Copying slob configuration file $SLOB_CONF to ${SLOB_CONF}.backup"
echovrb "EXCUTING cp $SLOB_CONF ${SLOB_CONF}.backup"
cp $SLOB_CONF ${SLOB_CONF}.backup
if [ "$?" != 0 ]; then
echoerr "Cannot backup slob configuration file $SLOB_CONF to $SLOB_BACKUP_CONF"
exit $EXIT_FAILURE
else
# Set variable so that the restore_slob_conf function can restore the backup
SLOB_BACKUP_CONF=${SLOB_CONF}.backup
fi
else
echoerr "Cannot edit slob configuration file $SLOB_CONF"
exit $EXIT_FAILURE
fi
}
manipulate_slob_conf() {
# Manipulate the slob configuration file to remove the UPDATE_PCT line
echodbg "Entering manipulate_slob_conf()"
# This function is called AFTER backup_slob_conf and so we know the conf files exist
# We therefore do not need to include extra tests to ensure they exist and are modifiable
echovrb "Manipulating slob configuration file to remove UPDATE_PCT"
echovrb "EXECUTING cat $SLOB_BACKUP_CONF | grep -v ^UPDATE_PCT > $SLOB_CONF"
cat $SLOB_BACKUP_CONF | grep -v ^UPDATE_PCT > $SLOB_CONF
if [ "$?" != 0 ]; then
echoerr "Cannot manipulate slob configuration file $SLOB_CONF -> $SLOB_BACKUP_CONF"
exit_harness $EXIT_FAILURE
fi
}
create_infostamp_text() {
# Create system information to be written to the tail of AWR reports
echodbg "Entering create_infostamp_text()"
if [ -r /etc/oracle-release ]; then
local INFOSTAMP_LINUX="LINUX=`cat /etc/oracle-release`"
elif [ -r /etc/redhat-release ]; then
local INFOSTAMP_LINUX="LINUX=`cat /etc/redhat-release`"
elif [ -r /etc/SuSE-release ]; then
local INFOSTAMP_LINUX="LINUX=`cat /etc/SuSE-release`"
else
local INFOSTAMP_LINUX="LINUX=Unknown"
fi
local INFOSTAMP_KERNEL="KERNEL=`uname -r`"
local INFOSTAMP_PROCESSOR="PROCESSOR=`grep "model name" /proc/cpuinfo | head -1 | cut -d: -f2-`"
AWR_INFOSTAMP_TEXT="======================================\n${INFOSTAMP_LINUX}\n${INFOSTAMP_KERNEL}\n${INFOSTAMP_PROCESSOR}"
echodbg "`echo -e "Gathered system information:\n${AWR_INFOSTAMP_TEXT}"`"
}
print_awr_infostamp() {
# Function for printing a stamp of system details to the end of the SLOB-produced AWR report
echodbg "Entering print_awr_infostamp()"
if [ -w awr.txt ]; then
echovrb "Writing additional system information to tail of awr.txt"
else
echoerr "Cannot find writable file awr.txt - exiting..."
exit_harness $EXIT_FAILURE
fi
echo -e $AWR_INFOSTAMP_TEXT >> awr.txt
echo "SLOB UPDATE_PCT=$UPDATE_PCT" >> awr.txt
echo "SLOB RUN_TIME=$RUN_TIME" >> awr.txt
echo "SLOB WORK_LOOP=$WORK_LOOP" >> awr.txt
echo "SLOB SCALE=$SCALE" >> awr.txt
echo "SLOB WORK_UNIT=$WORK_UNIT" >> awr.txt
echo "SLOB REDO_STRESS=$REDO_STRESS" >> awr.txt
echo "SLOB LOAD_PARALLEL_DEGREE=$LOAD_PARALLEL_DEGREE" >> awr.txt
echo "SLOB SHARED_DATA_MODULUS=$SHARED_DATA_MODULUS" >> awr.txt
}
rename_slob_output() {
# Rename SLOB output files and place in new directory
echodbg "Entering rename_slob_output() with parameters: $@"
if [ "$#" != 2 ]; then
echoerr "Function rename_slob_output() incorrectly called with parameters: $@"
exit_harness $EXIT_FAILURE
fi
if [ -f "$1" ]; then
echovrb "EXECUTING mv $1 $2"
mv $1 $2
if [ "$?" != 0 ]; then
echoerr "Cannot mv $1 to $2 - exiting..."
exit_harness $EXIT_FAILURE
fi
else
echovrb "File not found - $1"
fi
}
restore_slob_conf() {
# Restore the slob.conf file from its backup
echodbg "Entering restore_slob_conf()"
if [ -z "$SLOB_BACKUP_CONF" ]; then
echoinf "No known backup slob configuration file - restore unnecessary"
elif [ -r "$SLOB_BACKUP_CONF" ]; then
echovrb "Copying $SLOB_CONF to ${SLOB_CONF}.backup"
echovrb "EXECUTING mv $SLOB_BACKUP_CONF $SLOB_CONF"
mv $SLOB_BACKUP_CONF $SLOB_CONF
if [ "$?" != 0 ]; then
echoerr "Cannot restore backup slob configuration file $SLOB_BACKUP_CONF to $SLOB_CONF"
else
# Unset variable so that no further attempts can be made to restore the backup configuration file
unset SLOB_BACKUP_CONF
fi
else
echoerr "Cannot find slob backup configuration file $SLOB_BACKUP_CONF - unable to restore"
fi
}
# Start of main program
# Process calling parameters
while getopts ":iIhm:svX" opt; do
case $opt in
i)
# Print additional system information to the tail end of AWR reports
[[ "$AWR_INFOSTAMP" = 0 ]] && usage "Print and noPrint are conflicting options"
AWR_INFOSTAMP=1
;;
I)
# Do not print additional system information to the tail end of AWR reports
[[ "$AWR_INFOSTAMP" = 1 ]] && usage "Print and noPrint are conflicting options"
AWR_INFOSTAMP=0
;;
h)
# Print usage information and then exit
usage
;;
m)
# Location of the metadata file
[[ -z "$OPTARG" ]] && usage "Metadata File (-m) switch requires a filename"
METADATA_FILE="$OPTARG"
;;
s)
[[ "$VERBOSE" = 1 ]] && usage "Silent and Verbose are conflicting options"
SILENT=1
;;
v)
[[ "$SILENT" = 1 ]] && usage "Silent and Verbose are conflicting options"
VERBOSE=1
echovrb "Running in verbose mode"
;;
X)
DEBUG=1
VERBOSE=1
echodbg "Running in debug mode - expect lots of output..."
;;
\?)
usage "Invalid option -$OPTARG"
;;
esac
done
# Set things up ready for execution
check_slob_environment
read_metadata_file
backup_slob_conf
manipulate_slob_conf
# Check if we are going to be printing additional system information in the AWR reports
AWR_INFOSTAMP=${AWR_INFOSTAMP:=1}
[[ "$AWR_INFOSTAMP" = 1 ]] && create_infostamp_text
# Start of SLOB calling loop - the outer loop iterates through UPDATE_PCT values, the inner loop through WORKERS values
echoinf "Starting slob-harness..."
for updatepct_value in $UPDPCT_LIST; do
echoinf "Starting loop for UPDATE_PCT=$updatepct_value"
export UPDATE_PCT=$updatepct_value
for slobworkers in $WORKER_LIST; do
echoinf "Calling SLOB with $slobworkers workers"
# Create a string which will be used in all filenames for this run
SLOB_RUNNAME=${updatepct_value}.${slobworkers}
if [ "$VERBOSE" = 1 ]; then
echovrb "EXECUTING ./runit.sh $((10#$slobworkers)) | tee slob_runit.${SLOB_RUNNAME}.out 2>&1"
./runit.sh $((10#$slobworkers)) | tee slob_runit.${SLOB_RUNNAME}.out 2>&1
SLOB_RETVAL=$?
else
./runit.sh $((10#$slobworkers)) > slob_runit.${SLOB_RUNNAME}.out 2>&1
SLOB_RETVAL=$?
fi
if [ "$SLOB_RETVAL" = 0 ]; then
echoinf "Completed SLOB run for $slobworkers workers: `grep ^Tm slob_runit.${SLOB_RUNNAME}.out`"
let SLOBCNT++
else
echoerr "SLOB returned error code $SLOB_RETVAL - exiting..."
exit_harness $EXIT_FAILURE
fi
if [ "$AWR_INFOSTAMP" = 1 ]; then
# Add system details to the end of the AWR report
print_awr_infostamp
fi
# Create a directory in which the output files can reside
if [ -d awr.${SLOB_RUNNAME} ]; then
echovrb "Directory awr.${SLOB_RUNNAME} already exists..."
else
echovrb "EXECUTING mkdir awr.${SLOB_RUNNAME}"
mkdir awr.${SLOB_RUNNAME}
if [ "$?" != 0 ]; then
echoerr "Cannot create directory awr.${SLOB_RUNNAME} - exiting..."
exit_harness $EXIT_FAILURE
fi
fi
# Move the various AWR reports into the new directory
rename_slob_output awr.txt awr.${SLOB_RUNNAME}/awr.${SLOB_RUNNAME}.txt
rename_slob_output awr.html.gz awr.${SLOB_RUNNAME}/awr.${SLOB_RUNNAME}.html.gz
rename_slob_output awr_rac.html.gz awr.${SLOB_RUNNAME}/awr_rac.${SLOB_RUNNAME}.html.gz
# Move the various out files into the new directory
rename_slob_output iostat.out awr.${SLOB_RUNNAME}/iostat.${SLOB_RUNNAME}.out
rename_slob_output mpstat.out awr.${SLOB_RUNNAME}/mpstat.${SLOB_RUNNAME}.out
rename_slob_output vmstat.out awr.${SLOB_RUNNAME}/vmstat.${SLOB_RUNNAME}.out
rename_slob_output db_stats.out awr.${SLOB_RUNNAME}/db_stats.${SLOB_RUNNAME}.out
rename_slob_output slob_runit.${SLOB_RUNNAME}.out awr.${SLOB_RUNNAME}/slob_runit.${SLOB_RUNNAME}.out
echoinf " SLOB Harness is `expr $SLOBCNT \* 100 / $SLOBTOT`% complete"
done
done
echoinf "Successfully completed slob-harness"
exit_harness $EXIT_SUCCESS
# EOF
Install the slob2-harness.inf file also documented at the Chris Buckel blog here.
[oracle@oracle631 SLOB]$ pwd
/home/oracle/SLOB
[oracle@oracle631 SLOB]$ ls -lrt slob2-harness.inf
-rwxr-xr-x 1 oracle oinstall 432 Aug 26 18:28 slob2-harness.inf
[oracle@oracle631 SLOB]$ cat slob2-harness.inf
</pre>
# slob2-harness.inf
# Metadata file for slob2-harness.sh
# The UPDATE_PCT section defines the percentage of transactions run by SLOB which are DML
UPDATE_PCT
0
10
20
30
/UPDATE_PCT
# The WORKERS section defines the number of SLOB processes to test
WORKERS
001
002
004
006
008
010
012
014
016
018
020
022
024
026
028
030
032
034
036
038
040
042
044
046
048
052
056
060
064
068
072
076
080
088
096
112
128
/WORKERS
# EOF
<pre>
[oracle@oracle631 SLOB]$
Before starting a SLOB run one has to decide how the issue of archived redo log generation will be addressed. A script or other strategy can be used to prune them out of flash recovery area, some RMAN configuration and backup strategies can be used, or the database can be put in NOARCHIVELOG mode. Here will be used the NOARCHIVELOG approach.
[oracle@oracle631 SLOB]$ srvctl stop database -d prod
[oracle@oracle631 SLOB]$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 26 18:42:00 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount pfile=/home/oracle/SLOB/slob.ora
ORACLE instance started.
Total System Global Area 1253339136 bytes
Fixed Size 2252464 bytes
Variable Size 1090519376 bytes
Database Buffers 16777216 bytes
Redo Buffers 143790080 bytes
Database mounted.
SQL> alter database noarchivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
SQL>
Ready to run SLOB harness so go ahead as shown below.
[oracle@oracle631 SLOB]$ pwd
/home/oracle/SLOB
[oracle@oracle631 SLOB]$ ls -lrt SLOB2-harness.sh
-rwxr-xr-x 1 oracle oinstall 29779 Aug 26 18:27 SLOB2-harness.sh
[oracle@oracle631 SLOB]$ ls -lrt *.inf
-rwxr-xr-x 1 oracle oinstall 432 Aug 26 18:28 slob2-harness.inf
[oracle@oracle631 SLOB]$ nohup ./slob2-harness.sh > slob2-harness.out 2>&1 &
Here are some checks to verify SLOB2 harness is running correctly as shown below. First check that the process is still running in background after awhile (few minutes say). Here it can be seen SLOB2 harness has been running just fine in background for about 8 minutes.
[oracle@oracle631 SLOB]$ ps -ef | grep SLOB2
oracle 10036 8739 0 18:52 pts/1 00:00:00 /bin/bash ./SLOB2-harness.sh
oracle 11840 10219 0 19:00 pts/2 00:00:00 grep SLOB2
[oracle@oracle631 SLOB]$
Next check to see that file are being generated in the directory which SLOB2 harness was launched from (in this case the "/home/oracle/SLOB" directory) as shown below. Looks like running ok so far after about 10 minutes run time. Leave it running for awhile (for a real production system, 24 hours or more). For this system we leave it running for a few hours then stop it an analyze the output.
[oracle@oracle631 SLOB]$ pwd
/home/oracle/SLOB
[oracle@oracle631 SLOB]$ ls -l *.out awr*
-rw-r--r-- 1 oracle oinstall 29154 Aug 26 16:27 cr_tab_and_load.out
-rw-r--r-- 1 oracle oinstall 11997 Aug 26 16:27 drop_table.out
-rw-r--r-- 1 oracle oinstall 17192 Aug 26 16:27 grant.out
-rw-r--r-- 1 oracle oinstall 126102 Aug 26 19:04 iostat.out
-rw-r--r-- 1 oracle oinstall 3655 Aug 26 19:04 mpstat.out
-rw-r--r-- 1 oracle oinstall 822 Aug 26 19:03 SLOB2-harness.out
-rw-r--r-- 1 oracle oinstall 573 Aug 26 19:03 slob_runit.0.004.out
-rw-r--r-- 1 oracle oinstall 1106 Aug 26 19:04 vmstat.out
awr:
total 28
-rw-r--r-- 1 oracle oinstall 1094 May 3 2013 awr_rep.sql
-rw-r--r-- 1 oracle oinstall 1123 May 3 2013 awr_snap.sql
-rw-r--r-- 1 oracle oinstall 1857 May 3 2013 create_awr_report_html.sql
-rw-r--r-- 1 oracle oinstall 1865 May 3 2013 create_awr_report_rac_html.sql
-rw-r--r-- 1 oracle oinstall 1854 May 3 2013 create_awr_report.sql
-rw-r--r-- 1 oracle oinstall 1160 May 3 2013 del_awr.sql
-rw-r--r-- 1 oracle oinstall 1260 May 3 2013 list_awr_snaps.sql
awr.0.001:
total 1404
-rw-r--r-- 1 oracle oinstall 35898 Aug 26 18:58 awr.0.001.html.gz
-rw-r--r-- 1 oracle oinstall 132853 Aug 26 18:58 awr.0.001.txt
-rw-r--r-- 1 oracle oinstall 31517 Aug 26 18:58 awr_rac.0.001.html.gz
-rw-r--r-- 1 oracle asmadmin 21 Aug 26 18:57 db_stats.0.001.out
-rw-r--r-- 1 oracle oinstall 1168598 Aug 26 18:57 iostat.0.001.out
-rw-r--r-- 1 oracle oinstall 36142 Aug 26 18:57 mpstat.0.001.out
-rw-r--r-- 1 oracle oinstall 850 Aug 26 18:58 slob_runit.0.001.out
-rw-r--r-- 1 oracle oinstall 9477 Aug 26 18:57 vmstat.0.001.out
awr.0.002:
total 1396
-rw-r--r-- 1 oracle oinstall 35931 Aug 26 19:03 awr.0.002.html.gz
-rw-r--r-- 1 oracle oinstall 137504 Aug 26 19:03 awr.0.002.txt
-rw-r--r-- 1 oracle oinstall 30282 Aug 26 19:03 awr_rac.0.002.html.gz
-rw-r--r-- 1 oracle asmadmin 21 Aug 26 19:03 db_stats.0.002.out
-rw-r--r-- 1 oracle oinstall 1157142 Aug 26 19:03 iostat.0.002.out
-rw-r--r-- 1 oracle oinstall 35785 Aug 26 19:03 mpstat.0.002.out
-rw-r--r-- 1 oracle oinstall 852 Aug 26 19:03 slob_runit.0.002.out
-rw-r--r-- 1 oracle oinstall 9462 Aug 26 19:03 vmstat.0.002.out
[oracle@oracle631 SLOB]$
Verify SLOB Harness Complete
The completion message displays when SLOB harness completes successfully. The run in this blog took over 12 hours.