Feed aggregator

LinkedIn Oracle Contractors Group

OracleAppsBlog - Thu, 2008-04-03 17:46
Categories: APPS Blogs

My presentation on using Ruby with Oracle at Euruko conference

Raimonds Simanovskis - Wed, 2008-04-02 16:00

I gave short presentation about “Using Ruby with Oracle” at European Ruby conference Euruko 2008. You can download presentation slides at their site. My collegue took a video of my presentation so probably after some time I will post it as well :)

Either because of this presentation or maybe just because more people are interested in Ruby on Oracle the number of visits to this blog is fast growing during the last days. Which makes me more motivated to do more investigations in Ruby and Oracle area.

One area of further research could be standardization of different ActiveRecord Oracle adapter patches – otherwise now I have different patches in each project and this becomes quite hard to manage.

Categories: Development

Some updates - Ruby/DTrace, FFMPEG/Medialib

Siva Doe - Mon, 2008-03-31 20:20

It has been quite some time since I last blogged. Been busy with a few interesting projects whose updates had to be blogged about.

First, Ruby. You are all aware that Ruby has been available in Solaris Nevada build 76 onwards. With build 86 onwards, DTrace probes for Ruby is also available. These probes are the work of Joyent.com and now can be used to debug your favorite Ruby/Rails applications. There are examples on Joyent.com site to show you how to use these probes.

Next FFMPEG. We heard from a customer who used FFMPEG to convert a YUV file to MPEG file. They had compiled FFMPEG (on Sparc) using Sun's mediaLib (MLIB). The resultant MPEG file, when played,  had this 'green tint'. More over the conversion was slower, compared to that of an FFMPEG without MLIB. This is indeed strange as one was supposed to get better performance with our mediaLib. With all the help from our MLIB developers, the defect was then found to be in FFMPEG source code, which makes the MLIB calls. A couple of lines were changed and we were back in business. Before, a 30 second YUV file took about 20 seconds to convert into MPEG. It produced a green tint also. Now, it takes just about 10 seconds for the conversion and of course, no green tint. The MLIB patch is now available with Spec Files Extra (SFE) repository.

Semafore? Cannot mount in Exclusive.

Claudia Zeiler - Sat, 2008-03-29 11:26
As Chen says, the challenges always come after 5PM.

I had a Daylight Savings Patch to apply to 2 databases. I think that someone else, was blogging about installing this just recently. The patch is trivial - bring down the database, replace 2 files deep within ORACLE_HOME and bring the database back up. The first install went went off uneventfully, so I figured that I had an idea what I was doing. Then I moved to the second DB and the fun started. The DB wouldn't restart. How can I NOT startup a database? What can be simpler than a STARTUP?

ORA-01102:  cannot mount database in EXCLUSIVE mode

Now that I have a solution it all seems simple.

The problem according to Metalink...

- there is still an "sgadef.dbf" file in the "ORACLE_HOME/dbs"
directory
nope

- the processes for Oracle (pmon, smon, lgwr and dbwr) still exist
no, they are gone..

- shared memory segments and semaphores still exist even though the
database has been shutdown

I got to learn about the unix command ipcs -b, but
nothing owned by oracle,

T ID KEY MODE OWNER GROUP SEGSZ
Shared Memory:
m 1048576 0x7800000a --rw-rw-rw- root system 16777216
m 1048577 0x0d001213 --rw-rw---- root system 1440
m 3 0xffffffff --rw-rw---- root system 4096
T ID KEY MODE OWNER GROUP NSEMS
Semaphores:
s 3145728 0x010000af --ra------- root system 1
s 1 0x6200105e --ra-r--r-- root system 1

- there is a "ORACLE_HOME/dbs/lk" file

and indeed
sculkget: failed to lock /home/oracle/orabase/product/10.2.0/dbs/lkSID exclusive
sculkget: lock held by PID: 299506

though I have yet to figure out what a sculkget is I did find a file that was
skulking around and didn't belong there.


With trepidation I killed the process holding the lock file

kill -9 299506

and removed the lock file


rm /home/oracle/orabase/product/10.2.0/dbs/lkSID

and magic! no more lock, Database starts up normally!

Locks in their place and all is well with the world.

Meanwhile, if anyone else knows what category of animal a

sculkget: message is - I would love to know. There is a singular lack of comment
about it on the web, except as part of this specific problem.

Things I believe in

