Flashback version query/Operation Column is Unknown

SQL > SELECT START_SCN,OPERATION,LOGON_USER,XID FROM  FLASHBACK_TRANSACTION_QUERY WHERE TABLE_NAME=’TEST’;

The Output will be like this :

XID              TABLE_OWNER TABLE_NAME OPERATION           LOGON_USER UNDO_SQL
—————- ———– ———- ——————————– ———-              —————
0600090064030000              TX         UNKNOWN                          TEST
0600090064030000              TX         UNKNOWN                          TEST

To avoid Unknown Status enable  supplemental logging by

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ;

Database altered.

Thank you
Osama mustafa

" java.lang.UnsatisfiedLinkError" When Run Oracle EBS

Exception in thread “main” java.lang.UnsatisfiedLinkError: /u01/media/StageR12/startCD/Disk1/rapidwiz/jre/Linux_x64/1.6.0/lib/i386/xawt/libmawt.so: libXi.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.load0(Unknown Source)
at java.lang.System.load(Unknown Source)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at sun.security.action.LoadLibraryAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(Unknown Source)
at sun.awt.DebugHelper.(Unknown Source)
at java.awt.Component.(Unknown Source

This error appear while trying to  ./rapidwiz in Oracle EBS , and it’s regarding to Wrong packager version

First you need to remove the old package using :

rpm -e –nodeps

Install the required package from the below link :

Package libXi 32bit Here
Package libXi 64bit Here

Re Run the Installer again

Enjoy

Thank you
Osama Mustafa

Step By Step Remove Oracle Table Lock

All your query should be done using sys user or system user, after that you need to find Session SID with below query :

SQL> SELECT SESSION_ID
  2  FROM DBA_DML_LOCKS
  3  WHERE NAME = ‘EMP_INFORMATION’;

Where EMP_INFORMATION is Table_name

Output :

SID
___
424

Next step it’s talking about How to find Serial# :

SELECT SID,SERIAL#
FROM V$SESSION
WHERE SID IN (SELECT SESSION_ID
FROM DBA_DML_LOCKS
WHERE NAME = ‘EMP_INFORMATION’)

Output :

SID                SERIAL#
—-                 ——-
424                 1103

Use Alter system To kill this session :
ALTER SYSTEM KILL SESSION ‘SID,SERIALl#’;

Thank you
Osama mustafa


Configure Email Notification and Incidents Rule

Before I talked about how to Install and Add Target in Enterprise Manager 12c today i will talk how to enable Email notification and Incidents Rule Step By Step and as usual you can download the article as PDF file :

Check the below picture the fill with Correct Parameter to enable email notification First

If you need to customize your Email format that will be deliver to you go to the below section in em12c :

The Below Page will appear to you choose which Type you want to customize

now Let’s work On Incident Rules, From Setup –> Incidents –> Incident Rules

New Page will appear With Some Content All you have to do is Press “Create Rule Set” and below page will appear, Choose the name for Rule Set, which target this Rule set will be applied

On Second Tab ” Rule” Press Create to add new One

There’s Description for each Type I will choose the first one

After That follow the instruction to create your own Rule Set ,
First you need to choose which type of event

As you see there’s two option below Drop box if you need to create events for all target option one your choice otherwise choose #2  and which one you want to enable 

 

The below Picture describe what happened if you choose Option #2 

 Now what we choose before will appear to us here now you want to enable metrics for Which Target
and i provide some example for predefined metrics group

 The Overall will be look like this

 Next , and Add Action page press add like usual

Define Which action will taken if event match

 Finally Name For Rule Set

 Review Page

you can download this article from here

Thank you
Osama Mustafa

Add Target Manually / Enterprise Manager 12c

previously I mentioned how to deploy agent in enterprise manager using Auto Discovery, But today I will Post about the second way which called “Add target Manually” all you have to do is follow the screen shot and the instruction :

Setup –> Add target –> Add Target manually

Choose the first Option

 New Page will appear — > Press add and Type Hostname for the server and which Operating system installed it on it.

Insert your Agent Path ( where you want to install agent ) and username

Review and then Deploy Agent

You can download this article here

Thank you
Osama Mustafa

Deploy Agent In Enterprise Manager 12c

After I post about how to install Oracle Enterprise manager ( em12c ) today i will talk how to deploy em12c agent

there’s two method to do that

1) Configuring Automatic Discovery
2) Adding targets Manually

I will describe the both 🙂 each one separately

Before deploy you need to decide if you want to use Oracle user or root user the below steps you have to do before using oracle :

[root@em12c ~]# vi /etc/sudoers

and change and add the following lines :
Comment this line :

#Defaults    requiretty

add the below line

oracle  ALL=(ALL)       ALL

