How to handle multiple databases without enough memory.
Lets say we have 2 environments that need to use the same 4 node cluster. Each application has 3 instances. For simplicity lets call the apps
- DBFS
- MSTDB
- DWDB
Now to separate out the 2 environments lets give each environment it’s own set of database.
DBFSI
MSTDBI
DWDBI
DBFSP
MSTDBP
DWDBP
We have 6 instances from 2 environments that all need to be running on 4 nodes with 96g apiece.
RECOMMENDATION
1) Split the 4 node cluster in ½ . Put the Imp systems on the first 2 nodes, and he perf systems on the second 2 nodes.
2) Create 3 different sets of “databases” and “instances” through srvrctl. These 3 sets will contain 3 different sets of instances. Only 1 of these 3 will be up at any time. They will be the same set of datafiles, just different configurations. By overriding the memory settings in the Init file, and have 3 sets of sids in the SPFILE, this configuration is possible.
3) Start up the appropriate databases (and instances) for the proper configuration
Database
|
SGA
|
instance
|
Nodes
|
DBFSI
|
20g
|
DBFSI1-DBFSI2
|
dbnode1/dbnode2
|
LDBFSI
|
70g
|
LDBFSI1-LDBFSI4
|
dbnode1/dbnode2
dbnode3/dbnode4
|
SDBPFSI
|
4g
|
SDBPFSI1
|
dbnode1
|
MSTDBI
|
20g
|
MSTDBI1-MSTDBI2
|
dbnode1/dbnode2
|
LMSTDBI
|
70G
|
LMSTDBI1-LMSTDBI4
|
dbnode1/dbnode2
dbnode3/dbnode4
|
SMSTDBI
|
4g
|
SMSTDBI1
|
dbnode2
|
DWDBI
|
20g
|
DWDBI1-DWDBI2
|
dbnode1/dbnode2
|
LDWDBI
|
70G
|
LDWDBI1-LDWDBI4
|
dbnode1/dbnode2
dbnode3/dbnode4
|
SDWDBI
|
4g
|
SDWDBI1
|
dbnode1
|
DBFSP
|
20g
|
DBFSP1-DBFSP2
|
dbnode3/dbnode4
|
LDBFSP
|
70g
|
LDBFSP1-LDBFSP4
|
dbnode1/dbnode2
dbnode3/dbnode4
|
SDBPFSP
|
4g
|
SDBPFSP1
|
dbnode3
|
MSTDBP
|
20g
|
MSTDBP1-MSTDBP2
|
dbnode3/dbnode4
|
LMSTDBP
|
70G
|
LMSTDBP1-LMSTDBP4
|
dbnode1/dbnode2
dbnode3/dbnode4
|
SMSTDBP
|
4g
|
SMSTDBP1
|
dbnode4
|
DWDBP
|
20g
|
DWDBP1-DWDBP2
|
dbnode3/dbnode4
|
LDWDBP
|
70G
|
LDWDBP1-LDWDBP4
|
dbnode1/dbnode2
dbnode3/dbnode4
|
SDWDBP
|
4g
|
SDWDBP1
|
dbnode4
|
OK, now that I have 3 sets of 6 databases combined, what will the actual configuration choices be ??
Normal configuration showing memory usage
Database
|
dbnode1
|
dbnode2
|
dbnode3
|
dbnode4
|
DBFSI
|
20
|
20
| ||
MSTDBI
|
20
|
20
| ||
DWDBI
|
20
|
20
| ||
DBFSP
|
20
|
20
| ||
MSTDBP
|
20
|
20
| ||
DWDBP
|
20
|
20
| ||
Total
|
60g
|
60g
|
60g
|
60g
|
Perf Isolated testing of DWDB
Database
|
dbnode1
|
dbnode2
|
dbnode3
|
dbnode4
|
DBFSI
|
20
|
20
| ||
MSTDBI
|
20
|
20
| ||
DWDBI
|
20
|
20
| ||
SDBFSP
|
4
| |||
SMSTDBP
|
4
| |||
LDWDBP
|
70
|
70
| ||
Total
|
60g
|
60g
|
74g
|
74g
|
Perf Full testing of DWDB
Database
|
dbnode1
|
dbnode2
|
dbnode3
|
dbnode4
|
SDBFSI
|
4
| |||
SMSTDBI
|
4
| |||
SDWDBI
|
4
| |||
SDBFSP
|
4
| |||
SMSTDBP
|
4
| |||
LDWDBP
|
70g
|
70g
|
70
|
70
|
Total
|
74g
|
78g
|
74g
|
74g
|
You can see that with this configuration, it is possible to carefully manage the Database usage. The above examples can be used to make any one of the database span the whole machine, while the others sit on one node in a small configuration.