Rob Baillie - Sat, 2008-03-29 07:35
  • It's easier to re-build a system from its tests than to re-build the tests from their system.

  • You can measure code complexity, adherence to standards and test coverage; you can't measure quality of design.

  • Formal and flexible are not mutually exclusive.

  • The tests should pass, first time, every time (unless you're changing them or the code).

  • Flexing your Right BICEP is a sure-fire way to quality tests.

  • Test code is production code and it deserves the same level of care.

  • Prototypes should always be thrown away.

  • Documentation is good, self documenting code is better, code that doesn't need documentation is best.

  • If you're getting bogged down in the process then the process is wrong.

  • Agility without structure is just hacking.

  • Pairing allows good practices to spread.

  • Pairing allows bad practices to spread.

  • Cycling the pairs every day is hard work.

  • Team leaders should be inside the team, not outside it.

  • Project Managers are there to facilitate the practice of developing software, not to control it.

  • Your customers are not idiots; they always know their business far better than you ever will.

  • A long list of referrals for a piece of software does not increase the chances of it being right for you, and shouldn't be considered when evaluating it.

  • You can't solve a problem until you know what the problem is. You can't answer a question until the question's been asked.

  • Software development is not complex by accident, it's complex by essence.

  • Always is never right, and never is always wrong.

  • Interesting is not the same as useful.

  • Clever is not the same as right.

  • The simplest thing that will work is not always the same as the easiest thing that will work.

  • It's easier to make readable code correct than it is to make clever code readable.

  • If you can't read your tests, then you can't read your documentation.

  • There's no better specification document than the customer's voice.

  • You can't make your brain bigger, so make your code simpler.

  • Sometimes multiple exit points are OK. The same is not true of multiple entry points.

  • Collective responsibility means that everyone involved is individually responsible for everything.

  • Sometimes it's complex because it needs to be; but you should never be afraid to check.

  • If every time you step forward you get shot down you're fighting for the wrong army.

  • If you're always learning you're never bored.

  • There are no such things as "Best Practices". Every practice can be improved upon.

  • Nothing is exempt from testing. Not even database upgrades.

  • It's not enough to collect data, you need to analyse, understand and act upon that data once you have it.

  • A long code freeze means a broken process.

  • A test hasn't passed until it has failed.

  • If you give someone a job, you can't guarantee they'll do it well; If you give someone two jobs you can guarantee they'll do both badly

  • Every meeting should start with a statement on its purpose and context, even if everyone in the meeting already knows.

Multiple Interactive Reports on One Page

Duncan Mein - Fri, 2008-03-28 07:56
If you have been using Interactive Reports since Apex 3.1 landed, you are probably as impressed with them as I am.

The other day I tried to create more than 1 IR on a page and the Wizard prevented me saying "Only 1 Interactive Report can be declared on this page"

I then tired to copy a region that contained an Interactive Report and sure enough I suddenly had 2 IR's on the one page!

Whilst this is probably not supported or suggested, my requirement meant that only 1 IR was to be shown at once (i.e. I had a conditional diaply on both IR)

So if you need to create multiple IR's on the one page but will only display one at run time, copy of a region appears to work!

Service enable integration business services using Oracle Application adapter

Peeyush Tugnawat - Fri, 2008-03-28 07:22

 

To make the business service within E-Business Suite participate in your service oriented integration architecture as a web services. The integration approach used depends upon the requirements and the integration mechanism that is best suited to satisfy the requirements. To use one of the integration function in a SOA based solution (integration or composite process) is relatively simple with the help of Oracle Applications adapter by exposing them as web services. This enhances re-usability, extensibility, and faster design to deploy time frame.

Using EBS adapter has tremendous advantages. It exposes existing EBS Integration Interfaces as Web Services. The adapter inherently uses and leverages open standards, including J2CA, XML, WSIF, WSIL, and WSDL. Most importantly it dramatically reduces the time to design and develop a SOA based integration that interfaces with web service based integration interface for EBS.
Bookmark and Share

Exposed Password in Data Pump

Claudia Zeiler - Thu, 2008-03-27 21:42
I was just looking at a production Data Pump today with a text exposed 'system/password'. I was startled.

Then I remembered that in the last shop Data Pumps involved
  1. Temporarly change the system user password
  2. Run the Data Pump with the temporary password in plain text
  3. Changing the password back.
Now that I think of it, the one involving all that changing is only slightly better than what I saw today.

Does anyone have a suggestion for running Data Pump with a modicum of security? I had no say in the last shop. Here I may not prevail, but at least I'm in a position to make a suggestion if I have one.

Does the solution involve something with a password protected parameter file? Or? Thanks in advance for any suggestions offered.

The beginning of Oracle Denmark

Moans Nogood - Thu, 2008-03-27 20:03
I started working for a bank called Sparekassen SDS 1st of January 1987. They had just bought Oracle, and that's how I ended up in the database world.

In 1990 I joined Oracle Denmark's support organisation under the magnificient leadership of Jannik Ohl.

He was fired by Peter Perregaard in 1998 or so, because they didn't like each other. Until then things were fantastic. After that things were not.

Jannik was replaced by Allan Marker, who was not nearly his equal in any which way you choose to look. Especially when it comes to the art of thinking instead of wondering how you can survive in the corporate culture for the next few months.

But that's how things are. Peter made a mistake, and he regrets it to this day, I'm sure (as in: sure).

So Jannik went into geo-stationary orbit. In other words: He joined the Oracle EMEA organisation (Europe, Middle East, Africa).

When you "go into orbit", ie. join EMEA or some global stuff, you're never heard of again. In space, nobody can hear you scream, as they say.

Until it's time to lay off some bodies. So Jannik, uhm, resigned just now.

Today I served a bit of Miracle beer for my friend Jannik in Oracle Denmark's canteen.

To honour the best boss I ever had.

And to honour one of the most creative minds I've met. Really.

He was the one that came up with the idea of doing serious database stuff in Lalandia (which is why Miracle now do two conferences there a year).

He was the one that told me: "With all this internet stuff and not-being-able-to-call-a-person thing going on in Support, people will pay for extra services that allow them to talk to people and get their problems resolved without too much bullshit" - and we now have 130 Miracle Support customers.

He came up with the idea of having a credit-card thing for Good Oracle Customers (GOC).

Miracle Support shouldn't be allowed to live. It's feeding off the failings of the big vendor support organisations, because they're failing. That's wrong. But it's a fact.

I just hope Jannik doesn't do the boring thing of leaning back and waiting for the early-age pension to arrive. He's not old, he's not spent. We need him.

As for the headline (The beginning of Oracle Denmark) I'll just say this piece of information from an unknown source:

The beginning of Oracle Denmark: Jørgen Balle, Ole Bisgaard, Hanne Cederberg & Jannik started at the same time. Then came Pete Francis, og later Klaus Holse Andersen.

We need more details, folks :-))