and remove ! from this line :

Defaults   visiblepw

Now On em12c There’s something called privilege delegation

Privilege delegation allows a logged-in user to perform an activity with the privileges of another user. Sudo and PowerBroker are privilege delegation tools that allow a logged-in user to be assigned these privileges. These privilege delegation settings will be used for all provisioning and patching activities on these hosts.

Read more here.

in the screen below add these lines :
/usr/bin/sudo -u %RUNAS% %COMMAND%

/usr/bin/sudo —> location for sudo command.

 after all the above steps are done let’s configure Auto Discovery

Setup –> add target –> configure auto discovery  the below screen will open, choose the first option “Host and oracle vm manager Discovery using Ip scan”

 Press create Button

On add Button new Panel Will open , Choose your Host and Choose the Range Ip for scan The Format Mentioned above examples :

192.168.1.240-250
192.168.240/10
192.168.240,241

 Now you need to configure Job Summary

the job will start immeditaly as we choose press “Refresh Ip Scan Result” to check The result. you can check it also from here :

Check the Host

Next Post will be How to Add Agent Manually .

You can Download this Article From here.

Thank you
Osama Mustafa

Step By Step to Install Enterprise Manager 12c on Redhat 6.1

in this article you will have a look how to install Oracle Enterprise manager 12c ( em12c ) on Redhat 6 update 1 Operating system.

First Step is select supported OS and Database to install repository. and you can check about certification and to do that :

1.Log in to My Oracle Support, which is accessible at the following URL: https://support.oracle.com
2. Click the Certifications tab.
3. In the Certification Search region, select Enterprise Manager Cloud Control from the Product list.
4. From the Release list, select 12.1.0.2.0, then click Search.
5. Expand the Databases node.

after checking the certification you need to install the following :

  • Enterprise manager 12c from here.
  • Redhat 6 from here
  • if you install on Linux 64bit you need to apply Patch 10404530 Download from here.

Enterprise manager needs the following Requirement :

Hardware
Minimum: 6 GB of RAM.
Disk Space Requirements 30Gb to 50Gb for installation of the software.
Software

OMS Package

make-3.81
binutils-2.17.50.0.6
gcc -4.1.1
libaio-0.3.106
glibc-common-2.3.4
libstdc++ -4.1.1
sysstat-5.0.5
glibc-2.5.12
glibc-devel-2.5-49

agent Package

make-3.81
binutils-2.17.50.0.6
gcc -4.1.1
libstdc++ -4.1.1

I will not mention the prerequisites since in 11gr2 and 12c while installation it will give what missing in OS, Database configuration and fix it thru installation, and if missing package found ,  the package name will appear and all you need is install it from media ( OS CD/DvD).

you need to configure database also before start install em12c :

  • Remove Dbconsole from database with the below command :

emca -deconfig dbcontrol db -repos drop

  • Change the below database parameters :

ALTER SYSTEM SET processes=300 SCOPE=SPFILE;
ALTER SYSTEM SET session_cached_cursors=200 SCOPE=SPFILE;
ALTER SYSTEM SET sga_target=2G SCOPE=SPFILE;
ALTER SYSTEM SET shared_pool_size=600M SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=SPFILE;
ALTER SYSTEM SET job_queue_processes=20 SCOPE=SPFILE;
ALTER SYSTEM SET open_cursors=300 SCOPE=SPFILE;

  • Restart Database.
  • create new folder to install em12c 

mkdir -p /u02/app/oracle/middleware/
cd /u02/app/oracle/middleware
mkdir om12c
mkdir agent12c 

  • you suppose to finish download unzip and start install (./runInstaller).
I will Provide you with Screenshot for the installation :
Asking for MOS account
Asking for Updates 

 Check prerequisites

Sometimes you will receive warning related to glibc error Press Yes:

Now you need to choose installation type

Choose location where you want to install
Middleware location : /u02/app/oracle/middleware/oms12c
Agent Location : /u02/app/oracle/middleware/agent12c

Next Screen you need to choose password and create connection with database

On the first warning dialog, click the “Yes” button to disable the stats gathering job.

review :

During the installation :

Done

also you can download this article from here

Thank you
Osama mustafa

Add New Mount On Linux ( Redhat 6)

Sometime you need to add new mount to Linux after creation the following article will describe how to do this , all the steps tested on Redhat 6.1 , after add disk

[root@localhost Desktop]# fdisk -l
Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x000be2c2
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         262     2097152   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             262        2220    15728640   83  Linux
/dev/sda3            2220        3525    10485760   83  Linux
/dev/sda4            3525        7833    34601984    5  Extended
/dev/sda5            3525        4831    10485760   83  Linux
/dev/sda6            4831        5484     5242880   82  Linux swap / Solaris
/dev/sda7            5484        5745     2097152   8e  Linux LVM
/dev/sda8            5745        7833    16772096   83  Linux
Disk /dev/sdb: 26.8 GB, 26843545600 bytes
255 heads, 63 sectors/track, 3263 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: 0x00000000

