Friday, October 19, 2012

Use remap when you don't want to replace existing schema


You might be taking periodic backups of your database and might need to restore backups as well. In such situations, if you do not need to overwrite existing data remap command can be used with impdp.There are options only to restore a specific set of tables. In here I will show how to restore the whole schema without replacing the existing.

1. First it is required a directory to be created so that all the exports stored in that directory and all the import dumps also will be read from the same. 
Follow this to create the directories and grant access.

2. Then lets create a backup of an existing schema. I've explained the backing-up procedure here. Else you can use following.
EXPDP X/X SCHEMAS=SCHEMA(S)_TO_IMPORT DUMPFILE=DUMPFILE_TO_IMPORT_FROM

e.g
expdp spfix/spfix schemas=spfix dumpfile=spfix_030812.dmp 


3. Now, our plan is to restore the dump on a new schema. So lets create a new user and grant access.

SQL> Create user yumani identified by yumani account unlock;

User created.

SQL> grant create session, dba to yumani;

Grant succeeded.

SQL> grant connect to yumani;

Grant succeeded.


  3. Let's restore the backup

Use this command to restore the backup using the schema you created above,
IMPDP REMAP_SCHEMA=OLD_OWNER:NEW_OWNER  DUMPFILE=DUMFILE.DMP NOLOGFILE=Y 

e.g
impdp yumani/yumani@daniddb schemas=yumani remap_schema=yumani:yumani1 dumpfile=yumani_120812.dmp NOLOGFILE=Y



Sunday, August 19, 2012

Senior Software Engineers, Technical Leads and Architects !!!

WSO2 is on the look out for passionate Senior Software Engineers, Technical Leads and Architects!!

We are looking for experienced Senior Software Engineers, Technical Leads and Architects to join our dynamic team. Minimum 4+ years of work experience required. You will be working with a dynamic team in an innovative and fast-paced environment.

If interested please email jobs@wso2.com – Subject – Post of SSE/TL/Architect.

Tuesday, August 7, 2012

ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDO'



Came across this error while executing an oracle script:

ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDO'
ORA-06512: at line 13


Reason:
tablespace 'UNDO' is reaching limits

Tablespaces view from http://127.0.0.1:8080/apex/










Solution:
You should resize the UNDO tablespace size. Execute this as sysdba.
SQL> alter database datafile '/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/dbs/bigtbs_f2.dat' 
      AUTOEXTEND ON MAXSIZE 10000M;


Also could add a datafile to UNDO tablespace if you have room. But I haven't tried this.


Monday, July 23, 2012

Setting-up email notifications for subsciptions made on resources/collections in WSO2 G-REG

In my last post I explained how to create a subscription. I also mentioned that there exists different types of notification and promised to explain them in proceeding posts.

So here as promised. Lets try out email notifications in this post.

1. As the first step we need to enable mail transport in axis2.xml. In latest carbon products this file is appearing in CARBON_HOME/repository/conf/axis2.

Open axis2.xml and uncomment mail transport receiver and sender like this.

 

    


 
        synapse.demo.1@gmail.com
        synapse.demo.1
        mailpassword
        smtp.gmail.com

        587
        true
        true
    




2. Restart the server after changing axis2.xml

3. Now login to Management Console, navigate to a resource that you need to subscribe for email notifications.

For the demonstration I am navigating to the same folder that I used in the previous example.

I am creating a child folder in it as am also going to show you how you would receive notifications on the changes\updates happened to child folders as well.

So here is my structure in registry.




4. Let's subscribe. In my scenario; I will subscribe to /_system/yumani_images/ to track LC creation. I will be having a hierarchical subscription. 



5. Having subscribed; Now lets test it. Let's add a life-cycle to a child within the collection "yumani_images". Below is a view from the 'Notifications' list.



After adding the life-cycle you should get an email to the mail id that you used while subscribing.

Since I had a hierarchical subscription I got a notification over an event (life-cycle inclusion) that happened to a child level resource.


 

Tuesday, July 17, 2012

Adding a subscritption to a resource\collection in WSO2 G-Reg

In WSO2 Governance registry you get a community feature which allows you to subscribe to any resource/collection to keep an eye on certain events that occur over the resource/collection. For these subscriptions you get a notification of your preferenced type as soon as the relevant event occurs.

Lets see how you subscribe and sign for a notification.

1. Extract WSO2 G-Reg if you already have it.  G-Reg 4.5.0 packs are being worked on these days and latest alpha2 packs are available at [1].

2. Start the server by running wso2server.sh in GREG_HOME/bin

3. Login to the admin console. Lets use default admin user/pass (admin/admin)

4. In the Admin Console, access to registry browser by navigating to Home>Resources>Browse




Now, if we recalled our purpose; we wanted to subscribe to a resource and have RESTful notifications on the changes that happen to the resource.

5. OK so lets create a resource or a collection to keep an eye on :D. I'm going to have a collection called yumani_images under /_system



6. Once the resource\collection is created you will be able to see the community features belonging to it.

7. You will also see "Subscriptions" panel as one of them.



