Reusability of mapping with different database

Can i reuse the ODI mappings within different database.. like DB2,Oracle10 g, Oracle 11 g.
The table name should same in all the environment.

I am not saying I am 100% correct. As per my interpretation i believe it will work between oracle 10g to 11g. But not sure if it is db2. You might have to change the KM.
Just check with the generic KM. That might help you which normally works with all rdbms.

Similar Messages

  • Mapping to different databases

    We currently use TOPLink as persistence layer in our product. Currently the complete object model maps to one database. I was wondering if it is possible to map different objects to different physical databases (with different structures). E.g. We map the income object to a certain table in db1 (database only containing income data) and the investment portfolios to another database; etc.
    Does anybody has experience with this? Thanks for your reply.

    Hi,
    In order for you to work with two different databases at the same application you will need to use Session Broker.
    You can find an example of doing such a thing under "D:\toplink903\examples\core\examples\sessions\broker".
    In addition, you can find a large section in the 'TopLink foundation library' about the subject.
    Raanan.

  • Maintaining formats(layouts) on Crystal report with different database

    I was just needing some help maintaining the layout of a report but using a different database. The databases are very similar for example, a field for the database in use is line1xxxx what I wish to do is keep all the formating & point it line2xxxx database. Where line1 is the original Database & Line2 is the new database I wish to use. Both of these databases reside in the same folder its just that I need identical reports for both Line 1 & Line 2 & am trying to get away from duplicating all the work I did on the Line 1 report.
    Hopefully not too trivial for this forum.
    Thanks in advance.

    If you have same tables in both the databases then open the report and go to menu option in the report database-->set data source location and create new connection in the bottom window and select both existing connection from top window and new from bottom and click on update. Now the report points to the new database, so now use save as option to save the report with some other name so that you can have the old report with old connection and the new one with new connection.
    regards,
    Raghavendra.G

  • How to do mappings in owb with different databases

    hi all,
    I have two different databases with in same server one for staging and target.
    How to connect both target and staging databses to do the mappings using OWB??
    Is it possible?? if possible how to do the mappings??
    for ex:
    Now i registered my OWB with bcp database for both staging tables and target tables.
    now i want to load data of staging tables into bcpsource database and
    target tables into bcptarget database seperatly.

    10gR2 does have connectors. They were introduced at the same time as locations.
    The connection attributes (eg host, port, tnsname) are set against the location, not the connector. A connector simply defines the fact that there is a path from one location to another (eg via a database link). All the connection information remains on the location object.
    The process flow packages within a location can each be deployed on their own simply by selecting the location in the Control Center Manager, and setting a deployment action against the package (or by using scripting, as mentioned). However, a process flow cannot be deployed independently of it's package - it's all or nothing.
    Nigel.

  • Path Finder in a 2D Grid Map With Different Terrain Types

         I have been thinking for a while on path finding game algoritms and I can up with one idea witch I want to publish. The goal of my project is when I have a 2 dimensional grid map where squares can have different movement cost, like in Civilization II, to find the shortest way from one point in the map to another. I've used the Breathed First Search Engine. If you are not familiar to this search engine it is better to read about it first because I am not fcusing on it and I assume that you now how it works. You can read about it at the book "Practical Artificial Intelligence Programming in Java" writen by Mark Watson, witch is freely distributed at www.markwatson.com.
         Actually the idea of this 2D grid path finder is to use a third dimension witch have a size equal to the highest movement cost among all terrain types. This helps solving the problem with the different movement cost of the squates. By adding this abstract third dimension it is posible to use the Breadth First Search Engine.
         I this example the movementcost of a terrain type is always the same, no matter from witch square to with are you going (like in Civilization II but I haven't included roads or railroads). For example if you want to go from one square A to another square B with movement cost X (A and B are attached) you must go "up stairs" in the third dimension X - 1 times and then move to square B. But when you step on square B you are again at the lowest floor. So if you want to come back to the previous square A and it have movement cost Y first you must go floor Y and then jump in square A. And now you are again at the lowest floor at square A. When you move from one square to another you go always at the lowest floor. This is the way I handle with different movement costs.
         When you find the path to the goal point it is in 3 dimensions. So you must just project it in the 2D map and that's all you have the shortest path.
         I am sure this is not the best way to code this search engine but this is just the first scratch with no optimisation and so on. If I make a 100x100 randomly generated map it takes on my configuration(400Mhz Pentium II CPU with ASUS P2B MotherBoard on 100 MHz and 256 MB SD RAM on 133 MHz but because of my MB on 100MHz) around 1000 miliseconds (1000 miliseconds = 1 second) to find the shortest path from (1, 1) to (100, 100) witch is pretty good compare to the goTo function in Civilization II witch does not finds the shortest path at all and have made hundrets of gamers angry. This is amazing that nowadays there are so many games with bad path finding.
         This project includes:
    1. The PathFinder class witch does the jub.
    2. The Map class witch has a generator for a random map in it.
    3. The class TerrainType, every square on the map is based on this class.
    4. The class TerrainTypes witch is the set of all terrain types used in the map.
    5. The class PathFinderTest witch just test the path finder.
    To test this project put all files in one directory and run PathFinderTest.java.
    Map.java:
    import java.util.Vector;
    import java.util.Random;
    //This class just creates a random map and keeps it. I will not comment on this.
    class Map {
      //here is kept the information about the terrain types placed in the map. Where
      //every terrain type has a specific movement cost.
      private int[][] terrain;
      public TerrainTypes terrainTypes;
      private int landMass;
      private int width;
      private int height;
      private int highestMovementCost;
      public Map(int aWidth, int aHeight) {
        width = aWidth;
        height = aHeight;
        terrainTypes = new TerrainTypes();
        highestMovementCost = terrainTypes.getHighestMovementCost();
        terrain = new int[width][height];
        landMass = 0;
        generateRandomMap();
      public void clearGoalAndStartLocFromWater(int sx, int sy, int gx, int gy) {
        terrain[gx][gy] = 0;
        terrain[sx][sy] = 0;
      private void expandWater() {
        int waterConstant = 40;
        int waterExpansion = 2;
        int[][] moreWater = new int[width][height];
        Random randomizer = new Random();
        for (int t = 0; waterExpansion > t; t++) {
          for (int i = 0; i < width; i++) {
            for (int j = 0; j < height; j++) {
              if (i + 1 >= 0 && j >= 0 && i + 1 < width && j < height) {
                if (terrain[i + 1][j] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i + 1][j] = 1;
              if (i + 1 >= 0 && j - 1 >= 0 && i + 1 < width && j - 1 < height) {
                if (terrain[i + 1][j - 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i + 1][j - 1] = 1;
              if (i >= 0 && j - 1 >= 0 && i < width && j - 1 < height) {
                if (terrain[i][j - 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i][j - 1] = 1;
              if (i - 1 >= 0 && j - 1 >= 0 && i - 1 < width && j - 1 < height) {
                if (terrain[i - 1][j - 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i - 1][j - 1] = 1;
              if (i - 1 >= 0 && j >= 0 && i - 1 < width && j < height) {
                if (terrain[i - 1][j] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i - 1][j] = 1;
              if (i - 1 >= 0 && j + 1 >= 0 && i - 1 < width && j + 1 < height) {
                if (terrain[i - 1][j + 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i - 1][j + 1] = 1;
              if (i >= 0 && j + 1 >= 0 && i < width && j + 1 < height) {
                if (terrain[i][j + 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i][j + 1] = 1;
              if (i + 1 >= 0 && j + 1 >= 0 && i + 1 < width && j + 1 < height) {
                if (terrain[i + 1][j + 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i + 1][j + 1] = 1;
        for (int i = 0; i < width; i++) {
          for (int j = 0; j < height; j++) {
            if (moreWater[i][j] == 1) {
              terrain[i][j] = 4;
      private void generateRandomMap() {
        Random randomizer = new Random();
        for (int i = 0; i < width; i++) {
          for (int j = 0; j < height; j++) {
            if (randomizer.nextInt(3) == 1)
              terrain[i][j] = 0;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 1;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 3;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 2;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 2;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 1;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 3;
            else
              terrain[i][j] = randomizer.nextInt(5);
        expandWater();
        for (int i = 0; i < width; i++) {
          for (int j = 0; j < height; j++) {
            if (terrain[i][j] != 0)
              landMass++;
      public int getMapHeight() {
        return height;
      public int getMapWidth() {
        return width;
      public int getSquareID(int x, int y) {
        return terrain[x][y];
      public int getSquareMovementCost(int x, int y) {
        return terrainTypes.getMovementCost(terrain[x][y]);
    }PathFinder.java:
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.Vector;
    public class PathFinder {
      private BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
      //The array t3D[][] represents the 2D square map where t3D.leght = map width
      //and t3D[x].lenght = map width (-1 < x < t3D.leght). The third dimension
      //is refered to the square's movement cost, witch is definite by terrain.
      //The fourth dimension will be with lenght = 3. When running the search engine
      //(expanding the explored squares) this 3 values will keep the position of
      //the previous square in 3 dimension, witch are width, height and the maximum
      //movement cost among all squares.
      private int[][][][] squares3DReference;
      //Keeps information witch squares are visited.
      private boolean[][][] visitedSquares;
      private Map map;
      //this is the queue used in the Breathed First Seatch.
      private Vector queue3D;
      //Here is saved the shortest path
      private Vector path2D;
      private int highestMovementCost;
      public PathFinder(Map aMap) {
        map = aMap;
        queue3D = new Vector();
        path2D = new Vector();
        squares3DReference = new int[map.getMapWidth()][map.getMapHeight()][][];
        visitedSquares = new boolean[map.getMapWidth()][map.getMapHeight()][];
        highestMovementCost = map.terrainTypes.getHighestMovementCost();
        buildAbstract3DTerrain();
      private void buildAbstract3DTerrain() {
        for (int x = 0; x < map.getMapWidth(); x++) {
          for (int y = 0; y <map.getMapHeight(); y++) {
            int movementCost = map.terrainTypes.getMovementCost(map.getSquareID(x, y));
            if ( movementCost > 0) {
              visitedSquares[x][y] = new boolean[highestMovementCost];
              squares3DReference[x][y] = new int[highestMovementCost][3];
              for (int z = 0; z < highestMovementCost; z++) {
                for (int t = 0; t < 3; t++) {
                  squares3DReference[x][y][z][t] = -1;
      private boolean isMoveValid(int x, int y, int z, int x2, int y2, int z2) {
        if ( x < 0 || y < 0 || z < 0 || x2 < 0 || y2 < 0 || z2 < 0 || x >= map.getMapWidth() || y >= map.getMapHeight() || z >= highestMovementCost ||  x2 >= map.getMapWidth() || y2 >= map.getMapHeight() || z2 >= highestMovementCost)
          return false;
        if (map.terrainTypes.getMovementCost(map.getSquareID(x2, y2)) < 1)
          return false;
        if (visitedSquares[x2][y2][z2])
          return false;
        if (x == x2 && y == y2)
          return true;
        else {
          if (z == map.terrainTypes.getMovementCost(map.getSquareID(x2, y2)) - 1)
            return true;
          else
            return false;
      private void clearPreviousSearchData() {
        queue3D.clear();
        path2D.clear();
        for (int x = 0; x < map.getMapWidth(); x++) {
          for (int y = 0; y < map.getMapHeight(); y++) {
            if (squares3DReference[x][y] != null) {
              for (int z = 0; z < highestMovementCost; z++) {
                visitedSquares[x][y][z] = false;
                for (int t = 0; t < 3; t++) {
                  squares3DReference[x][y][z][t] = -1;
      private Vector copyPath2D() {
        Vector path = new Vector();
        for (int i = 0; i < path2D.size(); i++) {
          path.add(path2D.get(i));
        return path;
      public Vector findPath(int sX, int sY, int gX, int gY) {
        int head = 0;
        int tail = 0;
        int x = sX;
        int y = sY;
        int z = 0;
        visitedSquares[x][y][z] = true;
        mainLoop: {
          while (tail <= head) {
            int[][] moves = getPosibleMoves(x, y, z);
            for (int i = 0; i < 9; i++) {
              if (moves[i] != null) {
                squares3DReference[moves[0]][moves[i][1]][moves[i][2]][0] = x;
    squares3DReference[moves[i][0]][moves[i][1]][moves[i][2]][1] = y;
    squares3DReference[moves[i][0]][moves[i][1]][moves[i][2]][2] = z;
    queue3D.add(moves[i]);
    if (moves[i][0] == gX && moves[i][1] == gY) {
    break mainLoop;
    visitedSquares[moves[i][0]][moves[i][1]][moves[i][2]] = true;
    head++;
    if (queue3D.size() == 0 || queue3D.size() == tail)
    break mainLoop;
    int[] nextInQueue = ((int[]) queue3D.get(tail));
    x = nextInQueue[0];
    y = nextInQueue[1];
    z = nextInQueue[2];
    tail++;
    if (squares3DReference[gX][gY][0][0] == -1) {
    clearPreviousSearchData();
    return path2D;
    fillpath2D(sX, sY, gX, gY);
    Vector path = copyPath2D();
    clearPreviousSearchData();
    return path;
    private int[][] getPosibleMoves(int x, int y, int z) {
    int[][] moves = new int[9][3];
    if (isMoveValid(x, y, z, x + 1, y, 0)) {
    moves[0][0] = x + 1;
    moves[0][1] = y;
    moves[0][2] = 0;
    else
    moves[0] = null;
    if (isMoveValid(x, y, z, x + 1, y - 1, 0)) {
    moves[1][0] = x + 1;
    moves[1][1] = y - 1;
    moves[1][2] = 0;
    else
    moves[1] = null;
    if (isMoveValid(x, y, z, x, y - 1, 0)) {
    moves[2][0] = x;
    moves[2][1] = y - 1;
    moves[2][2] = 0;
    else
    moves[2] = null;
    if (isMoveValid(x, y, z, x - 1, y - 1, 0)) {
    moves[3][0] = x - 1;
    moves[3][1] = y - 1;
    moves[3][2] = 0;
    else
    moves[3] = null;
    if (isMoveValid(x, y, z, x - 1, y, 0)) {
    moves[4][0] = x - 1;
    moves[4][1] = y;
    moves[4][2] = 0;
    else
    moves[4] = null;
    if (isMoveValid(x, y, z, x - 1, y + 1, 0)) {
    moves[5][0] = x - 1;
    moves[5][1] = y + 1;
    moves[5][2] = 0;
    else
    moves[5] = null;
    if (isMoveValid(x, y, z, x, y + 1, 0)) {
    moves[6][0] = x;
    moves[6][1] = y + 1;
    moves[6][2] = 0;
    else
    moves[6] = null;
    if (isMoveValid(x, y, z, x + 1, y + 1, 0)) {
    moves[7][0] = x + 1;
    moves[7][1] = y + 1;
    moves[7][2] = 0;
    else
    moves[7] = null;
    if (isMoveValid(x, y, z, x, y, z + 1)) {
    moves[8][0] = x;
    moves[8][1] = y;
    moves[8][2] = z + 1;
    else
    moves[8] = null;
    return moves;
    private void fillpath2D(int sX, int sY, int gX, int gY) {
    int[] gLoc = {gX, gY};
    path2D.add(gLoc);
    int x = gX;
    int y = gY;
    int z = 0;
    while (x != sX || y != sY) {
    int x2 = squares3DReference[x][y][z][0];
    int y2 = squares3DReference[x][y][z][1];
    int z2 = squares3DReference[x][y][z][2];
    x = x2;
    y = y2;
    z = z2;
    if (z == 0) {
    int[] loc = {x, y};
    path2D.insertElementAt(loc, 0);
    PathFinderTest.java
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.Vector;
    public class PathFinderTest {
      static BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
      static Map map;
      static int startX;
      static int startY;
      static int goalX;
      static int goalY;
      public static void main(String[] args) throws Exception {
        System.out.print("Enter map size.\nx = ");
        int width = Integer.parseInt(consoleReader.readLine());
        System.out.print("y = ");
        int height = Integer.parseInt(consoleReader.readLine());
        System.out.print("Enter strting location.\nx = ");
        startX = Integer.parseInt(consoleReader.readLine()) - 1;
        System.out.print("y = ");
        startY = Integer.parseInt(consoleReader.readLine()) - 1;
        System.out.print("Enter goal location.\nx = ");
        goalX = Integer.parseInt(consoleReader.readLine()) - 1;
        System.out.print("y = ");
        goalY = Integer.parseInt(consoleReader.readLine()) - 1;
        if (goalX < 0 || goalY < 0 || startX < 0 || startY < 0 || goalX >= width || goalY >= height || startX >= width || startY >= height) {
          System.out.println("Invalid parameters found. Program will exit");
          System.exit(0);
        map = new Map(width, height);
        map.clearGoalAndStartLocFromWater(startX, startY, goalX, goalY);
        printSolution(new Vector());
        PathFinder pathFinder = new PathFinder(map);
        long before = System.currentTimeMillis();
        Vector path = pathFinder.findPath(startX, startY, goalX, goalY);
        long after = System.currentTimeMillis();
        long time = after - before;
        printSolution(path);
        if (path.size() == 0)
          System.out.println("No path found.");
        else
          System.out.println("Path found.");
        System.out.println("Finding the path took " + time + " milliseconds");
      static void printSolution(Vector path) {
        boolean[][] pathOnMap = new boolean[map.getMapWidth()][map.getMapHeight()];
        for (int i = 0; path.size() > i; i++) {
          int[] move = (int[]) path.get(i);
          pathOnMap[move[0]][move[1]] = true;
        for (int y = 0; y < map.getMapHeight(); y++) {
          for (int x = 0; x < map.getMapWidth(); x++) {
            System.out.print(" ");
            if (pathOnMap[x][y] == false)
              System.out.print(" ");
            else
              System.out.print("0");
            if (x == startX && y == startY)
              System.out.print("S");
            else if (x == goalX && y == goalY)
              System.out.print("G");
            else
              System.out.print(map.terrainTypes.getNameFirstLetter(map.getSquareID(x, y)));
          System.out.println();
        System.out.println();
    }TerrainType.java:
    public class TerrainType {
      private int movementCost;
      private String name;
      TerrainType(int aMovementCost, String aName) {
        movementCost = aMovementCost;
        name = aName;
      public int getMovementCost() {
        return movementCost;
      public String getName() {
        return name;
      public String getNameFirstLetter() {
        return name.substring(0, 1).toUpperCase();
    }TerrainTypes.java:
    import java.util.Vector;
    public class TerrainTypes {
      //Here are saved the terrain types with the map has. ElementAt 'i' in
      //setOfTypes is represented by the number in Map.terrain[x][y] witch is
      //equal to i, were x, y are random integer as soon as they do not
      //throw ArrayIndexOutOfBoundsException. Actually this is a coding to know
      //a specific square in the map to witch terrain type is refered in setOfTypes.
      private Vector setOfTypes;
      public TerrainTypes() {
        setOfTypes = new Vector();
        setOfTypes.add(new TerrainType(1, "Plains"));
        setOfTypes.add(new TerrainType(2, "Forst"));
        setOfTypes.add(new TerrainType(3, "Jungle"));
        setOfTypes.add(new TerrainType(4, "Mountain"));
        setOfTypes.add(new TerrainType(-1, "X"));
      public int getMovementCost(int i) {
        return ((TerrainType) setOfTypes.get(i)).getMovementCost();
      public String getName(int i) {
        return ((TerrainType) setOfTypes.get(i)).getName();
      public String getNameFirstLetter(int i) {
        return ((TerrainType) setOfTypes.get(i)).getNameFirstLetter();
      public int getHighestMovementCost() {
        int max = 1;
        for (int i = 0; setOfTypes.size() > i; i++) {
          int movementCost = ((TerrainType) setOfTypes.get(i)).getMovementCost();
          if ( movementCost > 0) {
            if (max < movementCost)
              max = movementCost;
        return max;
    }I hope this program will be helpful.
    Sogartar

    Why is such a smart guy like you not using A*
    It is a general known algorithm which will find the
    optimal solution in a finite search-space (within a minimal time).
    The calculation time for the A* algorithm is influenced by two parameters:
    1 - cumulative cost
    2 - minimal expected additional cost
    The calculation of these two costs has a great influence on the
    solution.
    I think the actual problems most games experience with shortest path calculatoin are
    1 - very little time to spent calculating the shortest path
    The quickest solution might be the best for the game
    If your solution takes 1 second for the calculation of a path for one element on the board (100x100)
    What would it take for the game to calculate the path for all elements controlled by the computer ??
    If the computer controls two players which each have 50 elements to control, it would take forever...
    Don't even consider the usage of a larger board (200x200 would take 4 seconds/element when
    algorithm has complexity O(n))
    2 - low priority.
    Users tend to forgive a bad shortest path-algorithm most of the time,
    but not a bad display, bad pictures,...
    This is why most shortest-path algorithms within games were
    developed as a depth first search,
    within some earlier games this was even developed as
    a rule which went straight to the endlocation and
    takes a right/left turn when blocked by water/wall/...
    So the actual steps you should take are:
    1 - develop a normal breath-first search (to get going)
    2 - develop a normal depth-first search (to compare speed and solution with)
    3 - develop a normal dijkstra algorithm (sometimes called A)
    4 - develop a best first algorithm (called A*)
    5 - develop other AI-algorithms building upon A* (tabu-search, limited memory A*,...)
    6 - develop some other AI-algorithms (Genetic Algorithms, Simulated Annealing,...)
    7 - compare and tweak/change all search-algorithms for
    7 - a - size of maps (small versus huge)
    7 - b - optimality of the solution
    7 - c - actual usage for your game
    8 - !!! very important !!!
    Share the developed path algorithms along with remarks about speed, map-size,...
    with the rest of us. I would be very interested in such library.
    kind regards,

  • One landscape with different databases releases

    Dears,
    A customer have MSSQL 2000 installed on your systems DEV and QAS. The PRD system does not installed.
    Now the customer need install only the production system, but he want with MSSQL 2005.
    Does have problems? What SAP recommend?
    Thanks,
    Dejalma Rodrigues

    Hi,
    It is possible to have different releases of DB within a landscape <u>as long as the same release of the SAP application supports it</u>. The end users will not see any difference.
    The challenge is support for DB patching if you don't have anywhere to replicate production issues. Not to mention possible issues with different DB tuning parameters and back-up recovery processes.
    I would suggest that you <b>at least</b> upgrade the QAS system to SQL Server 2005 too in the short term. The recommendation you will always get is to have all 3 aligned on the same release - that should be your longer term goal.
    Cheers,
    Mike

  • Layer 7 class-map with different match types

    Hello,
    I am fighting with a problem on an ACE-4710 version A3(2.4) configuation. I just want to configure a layer 7 class-map that matches if one of two conditions is true. The problem is that these conditions are not from the same type and the ACE refuses the second match statement. However, in the configuration guide, it is clearly defined that it should be possible :
    Here is what the configuration guides says :
    host1/Admin(config)# class-map type http loadbalance match-any CLASS3
    host1/Admin(config-cmap-http-lb)# 100 match http url .*.gif
    host1/Admin(config-cmap-http-lb)# 200 match http header Host header-value XYZ
    host1/Admin(config-cmap-http-lb)# exit
    If I test exactly the same configuration in a context of my ACE, I receive an error message :
    CH01AC03/P-104-A(config)# class-map type http loadbalance match-any CLASS3
    CH01AC03/P-104-A(config-cmap-http-lb)# 100 match http url .*.gif
    CH01AC03/P-104-A(config-cmap-http-lb)# 200 match http header Host header-value XYZ
    Error: Match-any classmap can not have different type of match
    If I use nested class-maps, I receive the same error message !
    Is it a known problem or is it a solution for it ?
    Thank you for any help
    Yves

    Hello Yves,
    The command error is correct.  I'll take a look at the docs and see about getting them corrected, if necessary.
    Basically, for a match-all, you would have to use different types.  For example, there will only be one Host header, so you would only specify it once using regex or a fixed string.  As you found out, the match-any requires that they all be of the same type.  See my example below:
    class-map type http loadbalance match-all HEADER-AND-URL
      100 match http url /login.*
      200 match http header Host header-value "XYZ"
    class-map type http loadbalance match-any URLS
      100 match http url .*\.gif
      200 match http url .*\.jpg
    class-map type http loadbalance match-any HEADER
      200 match http header Host header-value "CISCO"
    policy-map type loadbalance first-match SLB_LOGIC
      class HEADER-AND-URL
        serverfarm LOGIN-FARM
      class URLS
        serverfarm IMAGES-FARM
      class HEADER
        serverfarm CISCO-FARM
      class class-default
        serverfarm WWW-FARM
    So let's say you want to match requests for URLs ending in .jpg or for requests with Host header XYZ, and if it matches either one, then send to the same serverfarm.
    class-map type http loadbalance match-any URL-JPG
      2 match http url .*\.jpg
    class-map type http loadbalance match-any HOST-XYZ
      2 match http header Host header-value "XYZ"
    policy-map type loadbalance first-match SLB_LOGIC
      class URL-JPG
        serverfarm SERVER-FARM
      class HOST-XYZ
        serverfarm SERVER-FARM
    If you wanted to send these requests to the farm only if they matched BOTH matches, then you could do it as follows:
    class-map type http  loadbalance match-all HEADER-AND-URL
       100 match http url /login.*
       200 match http header Host header-value "XYZ"
    policy-map type  loadbalance first-match SLB_LOGIC
       class HEADER-AND-URL
         serverfarm LOGIN-FARM
    Hope this helps,
    Sean

  • One to Many Mapping with different SQL types

    We have an interesting one to many relationship in our system in which the source and target field SQL types do not match, but the values do. The relationship is actually between multiple entries in the same database table. So, imagine we have some table that looks sort of like this:
    KEY ObjectID OwnerNo
    100 1234     0
    101 ABCD     1234
    102 EFGH     1234ObjectID is defined as a varchar type, but Parent entries are guaranteed to have integer value ObjectIDs. Child entries point to the parent through the OwnerNo field, which defined in the database as a numeric.
    A simple one-to-many mapping will give you the following SQL error on execution: [SQL0401] Comparison operator = operands not compatible.
    I tried modifying my descriptor after load as follows:
       public static void modifyOneToMany(Descriptor descriptor)
           ExpressionBuilder builder = new ExpressionBuilder();
           Expression exp = builder.getField("OwnerNo").
              equal(builder.getField("ObjectID").toNumber());
           descriptor.getMappingForAttributeName("children")
              .setSelectionCriteria(exp);
       }But this introduces two problems in the generated SQL ( ... WHERE ((t0.OwnerNo = TO_NUMBER(t0.ObjectID) ... ). First, this generates a where clause using the function TO_NUMBER, which is not supported by DB2 on AS400, our database platform. Second, the table reference is off in the generated SQL--I couldn't find a way to specify that the right hand side of the = operator should be from the parent of the one to many mapping--both sides are referenced from the child context (t0).

    I found the getFunction() method on Expression, so I can solve half of this problem with the following code:
       public static void modifyOneToMany(Descriptor descriptor)
         if (descriptor.getMappingForAttributeName("children").isOneToManyMapping())
           OneToManyMapping map = (OneToManyMapping) descriptor.
                                  getMappingForAttributeName("children");
           DatabaseField objectID= (DatabaseField) map.getSourceKeyFields().get(0);
           DatabaseField ownerNo = (DatabaseField) map.getTargetForeignKeyFields().get(0);
           ExpressionBuilder builder = new ExpressionBuilder();
           Expression exp = builder.getField(ownerNo).getFunction("CHAR").
                            equal(builder.getField(objectID));
           map.setSelectionCriteria(exp);
       }This generates the following where clause:
    ... WHERE ((CHAR(t0.OwnerNo) = t0.ObjectID) ...
    But, I still have two questions:
    1. How do we get the right hand side of this comparison to reference the Parent part of the 1-M mapping?
    2. Since character and numeric conversions are pretty standard SQL functions, is there something wrong with the DB2 database platform I'm using?

  • Problme in http server configuration with different database version

    I have two instances of oracle databases on two different machines.
    1. Oracle 9i R 2 with default http server
    2. Oracle 10 g with http server of Oracle 10 g AS.
    Now the problem is that when i want to cross configure the http servers that is to configure http server of 9i R 2 data base with the 10g data base or vice versa. It give the following error.
    Can not run. Capacity probem.................
    Plz tell me that is there any pronle in these configuration. Is it possible to configure 9i http server with 10 g data base and vice versa If yes then why I am getting errors???

    The entries of the log file are as under:
    Tue Aug 07 05:00:29 2007] [error] [client 10.8.7.33] [ecid: 1186444829:10.8.7.33:1968:7060:109,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:05:29 2007] [error] [client 10.8.7.33] [ecid: 1186445129:10.8.7.33:1968:7016:114,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:10:29 2007] [error] [client 10.8.7.33] [ecid: 1186445429:10.8.7.33:1968:7528:90,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:15:29 2007] [error] [client 10.8.7.33] [ecid: 1186445729:10.8.7.33:1968:5872:128,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:20:29 2007] [error] [client 10.8.7.33] [ecid: 1186446029:10.8.7.33:1968:2468:95,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:25:29 2007] [error] [client 10.8.7.33] [ecid: 1186446329:10.8.7.33:1968:7236:136,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:30:29 2007] [error] [client 10.8.7.33] [ecid: 1186446629:10.8.7.33:1968:536:116,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:35:29 2007] [error] [client 10.8.7.33] [ecid: 1186446929:10.8.7.33:1968:3556:108,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:40:29 2007] [error] [client 10.8.7.33] [ecid: 1186447229:10.8.7.33:1968:6920:132,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:45:29 2007] [error] [client 10.8.7.33] [ecid: 1186447529:10.8.7.33:1968:7536:119,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:50:29 2007] [error] [client 10.8.7.33] [ecid: 1186447829:10.8.7.33:1968:5108:76,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 05:55:29 2007] [error] [client 10.8.7.33] [ecid: 1186448129:10.8.7.33:1968:668:121,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 06:00:29 2007] [error] [client 10.8.7.33] [ecid: 1186448429:10.8.7.33:1968:6640:129,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 06:05:29 2007] [error] [client 10.8.7.33] [ecid: 1186448729:10.8.7.33:1968:7324:123,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 06:10:29 2007] [error] [client 10.8.7.33] [ecid: 1186449029:10.8.7.33:1968:2168:81,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 06:15:29 2007] [error] [client 10.8.7.33] [ecid: 1186449329:10.8.7.33:1968:2320:166,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 06:20:29 2007] [error] [client 10.8.7.33] [ecid: 1186449629:10.8.7.33:1968:7320:114,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 06:25:29 2007] [error] [client 10.8.7.33] [ecid: 1186449929:10.8.7.33:1968:7528:96,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 06:30:29 2007] [error] [client 10.8.7.33] [ecid: 1186450229:10.8.7.33:1968:7580:124,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p
    [Tue Aug 07 06:35:29 2007] [error] [client 10.8.7.33] [ecid: 1186450529:10.8.7.33:1968:668:124,0] File does not exist: c:/oraas/apache/apache/htdocs/pls/orasso/htp.p

  • Restore Rman hotback in different machine with different Database name

    Hi All,
    I have oracle 11.2.0.3.0 in Windows 2003 R2 server 64 bit version,i have my production database "Proddb" in archivelog mode , I have taken RMAN hot backup at 9 AM and i want to restore this RMAN backup into new Machine with new Db Name "Testdb" at 1 PM ,in between 9 AM to 1 PM lots of transactions happened , lots of archivelogs got generated ..
    Can anyone tell me how to restore RMAN Backup in different machine with new Db name and also how to apply those archive logs which got generated between 9 AM to 1 PM.
    Thanks & Regards,
    Vikash Jain

    http://docs.oracle.com/cd/B19306_01/backup.102/b14191/rcmrecov.htm#i1007814Yes you will have to apply all those archivelog after yours last backup 9:00 AM to 1:00 PM , someone give you good link to restore the RMAN backup from one machine ot another machine but it is missing one thing which you require is to restore database at new machine with new DB_NAME , for that you can do it in two ways after restoring and recovering the database.
    1)After restoring with original name "Proddb" do not recover database ,Create contorlfile in control.txt format using alter database backup controlfile to trace,Shutdown restored database ,delete/rename contorolfile ,recreate controlfile from control.txt which by setting its first line as
    Create controlfile set database "Testdb" resetlogs noarchivelogStartup mount with new created controlfile after defining new controlfile in pfile ,recover database at sql using backup controlfile "recover database using backup controlfile untill cancel" supply log till 1:00 PM ,Open database with resetlogs,run at comand prompt
    sqlplus "/ as sysdba" @aduplib.sql so2)Or better approach is http://docs.oracle.com/cd/B28359_01/server.111/b28319/dbnewid.htm.
    Khurram

  • DBMS_XMLSave issues with different databases

    This is a brainteaser...
    I have set up a couple of stored procedures in a package that inser / update and delete values in a database table using the DBMS_XMLSave functions as per the article 'Using XML-SQL Utility (XSU), 24 of 26' and re-use the context handle.
    This is being used for an ASP application and as such I am using the Oracle 8.1.7 OLEDb provider and passing the XML string as a clob to the stored procedures using a command object.
    I am now moving the application to another database in preparation for it going to staging and have come across a very interesting error. On the old database everything worked correctly, though on this new database (same IIS server) when i try to insert, update or delete on any table using the XML functions i get the following error:
    Unable to insert the details. SQL ERROR:[ORA-29532: Java call terminated by uncaught Java exception: oracle.xml.sql.OracleXMLSQLException: Expected name instead of ??.]
    Using the same ASP i connected to the old database and successfully ran the page, i change it to the new database and get the above error.
    However I can successfully execute the stored procedure from a command prompt (TOAD) on the new database.
    I have done some digging and found that it might have something to do with the NLS settings in the database.
    if i change the NLS registry key (HKEY_LOCAL_MACHINE\Software\Oracle\HOME0\NLS_LANG) from AMERICAN_AMERICA.WE8ISO8859P1 to AMERICAN_AMERICA.UTF8 on the IIS server i am running my ASP from, i can get both to return the same error though the question marks turn upside down.
    Here's an example of the sample code i am using. Note how i have to convert a CLOB to a string and back to a CLOB. This was because originally Oracle would not accept CLOBS from ASP (as the createParameter method did not really have a clob datatype but did have a longvarchar though Oracle recognises it as a clob because i can do clob operations on it. If anyone has an idea to get around this could you tell me as well?)
    Here's a snippit of the package i use
    saveCtx := DBMS_XMLSave.newContext('USER_FAVOURITE'); -- create the context once..!
         DBMS_XMLSave.setKeyColumn(saveCtx, 'FAVOURITE_ID'); -- set the key column name.
    PROCEDURE insert_XML(
    o_result OUT NUMBER,
         o_result_msg OUT VARCHAR2,
         xmlDoc in clob
    ) is
    e_processing_error EXCEPTION;
    v_processing_msg VARCHAR2(1990);
    v_result_msg      VARCHAR2(1990);
    insXML           CLOB;
    BEGIN
    -- Create a temp LOB as an input parameter
    DBMS_LOB.CREATETEMPORARY(insXML,TRUE);
    -- Write the XML doc to the LOB
    DBMS_LOB.WRITE(insXML, DBMS_LOB.GETLENGTH(xmlDoc), 1, DBMS_LOB.SUBSTR(xmlDoc, 32767));
    rows := DBMS_XMLSave.insertXML(saveCtx, insXML);
    -- Free the LOB space in memory
    DBMS_LOB.FREETEMPORARY(insXML);
    END;

    XSU don't suppose to support databases other than Oracle.

  • How too add another iPhone to Maps with DIFFERENT iCloud accounts

    I went to this support article:  http://support.apple.com/kb/TS5293
    I want to send directions to my wife's iPhone BUT we have different iCloud IDs. 
    According to suppport article, both of us must have SAME iCloud ID.
    IS THERE A WAY AROUND THIS?
    I see my iPhone but not hers.  Both running latest iOs 7 software.
    Thank you

    Stealing is NOT the only reason to want to transfer music and paid apps from one account to another. 
    The family has been using one itunes account to purchase music and apps.  This account was set up under my user name.  I gave my wife my old ipad and got the 3-kids new ipads.  I want to give all of the music and apps under my user name to my wife's new itunes account so the family can keep using them and I can have a separate account.  Even if I have to re-pay for the music and apps. 
    Is it possible?

  • How to pass database logon info to a Crystal Report in a subreport with different server name using VS C #

    Post Author: fabu1971
    CA Forum: .NET
    I could pass the database logon in Reports with subreports but the reports with subreports with different  server name I can not pass the logon information . Do you have any idea how I can do that to pass the database logon with different database or server name ?

    Post Author: quafto
    CA Forum: .NET
    You can use the Subreports collection of the ReportDocument object to access all the subreports in your main report. These are returned as ReportDocument objects. Once you have your subreport as a ReportDocument you can loop through your Tables collection and set the ConnectionProperties to your appropriate Server/Database. For example here is some pseudo code: ConnectionInfo boConnectionInfo = new ConnectionInfo();boConnectionInfo.ServerName = "serverName";boConnectionInfo.DatabaseName = "databaseName";boConnectionInfo.UserID = "username";boConnectionInfo.Password = "yourpassword"; foreach(ReportDocument boSubreport in mainReport.Subreports){    foreach(Table boTable in boSubreport.Database.Tables)    {        TableLogOnInfo boTableLogOnInfo = boTable.LogOnInfo;          boTableLogOnInfo.ConnectionInfo = boConnectionInfo;          boTable.ApplyLogOnInfo(boTableLogOnInfo);          boTable.Location = "newtablelocation";     }}

  • How to develop a report in Crystal with flexible database name?

    Hello
    I am a Project Manager of a project of developing reports in Crystal 11.
    The idea is to develop reports on top of the content in MS SQL tables.
    The initial testing and demonstration to the customer is done within the Crystal development environment.
    In a later stage, we need to integrate the reports with C# WPF application, using Crystal control.
    We currently use ODBC connections.
    We want the flexibility to set the actual database dynamically, by using the "default database" of the ODBC connection (or any other way). In other words, we want not just the flexibility to change the database server, but work with different database names, like "ProductDB_TEST", "ProductDB_PROD" etc. - without changing the report.
    Unfortunately, we got the answer from the developer that the database name should be pre-defined for a given report. Although the connection can be set to another server, the DB name cannot be set dynamically.
    Looking into the "Database" -> "Show SQL Query" menu, we see the following piece inside the query:
    INNER JOIN "DATABASE_NAME"."dbo"."IncidentTypeSnapshotData"
    So it looks like the query itself contains the DB name.
    Is it really a limitation of Crystal, or rather the developer working on the project doesn't know the trick?
    Thanks for any hint
    Max

    CR CR 2011 / "Crystal reports For Visual Studio 2010", you are correct.
    Re. the database thinggy. You can connect to a database via ODBC, OLE DB or in some instances natively. Once a report is created you an change the datasource. A good sample app on how to do this is  csharp_win_dbengine / vb_win_dbengine. A link to the samples is here:
    Crystal Reports for .NET SDK Samples - Business Intelligence (BusinessObjects) - SCN Wiki
    More info on connecting to dbs and changing them is in the developer help files:
    SAP Crystal Reports .NET SDK Developer Guide
    SAP Crystal Reports .NET API Guide
    More info on CR APIs for .NET (applies to all versions of CR and VS):
    Crystal Reports for Visual Studio 2005 Walkthro... | SCN
    You can also use ADO .NET Datasets and in this way you handle the database connections in your app. A good sample is csharp_win_adodotnet (also available in VB) - same link as above.
    More info on datasets:
    Crystal Reports Guide To ADO.NET
    Crystal Reports for Visual Studio .NET - Walkthrough - Reporting Off ADO.NET Datasets
    For more complicated operations (e.g.; changing a report from ODBC to OLE DB, changing one table, etc., you will want to use the InProc RAS SDK that is also available in CRVS. Developer help files are here:
    Report Application Server .NET SDK Developer Guide
    Report Application Server .NET API Guide
    Sample apps are here:
    NET RAS SDK Samples - Business Intelligence (BusinessObjects) - SCN Wiki
    and here:
    Crystal Reports .NET In Process RAS (Unmanaged) SDK Sample Applications
    More info on RAS SDK:
    How to Use The RAS SDK .NET With In-Process RAS Server
    Lastly, do use the search box in the top right corner. I find simple search strings such as 'crystal net parameter' return best results (KBAs, Blogs, docs, wikis, discussions and more).
    - Ludek

  • Crosstab with different users in JSP

    I need to switch the content of a crosstab in JSP depending on the user accessing it, i.e. some users see more dimension members while other users see less. Can anyone advise a good way of accomplishing this?
    Please note that I have managed to implement this fine grain security control in Analytic Workspace. I have also tested this in JDeveloper using the wizard with different database connections containing different username and password. They seem to work all right.
    I want to bring this into JSP using the orabi tag containing BISession and ThinCrosstab. I have been trying metadataManager, connection and query etc. but have made a mess. Everytime I switch the connection I lose the thincrosstab. Can anyone provide some codes to show how to accomplish this? Thanks.
    Wilson

    Thanks very much for your reply.
    I have looked at the forecast sample and did what you have suggested. The executeCommand works when I pass in an OLAP DML PERMIT command. However there is still a major problem. For example, if I have A, B, C, D selected in the crosstab as dimension members and my PERMIT command only allows the user to see A and B. I may get the following result with crosstab:
    Dim. Members Mesaure
    A $100
    B $200
    C
    D
    The user can only use the dollar amount assoicated with A and B which is right. However C and D still show even though they do not contain any dollar amount. Worse still, if I have not selected A and B originally in the crosstab, the user cannot see A nor B at all. The problem is not only do I need to determine what to put in the PERMIT command, I also need to know what to include in the "Selection" object of the crosstab so that the user will see all the members he/she is allowed to see.
    If I already know what to pass into the "Selection", the permit command seems redundant. This makes my search for a solution of fine grain security control coming to a full circle. I end up where I started from.
    I was looking for a solution which does not require me to pass in dimension members programmatically into the crosstab, and that the security control is not done on the application level, i.e. something akin to what can be achieved using VPD in relational database. I have been trying VPD in relational cube and Permit command in Analytic Workspace. They deliver what they claim to do in their respective environments. However, whatever I do in VPD seems useless in AW and whatever I do in AW do not seem to be very useful in BI Beans either. Would you please correct me if I am wrong? I would imagine someone must have this common requirement before and I wonder how they would fix it.
    I am still very confused about how Oracle implements fine grain security as the security in different layers (ie. relational cube, AW and BI Beans) do not seem to gel together. Thanks.

Maybe you are looking for

  • How can i copy a picture that has been installed with the flash player

    how can i copy a picture that has been installed using the flash player

  • DITA: Increasing Space Below Image

    Hi All, I'm authoring in DITA using FrameMaker 9 + DITA-FMx. To output PDF, I use FrameMaker. I have the following structure: fig ---- image p The paragraph underneath the figure appears too close to the image (or, more precisely, too close to the an

  • Help with resizing rectangles

    I am very new to adobe and have been struggling with a project that I need to do. I have one rectangle the size of 8.5 x 11 and I need to copy the rectangle and then reduce it to 80% of the orginal rectangle. Can anyone help me with this, I have been

  • How to digitally publish the finished magazine online?

    Does InDesign have a way to digitally publish the finished magazine to something like Flipboard? I do not like the interactive PDF because the user has to download the whole file which is huge. Digital Publishing Suite is too costly and does not do d

  • IPhone back up restore

    I found out from the variuos post's where to get the iTunes backup ...do i just copy this folder and paste it in my new laptop so I get all my back up in the new laptop and all the back up from my iPhone will be present?