Setup:
Oracle Database 19c (19.3) for Linux x86-64
LINUX.X64_193000_db_home.zip or V982063-01.zip
https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html
19.7 Database RU (from MOS)
Database Release Update: 19.7.0.0.200414 (30869156)
OJVM RELEASE UPDATE: 19.7.0.0.200414 (30805684)
OCW RELEASE UPDATE: 19.3.0.0.0 (29585399)
p30805684_190000_Linux-x86-64.zip
vi .bash_profile for node1: set_CDBPROD1() { export ORACLE_BASE=/u02/app/oracle export ORACLE_HOME=/u02/app/oracle/product/19.0.0/dbhome_CDBPROD export ORACLE_UNQNAME=CDBPROD export ORACLE_SID=CDBPROD1 export PATH=$HOME/bin:$ORACLE_HOME/bin:/usr/sbin:$ORACLE_HOME/OPatch:/usr/java/jdk1.6.0_24/bin:/usr/local/bin:/bin:/usr/bin:/sbin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/lib64:/usr/lib export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib alias tal='tail -500f /u02/app/oracle/diag/rdbms/cdbprod/CDBPROD1/trace/alert_CDBPROD1.log' alias log='cd /u02/app/oracle/diag/rdbms/cdbprod/CDBPROD1/trace' } echo set_CDBPROD1
vi .bash_profile for node2: set_CDBPROD2() { export ORACLE_BASE=/u02/app/oracle export ORACLE_HOME=/u02/app/oracle/product/19.0.0/dbhome_CDBPROD export ORACLE_UNQNAME=CDBPROD export ORACLE_SID=CDBPROD2 export PATH=$HOME/bin:$ORACLE_HOME/bin:/usr/sbin:$ORACLE_HOME/OPatch:/usr/java/jdk1.6.0_24/bin:/usr/local/bin:/bin:/usr/bin:/sbin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/lib64:/usr/lib export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib alias tal='tail -500f /u02/app/oracle/diag/rdbms/cdbprod/CDBPROD2/trace/alert_CDBPROD2.log' alias log='cd /u02/app/oracle/diag/rdbms/cdbprod/CDBPROD2/trace' } echo set_CDBPROD2
mkdir -p /u02/app/oracle/product/19.0.0/dbhome_CDBPROD unzip V982063-01.zip -d /u02/app/oracle/product/19.0.0/dbhome_CDBPROD
[my_user@node1 ~]$ sudo su - oracle set_CDBPROD1 [oracle@node1 ~]$ xauth add node1/unix:14 MIT-MAGIC-COOKIE-1 2a8f3101317e02452eab49ac203214d5 [oracle@node1 ~]$ export DISPLAY=localhost:14.0 [oracle@node1 ~]$ xclock [oracle@node1 ~]$ set_CDBPROD1 [oracle@node1 ~]$ echo $ORACLE_HOME /u02/app/oracle/product/19.0.0/dbhome_CDBPROD [oracle@node1 ~]$ echo $ORACLE_SID CDBPROD [oracle@node1 ~]$ cd $ORACLE_HOME ./runInstaller -applyRU /u02/app/oracle/patch/30869156
If you get an error like below, you can edit and run it manually on node2: Remote 'AttachHome' failed on nodes: 'node2'. Refer to '/u01/app/oraInventory/logs/InstallActions2020-05-28_04-45-00PM/installActions2020-05-28_04-45-00PM.log' for details. It is recommended that the following command needs to be manually run on the failed nodes: /u02/app/oracle/product/19.0.0/dbhome_CDBPROD/oui/bin/runInstaller -attachHome -noClusterEnabled ORACLE_HOME=/u02/app/oracle/product/19.0.0/dbhome_CDBPROD ORACLE_HOME_NAME=OraDB19Home1 "CLUSTER_NODES={node2}" -force INVENTORY_LOCATION=/u01/app/oraInventory LOCAL_NODE=<node on which command is to be run>. Please refer 'AttachHome' logs under central inventory of remote nodes where failure occurred for more details. /u02/app/oracle/product/19.0.0/dbhome_CDBPROD/oui/bin/runInstaller -attachHome -noClusterEnabled ORACLE_HOME=/u02/app/oracle/product/19.0.0/dbhome_CDBPROD ORACLE_HOME_NAME=OraDB19Home1 "CLUSTER_NODES={node2}" -force INVENTORY_LOCATION=/u01/app/oraInventory LOCAL_NODE=node2 [oracle@node2 ~]$ /u02/app/oracle/product/19.0.0/dbhome_CDBPROD/oui/bin/runInstaller -attachHome -noClusterEnabled ORACLE_HOME=/u02/app/oracle/product/19.0.0/dbhome_CDBPROD ORACLE_HOME_NAME=OraDB19Home1 "CLUSTER_NODES={node2}" -force INVENTORY_LOCATION=/u01/app/oraInventory LOCAL_NODE=node2 Starting Oracle Universal Installer... Checking swap space: must be greater than 500 MB. Actual 16383 MB Passed The inventory pointer is located at /etc/oraInst.loc You can find the log of this install session at: /u01/app/oraInventory/logs/AttachHome2020-05-28_05-00-31PM.log 'AttachHome' was successful. [oracle@node2 ~]$
alter session set container=PDB1; select name from v$pdbs; show pdbs show con_name select * from v$pwfile_users; ALTER PLUGGABLE DATABASE PDB1 CLOSE; ALTER PLUGGABLE DATABASE PDB1 OPEN READ ONLY; ALTER PLUGGABLE DATABASE PDB1 OPEN READ WRITE; ALTER PLUGGABLE DATABASE PDB1 OPEN READ WRITE INSTANCES = ALL; ALTER PLUGGABLE DATABASE ALL OPEN READ WRITE INSTANCES = ALL; select con_id,grantee,granted_role from cdb_role_privs where grantee='PDBDBA'; DROP PLUGGABLE DATABASE PDB1 INCLUDING DATAFILES; CREATE PLUGGABLE DATABASE PDB1 ADMIN USER PDBDBA IDENTIFIED BY welcome1 ROLES=(DBA); ALTER PLUGGABLE DATABASE PDB1 OPEN READ WRITE INSTANCES = ALL; vi tnsnames.ora (add pdb tns for each node) PDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = scan_name)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PDB1) ) ) SQL> conn PDBDBA@PDB1 Enter password: Connected.