8. Click on 'Add Subscription" link.

9. Select an event. It has many but self explanatory event types. Nevertheless heres a briefing too.
  • Check LC item -  Selecting an item from a life cycle state. You need to have a life cycle added to the resource\collection to achieve this.
  • Uncheck LC item - De-selecting an item from a life cycle state. You need to have a life cycle added to the resource\collection to achieve this.
  • Create Child - Creating a collection\resource inside the collection in concern.
  • Delete Child - - Creating a collection\resource inside the collection in concern.
  • Delete - Deleting the collection\resource in concern.
  • Create LC - Adding a life cycle to the resource\collection.
  • Delete LC - Removing an existing life cycle from the resource\collection
  • Change LC State - Promoting or demoting to a different stage in the life cycle which is associated to the resource\collection.
  • Update  - Any update to the resource\collection. This can be a version change, a community update such as a rating, comment etc.


 10. Then select the notification type. I will explain how each notification type is used, in my next posts.

11. Next is "Hierarchical subscription method. At the moment we have 3 levels of hierarchies.
  • Collection only
  • Collection and Children only
  • Collection, Children and Grand Children

12. Once this is saved you will have a subscription created for the resource\collection.



Like above we can create any number of subscriptions for different events that need to be tracked.

13. After the subscription is created you can manage it from Configure>Notifications. This page lists all the available subscriptions and allows you to add\edit\delete them.




 
Hope I was clear enough. Please await for more details in next posts !



[1] - https://svn.wso2.org/repos/wso2/people/ajith/greg-4.5.0/alpha-2/pack/



Wednesday, July 4, 2012

jaggeryjs.org/tryitview.jag

Today I am going to introduce http://jaggeryjs.org/tryitview tool.

Tryit tool has always been a part of  WSO2 products. It is a client application which lets you invoke and test a service after providing data to the payload that the tool itself is generating by looking at the service source.

http://jaggeryjs.org/tryitview is available in WSO2 Jaggery Runtime.  It is to test jaggery applications.  You need to simply paste the application source on the editor and invoke using tryit button. The results pane will display the outcome with any available HTML also rendered.

Now that we know what it is, lets have a tour (a technical tour :) )

  • Access tryit tool
    • You can do this by simply hitting  http://jaggeryjs.org/tryitview OR
    • By accessing jaggery run-time server. For this you need to;
      •  download WSO2 Jaggery alpha pack
      •  extract it
      •  run bin/server.sh.  
      •  access http://localhost:9763/tryitview.jag

  •  In the tryit view, paste your code and invoke using the 'tryit' button at the left corner.
  • Sample code segment is here


