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.