This page will be used to offer quick links to the latest SLOB kit contents.
NOTE: If you are interested in testing Amazon RDS for Oracle with SLOB, please visit the following webpage for a step-by-step deployment guide: click here.
Where To Get The Latest SLOB Kit
From GitHub
NEW: SLOB 2.5.4 The tar archive can be downloaded here.
SLOB Documentation: (Github)
Prior Release
The Github repository will allow you to chose older versions with the branch selector.
A Word About Release Nomenclature
SLOB releases follow a major.minor.maintenance.patch nomenclature. Maintenance level changes will happen at any time but will never include changes that affect on-disk data (e.g., schema changes) or run time. Maintenance releases fall in the category of cosmetic or small documentation changes.
Minor releases will include new features but such features will never require reloading data–with the exception of an optional new feature. An example of an optional new feature that does require reloading data was the Short Table Scan feature introduced in SLOB 2.4. On-disk data was sacred between SLOB 2.3 and SLOB 2.4 but in order to test Short Table Scans after downloading SLOB 2.4, reloading data was required.
Major releases are very rare but are just what the name suggests, major! 🙂
Helpful Information
One can simply google “Oracle SLOB” to find a wealth of SLOB community information. Additionally, I’ll continue to update the following list of helpful SLOB links on this blog:
- SLOB Deployment – A Picture Tutorial. Click the following link: SLOB Tutorial.
- SLOB Data Loading Case Studies – Part I. A Simple Concurrent + Parallel Example. Click the following link: Data Loading Part I.
- SLOB Physical I/O Randomness. Click the following link: About I/O Randomness.
- SLOB Failing To Generate AWR Reports? Red Hat Bug 919793! Click this link.
- Graham Thornton posted this fantastic step-by-step for testing All-Flash storage with SLOB: Testing EMC Unity All-Flash with SLOB (A highly recommended SLOB user post 3/2017)
SLOB Recipes
These posts include SLOB performance examples to include slob.conf and init.ora parameters:
SLOB Recipe: Loading 8TB Scale SLOB on EMC XtremIO with a Single 2-Socket Linux Host
Is ORA-01653 expected when you setup SLOB with 100 users on a bigfile TS?
Bigfile TS max size=db block size * total # of blocks.
Each of the 10K row CF1 table is using 10K blocks.
For 100 users total blocks is 1 million (10,000*100 = 1,000,000).
My db block size is 8k.
So bigfile max size is: 8192 * 1 mil blocks = 8 GB.
Setup eventually fails with ORA-01653 even though TS has 20 GB free.
are you sure the ORA-01653 is happening because of the tablespace given to setup.sh for SLOB schemas and not, perhaps, UNDO? You might try setting autoextend on the bigfile TS and see how big it wants to be… but, in the end, your math is right. It should fit.
Hi Kevin,
I have a problem with setup.sh script on my Solaris 11 system:
“Option 2 must be an integer”.
The problem is located here:
function is_int() {
local s=”$1″
if ( ! echo $s | grep -q “^-\?[0-9]*$” )
then
return 1
else
return 0
fi
}
It seems because of Solaris grep limitation:
probably it would be better to check “is_positive”?, like :
if ( ! echo $s | grep -q “^[0-9]*$” )
then
return 1
else
return 0
fi
It is closer to initial intention of checking correctness of schemas numbers and works on Solaris as well 🙂
Please see the SLOB USer Guide. SLOB is not ported to Solaris. The Guide speaks of how to test Solaris hosts via connecting a Linux server.
Ah, sorry, missed tat point initially. Thank you!
No worries.
Note, if you google a bit you may find that some SLOB users have documented the small changes to the kit needed to run SLOB natively on Solaris. I’d rather you just create a VBOX VM and put Oracle Client in there and use SQL*Net to drive the host.
Hello. I was unsuccessful to install 2.3 release in an AIX environment. Can you provide a setup script that is more compatible?
There is no port of SLOB to AIX. Please investigate all the material I’ve provided about using a small Linux VM as a SLOB client/driver.
Hi kevin,
I tried change the data type of c2 or c20 to CLOB or increase varchar2 width to 3999, the slob simply couldn’t work.
the goal is test LOB behavior and grab IO characteristic.
any thought?
what files did you hack?
Ah, sorry now just completed LOB IO testing with modified script.
The modified files are setup.sh, slob,sql.
setup.sh:
– On CREATE TABLE cf1
– PROCEDURE slobupdat.
slob.sql:
On select count(dbms_lob.substr(c2,1,524288)) INTO v_rowcnt
I tested 512KB for every LOB and used dbms_random.string(‘A’,524288) to fillup the LOB.
Do you have any suggestion?
hi Kevin,
I dont have privileges to create user1 in the DB where i want to run the tests. How can i run by creating the objects under the schema which i have and without the need of user1 or any other user. i can create & drop objects , gather stats etc.
Regds
You have to be able to create users for SLOB. There is no way around it.
Ohk, thats sad. Because in our organisation we dont have those privileges . i was very keen to use this nice tool in different application DBs PROD and Performance LAB DBs.
Thank you!
Hi there, just thought I’d pitch in here. If you don’t have privs to create a user, you probably don’t have the authority to run huge amounts of IO through whichever database you were hoping to test on. What specifically were you hoping to achieve with SLOB on your production database?
Chris
My comment sounded quite snarky, and I didn’t intend that, it’s just that SLOB is a great tool, but if you’re not careful you could cause yourself a lot of trouble 🙂
Yeah i understand , not planning to run it directly in production without understanding what it does 🙂
No. i do have the privilege to create objects under my user and run any queries , even in production. But i am supposed to tune other people queries so i wont run a bad one in production 😉 . Basically i am trying to use it as a benchmarking tool. Actually i heard (on twitter) lot about people using it , so wanted to learn myself as well.
OK. So SLOB is not a database bench marking tool. It is a tool for generating IO via a database to test the IO performance. At the core you can use it to test physical I/O performance, or you can use it to test logical I/O performance. If you just want to learn how SLOB works, set up a test database and load a small amount of data into it, and then play with the settings to see how it works.
Error with 2.4.2 on 11.2 — setup.sh errors using :
1. f_check_mto: Logic error 1. — there’s no CDB to query
(setup.sh continues)
2. f_gather_stats: Failed to gather stats on user1 schema — ORA-20000
(not sure where to leave a possible bug comment…)
– brad
Hi There,
Any chance please you can update the documentation to include that it does not support Oracle Multitenant Option.
Thanks
I’ll have to take a peek.
Hi. Just tried this on a clone database (Created via RMAN Duplicate), which has all the snapshots from the old database. It fails to create an AWR report. Line 587 of runit.sh gets the largest snap_id, but I feel it would be better to get the largest snap id for the current database:
So instead of:
SELECT MAX(SNAP_ID) FROM dba_hist_snapshot;
run
SELECT MAX(s.SNAP_ID) FROM dba_hist_snapshot s, v\$database d where d.dbid = s.dbid;
Hi Kevin,
I tried to setup SLOB Release 2.5.4. On Linux and Oracle 12.1.2.
./setup.sh IOPS 16
But I am getting error:
13:39:10 69 INSERT /*+ APPEND */ INTO cf1 VALUES (key,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19 );
13:39:10 70 IF ( MOD( key, 31 ) = 0 ) THEN
13:39:10 71 COMMIT;
13:39:10 72 END IF;
13:39:10 73
13:39:10 74 END LOOP;
13:39:10 75 COMMIT;
13:39:10 76 CLOSE c;
13:39:10 77 END;
13:39:10 78 /
CURSOR c IS SELECT key FROM keys_1 ORDER BY DBMS_RANDOM.VALUE();
CURSOR c IS SELECT key FROM keys_5121 ORDER BY DBMS_RANDOM.VALUE();
*
*
ERROR at line 25:
ERROR at line 25:
ORA-06550: line 25, column 49:
ORA-06550: line 25, column 46:
PL/SQL: ORA-00904: “DBMS_RANDOM”.”VALUE”: invalid identifier
PL/SQL: ORA-00904: “DBMS_RANDOM”.”VALUE”: invalid identifier
ORA-06550: line 25, column 14:
ORA-06550: line 25, column 14:
PL/SQL: SQL Statement ignored
PL/SQL: SQL Statement ignored
ORA-06550: line 29, column 2:
ORA-06550: line 29, column 2:
PLS-00201: identifier ‘DBMS_RANDOM’ must be declared
PLS-00201: identifier ‘DBMS_RANDOM’ must be declared
….
FATAL : 2022.03.08-13:39:10 :
FATAL : 2022.03.08-13:39:10 : f_concurrent_table_load: Concurrent base table load failure
FATAL : 2022.03.08-13:39:10 :
FATAL : 2022.03.08-13:39:10 :
FATAL : 2022.03.08-13:39:10 : f_setup_base_table: User user1 table created but concurrent load procedure has failed
FATAL : 2022.03.08-13:39:10 :
FATAL : 2022.03.08-13:39:10 :
FATAL : 2022.03.08-13:39:10 : f_setup: Failed to load user1 SLOB table
FATAL : 2022.03.08-13:39:10 :
Thanks.