<%
 print('Hi, 

Jaggery

') var obj = {"name": "Madhuka", "company":"WSO2"}; print(obj); %>
  • In the above you don't have to pass any query params along with your request. But if you do, then you can use "Add Query String' option in the top.


  • Lets try this using following code. 
<% 

 var content = request.getParameter("cont");
 var to = request.getParameter("to");
 var subject = request.getParameter("sub");
 
 var email = require("email");
 //Add valid credentials
 var sender = new email.Sender("smtp.gmail.com", "25", "yumani@wso2.com", "ssfsdfsdfsdfd1");
 
 //Fill the correct information
 sender.from = "yumani@wso2.com";
 sender.to = to;
 sender.cc = to;
 sender.bcc = to;
 sender.subject = subject;
 sender.text = content;
 sender.send();
 
 print("email successfully sent to " + to); 
 %>


  • My query string for the source is - 
  • cont=xwww&to=yumani@wso2.com&sub=test  


    Guess you enjoyed !! You are open to try out various samples we have in  http://jaggeryjs.org/documentation.jag




    Monday, April 2, 2012

    Cheat-sheet : Starting WSO2-AS-4.2.1 with Activemq-5.2.2

    Start Activemq
    1. Download activemq from here

    2. Extract the binary

    3. Start activemq by going to ACTIVE_DIRECTORY_HOME/bin and issuing the command ./activemq console

    Configure WSO2 AppServer
    4. Download WSO2 AppServer from here

    5. Extract the binary

    6. Edit axis2.xml to enable JMS transport.
    1. Open CARBON_HOME/repository/conf/axis2.xml (CABRON_HOME is the location you extracted the AppServer distribution)
    2. Enable JMS transport by uncommenting follwing sections
     
       -
       -
       -
     
    
    AND
     
    

    7. Copy following jars from ACTIVEMQ_HOME/lib to CARBON_HOME/repository/components/lib
    1. activemq-core-5.4.2.jar
    2. geronimo-j2ee-management_1.1_spec-1.0.1.jar
    3. geronimo-jms_1.1_spec-1.1.1.jar
    8. Also copy the same to CARBON_HOME/lib/api

    9. Start the application server by issuing ./wso2server.sh at CARBON_HOME/bin.

    Sunday, April 1, 2012

    Hierarchical service deployment support in WSO2 AS

    Hierarchical service deployment support have been enabled in WSO2 App Server-3.2.0. The advantages of this feature are; Mainly you don't need to stick to a flat structure. This means you can manage different versions of the same service, where if only the business logic of the service is changed you can keep versions. Also it lets you more efficiency in managing your content.

    Following gives lot of useful details;
    - Hierarchical service deployment support implementation
    - Hierarchical service deployment support practical example

    Monday, March 26, 2012

    Came across log4j 1.2.15 dependancy problem

    I was building a web application and in mid the build failed while downloading dependencies to log4j-1.2.15. The solution to overcome this was to exclude these dependencies. Here is how it was done.
    My original pom.xml had this bit;
    
            
                log4j
                log4j
                1.2.15
            
            
                -
                -
                -
            
    
    
    I added this within the dependency tag as exclusions.
    
        
          javax.mail
          mail
        
        
          javax.jms
          jms
        
        
          com.sun.jdmk
          jmxtools
        
        
          com.sun.jmx
          jmxri
        
      
    
    The reason for this problem and the solution was nicely described in here

    Wednesday, February 8, 2012

    Creating a dump and restoring an Oracle database

    These days I am involved in testing a migration tool which demands in testing the application's migration against several databases. In the process it is very useful if a loaded database can be backed-up to restore later.

    This is how you create a database dump of an oracle database and restore it.

    1. First you need to connect to oracle as sysdba, create a user and grant him required privileges. Command line steps for creating a user and granting privileges are as below;
    C:\app\Administrator\OraHome_1\BIN>sqlplus sys as sysdba;
    
    SQL*Plus: Release 11.1.0.7.0 - Production on Tue Jan 10 17:28:47 2012
    
    Copyright (c) 1982, 2008, Oracle.  All rights reserved.
    
    Enter password:
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL> drop user yumani cascade;
    
    User dropped.
    
    SQL> Create user yumani identified by yumani account unlock;
    
    User created.
    
    SQL> grant create session, dba to yumani;
    
    Grant succeeded.
    
    SQL> grant connect to yumani;
    
    Grant succeeded.
    
    SQL> exit
    

    2.  Fill in your database with data.

    3. Next, lets create a database dump.
    $ expdp yumani/yumani schemas=yumani dumpfile=yumani100112_1657.dmp
    
    An oracle dump with the name yumani100112_1657.dmp will be created in the location that you ran the above command.

    4. After backing-up if you need to restore the dump, do as below.
    $ impdp yumani/yumani schemas=yumani dumpfile=YUMANI100112_1640.DMP 

    Tuesday, December 20, 2011

    Adding a human readable media type to G-Reg

    Adding a human readable media type is a new feature that will be available in the latest WSO2 G-Reg 4.1.1 packs.

    The use of this feature comes in when you need to name you media types using something that is more readable than a technical term. For an example say we have media types such as image/x-coreldrawpattern with .pat extension and chemical/x-vamas-iso14976 with .vms extension or
    application/vnd.symbian.install with .sis extension.  It is really hard to remember these names.

    This difficulty can be eliminated using human readable  media types feature.

    Following is how to configure this feature.

    1. Open G-Reg-HOME/repository/conf/mime.types file. This will show you all the supported the mime.types. 
    2. Select a mime type which you need to be mapped to a name of your choice.
    3. Open G-Reg-HOME/repository/conf/mime.mappings file. This is where we are going to add the new name that we are going to use for the given mime type.  The new name you add in this file will map the extension given in the mime.type file.
    4. In mime.mappings file, copy the mime-type wanted to change and tab 5 times and type the custom name. See below for an example: line 20
      #
      # Copyright 2005-2011 WSO2, Inc. (http://wso2.com)
      #
      # Licensed under the Apache License, Version 2.0 (the "License");
      # you may not use this file except in compliance with the License.
      # You may obtain a copy of the License at
      #
      # http://www.apache.org/licenses/LICENSE-2.0
      #
      # Unless required by applicable law or agreed to in writing, software
      # distributed under the License is distributed on an "AS IS" BASIS,
      # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      # See the License for the specific language governing permissions and
      # limitations under the License.
      #
      
      # This file is to define the human readable media type for a mime type. 
      # Eg:- 
      # text/plain                                      txt text
      application/wsdl+xml                                  mywsdl
      
      
    5. Save and close the file.
    6. Restart the server.
    Lets follow these steps to witness the adjustment :)
    1. Login to G-Reg admin console
    2. Navigate to Resource > Browse
    3. Select to add a new resource.
    4. Add a new resource of the type that you adjusted above. When you select the resource you will see the media type that you gave appear in the 'media type' field. (see image below)




    Tuesday, November 29, 2011

    wso2.org article : Connecting WSO2 G-Reg to a secured & confidential external user store

    The previous blog post on 'Connecting WSO2 G-Reg to a secured & confidential external user store' was made an article in wso2.org after elaborating some steps to more detail and also doing a good technical review.

    Its available in here


    Featured

    Selenium - Page Object Model and Action Methods

      How we change this code to PageObjectModel and action classes. 1 2 3 driver . findElement ( By . id ( "userEmail" )). sendKeys (...

    Popular Posts