as you see in the red line , I added disk with size 26G.
I need to prepare this disk :

[root@localhost Desktop]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xe88f8de7.
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): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3263, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-3263, default 3263):
Using default value 3263
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

After create disk i need to format the disk i choose ext3 :

[root@localhost Desktop]# mkfs -t ext3 /dev/sdb1
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
1638400 inodes, 6552504 blocks
327625 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
200 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
Writing inode tables: done                          
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Link the disk with new folder 

[root@localhost Desktop]#mkdir /u03
[root@localhost Desktop]# mount -t ext3 /dev/sdb1 /u03
[root@localhost Desktop]#
[root@localhost Desktop]#
[root@localhost Desktop]#
[root@localhost Desktop]# df -h
/dev/sdb1              25G  173M   24G   1% /u03

Don’t forget to add to /etc/fstab 
Thank you 
Osama mustafa

SQL92_SECURITY Parameter

SQL> show parameter sql92_

NAME                                 TYPE        VALUE
———————————— ———– ——————————
sql92_security                       boolean     FALSE

SQL92_Security seems it’s parameter related to Security But what is it ? what is the benefits of using this parameter ?

I will describe this example since it will be understandable 🙂

SQL> create user test1 identified by test1 ;

User created.

SQL> grant create session , Create table to test1 ;

Grant succeeded.

SQL>
SQL>
SQL> create user test2 identified by test2 ;

User created.

 SQL> create user test3 identified by test3 ;

User created.

SQL> grant create session to test3 ;

Grant succeeded.

SQL> conn test1/test1 ;
Connected.
SQL> create table new ( id number(20)) ;

Table created.

SQL> BEGIN
    FOR v_LoopCounter IN 1..50 LOOP
    INSERT INTO new (id)
    VALUES (v_LoopCounter);
     END LOOP;
         END;
   / 

PL/SQL procedure successfully completed.

SQL> conn test1/test1 ;
Connected.
SQL>
SQL>
SQL>
SQL> grant update on test1.new to test2 ;

Grant succeeded.

SQL> grant update on test1.new to test3;

Grant succeeded.

SQL> grant select on test1.new to test3;

 SQL> conn test2/test2 ;
Connected.
SQL> update test1.new set id=1 where id=10 ;

1 row updated.

SQL> conn test3/test3 ;
Connected.
SQL> update test1.new set id=10 where id=1 ;

2 rows updated.

Now let’s set SQL92_Security to TRUE and Restart Database and re fire the same query by each user.


Conn test2/test2

SQL>update test1.new set id=1 where id=10 ;

ERROR at line 1:
ORA-01031: insufficient privileges

SQL> conn test3/test3;
Connected.
SQL> update test1.new set id=10 where id=1 ;

2 rows updated.

What Happening Here , Each of users have Privileges on test1.new but why after set SQL92_Security to true test2 not working ?

Simply  SQL92_SECURITY need Update/delete and Select Privileges for the same user if you grant the user one of these privileges then it will be useless.

Amazing 🙂

Thank you
Osama Mustafa

what is oracle inventory

While installing Oracle software new folder Directory created in ORACLE_BASE called oinventory  what is it ? and what the benefits of using this folder ? What kind of information will be stored ?

The inventory is created once you install Database or used for upgrades and patches. two kind of oracle inventory  one called central inventory per server and another one called local inventory for each ORACLE_HOME, the difference between each of them central inventory basically contains a high-level list of components installed on the server. It is updated each time components are installed or uninstalled but it does not have detailed information such as the patch level of each ORACLE_HOME. on another hand  local inventory  contains some component information included with patch-level information.

another different is The Central Inventory contains the information related to all Oracle products installed on a host. and consists of a file called inventory.xml, which lists all the Oracle Homes installed on the node.

for local inventory ( $ORACLE_HOME/inventory ) that contains the detail of the patch level for that ORACLE_HOME. The Local Inventory gets updated whenever a patch is applied to the ORACLE_HOME, using OUI. If the Local Inventory becomes corrupt or is lost, this is very difficult to recover, and may result in having to reinstall the ORACLE_HOME and re-apply all patchsets and patches.
For More Information about this topic refer to MOS : 
 Global and Local Inventory explained [ID 360079.1]
FAQs on Central Inventory and Oracle Home Inventory (Local Inventory) in Oracle RDBMS [ID 564192.1]
Thank you 
Osama mustafa