Archive for category Configuration

Set all WebLogic log levels to “Inherit” via WLST

Logging is a very useful feature of WebLogic.

Unfortunately the log levels, which are set after a clean install of WebLogic or some of the Fusion Middleware product creates a lot of noise and therefore it costs I/O performance.

Additional after analyzing an issue with logging often resetting the log level is forgotten.

Here you get a script to reset the log levels at regular intervals or after a trace session.

#!/usr/bin/python
execfile('get_environment.py')
connect(wlUser, wlPassword, wlAdminUrl)
edit()
loggers = listLoggers(target=managedServer, runtime=0)
for key, value in loggers.items():
  if key <> "" and key <> "ADF_PERFORMANCE_MONITOR_DATABASE" and value <> "":
    print "set " + key + " from " + value + " to <Inherited>"
    setLogLevel(target=adfManagedServer, runtime=0, logger=key, level="")
loggers = listLoggers(target=adfManagedServer, runtime=0)
exit()

In line 2 a script is called to initialize your environment variables wlUser, wlPassword, wlAdminUrl and managedServer.
In line 5 you get the list of loggers.
In line 6..9 you iterate over this list.
In line 7 you can add your own restrictions. Here are already filtered all inherited loggers and one special tool logger for performance monitoring of ADF applications.
In line 10 the loggers are shown again for the result, you can remove this.

Now call this script via

$ORACLE_HOME/oracle_common/common/bin/wlst.sh config_loglevel.py

In the output you see similar output:

------------------------------------------------------------------------+-----------------
Logger                                                                  | Level
------------------------------------------------------------------------+-----------------
...
oracle.ods.virtualization.accesslog                                     | ERROR:1
...
set oracle.ods.virtualization.accesslog from ERROR:1 to <Inherited>

------------------------------------------------------------------------+-----------------
Logger                                                                  | Level
------------------------------------------------------------------------+-----------------
...
oracle.ods.virtualization.accesslog                                     | <Inherited>
...

This version of the script change only the persistent logger levels (runtime=0), because we don’t want influence running trace sessions. But as our servers are dayly started, all runtime log levels are resetted at this point to the persistent one’s.

That’s it.

