Like I mentioned on my previous post about Oracle Fleet Patching and Provisioning I got to install BrokeDBA FPP Vagrant Fork as a test for this new (for me at least) Oracle management system.
A good place to start checking about the benefits of Oracle FPP: Oracle Fleet Patching and Provisioning – Introduction and Technical Overview
On this post, I wanted to mention some of the commands I have tried so far, nothing fancy or too complicated, but just a way to force me to use it and find new questions 🙂
Everything done is executed directly from our FPP Server and even though in this case I’m using only one client, you should be able to replicate the same to your entire feet
Actions List
- Import Oracle DB Images
- Deploy New DB Oracle Home to the Fleet
- Create Database
- Create PDB
- Upgrade Database
- Remove Database
- Remove Oracle Home
- Operations Auditing
Import Oracle DB Images
Let’s import the DB 19c image in the server so we can deploy it later to our clients (we only have one client so far)
[grid@fpp-Server ~]$ rhpctl import image -image db_19300 -imagetype ORACLEDBSOFTWARE -zip /vagrant/ORCL_software/LINUX.X64_193000_db_home.zip
fpp-Server.evilcorp.com: Audit ID: 3
fpp-Server.evilcorp.com: Creating a new ACFS file system for image "db_19300" ...
fpp-Server.evilcorp.com: Extracting files to directory /rhp_storage/images/idb_19300815168/swhome...
fpp-Server.evilcorp.com: Files successfully extracted
fpp-Server.evilcorp.com: Changing the home ownership to user grid...
fpp-Server.evilcorp.com: Starting clone operation...
========================================
fpp-Server.evilcorp.com:
[INFO] [INS-32183] Use of clone.pl is deprecated in this release. Clone operation is equivalent to performing a Software Only installation from the image.
[....]
You can find the log of this install session at:
/u01/app/oraInventory/logs/DetachHome2021-01-19_01-59-14PM.log
'DetachHome' was successful.
fpp-Server.evilcorp.com: Successfully executed detach home operation.
[grid@fpp-Server ~]$
[grid@fpp-Server ~]$ rhpctl import image -image db_12102 -imagetype ORACLEDBSOFTWARE -path /u01/app/oracle/product/12.1.0.2/dbhome_1 -targetnode fpp-Client -root
Enter user "root" password:
fpp-Server.evilcorp.com: Adding storage for image ...
fpp-Server.evilcorp.com: Creating a new ACFS file system for image "db_12102" ...
fpp-Server.evilcorp.com: Creating export file system ...
fpp-Server.evilcorp.com: Starting export file system...
fpp-Server.evilcorp.com: Mounting file system...
fpp-Server.evilcorp.com: Copying files...
fpp-Server.evilcorp.com: Removing export file system ...
[grid@fpp-Server ~]$
Deploy New DB Oracle Home to the Fleet
Now we can add a new 19c Oracle home to our client VM:
[grid@fpp-Server ~]$ rhpctl add workingcopy -workingcopy wc_db_19300 -image db_19300 -user oracle -groups OSBACKUP=dba,OSDG=dba,OSKM=dba,OSRAC=dba -oraclebase /u01/app/oracle -path /u01/app/oracle/product/19.0.0/dbhome_1 -targetnode fpp-Client -root
Enter user "root" password:
fpp-Server.evilcorp.com: Audit ID: 7
fpp-Server.evilcorp.com: Option storagetype is set to the following default value: LOCAL.
fpp-Server.evilcorp.com: Storing metadata in repository for working copy "wc_db_19300" ...
fpp-Server.evilcorp.com: Connecting to node fpp-client ...
fpp-Server.evilcorp.com: Starting transfer for remote copy ...
[...]
fpp-client: .................................................. 100% Done.
fpp-Server.evilcorp.com: Successfully executed clone operation.
fpp-Server.evilcorp.com: Executing root script on nodes fpp-client.
fpp-client: Check /u01/app/oracle/product/19.0.0/dbhome_1/install/root_fpp-Client_2021-01-19_14-18-52-702784822.log for the output of root script
fpp-Server.evilcorp.com: Successfully executed root script on nodes fpp-client.
fpp-Server.evilcorp.com: Working copy creation completed.
[grid@fpp-Server ~]$
We can do the same for any other Database Oracle Home we have in our FPP Server
[grid@fpp-Server ~]$ rhpctl add workingcopy -workingcopy wc_db_12102 -image db_12102 -user oracle -oraclebase /u01/app/oracle -path /u01/app/oracle/product/12.1.0.2/dbhome_1 -targetnode fpp-Client -root
Enter user "root" password:
fpp-Server.evilcorp.com: Audit ID: 21
fpp-Server.evilcorp.com: Option storagetype is set to the following default value: LOCAL.
fpp-Server.evilcorp.com: Storing metadata in repository for working copy "wc_db_12102" ...
[....]
fpp-Server.evilcorp.com: Executing root script on nodes fpp-client.
fpp-client: Check /u01/app/oracle/product/12.1.0.2/dbhome_1/install/root_fpp-Client_2021-01-20_13-34-01.log for the output of root script
fpp-Server.evilcorp.com: Successfully executed root script on nodes fpp-client.
fpp-Server.evilcorp.com: Working copy creation completed.
[grid@fpp-Server ~]$
Create Database
What about creating a DB in our fpp-client? as simple as a remote command from our FPP Server
By the way, is not a "good idea" to cancel a Sever operation using "Ctrl+c" since it will actually continue in the background:
[grid@fpp-Server ~]$ rhpctl add database -workingcopy wc_db_19300 -dbname CDB19 -dbtype SINGLE -cdb -pdbName PDB -numberOfPDBs 1 -root
Enter user "root" password:
fpp-Server.evilcorp.com: Audit ID: 8
fpp-Server.evilcorp.com: Option datafileDestination is set to the following default value: /u01/app/oracle/oradata.
fpp-Server.evilcorp.com: Starting database creation on node fpp-client ...
^C^C
PRCG-1104 : User terminated the command. The command operation is not cancelled by this interruption, and may continue to be processed on the server.
[grid@fpp-Server ~]$
# Client VM
[root@fpp-Client logs]# ps -ef |grep pmon
oracle 1161 1 0 13:19 ? 00:00:00 ora_pmon_cdb1
oracle 31149 1 0 14:34 ? 00:00:00 ora_pmon_CDB19
root 32083 24582 0 14:41 pts/0 00:00:00 grep --color=auto pmon
[root@fpp-Client logs]#
Just to confirm, we can see our new 19c Database running in fpp-Client
[oracle@fpp-Client ~]$ . oraenv
ORACLE_SID = [cdb1] ? CDB19
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@fpp-Client ~]$ sqlplus / as sysdba
DB_NAME CDB HOST_NAME STARTUP DATABASE_ROLE
--------- --- ----------- -------------------- -------------
CDB19 YES fpp-Client 19-JAN-2021 14:51:12 PRIMARY
INST_ID CON_ID NAME OPEN_MODE OPEN_TIME STATUS
---------- ---------- -------------------- ---------- ---------------------------------------- ----------
1 2 PDB$SEED READ ONLY 19-JAN-21 02.51.22.283 PM +00:00 NORMAL
1 3 PDB READ WRITE 19-JAN-21 02.51.38.524 PM +00:00 NORMAL
SQL>
You can also specify the datafile creation destination, like we are doing for this 12.1 Database
[grid@fpp-Server ~]$ rhpctl add database -workingcopy wc_db_12102 -dbname cdb12 -dbtype SINGLE -cdb -pdbName PDB12 -numberOfPDBs 1 -datafileDestination /u02/oradata -root
Enter user "root" password:
fpp-Server.evilcorp.com: Audit ID: 22
fpp-Server.evilcorp.com: Starting database creation on node fpp-client ...
fpp-client: SYS_PASSWORD_PROMPT
SYSTEM_PASSWORD_PROMPT
fpp-client:PDB_ADMIN_PASSWORD_PROMPT
fpp-client:Copying database files
fpp-client: 1% complete
[....]
fpp-client: For the following PDBs: CDB$ROOT PDB$SEED PDB12
fpp-client: Nothing to roll back
fpp-client: Nothing to apply
fpp-client:
fpp-client: SQL Patching tool complete on Wed Jan 20 13:42:35 2021
[grid@fpp-Server ~]$
#DB alert confirming datfiles location
alter database rename global_name to "cdb12"
Completed: alter database rename global_name to "cdb12"
ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/oradata/cdb12/temp01.dbf' SIZE 61440K REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
Completed: ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/oradata/cdb12/temp01.dbf' SIZE 61440K REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
Create PDB
We can also create PDBs on any CDB already running
(by the way, I’m sure will be corrected soon, but the documentation shows some typo, like -cdbName and -pdbName instead of -cdbname and -pdbname)
[grid@fpp-Server ~]$ rhpctl addpdb database -workingcopy wc_db_12102 -cdbname cdb12 -pdbname PDB122 -root
Enter user "root" password:
fpp-Server.evilcorp.com: Audit ID: 26
fpp-Server.evilcorp.com: Option dbtype is set to the following default value: SINGLE.
fpp-Server.evilcorp.com: Option datafileDestination is set to the following default value: /u01/app/oracle/oradata.
fpp-Server.evilcorp.com: Starting pluggable database addition on node fpp-client ...
fpp-client: Enter PDBADMIN User Password:
Creating Pluggable Database
fpp-client: 4% complete
fpp-client: 12% complete
fpp-client: 21% complete
fpp-client: 38% complete
fpp-client: 85% complete
fpp-client: Completing Pluggable Database Creation
fpp-client: 100% complete
fpp-client: Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdb12/PDB122/cdb12.log" for further details.
[grid@fpp-Server ~]$
## fpp-client
CON_ID NAME OPEN_MODE OPEN_TIME STATUS
------ -------- ---------- ---------------------------------- ---------
2 PDB$SEED READ ONLY 20-JAN-21 01.42.01.262 PM +00:00 NORMAL
3 PDB12 READ WRITE 20-JAN-21 01.42.20.847 PM +00:00 NORMAL
4 PDB122 READ WRITE 20-JAN-21 02.19.24.252 PM +00:00 NORMAL
Upgrade Database
This Scenario is the same upgrade exercise BrokeDBA shows in his post My Vagrant fork of Oracle Fleet Patching and provisioning (FPP)
[grid@fpp-Server ~]$ rhpctl upgrade database -dbname cdb12 -sourcehome /u01/app/oracle/product/12.1.0.2/dbhome_1 -destwc wc_db_19300 -root
Enter user "root" password:
fpp-Server.evilcorp.com: Audit ID: 28
fpp-Server.evilcorp.com: verifying versions of Oracle homes ...
fpp-Server.evilcorp.com: verifying owners of Oracle homes ...
fpp-Server.evilcorp.com: verifying groups of Oracle homes ...
fpp-Server.evilcorp.com: Processing arguments file /u01/app/grid/crsdata/fpp-server/rhp/conf/rhp.pref
fpp-Server.evilcorp.com: Connecting to node fpp-client ...
fpp-Server.evilcorp.com: Starting to upgrade database from path "/u01/app/oracle/product/12.1.0.2/dbhome_1" to path "/u01/app/oracle/product/19.0.0/dbhome_1" on node "fpp-client"
fpp-client: Logs directory: /u01/app/oracle/cfgtoollogs/dbua/upgrade2021-01-20_02-28-20PM
fpp-client: Performing Pre-Upgrade Checks...
fpp-client: ============================
fpp-client: PRE- and POST- FIXUP ACTIONS
fpp-client: =============================
fpp-client: /u01/app/oracle/cfgtoollogs/dbua/upgrade2021-01-20_02-28-20PM/cdb12/upgrade.xml
fpp-client: /u01/app/oracle/cfgtoollogs/dbua/upgrade2021-01-20_02-28-20PM/cdb12/preupgrade_fixups.sql
fpp-client: /u01/app/oracle/cfgtoollogs/dbua/upgrade2021-01-20_02-28-20PM/cdb12/postupgrade_fixups.sql
[....]
69% complete
70% complete
80% complete
90% complete
Database upgrade has been completed successfully, and the database is ready to use.
[grid@fpp-Server ~]$
#fpp-client
DB_NAME CDB HOST_NAME STARTUP DATABASE_ROLE
--------- --- --------------- --------------------- -------------
CDB12 YES fpp-Client 20-JAN-2021 15:41:56 PRIMARY
SQL> SQL> SQL> 2 3 4
CON_ID NAME OPEN_MODE OPEN_TIME STATUS
------- -------------------- ---------- ---------------------------------------- ----------
2 PDB$SEED READ ONLY 20-JAN-21 05.47.39.793 PM +00:00 NORMAL
3 PDB12 READ WRITE 20-JAN-21 06.11.24.190 PM +00:00 NORMAL
4 PDB122 READ WRITE 20-JAN-21 06.11.24.376 PM +00:00 NORMAL
SQL> select banner from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Remove Database
Let’s delete the DB we just upgraded.
As you can see, we need to remember that the "workingcopy" has changed after the upgrade
[grid@fpp-Server ~]$ rhpctl delete database -workingcopy wc_db_19300 -dbname cdb12 -targetnode fpp-Client -root
Enter user "root" password:
fpp-Server.evilcorp.com: Starting database deletion...
fpp-client: [WARNING] [DBT-11503] The instance (cdb12) is not running on the local node. This may result in partial delete of Oracle database.
fpp-client: CAUSE: A locally running instance is required for complete deletion of Oracle database instance and database files.
fpp-client: ACTION: Specify a locally running database, or execute DBCA on a node where the database instance is running.
fpp-client: [WARNING] [DBT-19202] The Database Configuration Assistant will delete the Oracle instances and datafiles for your database. All information in the database will be destroyed.
fpp-client: Prepare for db operation
fpp-client: 32% complete
fpp-client: Connecting to database
[....]
fpp-client: 100% complete
fpp-client: Database deletion completed.
fpp-client: Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdb12/cdb120.log" for further details.
[grid@fpp-Server ~]$
Remove Oracle Home
We can now delete the old 12.1 DB Oracle Home from the client
[grid@fpp-Server ~]$ rhpctl delete workingcopy -workingcopy wc_db_12102 -root
Enter user "root" password:
fpp-Server.evilcorp.com: Audit ID: 29
fpp-Server.evilcorp.com: Removing working copy home ...
fpp-client: Checking for required files and bootstrapping ...
fpp-client: Please wait ...
fpp-client: Location of logs /u01/app/oracle/oraInventory/logs/
[....]
fpp-client: ####################### DEINSTALL CLEAN OPERATION SUMMARY #######################
fpp-client: Successfully detached Oracle home '/u01/app/oracle/product/12.1.0.2/dbhome_1' from the central inventory on the local node.
fpp-client: Successfully deleted directory '/u01/app/oracle/product/12.1.0.2/dbhome_1' on the local node.
fpp-client: Oracle Universal Installer cleanup was successful.
fpp-client:
fpp-client: Oracle deinstall tool successfully cleaned up temporary directories.
fpp-client: #######################################################################
fpp-client:
fpp-client:
fpp-client: ############# ORACLE DEINSTALL TOOL END #############
fpp-client:
[grid@fpp-Server ~]$
Operations Auditing
If your system is slow (like mine) and want to check an operation executed or running, you can use audit option to see the status and if completed, will show you how long it took, which is nice addition since this can give you some idea and expectations for new deployments ETA
[grid@fpp-Server ~]$ rhpctl query audit -record 8
fpp-Server.evilcorp.com: Audit ID: 9
Audit ID: 8
Start time: 2021-01-19T14:31:48.429
Command executed: rhpctl add database -workingcopy wc_db_19300 -dbname CDB19 -dbtype SINGLE -cdb -pdbName PDB -numberOfPDBs 1 -root
End time:
Command result: RUNNING
User name: grid
Node name: fpp-server@london-fleet-c
Target cluster: london-fleet-c
[grid@fpp-Server ~]$
[grid@fpp-Server ~]$ rhpctl query audit -record 8
fpp-Server.evilcorp.com: Audit ID: 11
Audit ID: 8
Start time: 2021-01-19T14:31:48.429
Command executed: rhpctl add database -workingcopy wc_db_19300 -dbname CDB19 -dbtype SINGLE -cdb -pdbName PDB -numberOfPDBs 1 -root
End time: 2021-01-19T14:51:44.000
Command result: SUCCESS
User name: grid
Node name: fpp-server@london-fleet-c
Target cluster: london-fleet-c
[grid@fpp-Server ~]$
You can find more commands in Fleet Patching and Provisioning Control (RHPCTL) Command Reference
Also, you can find more examples in the Oficial Oracle FPP GitHub
This is first time I use Oracle FPP, so there is a lot to learn, but now that is up and running and BrokeDBA already promised to make more content about, I’m really looking forward to learn about it
Comments