Difference between Long Transaction (Oracle WorkSpace) and Short Transaction (Normal )
Long Transactions
-----------------------
Complete over days or weeks
Likelihood of conflict is low - Optimistic concurrency permits conflicts
Selective versioning tables
Update creates a new row version
Each update is part of a short transaction
Collections of updates isolated in workspaces until merged into production
Multi user update
Short Transactions
----------------------
Complete in seconds or less
Likelihood of conflict is high - Pesimistic concurrency permits conflicts
Data is in a single state
Updates accessible upon commit
Single user updates
-----------------------------------------------------------
WorkSpace Manager Operations
----------------------------------------
Workspace : Create , Refresh,merge,rollback,remove,goto,compress,alter
Savepoints : Create , Alter,Goto,Compare,Rollback and Delete
History : Gotodate
Privileges : Access,Create,Delete,Rollback,Merge
Locks : Exclusive and Shared (Exclusive lock prevents changes by any other user Shared locks allow other users in the workspace to change row )
Differences : Compares savepoints and workspaces
Detect /Resolve Conflicts : choose version to merge.
Since the versioning process removes the physical unique index from the base table, multiple session would be allowed to enter the same value into a column that has a unique constraint defined on it. Since the changes by the other session might be part of an uncommitted transaction, the instead of triggers that are defined on the view are unable to enforce the constraint in this particular case. As a result,OWM use the _LCK VIEW to prevent this scenario by maintaining a unique constraint on the underlying table which the dmls are applied to.
Disabling Versioning for a table
------------------------------------
Disable versioning when changes to the version-enabled table are completed
Improves performance
Workspace hierarchy and savepoints remain
The latest version of each row in LIVE workspace remains.
Freeze WorkSpace
---------------------
Freezing a workspace specifies the kind of user access allowed to the workspace .
NO_ACCESS is default
READ_ONLY allows all workspace users to read.
1WRITER: Sessions are allowed in the workspace, but only one user
1WRITER_SESSION: Sessions are allowed in the workspace, but only the database session (as opposed to the database user) that called the FreezeWorkspace procedure is allowed to perform write operations
WM_ONLY: Only Workspace Manager operations are permitted.
--------------------------------------------------------------
Feb 2, 2010
Jan 5, 2010
Detailed Calender Query
SELECT TRUNC( sd + rn ) time_id,
TO_CHAR( sd + rn, 'fmDay' ) day_name,
TO_CHAR( sd + rn, 'D' ) day_number_in_week,
TO_CHAR( sd + rn, 'DD' ) day_number_in_month,
TO_CHAR( sd + rn, 'DDD' ) day_number_in_year,
TO_CHAR( sd + rn, 'W' ) calendar_week_number,
( CASE WHEN TO_CHAR( sd + rn, 'D' ) IN ( 1, 2, 3, 4, 5, 6 ) THEN
NEXT_DAY( sd + rn, 'SATURDAY' ) ELSE
( sd + rn ) END ) week_ending_date,
TO_CHAR( sd + rn, 'MM' ) calendar_month_number,
TO_CHAR( LAST_DAY( sd + rn ), 'DD' ) days_in_cal_month,
LAST_DAY( sd + rn ) end_of_cal_month,
TO_CHAR( sd + rn, 'FMMonth' ) calendar_month_name,
( ( CASE WHEN TO_CHAR( sd + rn, 'Q' ) = 1 THEN
TO_DATE( '03/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 2 THEN
TO_DATE( '06/30/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 3 THEN
TO_DATE( '09/30/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 4 THEN
TO_DATE( '12/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
END ) - TRUNC( sd + rn, 'Q' ) + 1 ) days_in_cal_quarter,
TRUNC( sd + rn, 'Q' ) beg_of_cal_quarter,
( CASE WHEN TO_CHAR( sd + rn, 'Q' ) = 1 THEN
TO_DATE( '03/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 2 THEN
TO_DATE( '06/30/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 3 THEN
TO_DATE( '09/30/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 4 THEN
TO_DATE( '12/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
END ) end_of_cal_quarter,
TO_CHAR( sd + rn, 'Q' ) calendar_quarter_number,
TO_CHAR( sd + rn, 'YYYY' ) calendar_year,
( TO_DATE( '12/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
- TRUNC( sd + rn, 'YEAR' ) ) days_in_cal_year,
TRUNC( sd + rn, 'YEAR' ) beg_of_cal_year,
TO_DATE( '12/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' ) end_of_cal_year
FROM ( SELECT TO_DATE( '12/31/2002', 'MM/DD/YYYY' ) sd,
rownum rn FROM dual CONNECT BY level <= 6575 )
/
TO_CHAR( sd + rn, 'fmDay' ) day_name,
TO_CHAR( sd + rn, 'D' ) day_number_in_week,
TO_CHAR( sd + rn, 'DD' ) day_number_in_month,
TO_CHAR( sd + rn, 'DDD' ) day_number_in_year,
TO_CHAR( sd + rn, 'W' ) calendar_week_number,
( CASE WHEN TO_CHAR( sd + rn, 'D' ) IN ( 1, 2, 3, 4, 5, 6 ) THEN
NEXT_DAY( sd + rn, 'SATURDAY' ) ELSE
( sd + rn ) END ) week_ending_date,
TO_CHAR( sd + rn, 'MM' ) calendar_month_number,
TO_CHAR( LAST_DAY( sd + rn ), 'DD' ) days_in_cal_month,
LAST_DAY( sd + rn ) end_of_cal_month,
TO_CHAR( sd + rn, 'FMMonth' ) calendar_month_name,
( ( CASE WHEN TO_CHAR( sd + rn, 'Q' ) = 1 THEN
TO_DATE( '03/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 2 THEN
TO_DATE( '06/30/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 3 THEN
TO_DATE( '09/30/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 4 THEN
TO_DATE( '12/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
END ) - TRUNC( sd + rn, 'Q' ) + 1 ) days_in_cal_quarter,
TRUNC( sd + rn, 'Q' ) beg_of_cal_quarter,
( CASE WHEN TO_CHAR( sd + rn, 'Q' ) = 1 THEN
TO_DATE( '03/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 2 THEN
TO_DATE( '06/30/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 3 THEN
TO_DATE( '09/30/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
WHEN TO_CHAR( sd + rn, 'Q' ) = 4 THEN
TO_DATE( '12/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
END ) end_of_cal_quarter,
TO_CHAR( sd + rn, 'Q' ) calendar_quarter_number,
TO_CHAR( sd + rn, 'YYYY' ) calendar_year,
( TO_DATE( '12/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' )
- TRUNC( sd + rn, 'YEAR' ) ) days_in_cal_year,
TRUNC( sd + rn, 'YEAR' ) beg_of_cal_year,
TO_DATE( '12/31/' || TO_CHAR( sd + rn, 'YYYY' ), 'MM/DD/YYYY' ) end_of_cal_year
FROM ( SELECT TO_DATE( '12/31/2002', 'MM/DD/YYYY' ) sd,
rownum rn FROM dual CONNECT BY level <= 6575 )
/
Nov 24, 2009
REGEXP 3
To get decimals points and vicevers
SELECT REGEXP_REPLACE('18.01', '(\d+)\.(\d+)', '\1') FROM dual;
SELECT REGEXP_REPLACE('18.0991', '(\d+)\.(\d+)', '\2') FROM dual;
For Credit-Card Number System
SELECT regexp_replace( :c, '[[:digit:]]{13,16}', 'X' ) r
FROM dual;
To get decimals points
select (18.9009-floor(18.9009))*power(10,length((18.9009-floor(18.9009)))-1) f from dual
or
SELECT REGEXP_REPLACE('18.9009', '(\d+)\.(\d+)', '\2') FROM dual;
Convert a name 'first middle last' into the 'last middle first' format
SELECT REGEXP_REPLACE('Hubert Horatio Hornblower','(.*) (.*) (.*)','\3 \2 \1') "Reformatted Name" FROM dual ;
To remove dollar sign
SELECT REGEXP_REPLACE('$1,234.56','\$',' ') FROM dual;
SELECT REGEXP_REPLACE('This is a test','t.+','XYZ') FROM dual;
SELECT REGEXP_REPLACE('Mississippi', 'si', 'SI', 1, 0, 'i') FROM dual;
SELECT REGEXP_REPLACE('18.01', '(\d+)\.(\d+)', '\1') FROM dual;
SELECT REGEXP_REPLACE('18.0991', '(\d+)\.(\d+)', '\2') FROM dual;
For Credit-Card Number System
SELECT regexp_replace( :c, '[[:digit:]]{13,16}', 'X' ) r
FROM dual;
To get decimals points
select (18.9009-floor(18.9009))*power(10,length((18.9009-floor(18.9009)))-1) f from dual
or
SELECT REGEXP_REPLACE('18.9009', '(\d+)\.(\d+)', '\2') FROM dual;
Convert a name 'first middle last' into the 'last middle first' format
SELECT REGEXP_REPLACE('Hubert Horatio Hornblower','(.*) (.*) (.*)','\3 \2 \1') "Reformatted Name" FROM dual ;
To remove dollar sign
SELECT REGEXP_REPLACE('$1,234.56','\$',' ') FROM dual;
SELECT REGEXP_REPLACE('This is a test','t.+','XYZ') FROM dual;
SELECT REGEXP_REPLACE('Mississippi', 'si', 'SI', 1, 0, 'i') FROM dual;
ORA-00932: inconsistent datatypes
ORA-00932: inconsistent datatypes: expected - got CLOB
WHY THIS ERROR OCCURRING ?
WHEN WE EXECUTE THIS QUERY IT RESULTS TO AN ERROR (IE : ORA-00932)
SELECT TO_CLOB('DUMMY') FROM DUAL
UNION
SELECT TO_CLOB('DATA') FROM DUAL;
THIS ERROR CAN BE RESOLVED BY USING UNION ALL
EXAMPLE
SELECT TO_CLOB('DUMMY') FROM DUAL
UNION ALL
SELECT TO_CLOB('DATA') FROM DUAL;
WHY THIS ERROR OCCURRING ?
WHEN WE EXECUTE THIS QUERY IT RESULTS TO AN ERROR (IE : ORA-00932)
SELECT TO_CLOB('DUMMY') FROM DUAL
UNION
SELECT TO_CLOB('DATA') FROM DUAL;
THIS ERROR CAN BE RESOLVED BY USING UNION ALL
EXAMPLE
SELECT TO_CLOB('DUMMY') FROM DUAL
UNION ALL
SELECT TO_CLOB('DATA') FROM DUAL;
Sep 9, 2009
REGEXP 2
Contains alphabets
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:alpha:]]')
Contains only alphabets
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '^[[:alpha:]].*[[:alpha:]]$')
Contains enter character
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:cntrl:]]{1}')
OR
SELECT * FROM test WHERE testcol like '%'||chr(13)||'%'
-------------------------
Start with alphabets
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '^[[:alpha:]]')
Ends with alphabets
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:alpha:]]$')
Contains alphabets only with 5 and more characters
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:alpha:]]{5}')
Contains punctuations
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:punct:]]')
Contains space
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:space:]]')
To insert a space between the characters
SELECT testcol, REGEXP_REPLACE(testcol, '(.)', '\1 ') RES FROM test
To insert a hypen between every 4 characters
SELECT testcol, REGEXP_REPLACE(testcol, '(....)', '\1-') RES FROM test
To find third charactes with 'a'
SELECT testcol FROM test WHERE REGEXP_LIKE(testcol, '^..a.');
OR
SELECT testcol FROM test WHERE testcol LIKE '__a%'
To find the field having continous 3 spaces
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:space:]]{3}');
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:alpha:]]')
Contains only alphabets
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '^[[:alpha:]].*[[:alpha:]]$')
Contains enter character
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:cntrl:]]{1}')
OR
SELECT * FROM test WHERE testcol like '%'||chr(13)||'%'
-------------------------
Start with alphabets
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '^[[:alpha:]]')
Ends with alphabets
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:alpha:]]$')
Contains alphabets only with 5 and more characters
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:alpha:]]{5}')
Contains punctuations
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:punct:]]')
Contains space
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:space:]]')
To insert a space between the characters
SELECT testcol, REGEXP_REPLACE(testcol, '(.)', '\1 ') RES FROM test
To insert a hypen between every 4 characters
SELECT testcol, REGEXP_REPLACE(testcol, '(....)', '\1-') RES FROM test
To find third charactes with 'a'
SELECT testcol FROM test WHERE REGEXP_LIKE(testcol, '^..a.');
OR
SELECT testcol FROM test WHERE testcol LIKE '__a%'
To find the field having continous 3 spaces
SELECT * FROM test WHERE REGEXP_LIKE(testcol, '[[:space:]]{3}');
Subscribe to:
Posts (Atom)