Oracle 12c install live blog

Ok, so Oracle 12c has been available for download since earlier today and since I already had my Oraclenerd shirt on, this means some serious playtime is called for.

I though it would be fun and/or interesting to blog about all the steps I did to install 12c and share it. So first step was to download the software from edelivery. Note that since this is not a download from OTN (which would fall under the OTN developer license) you may want to think about licensing. Not a huge problem for us, being an OPN ISV partner.
Update 21:30 CET: The download is available on OTN now aswell.

Sadly, the only port or version available is for Linux, I can only assume that Solaris versions will be available later (update 20:00CET: Solaris sparc and x64 versions now available aswell). I downloaded the two parts (total 2,3GB) of “Oracle Database 12c Release 1 ( Media Pack for Linux x86-64” in just a few minutes.

Next step: find a suitable machine to install this on. We have a pool of Oracle VM servers and a template for Oracle Linux 6 ready to clone. A few minutes later I have a fresh machine to play with.

Had to pause the installation progress to follow the OPN partnercast and FY14 kickoff. But we won a free pass to OpenWorld with this picture. WooHoo!

The VM template created a 12GB boot disk but I figured that I’ll need a bit more to install the software so I created a new disk. The storageconnect plugin and the ZFS storage appliance make this really easy since you don’t even have to open up a new admin interface and can simply create the iSCSI LUN from the OVM manager. I also added the virtual network interface, notice the last byte of the mac address: 0x0c is 12 in decimal.


Start up the machine and bring up the VNC console, answer some basic questions about the desired hostname, IP address and so on and a few minutes later you are all set with the linux VM. Usually I’d run a yum update at this point but today is more about getting the database software installed as quickly as possible.

Partition, format and mount the extra disk I created earlier:

[root@ora12c ~]# fdisk /dev/xvdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x08475db9.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/xvdb: 45.1 GB, 45097156608 bytes
255 heads, 63 sectors/track, 5482 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x08475db9

    Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
Partition number (1-4): 1
First cylinder (1-5482, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-5482, default 5482): 5482

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@ora12c ~]# mkfs.ext3 /dev/xvdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2752512 inodes, 11008533 blocks
550426 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
336 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@ora12c ~]# echo "/dev/xvdb1              /u01                    ext3    defaults        0 2" >> /etc/fstab
[root@ora12c ~]# mount /u01

Copy the downloaded zipfiles (i put them at /u01/download/) and extract with the unzip command. On my first overly excited try, I tried to run the installer as root which is still not allowed:

[root@ora12c database]# ./runInstaller 

The user is root. Oracle Universal Installer cannot continue installation if the user is root.

So I quickly chowned /u01 to the oracle user, set a password for it (the user and groups were already set up in this template) and reconnected as oracle making sure to use the -X option to ssh to forward the X11 protocol for the GUI installer. And off we go:

[oracle@ora12c database]$ ./runInstaller 
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 500 MB.   Actual 7469 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 2047 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2013-06-25_02-24-35PM. Please wait ...

The installer itself has not changed (much?) since 11g, I opted to only install the software first and run dbca myself later and accepted all the other default options. Swap was not big enough but I chose to ignore this rather than fix it now. The one thing I missed was the nice flashy ads for new features while the software actually installs. There was just a red 12c banner there.













There are still scripts to be run as root:

[root@ora12c oraInventory]# ./ 
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@ora12c ~]# /u01/app/oracle/product/12.1.0/dbhome_1/ 
Performing root user operation for Oracle 12c 

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/12.1.0/dbhome_1

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...

Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.

And that’s it for the installation.

DBCA has a few more and new options and I’ll go (and guess) through them

[oracle@ora12c ~]$ export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
[oracle@ora12c ~]$ export ORACLE_SID=ORCL12
[oracle@ora12c ~]$ /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbca

The very first screen has a new (but greyed out for now) option of “Manage Pluggable Databases”. I guess this would be available after I set up a container DB first.

What upset me on the second screen was the default DB character set of WE8MSWIN1252. Who uses that? I quickly changed it to AL32UTF8 and entered a (too) simple password.


Only then did I see the option to enter a PDB name (whatever that is?) and even more interesting: A button for an “Advanced Mode” installation. I am feeling adventurous today and choose that option.



There is a new option allowing me to setup this DB as a container DB for PDB. I guess that is a good thing and selected to create two PDBs aswell.



Again, there is a warning because my password of ‘oracle’ is too simple. Kids, only try this at home, do not use a simple password like that in production.


This next page confused me. I selected the one listener that was mentioned and tried next but I had to enter something for the name and port so I went with LISTENER and 1521 which may have been a bad choice as you will see later







Interesting. I cannot change the default block size but I also don’t care since I would have chosen 8k anyway.


Again, I don’t care much about anything but UTF








A few moments after the creation started, an error popped up saying that I was not supposed to create another listener with an existing name.


So I started the whole process all over again and this time there was already a listener with a status of “up”. I did not change anything, just clicked next and went on with dbca.





And that was it! The instance was started, the database open and I could simply connect.

[oracle@ora12c ~]$ /u01/app/oracle/product/12.1.0/dbhome_1/bin/sqlplus sys/ as sysdba

SQL*Plus: Release Production on Tue Jun 25 15:42:59 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Enter password: 

Connected to:
Oracle Database 12c Enterprise Edition Release - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select version, status, instance_role from v$instance;

----------------- ------------ ------------------	  OPEN	       PRIMARY_INSTANCE

Oh, and lsnrctl shows that my pluggable databases have registered as services:

[oracle@ora12c ~]$ /u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl status

LSNRCTL for Linux: Version - Production on 25-JUN-2013 16:09:07

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora12c)(PORT=1521)))
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version - Production
Start Date                25-JUN-2013 15:05:35
Uptime                    0 days 1 hr. 3 min. 32 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/ora12c/listener/alert/log.xml
Listening Endpoints Summary...
Services Summary...
Service "ORCL12.PORTRIX.NET" has 1 instance(s).
  Instance "ORCL12", status READY, has 1 handler(s) for this service...
Service "ORCL12XDB.PORTRIX.NET" has 1 instance(s).
  Instance "ORCL12", status READY, has 1 handler(s) for this service...
Service "" has 1 instance(s).
  Instance "ORCL12", status READY, has 1 handler(s) for this service...
Service "" has 1 instance(s).
  Instance "ORCL12", status READY, has 1 handler(s) for this service...
The command completed successfully

And I’ll better stop here for today even though I would love to read through all the documentation and play with the cool new features but I’ll better leave some stuff for tomorrow and the next days.

And I already have a long list of features that I know I want to play with.

3 thoughts on “Oracle 12c install live blog

  1. Pingback: the new, improved and free flashback data archives in 12c | portrix systems

  2. Pingback: oracle restart deprecated in 12c | portrix systems

Leave a Reply

Your email address will not be published. Required fields are marked *