Mogens

Columns to String: Comma Separated Values (CSV) (Updated SQL Snippets Tutorial)

Joe Fuda - Thu, 2008-03-27 19:00
The "Columns to String: Comma Separated Values (CSV)" tutorial now includes three new sections, "How to Create a CSV File", "How to Escape Double Quotes, CR, and LF", and "How to Include a Header Line".
...

E-Business Suite Integration: Using Irep to discover available business services

Peeyush Tugnawat - Thu, 2008-03-27 10:40

Bookmark and Share

To plan your soa based integrations, the architects and business users need to know what services are available within ebs that can be leveraged to be a part of your information integration, business process integration or coming up with composite application spanning across enterprise silos.

The first step when planning and designing your integrations should be to use Oracle Irep. This will give you the details of the business services available within EBS and also the details of service end-points. IRep lets users easily discover the appropriate business service interface for integration with any system, application, or business partner.

It is a pre-built central catalog of information about the numerous public integration interfaces delivered with Oracle applications, known as business interfaces.

The key advantages of using Irep are

  • Helps in better integration planning by providing information to make informed decisions

  • Acts as single source of truth for the available business servicesEnhanced re-use of existing components


  • Assurance that you are using supported public interfaces

    Using Irep

    Go to http://irep.oracle.com/

    If you are working on EBS R12: From the Navigator menu, select the Integration Repository responsibility, then click the Integration Repository link that appears.

    Browse IRep : You can browse Irep using the categories of product or by the integration standards you wish to leverage.

     irep-browse

    Search IRep: IRep also lets you search using various search parameters. You can search by interface name, internal name, product family, interface type (concurrent program, web service, XML gateway map etc), product, and business entities.

     irep-search


    In Release 12, the Oracle Integration Repository will ship as part of the E-Business Suite. As your instance is patched, the repository will automatically be updated with content appropriate for the precise revisions of interfaces in your environment. But until Release 12 is available, you can explore an on-line version of the Integration Repository for the 11i10 version of E-Business applications.
    Bookmark and Share

  • New Stuff (3) Start Stop Table item is for real!

    Carl Backstrom - Wed, 2008-03-26 13:47
    This is a small feature but fixes something that has always bugged me.

    In Application Express there is the Start Stop Table item. Which is very useful for form layout especially when building forms with large textarea's.

    The problem was there was no way easy way access the Start Stop Table itself with javascript or CSS since it didn't have any discerning attributes. Well that has all changed in APEX 3.1 as the Start Stop Table gets some of the same attributes as a regular item does.

    Start Stop Table's will get the id attribute set to the Item Name just like regular items , Start Stop Tables will also insert attributes from HTML Form Element Attributes property , agian just like a regular APEX item.

    You can see a very simple usage example here http://apex.oracle.com/pls/otn/f?p=11933:137.

    I can definitely see this being used for some more dynamic and just plain prettier forms and layouts, there are a few spots in the APEX builder slated to get some treatment from this.

    As with my last few posts , and my next couple, this isn't the most WizBang feature but the impact if properly used can be huge.

    RMAN, RAC, ASM, FRA and Archive Logs

    Eric S. Emrick - Wed, 2008-03-26 09:37
    The topic, as the title suggests, concerns RMAN, RAC, ASM and archive logs. This post is rather different than my prior posts, in that, I want to open up a dialogue concerning the subject matter. So, I’ll start the thread by posing a question: Are any of you that run RAC in your production environments backing up your archive logs to an FRA that resides in an ASM disk group (and of course backing up the archive logs to tape from the FRA)? Managing your free space within your FRA is paramount as are judicious backups of the FRA (actually these really go hand in hand). However, I am very interested in your experience. Have you come across and “gotchas”, bad experiences, positive experiences, more robust alternatives, extended solutions, etc.? Being somewhat of a backup and recovery junky, I am extremely interested in your thoughts. Let the dialogue commence!

    Update: 03/26/2008

    A colleague of mine has been doing some testing using RMAN, RAC, ASM, FRA for archive log management. Also, he has tested the integration of DataGuard into this configuration. To be more precise, he has tested using an FRA residing in an ASM disk group as the only local archive log destination. In addition to the local destination, each archive log is sent to the standby destination. Based on his testing this approach is rather robust. The archive logs are backed up via the "BACKUP RECOVERY AREA" command with a regular periodicity. This enables the FRA's internal algorithm to remove archive logs that have been backed up, once the space reaches 80% full. No manual intervention is required to remove the archive logs. Moreover, the archive logs in this configuration will only be automatically deleted from the FRA if both of the following are true: 1) the archive log has been backed up satisfying the retention policy and 2) the archive log has been sent to the standby. When there is a gap issue with the standby database, the archive logs are read from the FRA and sent to the standby. It works real nice!

    E-Business Suite Integration Components

    Peeyush Tugnawat - Wed, 2008-03-26 05:14

    Bookmark and Share


    It is important to understand different integration components available within EBS to make informed decision about using one or more for your SOA integration project. Selecting one or more of them depends upon the requirements and the interaction pattern determined to be best fit for the service oriented architecture based integration.
    Following are the integration mechanisms available within e-Business suite.

    Oracle XML Gateway: E-Business Suite utilizes the Oracle Workflow Business Event System to support event-based XML message creation and consumption. It can consume events raised by the Oracle E-Business Suite and can subscribes to inbound events for processing. It can be leveraged for Business-to-Business (B2B) and Application-to-Application (A2A) integration scenarios. Majority of messages delivered with the Oracle E-Business Suite are mapped using the Open Application Group (OAG) standard.

    Business Events: The Oracle Workflow Business Event System is an application service that leverages the Oracle Advanced Queuing (AQ) infrastructure to communicate business events between systems. There are more than 1000 built in events with in EBS that can be leveraged for event-based integration of business processes.


    Concurrent Programs: A concurrent program is an instance of an execution file. Concurrent programs use a concurrent program executable to locate the correct execution file. Several concurrent programs may use the same execution file to perform their specific tasks, each having different parameter defaults.

    Interface Tables: Interface tables are intermediate tables into which the data is inserted first. Once the data gets inserted into the interface tables, the data is validated, and then transferred to the base tables. Base tables are real application tables that reside in the application database. The data that resides in the interface tables is transferred to the base tables using concurrent programs. Interface views provide a way to retrieve data from Oracle Applications. By using views, you can get synchronous data access to Oracle Applications.

    PL/SQL APIs: These are stored procedures that enable you to insert and update data in Oracle Applications.
    Oracle e-Commerce (EDI) Gateway: Oracle e-Commerce Gateway provides a common, standards-based approach for Electronic Data Interchange (EDI) integration between Oracle Applications and third party applications. It is the EDI integration enabler for Oracle Applications.


    Bookmark and Share

    Objects Remain In Their Original Tablespaces After Run Oatm

    Madan Mohan - Wed, 2008-03-26 04:51
    Migrated to the new tablespaces using OATM but there are objects left behind in original tablespaces. There were no errors reported during tablespace migration.

    SQL> select tablespace_name, count(1) from dba_Segments group by tablespace_name;
    TABLESPACE_NAME COUNT(1)
    ------------------------------ ----------
    APPLSYSD 1
    APPLSYSX 1
    COMD 26
    COMX 47
    CTXD 77
    EDWREP 88
    EDWREPX 31
    PVD 1
    PVX 1

    SQL> select segment_name, segment_type from dba_segments
    2* where tablespace_name='APPLSYSD'
    SEGMENT_NA SEGMENT_TYPE
    ---------- ------------------
    20.42 SPACE HEADER

    Cause
    *******

    One of the circumstances under which a 'SPACE HEADER' segment gets created is if a 'dictionary managed' tablespace is migrated to 'locally managed' (see dbms_space_admin.tablespace_migrate_to_local()).

    The space header segment contains the extent bitmap and is allocated during the migration of the tablespace. Since there is no reserved space after the file header (as with locally managed tablespaces) the bitmap segment will be allocated somewhere in the "data" area of the datafile. During its creation the segment will pick up some of the storage attributes (e.g. MAXEXTENTS) from the default storage clause of the tablespace. Once the segment has been created it can neither be dropped nor changed.

    Fix
    ****

    You can ignore these "left-over" objects. Please go ahead and drop old tablespaces

    How to Purge the RECYCLEBIN in Oracle 10g

    Madan Mohan - Tue, 2008-03-25 21:49
    THE RECYCLE BIN
    *****************


    The Recycle Bin is a virtual container where all dropped objects reside. Underneath the covers, the objects are occupying the same space as when they were created. If table EMP was created in the USERS tablespace, the dropped table EMP remains in the USERS tablespace. Dropped tables and any associated objects such as indexes, constraints, nested tables, and other dependant objects are not moved, they are simply renamed with a prefix of BIN$$. You can continue to access the data in a
    dropped table or even use Flashback Query against it. Each user has the same rights and privileges on Recycle Bin objects before it was dropped. You can view your dropped tables by querying the new RECYCLEBIN view. Objects in the Recycle Bin will remain in the database until the owner of the dropped objects decides to permanently remove them using the new PURGE command. The Recycle Bin objects are counted against a user's quota. But Flashback Drop is a non-intrusive feature. Objects in the Recycle Bin will be automatically purged by the space reclamation process if

    o A user creates a new table or adds data that causes their quota to be exceeded.
    o The tablespace needs to extend its file size to accommodate create/insert operations.


    There is no issues with DROPping the table, behaviour wise. It is the same as in 8i / 9i. The space is not released immediately and is accounted for within the same tablespace / schema after the drop.

    When we drop a tablespace or a user there is NO recycling of the objects.

    o Recyclebin does not work for SYS objects

    Checking the RECYCLEBIN Objects
    *******************************


    SELECT object_name,original_name,operation,type,dropscn,droptime FROM user_recyclebin;

    SELECT owner,original_name,operation,type FROM dba_recyclebin;


    Purging the Recyclebin
    **************************

    Subject: 10g Recyclebin Features And How To Disable it( _recyclebin )
    Doc ID: Note:265253.1 Type: BULLETIN

    Applies to: Oracle Server - Enterprise Edition - Version: 10.1.0.2 to 10.2.0.0
    Information in this document applies to any platform.
    Purpose:- This bulletin illustrates the new recyclebin functionality provided with the 10g database

    Scope and ApplicationCan be used by Oracle Support Analyst and DBA

    10g Recyclebin Features And How To Disable it( _recyclebin )ABOUT 10g RECYCLEBIN
    In order to have FLASHBACK DROP functionality a recyclebin is provided to every oracle user.

    SQL> desc recyclebin
    Name Null? Type
    ----------------------------------------- -------- ------------
    OBJECT_NAME NOT NULL VARCHAR2(30)
    ORIGINAL_NAME VARCHAR2(32)
    OPERATION VARCHAR2(9)
    TYPE VARCHAR2(25)
    TS_NAME VARCHAR2(30)
    CREATETIME VARCHAR2(19)
    DROPTIME VARCHAR2(19)
    DROPSCN NUMBER
    PARTITION_NAME VARCHAR2(32)
    CAN_UNDROP VARCHAR2(3)
    CAN_PURGE VARCHAR2(3)
    RELATED NOT NULL NUMBER
    BASE_OBJECT NOT NULL NUMBER
    PURGE_OBJECT NOT NULL NUMBER
    SPACE NUMBER

    The recyclebin is a public synonym and it is based on the view user_recyclebin which in turn is based on sys.recyclebin$ table.

    Related recyclebin objects:

    SQL> SELECT SUBSTR(object_name,1,50),object_type,owner
    FROM dba_objects
    WHERE object_name LIKE '%RECYCLEBIN%';
    /
    SUBSTR(OBJECT_NAME,1,50) OBJECT_TYPE OWNER
    --------------------------- ------------------- ----------
    RECYCLEBIN$ TABLE SYS
    RECYCLEBIN$_OBJ INDEX SYS
    RECYCLEBIN$_TS INDEX SYS
    RECYCLEBIN$_OWNER INDEX SYS
    USER_RECYCLEBIN VIEW SYS
    USER_RECYCLEBIN SYNONYM PUBLIC
    RECYCLEBIN SYNONYM PUBLIC
    DBA_RECYCLEBIN VIEW SYS
    DBA_RECYCLEBIN SYNONYM PUBLIC

    9 rows selected.

    EXAMPLE
    SQL> SELECT * FROM v$version;
    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bi
    PL/SQL Release 10.1.0.2.0 - Production
    CORE 10.1.0.2.0 Production
    TNS for Solaris: Version 10.1.0.2.0 - Production
    NLSRTL Version 10.1.0.2.0 - Production

    SQL> sho user
    USER is "BH"

    SQL> SELECT object_name,original_name,operation,type,dropscn,droptime
    2 FROM user_recyclebin
    3 /
    no rows selected

    SQL> CREATE TABLE t1(a NUMBER);
    Table created.

    SQL> DROP TABLE t1;
    Table dropped.

    SQL> SELECT object_name,original_name,operation,type,dropscn,droptime
    2 FROM user_recyclebin
    3 /
    OBJECT_NAME ORIGINAL_NAME OPERATION TYPE DROPSCN DROPTIME
    ------------------------------ -------------------------------- --------- ------------------------- ---------- -------------------
    BIN$1Unhj5+DSHDgNAgAIKds8A==$0 T1 DROP TABLE 8.1832E+12 2004-03-10:11:03:49

    SQL> sho user
    USER is "SYS"

    SQL> SELECT owner,original_name,operation,type
    2 FROM dba_recyclebin
    3 /

    OWNER ORIGINAL_NAME OPERATION TYPE
    ------------------------------ -------------------------------- --------- ------
    BH T1 DROP TABLE

    We can also create a new table with the same name at this point.

    @NOTE:
    @Pre-10.1.0.3, the recycled objects can also be viewed in user_tables and dba_tables
    @Fix for Bug 3255906 changed this behaviour to maintain compatibility with 9i



    PURGING
    ********


    In order to completely remove the table from the DB and to release the space the new PURGE command is used.

    From BH user:
    SQL> PURGE TABLE t1;
    Table purged.

    OR

    SQL> PURGE TABLE "BIN$1UtrT/b1ScbgNAgAIKds8A==$0";
    Table purged.

    From SYSDBA user:
    SQL> SELECT owner,original_name,operation,type
    2 FROM dba_recyclebin
    3 /
    no rows selected

    From BH user:
    SQL> SHOW recyclebin
    SQL>

    There are various ways to PURGE objects:

    PURGE TABLE t1;
    PURGE INDEX ind1;
    PURGE recyclebin; (Purge all objects in Recyclebin)
    PURGE dba_recyclebin; (Purge all objects / only SYSDBA can)
    PURGE TABLESPACE users; (Purge all objects of the tablespace)
    PURGE TABLESPACE users USER bh; (Purge all objects of the tablspace belonging to BH)

    For an object, the owner or a user with SYSDBA privilege or a user with DROP ANY... system privilege for the type of object to be purged can PURGE it.


    DISABLING RECYCLEBIN
    **********************


    We can DROP and PURGE a table with a single command

    From BH user:
    SQL> DROP TABLE t1 PURGE;
    Table dropped.

    SQL> SELECT *
    2 FROM recyclebin
    3 /
    no rows selected

    There is no need to PURGE.

    On 10gR1, in case we want to disable the behavior of recycling, there is an underscore parameter
    "_recyclebin" which defaults to TRUE. We can disable recyclebin by setting it to FALSE.

    From SYSDBA user:
    SQL> SELECT a.ksppinm, b.ksppstvl, b.ksppstdf
    FROM x$ksppi a, x$ksppcv b
    WHERE a.indx = b.indx
    AND a.ksppinm like '%recycle%'
    ORDER BY a.ksppinm
    /
    Parameter Value Default?
    ---------------------------- ---------------------------------------- --------
    _recyclebin TRUE TRUE

    From BH user:
    SQL> CREATE TABLE t1(a NUMBER);
    Table created.

    SQL> DROP TABLE t1;
    Table dropped.

    SQL> SELECT original_name
    FROM user_recyclebin;
    ORIGINAL_NAME
    --------------
    T1

    From SYSDBA user:
    SQL> ALTER SYSTEM SET "_recyclebin"=FALSE SCOPE = BOTH;
    System altered.

    SQL> SELECT a.ksppinm, b.ksppstvl, b.ksppstdf
    FROM x$ksppi a, x$ksppcv b
    WHERE a.indx = b.indx
    AND a.ksppinm like '%recycle%'
    ORDER BY a.ksppinm
    /
    Parameter Value Default?
    ---------------------------- ---------------------------------------- --------
    _recyclebin FALSE TRUE

    From BH user:
    SQL> CREATE TABLE t1(a NUMBER);
    Table created.

    SQL> DROP TABLE t1;
    Table dropped.

    SQL> SELECT original_name
    FROM user_recyclebin;
    no rows selected

    There is no need to PURGE.

    As with anyother underscore parameter, setting this parameter is not recommended unless
    advised by oracle support services.

    On 10gR2 recyclebin is a initialization parameter and bydefault its ON.
    We can disable recyclebin by using the following commands:

    SQL> ALTER SESSION SET recyclebin = OFF;
    SQL> ALTER SYSTEM SET recyclebin = OFF;

    The dropped objects, when recyclebin was ON will remain in the recyclebin even if we set the recyclebin parameter to OFF.

    A reading list for our developers

    Rob Baillie - Tue, 2008-03-25 12:54
    An idea I'm thinking of trying to get implemented at our place is a required reading list for all our developers. A collection of books that will improve the way that developers think about their code, and they ways in which they solve problems. The company would buy the books as gifts to the employees, maybe one or two every three months.

    Some questions though:

    • Is it fair for a company to expect its employees to read educational material out of hours?

    Conversely:
    • Is it fair for an employee to expect to be moved forward in their career without a little bit of personal development outside the office?


    If anyone has any books out there that they'd recommend - please let me know. Otherwise, here's my initial ideas - the first three would be in your welcome pack:

    Update:Gary Myers came up with a good point, being that any book should really be readable on public transport. That probably rules out Code Complete (although I read it on the tube, I can see that it's a little tricky), but Design Patterns and Refactoring to Patterns are small enough I reckon.

    Unfortunately, Code Complete is a really good book that gives a lot of great, simple, valuable advice. Does anyone out there have any other suggestions for similar books?

    Update 2:Andy Beacock reminded me of Fowler's Refactoring, which really should also make the list.

    Update 3:The development team have bought into the idea and the boss has been asked. In fact, I'm pretty pleased with the enthusiasm shown by the team for the idea. I can't see the boss turning it down. Interestingly though, someone suggested that Code Complete go onto the list...

    In this order:


    Ruled out because of their size:

    Forgot your Password?

    Aviad Elbaz - Tue, 2008-03-25 02:58

    Almost every website that uses username & password have a "forget password" functionality to retrieve users passwords, and so also the Oracle E-Business Suite.

    This is a very useful functionality since it reduces the number of SR's opened to the helpdesk team regarding login problems and moreover satisfying the customers which can get a new password in a very short time with no helpdesk intervention.

    The implementation of this functionality is very simple and easy.
    To enable it you should:

    1. set the profile "Local Login Mask" to the current value plus 8 (e.g. current value is 32 -> set value to 40)
    2. Bounce Apache

    The "Local Login Mask" profile used to customize some attributes of the login page (AppsLocalLogin.jsp), one of them is the "forgot your password" link.
    You should set the value of this profile to the sum of all attribute's mask values you are interested in.

    The full attributes list is:

    Attribute

    Mask Value Binary value Hint for Username 01 00000001 Hint for Password 02 00000010 Cancel button 04 00000100 Forgot Password link 08 00001000 Registration link 16 00010000 Language Images 32 00100000 Corporate Policy Message 64 01000000

     

    Setting the Forgot Password link mask value will add the following TIP to the login page:

    The reset password process:

    - Click on "Forgot your password?" link will ask for a username to which reset the password.

    - After typing the username and click OK, a new workflow process is started (Item type UMXUPWD) and you'll get this confirmation message:

    - Shortly you'll get this email - "Password reset required approval" (expired after 4 hours).

    - Click on "Approve" to confirm you are interested in a new password.

    - Shortly you'll get an email with a temporary password which you have to change on first login.

    Very nice and easy to implement functionality, which could be very beneficial.

    Related Note 399766.1 - Reset Password Functionality FAQ

    You are welcome to leave a comment

    Aviad

    Categories: APPS Blogs

    Which Temporary Tablespace is used for sorts?

    Pawel Barut - Mon, 2008-03-24 12:34
    Written by Paweł Barut
    This time I will write about "Which Temporary Tablespace is used for sorts" ?. I was not wondering about this much, as usually there is only one Temporary tablespace in DB. Lets assume situation, as show on picture:
    • User A
      • Assigned to Temporary Tablespace TEMP_A
      • has table TA
    • User B
      • Assigned to Temporary Tablespace TEMP_B
      • has table TB
      • owns procedure PB (definer rights)
    • Both users has access rights for all above object (Select on Tables and Execute on Procedure)
    So let's discuss some situations:
    1. User A runs query on tables TA or TB (or any other) - when disk sort is needed then tablespace TEMP_A is used
    2. User A executes procedure PB. Procedure PB opens cursor on table TB (or TA or any other). If disk sort is required then tablespace TEMP_B is used.
    For me it was bit surprising. Especially that I did not find anywhere in Oracle documentation description for this behaviour:
    TEMPORARY TABLESPACE Clause
    Specify the tablespace or tablespace group for the user's temporary segments.
    I was expecting that all sort segments will be created in tablespace that is assigned to that user. I was hopping to solve one of my issues that way. But it occurred that, sort segment is created by user B, because procedure PB uses user B rights. It is reasonable, as this is consistent with granting access to objects, and temporary objects are treated the same way as permanent ones. On the other hand select is run for user A - shouldn't TEMP_A be used in all cases? What is your opinion on that?

    Cheers Paweł

    --
    Related Articles on Paweł Barut blog:
    Categories: Development

    New Stuff (1)

    Carl Backstrom - Thu, 2008-03-20 22:15
    So I'm going through my example application updating different examples new APEX 3.1 features, as I work through them I'll be posting examples of changes.

    So the first one are the changes to the basic example for illustrating Ajax using an OnDemand Process.

    Javascript


    function f_TestOnDemand(){
    var get = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=SimpleExample',0);
    get.addParam('x01',$v('P11_TEST'));
    gReturn = get.get();
    get = null;
    gReturn = (!gReturn)?'null':gReturn;
    $s('P11_TEXT_DROP',gReturn);
    }



    One of the biggest changes , and one of my favorites , is that in older versions of APEX to pass a value to on OnDemand Process in most cases you would need a application level item that was only used for that purpose , this is no longer needed.

    This new functionality is illustrated on line 4 where the global variables x01 gets the value of the textarea to post to the process. There are 10 global variables x01 - x10 , and a few others, so you can pass around quite a few values at once, more in later post.

    There are a couple calls to $v('ITEM_NAME') which given an item name returns you the value of the given item.

    And $s('ITEM_NAME','Some Value') which given an item name and a value set the value of that item.
    * These both work with most the basic item types and will be extended support all item types.

    OnDemand Process (SimpleExample)

    declare
    l_value varchar2(4000);
    begin
    l_value := wwv_flow.g_x01;
    htp.p('');
    htp.p('This was just put into one of the global temporary values.');
    htp.p(''||l_value||'');
    htp.p('');
    end;


    On line 4 of the OnDemand Process is take getting the value of the global variable. The global variables are only available for that Ajax call and do not get saved into session state.

    Simple changes to be sure but they allow for much more generic javascript and easier integration across different application's

    Pages

    Subscribe to Oracle FAQ aggregator