Hi All,
We all know that a PeopleSoft applicaton resides in a single schema in a database on Oracle platform . In this post i'll brief how can we create multiple applications running in a single oracle database with separated schemas holding data of respective applications .
This approach saves us atleast 50% on memory consumption and hard disk required on database server(if we create atleast two instances) since we have to allocate memory target to a single database. Also while application creation, data files of some sizes are created on disk but not that much data is contained on the physical disks .Therefore when we create multiple applications in a single database, same empty space is used for other applications.
This architecture is ideal for non production environments.
To create multiple applications in a single Oracle database, following steps are to be taken:
1) Create an Oracle database with some general db name such as PSDB01.
2) Run the initial scripts utlspace, psdbowner, application specific script(if creating different applications, run each application specific scripts.We get error if second script tries to create the same tablespaces--this is normal and no harm is done), psrole, psadmin(run as many times as the number of applications to be created with different owner id and passwords such as HRM91, CRM91) and connect.sql.
3) Import the Peoplesoft schema data into each of the respective schemas created with impdp utility, use Remap_Schema parameter if required.
Now, the major hurdle come to understand how application servers will be booted on each specific application.To get a hold of this, lets walk through the PeopleSoft login process:
1) When we login, we specify database name, userid-password and connectid-password. First connection is made using connect id and password and a query is executed on database:
SELECT OWNERID FROM PS.PSDBOWNER WHERE DBNAME='DB NAME WHICH WE GAVE';
The schema name should be returned here in which all the peoplesoft data resides.
2) A second query is run on database from the table <schema fetched>.PSSTATUS where version of the tool is matched and again the owner is selected, which should match as the one specified in PS.PSDBOWNER table.
3) Using this owner, password for the user id specified is matched from <owner>.PSOPRDEFN .
4) If successful, access id and password is fetched from <owner>.PSACCESSPRFL . Which is the schema name and password where all the data for an application resides.Once fetched, connection is made from this id and application server is booted.
Now, i'll consider an example. Here lets say i created a database PSDB01. Inside this, i created two schemas HRM91 and CRM91 and imported the respective applicaton data from other databases.
In PS.PSDBOWNER table, i need to make two entries :
Column : DBNAME OWNER
Values : HRM91 HRM91
CRM91 CRM91
Update the ownerid in HRM91.PSSTATUS to HRM91 and in CRM91.PSSTATUS to CRM91.
Now i need to make two tns entries on server from where application server will be booted as :
HRM91= ...
Host=<IP> Port=<listener port>
Service=PSDB01
CRM91= ...
Host=<IP> Port=<listener port>
Service=PSDB01
Please note that both the connect identifiers are pointing to the same database PSDB01 .
We are all set to boot app servers. Here is what happens:
Booting HRM91 app server :
Parameters : dbname-HRM91
1) select owner from ps.psdbowner where dbname='HRM91'; -- output- HRM91
2) select owner, toolsrel from HRM91.PSSTATUS; ---- output - HRM91
3) select operpswd, symbolicid ... from HRM91.PSOPRDEFN;
4)select accessid, accesspswd .. from HRM91.PSACCESSPRFL; ----output -HRM91/PASSWORD
This way it boots on hrm91 applications.
Same happens while booting the app server for CRM91 application.
For any confusion/doubt email me ...