Back in July I finally got Oracle 12c installed on my laptop as documented in this post: url
But, that was as far as I got. The last thing I did was get an error message creating a user. Well, I figured out how to create a new user and a few other things. I’m working with the ORCL database that comes with the install and all the parameters, etc. that come with it.
Evidently the default install comes with a PDB called PDBORCL. So, I have two tns entries one for the parent CBD and one for the child PDB and they look like this:
ORCL.WORLD = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.128) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.mydomain.com) ) ) PDB.WORLD = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.128) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pdborcl.mydomain.com) ) )
I guess the service name has the name of the PDB in it.
So, if I connect as SYSTEM/password@orcl I’m connected to the CDB and if I connect to SYSTEM/password@pdb I’m connected to the PDB. When I connected to the PDB I could create a new user without getting an error.
But, when I first tried connecting to the PDB I got this error, even though the database was up:
ORA-01033: ORACLE initialization or shutdown in progress
So, to bring the database up (by the way, I’m on 64 bit Linux) after booting the Linux VM the following steps were required:
sqlplus / as sysdba
alter session set container=PDBORCL;
Probably this could all be scripted but that’s what I did today.
Interestingly there is only one pmon:
$ ps -ef | grep pmon oracle 29495 1 0 06:52 ? 00:00:00 ora_pmon_orcl
But you get different results when you query dba_data_files depending on whether connected to the CDB or PDB:
FILE_NAME ------------------------------------------ /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/oradata/orcl/sysaux01.dbf /u01/app/oracle/oradata/orcl/undotbs01.dbf /u01/app/oracle/oradata/orcl/users01.dbf
FILE_NAME -------------------------------------------------------------- /u01/app/oracle/oradata/orcl/pdborcl/system01.dbf /u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf /u01/app/oracle/oradata/orcl/pdborcl/SAMPLE_SCHEMA_users01.dbf /u01/app/oracle/oradata/orcl/pdborcl/example01.dbf
So, I guess each PDB has its own SYSTEM and SYSAUX tablespaces?
Lastly when running my scripts to poke around I edited my sqlplus header script to report which container you are in. It looks like this now:
set linesize 32000 set pagesize 1000 set long 2000000000 set longchunksize 1000 set head off; set verify off; set termout off; column u new_value us noprint; column n new_value ns noprint; column c new_value cs noprint; select name n from v$database; select user u from dual; SELECT SYS_CONTEXT('USERENV', 'CON_NAME') c FROM DUAL; set sqlprompt &ns:&cs:&us> set head on set echo on set termout on set trimspool on spool &ns..&cs..logfilename.log
Replace “logfilename” with whatever you want for your script name.
It puts out a prompt like this:
And the log file names:
Anyway, this is just a quick post about my first attempts to get around in 12c.