References:

  • Log Configuration Commands
  • , , , , ,

    Leave a comment

    Virtual Development Server: Add swapfile to VirtualBox as requirement for installing Oracle or build Oracle docker images

    As I want later build Oracle docker images, some of this need a swapfile.

    Per default my used Vagrantbox, does not have one, so later steps will fail.

    As in the last blog I use a Vagrant shell provider.

    ...
      # add swapfile to the box
      config.vm.provision :shell, :path => "add_swap.sh"
    ...
    

    This calls the script add_swap.sh in the created VirtualBox machine.
    Make sure, that you create your swapfile on a supported file system.

    #!/bin/sh
    
    # size of swapfile in megabytes
    swapsize=2100
    
    # does the swap file already exist?
    grep -q "swapfile" /etc/fstab
    
    # if not then create it
    if [ $? -ne 0 ]; then
      echo 'swapfile not found. Adding swapfile.'
      # allocate the disk space
      sudo fallocate -l ${swapsize}M /home/swapfile
      # only owner can read and write
      sudo chmod 600 /home/swapfile
      # sets up swap area in the file
      sudo mkswap /home/swapfile
      # enable file for paging and swapping
      # if this comes with "swapon failed: Invalid argument", 
      # check if the filesystem is supported for swap, xfs eg. is not
      sudo swapon /home/swapfile
      # mount the swapfile at boot
      echo '/home/swapfile none swap defaults 0 0' >> /etc/fstab
    else
      echo 'swapfile found. No changes made.'
    fi
    
    # output results to terminal
    df -h /home/swapfile
    cat /proc/swaps
    cat /proc/meminfo | grep Swap
    

    Now you have to recreate the VirtualBox machine via

    vagrant destroy
    vagrant up
    

    In the output you can now see, how the swapfile is added.

    ...
    ==> default: Running provisioner: shell...
        default: Running: C:/Users/torst/AppData/Local/Temp/vagrant-shell20160819-14324-1a10xs8.sh
    ==> default: swapfile not found. Adding swapfile.
    ==> default: Setting up swapspace version 1, size = 2150396 KiB
    ==> default: no label, UUID=20ff8dbf-6282-4ba6-abe4-05c04c74aac8
    ==> default: Filesystem              Size  Used Avail Use% Mounted on
    ==> default: /dev/mapper/linux-home  3.8G  2.4G  1.5G  63% /home
    ==> default: Filename                           Type            Size    Used    Priority
    ==> default: /home/swapfile                          file               2150396 0       -1
    ==> default: SwapCached:            0 kB
    ==> default: SwapTotal:       2150396 kB
    ==> default: SwapFree:        2150396 kB
    ...
    

    Here you find the source code for this blog.

    That’s it.

    References:

  • Increasing swap size.
  • , , , , , , , ,

    Leave a comment

    Virtual Development Server: Add enough ram and disk space to VirtualBox for further server components

    As I want later build docker images and run docker containers I have to provide enough disk space for this.

    Per default the Vagrantboxes have vmdk disks, these have a static size and are to small for my purposes.

    Therefore I convert the disk, which comes with the box, via Vagrant VirtualBox provider from vmdk to vdi, so that it allocate only the used disk space in the host system.
    Additional I add a second big disk:

    ...
      # virtualbox provider
      config.vm.provider "virtualbox" do |vb|
        # name in VirtualBox
        vb.name = "Development Server"
    
        # configure 16 GB memory 
        vb.customize ["modifyvm", :id, "--memory", "16384"]
    
        # clone the original vmdk disk into a dynamic vdi disk, which only allocate the used space on the host
        if ARGV[0] == "up" && ! File.exist?("#{ENV["HOME"]}/VirtualBox VMs/#{vb.name}/#{vb.name}.vdi")
          # configure the SATA controller for second disk port, for other box you may have another controller
          vb.customize [
            "storagectl", :id, 
            "--name", "SATA", 
            "--controller", "IntelAHCI", 
            "--portcount", "1", 
            "--hostiocache", "on"
          ]
          # clone the original disk, for other box you may have another disk name
          vb.customize [
            "clonehd", "#{ENV["HOME"]}/VirtualBox VMs/#{vb.name}/box-disk2.vmdk", 
                 "#{ENV["HOME"]}/VirtualBox VMs/#{vb.name}/#{vb.name}.vdi", 
            "--format", "VDI"
          ]
          # attach the cloned disk to the controller
          vb.customize [
            "storageattach", :id, 
            "--storagectl", "SATA", 
            "--port", "0", 
            "--device", "0", 
            "--type", "hdd",
            "--nonrotational", "on",
            "--medium", "#{ENV["HOME"]}/VirtualBox VMs/#{vb.name}/#{vb.name}.vdi" 
          ]
          # delete the original disk to release it's space
          vb.customize [
            "closemedium", "disk", "#{ENV["HOME"]}/VirtualBox VMs/#{vb.name}/box-disk2.vmdk", 
            "--delete"
          ]
        end
    
        # create addtional big dynamic vdi disk for docker images
        if !File.exist?("#{ENV["HOME"]}/VirtualBox VMs/#{vb.name}/#{vb.name}_docker.vdi")
          # create addtional big dynamic vdi (200 GB)
          vb.customize [
            "createhd", 
            "--filename", "#{ENV["HOME"]}/VirtualBox VMs/#{vb.name}/#{vb.name}_docker.vdi", 
            "--format", "VDI", 
            "--size", 200 * 1024
          ] 
          # attach the addtional disk to the controller
          vb.customize [
            "storageattach", :id, 
            "--storagectl", "SATA", 
            "--port", "1", 
            "--device", 0, 
            "--type", "hdd",
            "--medium", "#{ENV["HOME"]}/VirtualBox VMs/#{vb.name}/#{vb.name}_docker.vdi"
          ]
        end
      end
    
      # shell provider
      # format the additional disk and add the free space to the box
      config.vm.provision :shell, :path => "add_disk.sh"
      ...
    

    Lines 64..66 adds the additional disk space to a logical volume via a Vagrant shell provider, which calls the script add_disk.sh in the created VirtualBox machine.
    Resizing the first disk does not work, as therefore the machine has to be booted, which cannot be handled with Vagrant.

    # exit immediately if a command exits with a non-zero status.
    set -e
    # activate debugging from here
    set -x
    
    if [ -f /etc/disk_added_date ] ; then
       echo "disk already added so exiting."
       exit 0
    fi
    
    # show diskspace of the logical volume before adding the disk
    df -h /dev/mapper/linux-root
    
    # partitioning the disk
    sudo fdisk -u /dev/sdb <<EOF
    n
    p
    
    
    
    t
    
    8e
    w
    EOF
    
    # initialize the partition for use by logical volume manager
    sudo pvcreate /dev/sdb1
    # add the partition to volume group linux
    sudo vgextend linux /dev/sdb1
    # increase the size of the logical volume /dev/mapper/linux-root
    sudo lvextend --extents +51199 --resizefs /dev/mapper/linux-root
    # mark that the disk was added
    date > /etc/disk_added_date
    
    # show diskspace of the logical volume after adding the disk
    df -h /dev/mapper/linux-root
    

    Now you have to recreate the VirtualBox machine via

    vagrant destroy
    vagrant up
    

    In the output you can now see, how the logical volume grows:

    ==> default: Running provisioner: shell...
        default: Running: C:/Users/torst/AppData/Local/Temp/vagrant-shell20160812-2348-1ln6wrz.sh
    ==> default: ++ '[' -f /etc/disk_added_date ']'
    ==> default: ++ df -h /dev/mapper/linux-root
    ==> default: Filesystem              Size  Used Avail Use% Mounted on
    ==> default: /dev/mapper/linux-root   16G  1.9G   14G  12% /
    ==> default: ++ sudo fdisk -u /dev/sdb
    ==> default: Welcome to fdisk (util-linux 2.23.2).
    ==> default:
    ==> default: Changes will remain in memory only, until you decide to write them.
    ==> default: Be careful before using the write command.
    ==> default:
    ==> default:
    ==> default: Command (m for help): Partition type:
    ==> default:    p   primary (0 primary, 0 extended, 4 free)
    ==> default:    e   extended
    ==> default: Select (default p): Partition number (1-4, default 1): First sector (2048-419430399, default 2048): Using default value 2048
    ==> default: Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399): Using default value 419430399
    ==> default: Partition 1 of type Linux and of size 200 GiB is set
    ==> default:
    ==> default: Command (m for help): Selected partition 1
    ==> default: Hex code (type L to list all codes): Hex code (type L to list all codes): Changed type of partition 'Linux' to 'Linux LVM'
    ==> default:
    ==> default: Command (m for help):
    ==> default: Device does not contain a recognized partition table
    ==> default: Building a new DOS disklabel with disk identifier 0xb4c74c64.
    ==> default: The partition table has been altered!
    ==> default:
    ==> default: Calling ioctl() to re-read partition table.
    ==> default: Syncing disks.
    ==> default: ++ sudo pvcreate /dev/sdb1
    ==> default:   Physical volume "/dev/sdb1" successfully created
    ==> default: ++ sudo vgextend linux /dev/sdb1
    ==> default:   Volume group "linux" successfully extended
    ==> default: ++ sudo lvextend --extents +51199 --resizefs /dev/mapper/linux-root
    ==> default:   Size of logical volume linux/root changed from 15.62 GiB (4000 extents) to 215.62 GiB (55199 extents).
    ==> default:   Logical volume root successfully resized.
    ==> default: meta-data=/dev/mapper/linux-root isize=256    agcount=4, agsize=1024000 blks
    ==> default:          =                       sectsz=512   attr=2, projid32bit=1
    ==> default:          =                       crc=0        finobt=0
    ==> default: data     =                       bsize=4096   blocks=4096000, imaxpct=25
    ==> default:          =                       sunit=0      swidth=0 blks
    ==> default: naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
    ==> default: log      =internal               bsize=4096   blocks=2560, version=2
    ==> default:          =                       sectsz=512   sunit=0 blks, lazy-count=1
    ==> default: realtime =none                   extsz=4096   blocks=0, rtextents=0
    ==> default: data blocks changed from 4096000 to 56523776
    ==> default: ++ date
    ==> default: ++ df -h /dev/mapper/linux-root
    ==> default: Filesystem              Size  Used Avail Use% Mounted on
    ==> default: /dev/mapper/linux-root  216G  1.9G  214G   1% /
    

    Here you find the source code for this blog.

    That’s it.

    References:

  • VirtualBox : Extend Virtual Disk and File System
  • Resizing disk space on vagrant box
  • , , , , , , , , ,

    Leave a comment

    Virtual Development Server: Creating Virtualbox machine including docker containers with Vagrant

    As I want to decouple my development server from my computer as much as possible I want to create first a virtual machine with linux.

    Because I have used Oracle Virtualbox in the past successfully, I will use it here too.

    As I want have later a reproducible environment via Infrastructure as code, I give Vagrant a try for this. As source code management system I use GIT, my remote repository is located at GitHub.

    As I don’t want create a new linux from scratch, I have looked for a ready system at Vagrantboxes, which contains a new Oracle Linux version, and find a Oracle Linux 7.1 x86_64 system with Chef and Puppet preinstalled.

    Before I could start, I had to install on my Windows 10 computer Vagrant 1.8.5 and Oracle Virtualbox 5.0.16. Don’t use the 5.1 Version, as at this is not yet supported by vagrant 1.8.5.

    For automatic update of the Oracle VM VirtualBox Extension Pack, which is delivered with the ready box and is required for use of shared folders and more, you should install following plugin as described here:

    vagrant plugin install vagrant vbguest
    

    Next I have created a directory of your choice and init there a Vagrantfile by calling

    vagrant init
    

    Then I changed the Vagrantfile as following, see the inline comments for documentation:

    Vagrant.configure(2) do |config|
    
      # Use the mentioned ready OEL 7 linux box
      config.vm.box = "oraclelinux-7-x86_64.box"
      config.vm.box_url = "http://cloud.terry.im/vagrant/oraclelinux-7-x86_64.box"
    
      # Create a private network
      config.vm.network "private_network", type: "dhcp"
    
      # persistant storage for all docker container
      config.vm.synced_folder "C:\\shared\\virtual_storage", "/virtual_storage", :mount_options => ["dmode=777","fmode=777"]
      
      # virtualbox provider
      config.vm.provider "virtualbox" do |vb|
        # name in VirtualBox
        vb.name = "Development Server"
    	end
    
      # Docker Private Registry container for storing later builded docker images, which are not in the Docker Public Registry at https://hub.docker.com/
      config.vm.provision "docker" do |d|
        d.run "registry", image: "registry", daemonize: true, args: "-d -p 5000:5000 -v /virtual_storage/docker_registry:/var/lib/registry"
      end
    
    end
    

    Run next from the created directory

    vagrant up
    

    Following you see the output

    Bringing machine 'default' up with 'virtualbox' provider...
    ==> default: Importing base box 'oraclelinux-7-x86_64.box'...
    ==> default: Matching MAC address for NAT networking...
    ==> default: Setting the name of the VM: Development Server
    ==> default: Clearing any previously set network interfaces...
    ==> default: Preparing network interfaces based on configuration...
        default: Adapter 1: nat
        default: Adapter 2: hostonly
    ==> default: Forwarding ports...
        default: 22 (guest) => 2222 (host) (adapter 1)
    ==> default: Booting VM...
    ==> default: Waiting for machine to boot. This may take a few minutes...
        default: SSH address: 127.0.0.1:2222
        default: SSH username: vagrant
        default: SSH auth method: private key
        default: Warning: Remote connection disconnect. Retrying...
        default:
        default: Vagrant insecure key detected. Vagrant will automatically replace
        default: this with a newly generated keypair for better security.
        default:
        default: Inserting generated public key within guest...
        default: Removing insecure key from the guest if it's present...
        default: Key inserted! Disconnecting and reconnecting using new SSH key...
    ==> default: Machine booted and ready!
    [default] GuestAdditions versions on your host (5.0.26) and guest (5.0.12) do not match.
    Loaded plugins: ulninfo
    Package kernel-uek-devel-4.1.12-32.el7uek.x86_64 already installed and latest version
    Package gcc-4.8.5-4.el7.x86_64 already installed and latest version
    Package 1:make-3.82-21.el7.x86_64 already installed and latest version
    Package 4:perl-5.16.3-286.el7.x86_64 already installed and latest version
    Package bzip2-1.0.6-13.el7.x86_64 already installed and latest version
    Nothing to do
    Copy iso file C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
    mount: /dev/loop0 is write-protected, mounting read-only
    Installing Virtualbox Guest Additions 5.0.26 - guest version is 5.0.12
    Verifying archive integrity... All good.
    Uncompressing VirtualBox 5.0.26 Guest Additions for Linux............
    VirtualBox Guest Additions installer
    Removing installed version 5.0.12 of VirtualBox Guest Additions...
    Removing existing VirtualBox non-DKMS kernel modules[  OK  ]
    Copying additional installer modules ...
    Installing additional modules ...
    Removing existing VirtualBox non-DKMS kernel modules[  OK  ]
    Building the VirtualBox Guest Additions kernel modules
    Building the main Guest Additions module[  OK  ]
    Building the shared folder support module[  OK  ]
    Building the shared folder support module[  OK  ]
    Building the graphics driver module[  OK  ]
    Doing non-kernel setup of the Guest Additions[  OK  ]
    You should restart your guest to make sure the new modules are actually used
    
    ==> default: Checking for guest additions in VM...
    ==> default: Configuring and enabling network interfaces...
    ==> default: Mounting shared folders...
        default: /vagrant => C:/shared/scmlocal/blog
        default: /virtual_storage => C:/shared/virtual_storage
    ==> default: Running provisioner: docker...
        default: Installing Docker onto machine...
    ==> default: Starting Docker containers...
    ==> default: -- Container: registry
    

    In lines 1..24 you see the loading of the ready box and booting with the defined network
    In lines 25..50 the version of the VirtualBox GuestAdditions of the box is checked and after that replaced with the actual installed VirtualBox version. This happens only on the first “vagrant up” call.
    In lines 57..58 Docker is installed as a Vagrant Docker provider is called in the Vagrantfile line 20 and it does not exist in the box before.
    In lines 59..60 a Docker Private Registry container is started via loading docker image from the Docker Public Registry. In a later blog we will use this Docker Private Registry container to hold our own created docker images like database and development tools. The pushed images are saved to a mapped host volume of my windows 10 computer.

    You can connect to the virtualbox directly via

    vagrant ssh
    

    The you can see the downloaded Docker Private Registry images and the started container from this image:

    [vagrant@oraclelinux7 ~]$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    registry            latest              c6c14b3960bd        13 days ago         33.28 MB
    [vagrant@oraclelinux7 ~]$ docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    739c1c9926b1        registry            "/entrypoint.sh /etc/"   5 minutes ago       Up 5 minutes        0.0.0.0:5000->5000/tcp   registry
    

    You can now stop the Development Server via

    vagrant halt
    

    If you startup again the server via

    vagrant up
    

    the provision steps are not replayed until you destroy the server or explicitly call the provision again via

    vagrant provision
    

    Here you find the source code for this blog.

    That’s it.

    , , , , , , , ,

    Leave a comment

    ADF Archtitecture Practice – JDeveloper Silent Patch

    This article describes how to standardize your JDeveloper Patching as requested in Planning & Getting Started – Team, Skills and Development Environments. It is part of the ADF Architecture Practice lessons and describes the patching with examples for windows.


    Version 12.1.x

    In this version  the Oracle OPatch is delivered with the silent installation of JDeveloper.

    All what you need is the patch file for your platform (e.g. p19591087_121300_Generic.zip for JDEVADF SECURITY PATCH UPDATE 12.1.3.0.0 CPUOCT2014). Unzip this patch file.

    Then you call batch file similar to:

    set oracle_home=C:\Oracle\JDev121300
    pushd [path]\19591087
    %oracle_home%\OPatch\opatch apply -silent
    

    Revert the patch is similar, the response should look like

    set oracle_home=C:\Oracle\JDev121300
    pushd [path]\19591087
    %oracle_home%\OPatch\opatch rollback -id 19591087 -silent
    

    In Line 3 you have to enter the patch number, which has to be reverted after -id.


    Version 11.1.1.x
    In some of this versions Oracle OPatch is not delivered with the silent installation of JDeveloper. Please check if %oracle_home%\oracle_common\OPatch does exist. If not – you can download the latest version of OPatch here. Please select your Platform and Release 11.1.0.0.0  as this correspond to your JDeveloper version. Unzip the downloaded file.

    In some versions (at least till 11.1.1.1.5) you need for the first patch a default product.xml file in the right place, as this cannot be created silently. Change the highlighted lines according to your environment:

    <?xml version="1.0" encoding="WINDOWS-1252"?>
    <product>
    	<name value="SA_JDEV"/>
    	<version value="11.1.1.5.0"/>
    </product>
    

    For older versions of opatch maybe you have to add a response file for opatch, which you can create as described here.

    Then you need the patch file for your platform (e.g. p19591065_111170_Generic.zip for JDEVADF SECURITY PATCH UPDATE 11.1.1.7.0 CPUOCT2014). Unzip this patch file.

    Then you call batch file similar to:

    set oracle_home=C:\Oracle\JDev111170
    set java_home=%oracle_home%\jdk160_24
    rem opatch_home=[your unzipped OPatch home]
    set opatch_home=%oracle_home%\oracle_common\OPatch
    rem workaround for BUG 9613778: OPATCH-STAND-ALONE: ERROR "OUI-67124:INVENTORY CHECK FAILED" ON GERMAN WINDOWS
    rem set _JAVA_OPTIONS="-Duser.language=en"
    rem workaround for silent creation of product.xml till at least version 11.1.1.5
    rem if not exist %oracle_home%\product.xml copy product.xml %oracle_home%\product.xml /V /Y
    rem if not exist %mw_home%\jdeveloper\product.xml copy product.xml %mw_home%\jdeveloper\product.xml /V /Y
    pushd [path]\19591087
    rem use switch -ocmrf, if you have an older opatch version, which  requires a response file 
    rem use switch -jdk, if you have the downloaded opatch version
    rem cmd /c %opatch_home%\opatch apply -silent -ocmrf ocm.rsp -jdk %oracle_home%\jdk160_24
    %opatch_home%\opatch apply -silent
    rem Workaround for BUB 9613778: OPATCH-STAND-ALONE: ERROR "OUI-67124:INVENTORY CHECK FAILED" ON GERMAN WINDOWS
    rem set _JAVA_OPTIONS=
    
    Reverting patches is similar to 12.1.x.
    set oracle_home=C:\Oracle\JDev111170
    set java_home=%oracle_home%\jdk160_24
    rem opatch_home=[your unzipped OPatch home]
    set opatch_home=%oracle_home%\oracle_common\OPatch
    pushd [path]\19591087
    rem use switch -ocmrf, if you have an older opatch version, which  requires a response file 
    rem use switch -jdk, if you have the downloaded opatch version
    rem cmd /c %opatch_home%\opatch rollback -id 19591087 -silent -ocmrf ocm.rsp -jdk %oracle_home%\jdk160_24
    %opatch_home%\opatch rollback -id 19591087 -silent
    

    That's it!

    , , , , , ,

    1 Comment

    Fasten your Oracle Forms and Reports 11g Server start on Unix derivates

    Do you see a slow start of your weblogic managed server for forms & reports on unix derivate? We have this problem on Suse SLES 11 and forms and reports 11.1.2.

    In November I attended the annual DOAG (German Oracle User Group) conference in Nuremberg. There I’ve heare an interesting presentation from Jan-Peter Timmermann about “Performance with Forms 11gR2 Weblogic 10.3.x”.

    One snippet of the presentation was an bug in the jdk which slows down the start of managed weblogic servers. It has to do with the random number generator during loading the OPSS Policy Provider for security. This issue is discussed in detail in this blog: http://www.itonguard.com/20090313/weblogic-starts-slow/.

    These are the relevant log files before as an example for forms:

    ####<21.12.2012 07:38 Uhr MEZ> <Info> <WebLogicServer> <localhost> <> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <> <1356071911941> <BEA-000000> <WebLogic Server "WLS_FORMS" version: WebLogic Server 10.3.5.0  Fri Apr 1 20:20:06 PDT 2011 1398638  Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved.>
    ####<21.12.2012 07:38 Uhr MEZ> <Info> <IIOP> <localhost> <WLS_FORMS> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1356071912371> <BEA-002014> <IIOP subsystem enabled.>
    ####<21.12.2012 07:40 Uhr MEZ> <Info> <Security> <localhost> <WLS_FORMS> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1356072024665> <BEA-090894> <Successfully loaded the OPSS Policy Provider using oracle.security.jps.internal.policystore.JavaPolicyProvider.>
    ####<21.12.2012 07:41 Uhr MEZ> <Notice> <WebLogicServer> <localhost> <WLS_FORMS> <main> <<WLS Kernel>> <> <> <1356072069175> <BEA-000360> <Server started in RUNNING mode>
    

    You see, that initializing the OPSS Policy Provider, which seems to use the random number generator, needs 2 minutes.

    Now we will make a simple change in the Oracle Middleware JDK Runtime file (we have here SUN JDK 1.6.0_26 64bit)

    <JDK Home>/jre/lib/security/java.security

    Comment the original line as followed, an add a the marked new line:

    #securerandom.source=file:/dev/urandom
    securerandom.source=file:/dev/./urandom
    

    Now see the results for forms:

    ####<21.12.2012 07:57 Uhr MEZ> <Info> <WebLogicServer> <sdu10037> <> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <> <1356073038615> <BEA-000000> <WebLogic Server "WLS_FORMS" version: WebLogic Server 10.3.5.0  Fri Apr 1 20:20:06 PDT 2011 1398638  Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved.>
    ####<21.12.2012 07:57 Uhr MEZ> <Info> <IIOP> <localhost> <WLS_FORMS> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1356073039121> <BEA-002014> <IIOP subsystem enabled.>
    ####<21.12.2012 07:57 Uhr MEZ> <Info> <Security> <localhost> <WLS_FORMS> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1356073042034> <BEA-090894> <Successfully loaded the OPSS Policy Provider using oracle.security.jps.internal.policystore.JavaPolicyProvider.>
    ####<21.12.2012 07:58 Uhr MEZ> <Notice> <WebLogicServer> <localhost> <WLS_FORMS> <main> <<WLS Kernel>> <> <> <1356073086151> <BEA-000360> <Server started in RUNNING mode>
    

    You see the loading of OPSS Policy Provider takes now no relevant time and the startup time in our case decrease from 3 to 1 minute. We see same improvement for the reports managed server.

    Remember, your mileage may vary if

    • Your are not on a affected unix derivate.
    • You use not an jdk with this bug. Unfortunatly in the blog is not described the bug number.

    , , , , , , ,

    2 Comments

    Follow

    Get every new post delivered to your Inbox.

    Join 121 other followers

    %d bloggers like this: