Monday, 21 November 2011
Wednesday, 16 November 2011
Tuesday, 15 November 2011
Saturday, 12 November 2011
Friday, 11 November 2011
Hinernate Lazy Load vs Select Statements.
Select statements are very expensive in Hibernate as discussed in my last post on Hibernate Performance. Therefore, the best alternative to avoid selects statements is not to use Lazy loading. Lazy loading does not come without a price, lazy loading is very memory intensive operation and should be used with extensive care.
Wednesday, 9 November 2011
Template Method Design Pattern
abstract class Fruit {
// Is the implementation of a template method which will be used in all the subclasses.
// This pattern is implemented by a Implementation Inheritance.
public final void eat(){
System.out.println("I am eating :" + this.getClass().getName());
}
abstract void cut();
}
class Apple extends Fruit{
@Override
void cut() {
System.out.println("This is how we cut : " + this.getClass().getName());
}
}
class Banana extends Fruit{
@Override
void cut() {
System.out.println("This is how we cut : " + this.getClass().getName());
}
}
public class TemplateMethodPattern {
public static void main(String args[]){
Fruit apple = new Apple();
apple.eat();
apple.cut();
Fruit banana = new Banana();
banana.eat();
banana.cut();
}
}
// Is the implementation of a template method which will be used in all the subclasses.
// This pattern is implemented by a Implementation Inheritance.
public final void eat(){
System.out.println("I am eating :" + this.getClass().getName());
}
abstract void cut();
}
class Apple extends Fruit{
@Override
void cut() {
System.out.println("This is how we cut : " + this.getClass().getName());
}
}
class Banana extends Fruit{
@Override
void cut() {
System.out.println("This is how we cut : " + this.getClass().getName());
}
}
public class TemplateMethodPattern {
public static void main(String args[]){
Fruit apple = new Apple();
apple.eat();
apple.cut();
Fruit banana = new Banana();
banana.eat();
banana.cut();
}
}
Thursday, 3 November 2011
Wednesday, 2 November 2011
HQL with Spring JDBC
After doing some more research the following is my suggestion to improve
performance. I am not sure how easily it's possible, if its' really
possible.
I would recommend using "HQL with Spring JDBC".
Spring JDBC basically makes using JDBC easier but still uses JDBC, so we
can get good performance.
HQL helps us write standard queries which mean we can get cross platform
flexibility as well.
What do you think? Is this combination possible?
performance. I am not sure how easily it's possible, if its' really
possible.
I would recommend using "HQL with Spring JDBC".
Spring JDBC basically makes using JDBC easier but still uses JDBC, so we
can get good performance.
HQL helps us write standard queries which mean we can get cross platform
flexibility as well.
What do you think? Is this combination possible?
Hibernate Performance.
After reading a few posts on the internet the following are my
conclusions:
1. Insert or Update operations in Hibernate work fairly good (not as
good as JDBC but close). So we do not need to do any improvement around
those operations other than just doing inserts in batch and avoid
Updates as they are costly anyways.
2. Select operation is very costly in Hibernate as compared JDBC. The
reason is hibernation of Data in objects. We can not avoid selects and
the way we program in hibernate we do a lot of them. The only way around
this problem is caching. We need to attach hibernate with a cache or
enable it if its already present in Hibernate.
3. Another improvement is to use Opportunistic locking by marking our
selects transactions as read-only.
So, basically Hibernate has an overhead and so will spring. Ease of
programming comes with a cost, now the question is how to reduce the
performance cost and keep achieving our Benchmark targets.
conclusions:
1. Insert or Update operations in Hibernate work fairly good (not as
good as JDBC but close). So we do not need to do any improvement around
those operations other than just doing inserts in batch and avoid
Updates as they are costly anyways.
2. Select operation is very costly in Hibernate as compared JDBC. The
reason is hibernation of Data in objects. We can not avoid selects and
the way we program in hibernate we do a lot of them. The only way around
this problem is caching. We need to attach hibernate with a cache or
enable it if its already present in Hibernate.
3. Another improvement is to use Opportunistic locking by marking our
selects transactions as read-only.
So, basically Hibernate has an overhead and so will spring. Ease of
programming comes with a cost, now the question is how to reduce the
performance cost and keep achieving our Benchmark targets.
Tuesday, 25 October 2011
Friday, 21 October 2011
Comparing date in SQLServer
DATEDIFF(DAY, START_DATE, END_DATE) = 0
AND
DATEDIFF(MONTH, START_DATE, END_DATE) = 0
AND
DATEDIFF(YEAR, START_DATE, END_DATE) = 0
AND
DATEDIFF(MONTH, START_DATE, END_DATE) = 0
AND
DATEDIFF(YEAR, START_DATE, END_DATE) = 0
Adding a Date to a date in SQL Server
DATEADD(DAY, No of days to add, date_to_which_days_are_added)
Example:
DATEADD(DAY, 1, START_DATE)
Example:
DATEADD(DAY, 1, START_DATE)
Wednesday, 28 September 2011
Intalling Jars in your local Maven repository
Command:
mvn install:install-file -Dfile= -DgroupId= \
-DartifactId= -Dversion= -Dpackaging=
The above command will install jar file into your local ~/.m2 directory.
Example:
mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.jdbcdriver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar
Wednesday, 14 September 2011
Tuesday, 9 August 2011
Rounding in Java
public static double Round(double Rval, int Rpl) {
double power = Math.pow(10,Rpl);
Rval = Rval * power;
double tmp = new BigDecimal(Rval).setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue();
return (double)tmp/power;
}
double power = Math.pow(10,Rpl);
Rval = Rval * power;
double tmp = new BigDecimal(Rval).setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue();
return (double)tmp/power;
}
Wednesday, 13 July 2011
MD5 checksum on a file in Linux.
Installing MD5SUM package:
$ apt-get update
$ apt-get install coreutils
Generate checksum file
$ md5sum transaction.log > MDSSS
Check the checksum:
$ cat MDSSS
ae43fda27bf612e2d7128c3072220078 transaction.log
$ apt-get update
$ apt-get install coreutils
Generate checksum file
$ md5sum transaction.log > MDSSS
Check the checksum:
$ cat MDSSS
ae43fda27bf612e2d7128c3072220078 transaction.log
Wednesday, 6 July 2011
Eclipse Indigo Unstable.
Hi All,
I have tried Eclipse Indigo on Red-Hat Linux 64bit. Its unstable and gives me the following Exception over and over again. Therefore, i would recommend moving back to Helios, which is a stable version and i had no problems with it.
Exception in Indigo:
--------------------
LogFilter.isLoggable threw a non-fatal unchecked exception as follows:
java.lang.NullPointerException
at org.eclipse.core.internal.runtime.Log.isLoggable(Log.java:101)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.safeIsLoggable(ExtendedLogReaderServiceFactory.java:57)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.logPrivileged(ExtendedLogReaderServiceFactory.java:158)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.log(ExtendedLogReaderServiceFactory.java:146)
at org.eclipse.equinox.log.internal.ExtendedLogServiceFactory.log(ExtendedLogServiceFactory.java:65)
at org.eclipse.equinox.log.internal.ExtendedLogServiceImpl.log(ExtendedLogServiceImpl.java:87)
at org.eclipse.equinox.log.internal.LoggerImpl.log(LoggerImpl.java:54)
at org.eclipse.core.internal.runtime.Log.log(Log.java:60)
at altagracia.services.eclipse.ExceptionHandler.handle(ExceptionHandler.java:17)
at altagracia.plugin.wizards.Connect.getTableFromAttributes(Connect.java:321)
at altagracia.codegen.unifier.ProcedureSpec.statementSpec(ProcedureSpec.java:962)
at altagracia.codegen.unifier.ProcedureSpec.blockSpec(ProcedureSpec.java:750)
at altagracia.codegen.unifier.ProcedureSpec.generate(ProcedureSpec.java:231)
at altagracia.codegen.unifier.ProcedureSpec.generate(ProcedureSpec.java:165)
at altagracia.plugin.popup.actions.ActionProcedureGeneration.run(ActionProcedureGeneration.java:46)
at org.eclipse.ui.actions.ActionDelegate.runWithEvent(ActionDelegate.java:70)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:241)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3586)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3207)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
I have tried Eclipse Indigo on Red-Hat Linux 64bit. Its unstable and gives me the following Exception over and over again. Therefore, i would recommend moving back to Helios, which is a stable version and i had no problems with it.
Exception in Indigo:
--------------------
LogFilter.isLoggable threw a non-fatal unchecked exception as follows:
java.lang.NullPointerException
at org.eclipse.core.internal.runtime.Log.isLoggable(Log.java:101)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.safeIsLoggable(ExtendedLogReaderServiceFactory.java:57)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.logPrivileged(ExtendedLogReaderServiceFactory.java:158)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.log(ExtendedLogReaderServiceFactory.java:146)
at org.eclipse.equinox.log.internal.ExtendedLogServiceFactory.log(ExtendedLogServiceFactory.java:65)
at org.eclipse.equinox.log.internal.ExtendedLogServiceImpl.log(ExtendedLogServiceImpl.java:87)
at org.eclipse.equinox.log.internal.LoggerImpl.log(LoggerImpl.java:54)
at org.eclipse.core.internal.runtime.Log.log(Log.java:60)
at altagracia.services.eclipse.ExceptionHandler.handle(ExceptionHandler.java:17)
at altagracia.plugin.wizards.Connect.getTableFromAttributes(Connect.java:321)
at altagracia.codegen.unifier.ProcedureSpec.statementSpec(ProcedureSpec.java:962)
at altagracia.codegen.unifier.ProcedureSpec.blockSpec(ProcedureSpec.java:750)
at altagracia.codegen.unifier.ProcedureSpec.generate(ProcedureSpec.java:231)
at altagracia.codegen.unifier.ProcedureSpec.generate(ProcedureSpec.java:165)
at altagracia.plugin.popup.actions.ActionProcedureGeneration.run(ActionProcedureGeneration.java:46)
at org.eclipse.ui.actions.ActionDelegate.runWithEvent(ActionDelegate.java:70)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:241)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3586)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3207)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Thursday, 30 June 2011
mount windows directory to linux
$cd /mnt
$sudo mkdir windrive
$sudo mount -t cifs _windows_drive_path_ -o username=_user-name_,password=_password_ /mnt/windrive/
To see the contents of vdrive:
$ls -la /mnt/windrive
$sudo mkdir windrive
$sudo mount -t cifs _windows_drive_path_ -o username=_user-name_,password=_password_ /mnt/windrive/
To see the contents of vdrive:
$ls -la /mnt/windrive
Monday, 16 May 2011
Change author name in eclipse....
1- open eclipse.ini file in the eclipse directory.
2- Abb the following line after -vmargs line
-Duser.name=_Your_name
2- Abb the following line after -vmargs line
-Duser.name=_Your_name
Monday, 9 May 2011
To what extent is Hadoop used in finance? - Quora
To what extent is Hadoop used in finance? - Quora: "To what extent is Hadoop used in finance?"
Almost every large bank I've spoken with has either a pilot project or a production cluster running.
Some example use cases that come to mind:
IT log consolidation and analysis (for use in provisioning, forensics, etc.)
Collection and analysis of enterprise service bus messages
Identifying transaction fraud: creating a large data set for model building and backtesting
Consolidating consumer product data warehouses and transaction logs to build a unified risk score across consumer products (retail banking, home loans, auto loans, student loans, credit cards, etc.)
Daily transformation of loan-level data delivered from a service provider in a custom format into a consolidated format suitable for loading into a database
Collection and analysis of simulation logs from a multi-thousand node compute grid
Tiered time series tick database (recent data stored in an in-memory column store, older data stored on Hadoop)
Check image storage and retrieval
Daily processing of equity markets data for compliance purposes
Creation of a equity market historical data repository for model fitting and back testing
Almost every large bank I've spoken with has either a pilot project or a production cluster running.
Some example use cases that come to mind:
IT log consolidation and analysis (for use in provisioning, forensics, etc.)
Collection and analysis of enterprise service bus messages
Identifying transaction fraud: creating a large data set for model building and backtesting
Consolidating consumer product data warehouses and transaction logs to build a unified risk score across consumer products (retail banking, home loans, auto loans, student loans, credit cards, etc.)
Daily transformation of loan-level data delivered from a service provider in a custom format into a consolidated format suitable for loading into a database
Collection and analysis of simulation logs from a multi-thousand node compute grid
Tiered time series tick database (recent data stored in an in-memory column store, older data stored on Hadoop)
Check image storage and retrieval
Daily processing of equity markets data for compliance purposes
Creation of a equity market historical data repository for model fitting and back testing
Friday, 6 May 2011
Why minus into minus is plus.
someone asked me why minus into minus is plus. Here is my answer:
1 is mathematically not correct. It should either be -1 or +1. When we write 1 it actually means +1.
1-1 means actually (+1) + (-1)
(-1)*(1-1)
= (-1)*[(+1)+(-1)]
= (-1)*(+1)+(-1)(-1)
= (-1)+(+1)
= -1+1 = 0
This means if (-1)*(-1) is not +1, then we can not prove the above. This is logic.
Now let me explain you the philosophy.
+(-1)
Suppose:
+ = same direction as sign
- = opposite direction sign
+(-1) = same direction to - so answer is -1
-(-1) = oppsite direction to - so the answer is +1
1 is mathematically not correct. It should either be -1 or +1. When we write 1 it actually means +1.
1-1 means actually (+1) + (-1)
(-1)*(1-1)
= (-1)*[(+1)+(-1)]
= (-1)*(+1)+(-1)(-1)
= (-1)+(+1)
= -1+1 = 0
This means if (-1)*(-1) is not +1, then we can not prove the above. This is logic.
Now let me explain you the philosophy.
+(-1)
Suppose:
+ = same direction as sign
- = opposite direction sign
+(-1) = same direction to - so answer is -1
-(-1) = oppsite direction to - so the answer is +1
Thursday, 28 April 2011
Find Largest table in Oracle DB
select table_name, num_rows from dba_tables where num_rows is NOT NULL order by num_rows desc;
Enjoy :-)
Enjoy :-)
Wednesday, 27 April 2011
copy and xcopy command in windows
Copy a file to a folder:
copy /b _source-file_ _destination-folder_
Copy a folder into another folder:
xcopy _source-folder_ _destination-folder_ /D /E /C /R /I /K /Y
copy /b _source-file_ _destination-folder_
Copy a folder into another folder:
xcopy _source-folder_ _destination-folder_ /D /E /C /R /I /K /Y
Tuesday, 19 April 2011
Making Oracle session case insensitive
alter session set nls_comp=ansi;
alter session set nls_sort=binary_ci;
alter session set nls_sort=binary_ci;
query Next week day oracle, next working day oracle
SET SERVEROUTPUT ON
/
DEFINE V_DATE_TODAY = '23-04-2011';
/
DECLARE
DAY_TODAY VARCHAR2(30);
DAY_NEXT_WORKING_DAY VARCHAR2(30);
DATE_NEXT_WORKING_DAY VARCHAR2(30);
BEGIN
SELECT REPLACE(TO_CHAR(TO_DATE('&V_DATE_TODAY','dd-MM-yyyy'), 'DAY'),' ',NULL) INTO DAY_TODAY FROM DUAL;
SELECT CASE DAY_TODAY
WHEN 'MONDAY' THEN 'TUESDAY'
WHEN 'TUESDAY' THEN 'WEDNESDAY'
WHEN 'WEDNESDAY' THEN 'THURSDAY'
WHEN 'THURSDAY' THEN 'FRIDAY'
WHEN 'FRIDAY' THEN 'MONDAY'
WHEN 'SATURDAY' THEN 'MONDAY'
WHEN 'SUNDAY' THEN 'MONDAY'
END
INTO DAY_NEXT_WORKING_DAY FROM DUAL;
SELECT NEXT_DAY(TO_DATE('&V_DATE_TODAY','dd-MM-yyyy'), DAY_NEXT_WORKING_DAY) INTO DATE_NEXT_WORKING_DAY FROM DUAL;
DBMS_OUTPUT.PUT_LINE('DATE TODAY :' || '&V_DATE_TODAY');
DBMS_OUTPUT.PUT_LINE('DAY TODAY :' || DAY_TODAY);
DBMS_OUTPUT.PUT_LINE('DATE NEXT WEEK DAY :' || DATE_NEXT_WORKING_DAY);
DBMS_OUTPUT.PUT_LINE('DAY NEXT WEEK DAY :' || DAY_NEXT_WORKING_DAY);
END;
/
/
DEFINE V_DATE_TODAY = '23-04-2011';
/
DECLARE
DAY_TODAY VARCHAR2(30);
DAY_NEXT_WORKING_DAY VARCHAR2(30);
DATE_NEXT_WORKING_DAY VARCHAR2(30);
BEGIN
SELECT REPLACE(TO_CHAR(TO_DATE('&V_DATE_TODAY','dd-MM-yyyy'), 'DAY'),' ',NULL) INTO DAY_TODAY FROM DUAL;
SELECT CASE DAY_TODAY
WHEN 'MONDAY' THEN 'TUESDAY'
WHEN 'TUESDAY' THEN 'WEDNESDAY'
WHEN 'WEDNESDAY' THEN 'THURSDAY'
WHEN 'THURSDAY' THEN 'FRIDAY'
WHEN 'FRIDAY' THEN 'MONDAY'
WHEN 'SATURDAY' THEN 'MONDAY'
WHEN 'SUNDAY' THEN 'MONDAY'
END
INTO DAY_NEXT_WORKING_DAY FROM DUAL;
SELECT NEXT_DAY(TO_DATE('&V_DATE_TODAY','dd-MM-yyyy'), DAY_NEXT_WORKING_DAY) INTO DATE_NEXT_WORKING_DAY FROM DUAL;
DBMS_OUTPUT.PUT_LINE('DATE TODAY :' || '&V_DATE_TODAY');
DBMS_OUTPUT.PUT_LINE('DAY TODAY :' || DAY_TODAY);
DBMS_OUTPUT.PUT_LINE('DATE NEXT WEEK DAY :' || DATE_NEXT_WORKING_DAY);
DBMS_OUTPUT.PUT_LINE('DAY NEXT WEEK DAY :' || DAY_NEXT_WORKING_DAY);
END;
/
Tuesday, 12 April 2011
Hadoop Hue & django
Hadoop Hue is written in a web-framework build in python called django.http://www.djangoproject.com/
Killing and starting the Hadoop datanode deamon
$sudo jps
check the Datanode process ID
$sudo kill -9
$sudo /etc/init.d/hadoop*datanode start
thats it!
check the Datanode process ID
$sudo kill -9
$sudo /etc/init.d/hadoop*datanode start
thats it!
Wednesday, 23 March 2011
How to check JBoss Version.
1. Goto: http://_JBOSS SERVER IP_:_JBOSS SERVER PORT_/admin-console
2. Login In.
3. Click on JBossAS Servers -> JBoss AS X (XXX) link.
and this will give you the version.
2. Login In.
3. Click on JBossAS Servers -> JBoss AS X (XXX) link.
and this will give you the version.
Friday, 18 March 2011
ROLLUP IN ORACLE.
DROP TABLE EMPLOYEE;
CREATE TABLE EMPLOYEE(
COMPANY_ID NUMBER,
DEP_DESIG VARCHAR(20),
SALARY NUMBER
);
INSERT INTO EMPLOYEE VALUES(10,'Developer',80);
INSERT INTO EMPLOYEE VALUES(10,'Manager',100);
INSERT INTO EMPLOYEE VALUES(10,'CEO',150);
INSERT INTO EMPLOYEE VALUES(20,'Developer',100);
INSERT INTO EMPLOYEE VALUES(20,'Manager',500);
INSERT INTO EMPLOYEE VALUES(20,'CEO',600);
SELECT COMPANY_ID, DEP_DESIG, COUNT(*), SUM(SALARY)
FROM EMPLOYEE
GROUP BY rollup(COMPANY_ID,DEP_DESIG) ORDER BY COMPANY_ID;
CREATE TABLE EMPLOYEE(
COMPANY_ID NUMBER,
DEP_DESIG VARCHAR(20),
SALARY NUMBER
);
INSERT INTO EMPLOYEE VALUES(10,'Developer',80);
INSERT INTO EMPLOYEE VALUES(10,'Manager',100);
INSERT INTO EMPLOYEE VALUES(10,'CEO',150);
INSERT INTO EMPLOYEE VALUES(20,'Developer',100);
INSERT INTO EMPLOYEE VALUES(20,'Manager',500);
INSERT INTO EMPLOYEE VALUES(20,'CEO',600);
SELECT COMPANY_ID, DEP_DESIG, COUNT(*), SUM(SALARY)
FROM EMPLOYEE
GROUP BY rollup(COMPANY_ID,DEP_DESIG) ORDER BY COMPANY_ID;
CUBE IN ORACLE.
DROP TABLE EMPLOYEE;
CREATE TABLE EMPLOYEE(
COMPANY_ID NUMBER,
DEP_DESIG VARCHAR(20),
SALARY NUMBER
);
INSERT INTO EMPLOYEE VALUES(10,'Developer',80);
INSERT INTO EMPLOYEE VALUES(10,'Manager',100);
INSERT INTO EMPLOYEE VALUES(10,'CEO',150);
INSERT INTO EMPLOYEE VALUES(20,'Developer',100);
INSERT INTO EMPLOYEE VALUES(20,'Manager',500);
INSERT INTO EMPLOYEE VALUES(20,'CEO',600);
SELECT COMPANY_ID, DEP_DESIG, COUNT(*), SUM(SALARY)
FROM EMPLOYEE
GROUP BY CUBE(COMPANY_ID,DEP_DESIG) ORDER BY COMPANY_ID;
OUTPUT:
-------
COMPANY_ID DEP_DESIG COUNT(*) SUM(SALARY)
---------------------- -------------------- ---------------------- ----------------------
10 CEO 1 150
10 Developer 1 80
10 Manager 1 100
10 3 330
20 CEO 1 600
20 Developer 1 100
20 Manager 1 500
20 3 1200
CEO 2 750
Developer 2 180
Manager 2 600
6 1530
12 rows selected
CREATE TABLE EMPLOYEE(
COMPANY_ID NUMBER,
DEP_DESIG VARCHAR(20),
SALARY NUMBER
);
INSERT INTO EMPLOYEE VALUES(10,'Developer',80);
INSERT INTO EMPLOYEE VALUES(10,'Manager',100);
INSERT INTO EMPLOYEE VALUES(10,'CEO',150);
INSERT INTO EMPLOYEE VALUES(20,'Developer',100);
INSERT INTO EMPLOYEE VALUES(20,'Manager',500);
INSERT INTO EMPLOYEE VALUES(20,'CEO',600);
SELECT COMPANY_ID, DEP_DESIG, COUNT(*), SUM(SALARY)
FROM EMPLOYEE
GROUP BY CUBE(COMPANY_ID,DEP_DESIG) ORDER BY COMPANY_ID;
OUTPUT:
-------
COMPANY_ID DEP_DESIG COUNT(*) SUM(SALARY)
---------------------- -------------------- ---------------------- ----------------------
10 CEO 1 150
10 Developer 1 80
10 Manager 1 100
10 3 330
20 CEO 1 600
20 Developer 1 100
20 Manager 1 500
20 3 1200
CEO 2 750
Developer 2 180
Manager 2 600
6 1530
12 rows selected
MINUS IN ORACLE AND OUTER JOINS IN ORACLE
To see the different try the following:
DROP TABLE FOO;
DROP TABLE BAR;
CREATE TABLE FOO(
FOO_ID NUMBER,
FOO_NAME VARCHAR(20)
);
CREATE TABLE BAR(
BAR_ID NUMBER,
BAR_NAME VARCHAR(20)
);
INSERT INTO FOO VALUES(1,'Fawad');
INSERT INTO FOO VALUES(2,'Nazir');
INSERT INTO BAR VALUES(1,'Fawad');
INSERT INTO BAR VALUES(2,'Nazir');
INSERT INTO BAR VALUES(3,'Hello');
INSERT INTO BAR VALUES(4,'World');
-- Minus
SELECT BAR_ID FROM BAR
MINUS
SELECT FOO_ID FROM FOO
-- Right outer join
SELECT BAR_ID FROM FOO F RIGHT JOIN BAR B ON F.FOO_ID = B.BAR_ID WHERE FOO_ID IS NULL AND FOO_NAME IS NULL
In this case Both of the above queries give same results.
DROP TABLE FOO;
DROP TABLE BAR;
CREATE TABLE FOO(
FOO_ID NUMBER,
FOO_NAME VARCHAR(20)
);
CREATE TABLE BAR(
BAR_ID NUMBER,
BAR_NAME VARCHAR(20)
);
INSERT INTO FOO VALUES(1,'Fawad');
INSERT INTO FOO VALUES(2,'Nazir');
INSERT INTO BAR VALUES(1,'Fawad');
INSERT INTO BAR VALUES(2,'Nazir');
INSERT INTO BAR VALUES(3,'Hello');
INSERT INTO BAR VALUES(4,'World');
-- Minus
SELECT BAR_ID FROM BAR
MINUS
SELECT FOO_ID FROM FOO
-- Right outer join
SELECT BAR_ID FROM FOO F RIGHT JOIN BAR B ON F.FOO_ID = B.BAR_ID WHERE FOO_ID IS NULL AND FOO_NAME IS NULL
In this case Both of the above queries give same results.
Tuesday, 1 March 2011
Day of the week, Day of the week for previous day in Oracle
select to_char(to_date('15-09-2010','dd-MM-yyyy'),'D') from dual; -- day of week for a date
select to_char(to_date('15-09-2010','dd-MM-yyyy')-1,'D') from dual; -- day of week for a date before
select to_char(to_date('15-09-2010','dd-MM-yyyy')-1,'D') from dual; -- day of week for a date before
Friday, 25 February 2011
Check for empty lines in java
while((sLine= readerBuf.readLine()) != null)
if (sLine.trim().length() == 0)continue;
if (sLine.trim().length() == 0)continue;
Wednesday, 23 February 2011
Stock Exchange Stream Processing Simulator...
In this post i will demostrate how to write the world simplest tick data generator:
This command will write data to a file asx.txt:
-----------------------------------------------
$ while [ 1 ]; do echo $RANDOM >> asx.txt; done;
This command will read asx.txt in almost real-time:
---------------------------------------------------
$tail -f asx.txt -s 0.00001
you can write your strategies on this real-time data. This will just be like data coming from any data providing service/company.
Enjoy :-)
This command will write data to a file asx.txt:
-----------------------------------------------
$ while [ 1 ]; do echo $RANDOM >> asx.txt; done;
This command will read asx.txt in almost real-time:
---------------------------------------------------
$tail -f asx.txt -s 0.00001
you can write your strategies on this real-time data. This will just be like data coming from any data providing service/company.
Enjoy :-)
Monday, 21 February 2011
Order by + Union All in oracle
In oracle you can not use order by with union all. They dont work together. In this post i will explain you a work around. We will cheat Oracle :-)
--------------------------
Create Table Foo(
Foo_Id Number,
Foo_Name Varchar2(20)
);
Create Table Bar(
Bar_Id Number,
bar_Name Varchar2(20)
);
Insert Into Foo Values(1, 'Fawad');
Insert Into Foo Values(2, 'Nazir');
Insert Into Bar Values(1, 'Mark');
Insert Into bar Values(2, 'Donald');
--Order by and Union All is not allowed together
Select * From Foo Order By Foo_Id desc
Union All
Select * From Bar Order By Bar_Name
--Work around (Cheating SQL :) )
select * from (Select * From Foo Order By Foo_Id desc) a
Union All
select * from (Select * From Bar Order By Bar_Name) b
Enjoy :-)
--------------------------
Create Table Foo(
Foo_Id Number,
Foo_Name Varchar2(20)
);
Create Table Bar(
Bar_Id Number,
bar_Name Varchar2(20)
);
Insert Into Foo Values(1, 'Fawad');
Insert Into Foo Values(2, 'Nazir');
Insert Into Bar Values(1, 'Mark');
Insert Into bar Values(2, 'Donald');
--Order by and Union All is not allowed together
Select * From Foo Order By Foo_Id desc
Union All
Select * From Bar Order By Bar_Name
--Work around (Cheating SQL :) )
select * from (Select * From Foo Order By Foo_Id desc) a
Union All
select * from (Select * From Bar Order By Bar_Name) b
Enjoy :-)
Round the number and always show decimal places...
The following is the way to round the number and always show two decimal places:
SELECT to_char(round(678,2), '9999999.99') FROM dual;
SELECT to_char(round(678,2), '9999999.99') FROM dual;
Friday, 18 February 2011
DDL Rollback in Oracle...
Oracle does not support DDL Rollback, Try the following example:
CREATE TABLE FOO(
FOO_ID NUMBER,
FOO_NAME VARCHAR2(30)
);
ALTER TABLE FOO ADD FOO_DESCRIPTION VARCHAR2(50);
INSERT INTO FOO VALUES (1,'FIRST','THE FIRST ROW');
INSERT INTO FOO VALUES (2,'SECOND','THE SECOND ROW');
SELECT * FROM FOO;
ROLLBACK;
SELECT * FROM FOO;
Does rollback statement drops the table created as well? or undo the alter statement?
It only undo the Insert which is a DML, it can not rollbacl DDL statements.
There are two work arounds of this problem:
1. Using Oracle Flachback utility.
Problem with this solution is it has a lot of management overhead and does not work on statement level. This tool can rollback the whole table but can not rollback a simgle alter statement.
2. Database Change Management tools like dbdeploy & mybatis.
This tool can do it all and with quite good flexibility. However, if you already have a database and big tables and we want to drop the tables. In this case we will have to right large insert statements to undo the change.
3. Using both.
Looking at the shortcomings of the above two approaches, i would recommend using this approach.
CREATE TABLE FOO(
FOO_ID NUMBER,
FOO_NAME VARCHAR2(30)
);
ALTER TABLE FOO ADD FOO_DESCRIPTION VARCHAR2(50);
INSERT INTO FOO VALUES (1,'FIRST','THE FIRST ROW');
INSERT INTO FOO VALUES (2,'SECOND','THE SECOND ROW');
SELECT * FROM FOO;
ROLLBACK;
SELECT * FROM FOO;
Does rollback statement drops the table created as well? or undo the alter statement?
It only undo the Insert which is a DML, it can not rollbacl DDL statements.
There are two work arounds of this problem:
1. Using Oracle Flachback utility.
Problem with this solution is it has a lot of management overhead and does not work on statement level. This tool can rollback the whole table but can not rollback a simgle alter statement.
2. Database Change Management tools like dbdeploy & mybatis.
This tool can do it all and with quite good flexibility. However, if you already have a database and big tables and we want to drop the tables. In this case we will have to right large insert statements to undo the change.
3. Using both.
Looking at the shortcomings of the above two approaches, i would recommend using this approach.
UNION and UNION ALL in oracle
Difference between union and union all?
1. UNION only selects distinct values and UNION all selects all values.
2. UNION filters duplicates values and UNION ALL does not.
Simple example to test it:
create table foo(
foo_id number,
foo_name varchar2(30)
);
insert into foo values(1,'FAWAD');
insert into foo values(1,'NAZIR');
select * from foo
union
select * from foo;
select * from foo
union all
select * from foo;
1. UNION only selects distinct values and UNION all selects all values.
2. UNION filters duplicates values and UNION ALL does not.
Simple example to test it:
create table foo(
foo_id number,
foo_name varchar2(30)
);
insert into foo values(1,'FAWAD');
insert into foo values(1,'NAZIR');
select * from foo
union
select * from foo;
select * from foo
union all
select * from foo;
Tuesday, 15 February 2011
Java Regular Expressions
Ref: http://www.wellho.net/regex/javare.html
Java Regular Expressions - detailed manual
Summary of regular-expression constructs
Construct
Matches Characters
x
The character x
\\
The backslash character
\0n
The character with octal value 0n (0 <= n <= 7)
\0nn
The character with octal value 0nn (0 <= n <= 7)
\0mnn
The character with octal value 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh
The character with hexadecimal value 0xhh
\uhhhh
The character with hexadecimal value 0xhhhh
\t
The tab character ('\u0009')
\n
The newline (line feed) character ('\u000A')
\r
The carriage-return character ('\u000D')
\f
The form-feed character ('\u000C')
\a
The alert (bell) character ('\u0007')
\e
The escape character ('\u001B')
\cx
The control character corresponding to x
Character classes
[abc]
a, b, or c (simple class)
[^abc]
Any character except a, b, or c (negation)
[a-zA-Z]
a through z or A through Z, inclusive (range)
[a-d[m-p]]
a through d, or m through p: [a-dm-p] (union)
[a-z&&[def]]
d, e, or f (intersection)
[a-z&&[^bc]]
a through z, except for b and c: [ad-z] (subtraction)
[a-z&&[^m-p]]
a through z, and not m through p: [a-lq-z](subtraction)
Predefined character classes
.
Any character (may or may not match line terminators)
\d
A digit: [0-9]
\D
A non-digit: [^0-9]
\s
A whitespace character: [ \t\n\x0B\f\r]
\S
A non-whitespace character: [^\s]
\w
A word character: [a-zA-Z_0-9]
\W
A non-word character: [^\w]
POSIX character classes (US-ASCII only)
\p{Lower}
A lower-case alphabetic character: [a-z]
\p{Upper}
An upper-case alphabetic character:[A-Z]
\p{ASCII}
All ASCII:[\x00-\x7F]
\p{Alpha}
An alphabetic character:[\p{Lower}\p{Upper}]
\p{Digit}
A decimal digit: [0-9]
\p{Alnum}
An alphanumeric character:[\p{Alpha}\p{Digit}]
\p{Punct}
Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph}
A visible character: [\p{Alnum}\p{Punct}]
\p{Print}
A printable character: [\p{Graph}] or space
\p{Blank}
A space or a tab: [ \t]
\p{Cntrl}
A control character: [\x00-\x1F\x7F]
\p{XDigit}
A hexadecimal digit: [0-9a-fA-F]
\p{Space}
A whitespace character: [ \t\n\x0B\f\r]
Classes for Unicode blocks and categories
\p{InGreek}
A character in the Greek block (simple block)
\p{Lu}
An uppercase letter (simple category)
\p{Sc}
A currency symbol
\P{InGreek}
Any character except one in the Greek block (negation)
[\p{L}&&[^\p{Lu}]]
Any letter except an uppercase letter (subtraction)
Boundary matchers
^
The beginning of a line
$
The end of a line
\b
A word boundary
\B
A non-word boundary
\A
The beginning of the input
\G
The end of the previous match
\Z
The end of the input but for the final terminator, if any
\z
The end of the input
Greedy quantifiers
X?
X, once or not at all
X*
X, zero or more times
X+
X, one or more times
X{n}
X, exactly n times
X{n,}
X, at least n times
X{n,m}
X, at least n but not more than m times
Reluctant quantifiers
X??
X, once or not at all
X*?
X, zero or more times
X+?
X, one or more times
X{n}?
X, exactly n times
X{n,}?
X, at least n times
X{n,m}?
X, at least n but not more than m times
Possessive quantifiers
X?+
X, once or not at all
X*+
X, zero or more times
X++
X, one or more times
X{n}+
X, exactly n times
X{n,}+
X, at least n times
X{n,m}+
X, at least n but not more than m times
Logical operators
XY
X followed by Y
X|Y
Either X or Y
(X)
X, as a capturing group
Back references
\n
Whatever the nth capturing group matched
Quotation
\
Nothing, but quotes the following character
\Q
Nothing, but quotes all characters until \E
\E
Nothing, but ends quoting started by \Q
Special constructs (non-capturing)
(?:X)
X, as a non-capturing group
(?idmsux-idmsux)
Nothing, but turns match flags on - off
(?idmsux-idmsux:X)
X, as a non-capturing group with the given flags on - off
(?=X)
X, via zero-width positive lookahead
(?!X)
X, via zero-width negative lookahead
(?<=X)
X, via zero-width positive lookbehind
(? X, via zero-width negative lookbehind
(?>X)
X, as an independent, non-capturing group
Backslashes, escapes, and quoting
The backslash character ('\') serves to introduce escaped constructs, as
defined in the table above, as well as to quote characters that otherwise
would be interpreted as unescaped constructs. Thus the expression \\ matches a
single backslash and \{ matches a left brace.
It is an error to use a backslash prior to any alphabetic character that
does not denote an escaped construct; these are reserved for future extensions
to the regular-expression language. A backslash may be used prior to a
non-alphabetic character regardless of whether that character is part of
an unescaped construct.
Backslashes within string literals in Java source code are interpreted
as required by the Java Language Specification as either Unicode escapes
or other character escapes. It is therefore necessary to double backslashes in string
literals that represent regular expressions to protect them from interpretation
by the Java bytecode compiler. The string literal "\b", for example, matches
a single backspace character when interpreted as a regular expression, while
"\\b" matches a word boundary. The string literal "\(hello\)" is illegal
and leads to a compile-time error; in order to match the string (hello)
the string literal "\\(hello\\)" must be used.
Character Classes
Character classes may appear within other character classes, and may be
composed by the union operator (implicit) and the intersection operator (&&).
The union operator denotes a class that contains every character that is in at
least one of its operand classes. The intersection operator denotes a
class that contains every character that is in both of its operand classes.
The precedence of character-class operators is as follows, from highest to lowest:
1
Literal escape
\x
2
Grouping
[...]
3
Range
a-z
4
Union
[a-e][i-u]
5
Intersection
[a-z&&[aeiou]]
Note that a different set of metacharacters are in effect inside a character
class than outside a character class. For instance, the regular expression .
loses its special meaning inside a character class, while the expression -
becomes a range forming metacharacter.
Line terminators
A line terminator is a one- or two-character sequence that marks the end
of a line of the input character sequence. The following are recognized
as line terminators:
A newline (line feed) character ('\n'),
A carriage-return character followed immediately by a newline character ("\r\n"),
A standalone carriage-return character ('\r'),
A next-line character ('\u0085'),
A line-separator character ('\u2028'), or
A paragraph-separator character ('\u2029).
If UNIX_LINES mode is activated, then the only line terminators recognized
are newline characters.
The regular expression . matches any character except a line terminator
unless the DOTALL flag is specified.
By default, the regular expressions ^ and $ ignore line terminators and
only match at the beginning and the end, respectively, of the entire input
sequence. If MULTILINE mode is activated then these expressions match just after or
just before, respectively, a line terminator or the end of the input sequence
with the exception that the expression ^ never matches at the end of input,
even if the last character is a newline.
Groups and capturing
Capturing groups are numbered by counting their opening parentheses from
left to right. In the expression ((A)(B(C))), for example, there are four such groups:
1
((A)(B(C)))
2
(A)
3
(B(C))
4
(C)
Group zero always stands for the entire expression.
Capturing groups are so named because, during a match, each subsequence
of the input sequence that matches such a group is saved. The captured
subsequence may be used later in the expression, via a back reference, and may
also be retrieved from the matcher once the match operation is complete.
The captured input associated with a group is always the subsequence that
the group most recently matched. If a group is evaluated a second time
because of quantification then its previously-captured value, if any,
will be retained if the second evaluation fails. Matching the string "aba"
against the expression (a(b)?)+, for example, leaves group two set to "b".
All captured input is discarded at the beginning of each match.
Groups beginning with (? are pure, non-capturing groups that do not capture
text and do not count towards the group total.
Unicode support
This class follows Unicode Technical Report #18: Unicode Regular Expression
Guidelines, implementing its second level of support though with a slightly
different concrete syntax.
Unicode escape sequences such as \u2014 in Java source code are processed
as described in ?3.3 of the Java Language Specification. Such escape sequences
are also implemented directly by the regular-expression parser so that
Unicode escapes can be used in expressions that are read from files or from
the keyboard. Thus the strings "\u2014" and "\\u2014", while not equal,
compile into the same pattern, which matches the character with hexadecimal
value 0x2014.
Unicode blocks and categories are written with the \p and \P constructs
as in Perl. \p{prop} matches if the input has the property prop, while
\P{prop} does not match if the input has that property. Blocks are specified with the
prefix In, as in InMongolian. Categories may be specified with the optional
prefix Is: Both \p{L} and \p{IsL} denote the category of Unicode letters.
Blocks and categories can be used both inside and outside of a character
class.
The supported blocks and categories are those of The Unicode Standard,
Version 3.0. The block names are those defined in Chapter 14 and in the
file Blocks-3.txt of the Unicode Character Database except that the spaces are
removed; "Basic Latin", for example, becomes "BasicLatin". The category
names are those defined in table 4-5 of the Standard (p. 88), both normative
and informative.
Comparison to Perl 5
Perl constructs not supported by this class:
The conditional constructs (?{X}) and (?(condition)X|Y),
The embedded code constructs (?{code}) and (??{code}),
The embedded comment syntax (?#comment), and
The preprocessing operations \l \u, \L, and \U.
Constructs supported by this class but not by Perl:
Possessive quantifiers, which greedily match as much as they can
and do not back off, even when doing so would allow the overall
match to succeed.
Character-class union and intersection as described above.
Notable differences from Perl:
In Perl, \1 through \9 are always interpreted as back references; a
backslash-escaped number greater than 9 is treated as a back reference
if at least that many subexpressions exist, otherwise it is interpreted,
if possible, as an octal escape. In this class octal escapes must
always begin with a zero. In this class, \1 through \9 are always
interpreted as back references, and a larger number is accepted as
a back reference if at least that many subexpressions exist at that
point in the regular expression, otherwise the parser will drop digits
until the number is smaller or equal to the existing number of groups
or it is one digit.
Perl uses the g flag to request a match that resumes where the last
match left off. This functionality is provided implicitly by the
Matcher class: Repeated invocations of the find method will resume
where the last match left off, unless the matcher is reset.
In Perl, embedded flags at the top level of an expression affect
the whole expression. In this class, embedded flags always take
effect at the point at which they appear, whether they are at the
top level or within a group; in the latter case, flags are restored
at the end of the group just as in Perl.
Perl is forgiving about malformed matching constructs, as in the
expression *a, as well as dangling brackets, as in the expression
abc], and treats them as literals. This class also accepts dangling
brackets but is strict about dangling metacharacters like +, ? and *,
and will throw a PatternSyntaxException if it encounters them.
Java Regular Expressions - detailed manual
Summary of regular-expression constructs
Construct
Matches Characters
x
The character x
\\
The backslash character
\0n
The character with octal value 0n (0 <= n <= 7)
\0nn
The character with octal value 0nn (0 <= n <= 7)
\0mnn
The character with octal value 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh
The character with hexadecimal value 0xhh
\uhhhh
The character with hexadecimal value 0xhhhh
\t
The tab character ('\u0009')
\n
The newline (line feed) character ('\u000A')
\r
The carriage-return character ('\u000D')
\f
The form-feed character ('\u000C')
\a
The alert (bell) character ('\u0007')
\e
The escape character ('\u001B')
\cx
The control character corresponding to x
Character classes
[abc]
a, b, or c (simple class)
[^abc]
Any character except a, b, or c (negation)
[a-zA-Z]
a through z or A through Z, inclusive (range)
[a-d[m-p]]
a through d, or m through p: [a-dm-p] (union)
[a-z&&[def]]
d, e, or f (intersection)
[a-z&&[^bc]]
a through z, except for b and c: [ad-z] (subtraction)
[a-z&&[^m-p]]
a through z, and not m through p: [a-lq-z](subtraction)
Predefined character classes
.
Any character (may or may not match line terminators)
\d
A digit: [0-9]
\D
A non-digit: [^0-9]
\s
A whitespace character: [ \t\n\x0B\f\r]
\S
A non-whitespace character: [^\s]
\w
A word character: [a-zA-Z_0-9]
\W
A non-word character: [^\w]
POSIX character classes (US-ASCII only)
\p{Lower}
A lower-case alphabetic character: [a-z]
\p{Upper}
An upper-case alphabetic character:[A-Z]
\p{ASCII}
All ASCII:[\x00-\x7F]
\p{Alpha}
An alphabetic character:[\p{Lower}\p{Upper}]
\p{Digit}
A decimal digit: [0-9]
\p{Alnum}
An alphanumeric character:[\p{Alpha}\p{Digit}]
\p{Punct}
Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph}
A visible character: [\p{Alnum}\p{Punct}]
\p{Print}
A printable character: [\p{Graph}] or space
\p{Blank}
A space or a tab: [ \t]
\p{Cntrl}
A control character: [\x00-\x1F\x7F]
\p{XDigit}
A hexadecimal digit: [0-9a-fA-F]
\p{Space}
A whitespace character: [ \t\n\x0B\f\r]
Classes for Unicode blocks and categories
\p{InGreek}
A character in the Greek block (simple block)
\p{Lu}
An uppercase letter (simple category)
\p{Sc}
A currency symbol
\P{InGreek}
Any character except one in the Greek block (negation)
[\p{L}&&[^\p{Lu}]]
Any letter except an uppercase letter (subtraction)
Boundary matchers
^
The beginning of a line
$
The end of a line
\b
A word boundary
\B
A non-word boundary
\A
The beginning of the input
\G
The end of the previous match
\Z
The end of the input but for the final terminator, if any
\z
The end of the input
Greedy quantifiers
X?
X, once or not at all
X*
X, zero or more times
X+
X, one or more times
X{n}
X, exactly n times
X{n,}
X, at least n times
X{n,m}
X, at least n but not more than m times
Reluctant quantifiers
X??
X, once or not at all
X*?
X, zero or more times
X+?
X, one or more times
X{n}?
X, exactly n times
X{n,}?
X, at least n times
X{n,m}?
X, at least n but not more than m times
Possessive quantifiers
X?+
X, once or not at all
X*+
X, zero or more times
X++
X, one or more times
X{n}+
X, exactly n times
X{n,}+
X, at least n times
X{n,m}+
X, at least n but not more than m times
Logical operators
XY
X followed by Y
X|Y
Either X or Y
(X)
X, as a capturing group
Back references
\n
Whatever the nth capturing group matched
Quotation
\
Nothing, but quotes the following character
\Q
Nothing, but quotes all characters until \E
\E
Nothing, but ends quoting started by \Q
Special constructs (non-capturing)
(?:X)
X, as a non-capturing group
(?idmsux-idmsux)
Nothing, but turns match flags on - off
(?idmsux-idmsux:X)
X, as a non-capturing group with the given flags on - off
(?=X)
X, via zero-width positive lookahead
(?!X)
X, via zero-width negative lookahead
(?<=X)
X, via zero-width positive lookbehind
(? X, via zero-width negative lookbehind
(?>X)
X, as an independent, non-capturing group
Backslashes, escapes, and quoting
The backslash character ('\') serves to introduce escaped constructs, as
defined in the table above, as well as to quote characters that otherwise
would be interpreted as unescaped constructs. Thus the expression \\ matches a
single backslash and \{ matches a left brace.
It is an error to use a backslash prior to any alphabetic character that
does not denote an escaped construct; these are reserved for future extensions
to the regular-expression language. A backslash may be used prior to a
non-alphabetic character regardless of whether that character is part of
an unescaped construct.
Backslashes within string literals in Java source code are interpreted
as required by the Java Language Specification as either Unicode escapes
or other character escapes. It is therefore necessary to double backslashes in string
literals that represent regular expressions to protect them from interpretation
by the Java bytecode compiler. The string literal "\b", for example, matches
a single backspace character when interpreted as a regular expression, while
"\\b" matches a word boundary. The string literal "\(hello\)" is illegal
and leads to a compile-time error; in order to match the string (hello)
the string literal "\\(hello\\)" must be used.
Character Classes
Character classes may appear within other character classes, and may be
composed by the union operator (implicit) and the intersection operator (&&).
The union operator denotes a class that contains every character that is in at
least one of its operand classes. The intersection operator denotes a
class that contains every character that is in both of its operand classes.
The precedence of character-class operators is as follows, from highest to lowest:
1
Literal escape
\x
2
Grouping
[...]
3
Range
a-z
4
Union
[a-e][i-u]
5
Intersection
[a-z&&[aeiou]]
Note that a different set of metacharacters are in effect inside a character
class than outside a character class. For instance, the regular expression .
loses its special meaning inside a character class, while the expression -
becomes a range forming metacharacter.
Line terminators
A line terminator is a one- or two-character sequence that marks the end
of a line of the input character sequence. The following are recognized
as line terminators:
A newline (line feed) character ('\n'),
A carriage-return character followed immediately by a newline character ("\r\n"),
A standalone carriage-return character ('\r'),
A next-line character ('\u0085'),
A line-separator character ('\u2028'), or
A paragraph-separator character ('\u2029).
If UNIX_LINES mode is activated, then the only line terminators recognized
are newline characters.
The regular expression . matches any character except a line terminator
unless the DOTALL flag is specified.
By default, the regular expressions ^ and $ ignore line terminators and
only match at the beginning and the end, respectively, of the entire input
sequence. If MULTILINE mode is activated then these expressions match just after or
just before, respectively, a line terminator or the end of the input sequence
with the exception that the expression ^ never matches at the end of input,
even if the last character is a newline.
Groups and capturing
Capturing groups are numbered by counting their opening parentheses from
left to right. In the expression ((A)(B(C))), for example, there are four such groups:
1
((A)(B(C)))
2
(A)
3
(B(C))
4
(C)
Group zero always stands for the entire expression.
Capturing groups are so named because, during a match, each subsequence
of the input sequence that matches such a group is saved. The captured
subsequence may be used later in the expression, via a back reference, and may
also be retrieved from the matcher once the match operation is complete.
The captured input associated with a group is always the subsequence that
the group most recently matched. If a group is evaluated a second time
because of quantification then its previously-captured value, if any,
will be retained if the second evaluation fails. Matching the string "aba"
against the expression (a(b)?)+, for example, leaves group two set to "b".
All captured input is discarded at the beginning of each match.
Groups beginning with (? are pure, non-capturing groups that do not capture
text and do not count towards the group total.
Unicode support
This class follows Unicode Technical Report #18: Unicode Regular Expression
Guidelines, implementing its second level of support though with a slightly
different concrete syntax.
Unicode escape sequences such as \u2014 in Java source code are processed
as described in ?3.3 of the Java Language Specification. Such escape sequences
are also implemented directly by the regular-expression parser so that
Unicode escapes can be used in expressions that are read from files or from
the keyboard. Thus the strings "\u2014" and "\\u2014", while not equal,
compile into the same pattern, which matches the character with hexadecimal
value 0x2014.
Unicode blocks and categories are written with the \p and \P constructs
as in Perl. \p{prop} matches if the input has the property prop, while
\P{prop} does not match if the input has that property. Blocks are specified with the
prefix In, as in InMongolian. Categories may be specified with the optional
prefix Is: Both \p{L} and \p{IsL} denote the category of Unicode letters.
Blocks and categories can be used both inside and outside of a character
class.
The supported blocks and categories are those of The Unicode Standard,
Version 3.0. The block names are those defined in Chapter 14 and in the
file Blocks-3.txt of the Unicode Character Database except that the spaces are
removed; "Basic Latin", for example, becomes "BasicLatin". The category
names are those defined in table 4-5 of the Standard (p. 88), both normative
and informative.
Comparison to Perl 5
Perl constructs not supported by this class:
The conditional constructs (?{X}) and (?(condition)X|Y),
The embedded code constructs (?{code}) and (??{code}),
The embedded comment syntax (?#comment), and
The preprocessing operations \l \u, \L, and \U.
Constructs supported by this class but not by Perl:
Possessive quantifiers, which greedily match as much as they can
and do not back off, even when doing so would allow the overall
match to succeed.
Character-class union and intersection as described above.
Notable differences from Perl:
In Perl, \1 through \9 are always interpreted as back references; a
backslash-escaped number greater than 9 is treated as a back reference
if at least that many subexpressions exist, otherwise it is interpreted,
if possible, as an octal escape. In this class octal escapes must
always begin with a zero. In this class, \1 through \9 are always
interpreted as back references, and a larger number is accepted as
a back reference if at least that many subexpressions exist at that
point in the regular expression, otherwise the parser will drop digits
until the number is smaller or equal to the existing number of groups
or it is one digit.
Perl uses the g flag to request a match that resumes where the last
match left off. This functionality is provided implicitly by the
Matcher class: Repeated invocations of the find method will resume
where the last match left off, unless the matcher is reset.
In Perl, embedded flags at the top level of an expression affect
the whole expression. In this class, embedded flags always take
effect at the point at which they appear, whether they are at the
top level or within a group; in the latter case, flags are restored
at the end of the group just as in Perl.
Perl is forgiving about malformed matching constructs, as in the
expression *a, as well as dangling brackets, as in the expression
abc], and treats them as literals. This class also accepts dangling
brackets but is strict about dangling metacharacters like +, ? and *,
and will throw a PatternSyntaxException if it encounters them.
Monday, 14 February 2011
Finding and Removing Oracle Jobs...
Find Oracle Jobs:
1. Find running jobs:
SELECT r.sid, r.job, r.this_date, r.this_sec, SUBSTR(what,1,40) what FROM dba_jobs_running r,dba_jobs j WHERE r.job = j.job;
2. Find jobs:
col job format 99999;
SELECT job, next_date, next_sec, failures, broken, SUBSTR(what,1,40) DESCRIPTION FROM all_jobs;
you can use user_jobs, dba_jobs, all_jobs as table option in 2, as required.
Removing a job:
exec sys.dbms_ijob.remove(_job_id_);
1. Find running jobs:
SELECT r.sid, r.job, r.this_date, r.this_sec, SUBSTR(what,1,40) what FROM dba_jobs_running r,dba_jobs j WHERE r.job = j.job;
2. Find jobs:
col job format 99999;
SELECT job, next_date, next_sec, failures, broken, SUBSTR(what,1,40) DESCRIPTION FROM all_jobs;
you can use user_jobs, dba_jobs, all_jobs as table option in 2, as required.
Removing a job:
exec sys.dbms_ijob.remove(_job_id_);
Recursively find all files and convert to unix format (excluding those in svn dirs)
Ref : http://snippets.dzone.com/posts/show/108
find . -type f \! -path "*svn*" -exec dos2unix {} \;
After svn checkout you should run this command in your local directory.
find . -type f \! -path "*svn*" -exec dos2unix {} \;
After svn checkout you should run this command in your local directory.
Friday, 11 February 2011
checking for null and undefined in javascript
if(div != undefined && div != null) {
// Do something.
}
// Do something.
}
Thursday, 10 February 2011
isNumber or isNumeric method for Oracle
Oracle does not have these functions, however you can use oracle regular expressions to achive this:
1. Example 1:
SELECT
*
FROM
_TABLE_NAME_
WHERE
REGEXP_LIKE(_COLUMN_NAME_,'^-?[[:digit:],.]*$')
This will return the _COLUMN_NAME_ values that are numeric.
2. Example 2:
select _COLUMN_NAME_,
case when regexp_like(_COLUMN_NAME_, '^-?[[:digit:],.]*$')
then
'Numeric'
else 'Non-Numeric' end as type
from _TABLE_NAME_
3. You can also use it as:
SELECT
*
FROM
_TABLE_NAME_
WHERE
NOT REGEXP_LIKE(_COLUMN_NAME_,'^-?[[:digit:],.]*$')
This will return the _COLUMN_NAME_ values that are non-numeric.
1. Example 1:
SELECT
*
FROM
_TABLE_NAME_
WHERE
REGEXP_LIKE(_COLUMN_NAME_,'^-?[[:digit:],.]*$')
This will return the _COLUMN_NAME_ values that are numeric.
2. Example 2:
select _COLUMN_NAME_,
case when regexp_like(_COLUMN_NAME_, '^-?[[:digit:],.]*$')
then
'Numeric'
else 'Non-Numeric' end as type
from _TABLE_NAME_
3. You can also use it as:
SELECT
*
FROM
_TABLE_NAME_
WHERE
NOT REGEXP_LIKE(_COLUMN_NAME_,'^-?[[:digit:],.]*$')
This will return the _COLUMN_NAME_ values that are non-numeric.
Saturday, 5 February 2011
Command line for and while loop.. Shell Linux
Command line while loop:
$while [ 1 ]; do traceroute www.slac.stanford.edu; done;
Command line for loop:
$for x in 1 2 3; do ls -l; done
Enjoy :)
$while [ 1 ]; do traceroute www.slac.stanford.edu; done;
Command line for loop:
$for x in 1 2 3; do ls -l; done
Enjoy :)
end-of-line character conversion: unix2mac dos2unix mac2unix
All these scripts are one liners:
"mac2unix"
cat $1 | tr '\r' '\n'
"unix2mac"
cat $1 | tr '\n' '\r'
"dos2unix"
cat $1 | tr -d '\r'
NOTE: "tr" (translate character) utility.
"mac2unix"
cat $1 | tr '\r' '\n'
"unix2mac"
cat $1 | tr '\n' '\r'
"dos2unix"
cat $1 | tr -d '\r'
NOTE: "tr" (translate character) utility.
Friday, 4 February 2011
Tuesday, 1 February 2011
Problem running shell script in Cygwin
If you are getting these kind of error in cygwin:
# ./compare.sh
./compare.sh: line 2: $'\r': command not found
./compare.sh: line 5: $'\r': command not found
./compare.sh: line 7: $'\r': command not found
./compare.sh: line 9: $'\r': command not found
' for reading (No such file or directory) `./conf/compare.conf
' for reading (No such file or directory) `./conf/compare.conf
' for reading (No such file or directory) `./conf/compare.conf
' for reading (No such file or directory) `./conf/compare.conf
./compare.sh: line 14: $'\r': command not found
Its because you have to convert this file into a unix format. So use the following command:
# dos2unix compare.sh
compare.sh: done.
This will solve this problem
# ./compare.sh
./compare.sh: line 2: $'\r': command not found
./compare.sh: line 5: $'\r': command not found
./compare.sh: line 7: $'\r': command not found
./compare.sh: line 9: $'\r': command not found
' for reading (No such file or directory) `./conf/compare.conf
' for reading (No such file or directory) `./conf/compare.conf
' for reading (No such file or directory) `./conf/compare.conf
' for reading (No such file or directory) `./conf/compare.conf
./compare.sh: line 14: $'\r': command not found
Its because you have to convert this file into a unix format. So use the following command:
# dos2unix compare.sh
compare.sh: done.
This will solve this problem
Monday, 31 January 2011
Advanced SED Tutorial. Multiline Sed commands
1. If a line starts with / remove / sign.
$sed 's/^\/ *//g'
2. If a line starts with TABLESPACE remove it.
$sed 's/^TABLESPACE.*//g'
3. If line starts with ) proceeds with none or more spaces replace it with ) and next line.
$sed 's/^) */)\n\//g'
4. Replace ; with ; and next line.
$sed -i 's/;/;\n/g'
5. This command replaces ; \t\n\r or spaces and the / in a file to just \n /.
$sed ':a;N;$!ba;s/[^end];[\n\t\r ]*\//\n\//g'
First of all the filw is all read in come variable N and then we perform operation on it. Its a Multiline function.
6. Line starting with END or end or any of Upper or Lower combination of end, will be ended with a ;
$sed 's/^[eE][nN][dD].*/&;/g'
$sed 's/^\/ *//g'
2. If a line starts with TABLESPACE remove it.
$sed 's/^TABLESPACE.*//g'
3. If line starts with ) proceeds with none or more spaces replace it with ) and next line.
$sed 's/^) */)\n\//g'
4. Replace ; with ; and next line.
$sed -i 's/;/;\n/g'
5. This command replaces ; \t\n\r or spaces and the / in a file to just \n /.
$sed ':a;N;$!ba;s/[^end];[\n\t\r ]*\//\n\//g'
First of all the filw is all read in come variable N and then we perform operation on it. Its a Multiline function.
6. Line starting with END or end or any of Upper or Lower combination of end, will be ended with a ;
$sed 's/^[eE][nN][dD].*/&;/g'
Monday, 24 January 2011
Extrating Table Column Names in CSV format using PL/SQL
This could be useful for writing dynamic code to generate DDL or DML.
1. Create a table Hello_world
create table hello_world(
hello_id integer,
hello_desc varchar2(30)
);
2. Insert some values [this is not important though]
insert into hello_world (hello_id, hello_desc) values (1, 'Fawad');
insert into hello_world (hello_id, hello_desc) values (2, 'NAZIR');
3. Execute the following function:
Input: table name
Output: CSV format of column names
CREATE OR REPLACE FUNCTION INSERT_STATEMENTS(TABLE_NAME_INPUT IN CLOB) RETURN VARCHAR IS
RETURN_VAL CLOB;
BEGIN
SELECT
LISTAGG (COLUMN_NAME, ',') WITHIN GROUP (ORDER BY COLUMN_NAME) INTO RETURN_VAL
FROM
ALL_TAB_COLUMNS
WHERE
TABLE_NAME LIKE TABLE_NAME_INPUT
GROUP BY
TABLE_NAME;
RETURN RETURN_VAL;
END INSERT_STATEMENTS;
4. Call the method:
SET SERVEROUTPUT ON
declare dd CLOB;
begin
SELECT INSERT_STATEMENTS(UPPER('hello_world')) into dd FROM DUAL;
DBMS_OUTPUT.put_line(dd);
end;
1. Create a table Hello_world
create table hello_world(
hello_id integer,
hello_desc varchar2(30)
);
2. Insert some values [this is not important though]
insert into hello_world (hello_id, hello_desc) values (1, 'Fawad');
insert into hello_world (hello_id, hello_desc) values (2, 'NAZIR');
3. Execute the following function:
Input: table name
Output: CSV format of column names
CREATE OR REPLACE FUNCTION INSERT_STATEMENTS(TABLE_NAME_INPUT IN CLOB) RETURN VARCHAR IS
RETURN_VAL CLOB;
BEGIN
SELECT
LISTAGG (COLUMN_NAME, ',') WITHIN GROUP (ORDER BY COLUMN_NAME) INTO RETURN_VAL
FROM
ALL_TAB_COLUMNS
WHERE
TABLE_NAME LIKE TABLE_NAME_INPUT
GROUP BY
TABLE_NAME;
RETURN RETURN_VAL;
END INSERT_STATEMENTS;
4. Call the method:
SET SERVEROUTPUT ON
declare dd CLOB;
begin
SELECT INSERT_STATEMENTS(UPPER('hello_world')) into dd FROM DUAL;
DBMS_OUTPUT.put_line(dd);
end;
Latex on Ubuntu Linux...
I am using the follwing Ubuntu:
$ cat /proc/version
Linux version 2.6.32-24-generic-pae (buildd@palmer) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #42-Ubuntu SMP Fri Aug 20 15:37:22 UTC 2010
Its quite simple to install Latex on Ubuntu:
Just run the following command and let it finish, it might take quite some time.
$sudo apt-get install texlive-full
You are done. Now we need to test it:
Download a simple Latex example from the following link;
http://www.cs.technion.ac.il/~yogi/Courses/CS-Scientific-Writing/examples/simple/simple.htm
Run the following commands:
1. This command will compile the tex document and create a DVI file.
$latex simple.txt
2. To create a PDF out of it:
$pdflatex simple.tex
3. Time to view your pdf file:
$xpdf simple.pdf
Thanks!.
$ cat /proc/version
Linux version 2.6.32-24-generic-pae (buildd@palmer) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #42-Ubuntu SMP Fri Aug 20 15:37:22 UTC 2010
Its quite simple to install Latex on Ubuntu:
Just run the following command and let it finish, it might take quite some time.
$sudo apt-get install texlive-full
You are done. Now we need to test it:
Download a simple Latex example from the following link;
http://www.cs.technion.ac.il/~yogi/Courses/CS-Scientific-Writing/examples/simple/simple.htm
Run the following commands:
1. This command will compile the tex document and create a DVI file.
$latex simple.txt
2. To create a PDF out of it:
$pdflatex simple.tex
3. Time to view your pdf file:
$xpdf simple.pdf
Thanks!.
Thursday, 20 January 2011
Undefine a variable in Oracle / Undo a variable defination in Oracle
To undefine a user variable named FIRST, enter
UNDEFINE FIRST
To undefine two user variables named FIRST and SECOND, enter
UNDEFINE FIRST SECOND
UNDEFINE FIRST
To undefine two user variables named FIRST and SECOND, enter
UNDEFINE FIRST SECOND
Monday, 17 January 2011
Using Curl to connect to https site to download and Extract a tar file...
Here is the command:
curl -k -u_username_ -O _URL_ | tar -xvf
Example:
curl -k -uhellouser -O https://192.168.2.3:8443/svn/project/V5.0.1.tar.gz | tar -xvf
curl -k -u_username_ -O _URL_ | tar -xvf
Example:
curl -k -uhellouser -O https://192.168.2.3:8443/svn/project/V5.0.1.tar.gz | tar -xvf
Using Curl to download and Extract a tar file...
Here is the command:
$curl -k -O _Tar File Path_ | tar -xvf
Example:
$curl -k -O http://192.168.4.189:8443/svn/testproject/releases/V1.0.1.x.tar.gz | tar -xvf
$curl -k -O _Tar File Path_ | tar -xvf
Example:
$curl -k -O http://192.168.4.189:8443/svn/testproject/releases/V1.0.1.x.tar.gz | tar -xvf
Friday, 14 January 2011
Oracle Schema Disk Usage
Login to oracle using sqlplus and user: system
For example:
$sqlplus system/_Password_
Then run this query:
SQL> select sum(s.bytes)/1024/1024/1024 as size_in_gb, s.owner from dba_segments s group by s.owner order by size_in_gb desc;
For example:
$sqlplus system/_Password_
Then run this query:
SQL> select sum(s.bytes)/1024/1024/1024 as size_in_gb, s.owner from dba_segments s group by s.owner order by size_in_gb desc;
Thursday, 13 January 2011
Schema or User Disk Usage in Oracle
#!/bin/bash
########### USER INPUTS ###########
sys_username="system"
sys_password=""
schema_name_string="" #Input standard name used in all tables.
########### USER INPUTS ###########
filename="username.txt"
SUCCESS=0
FAILURE=1
IMPORT_EXECUTABLE=sqlplus
function init
{
echo "Initialising..."
IMPORT_EXECUTABLE_LOCATION=$( which ${IMPORT_EXECUTABLE} | grep "no ${IMPORT_EXECUTABLE}" )
if [[ -n "${IMPORT_EXECUTABLE_LOCATION}" ]] ; then
echo "Unable to execute import script as the import executable [${IMPORT_EXECUTABLE}] is not on the path"
exit ${FAILURE}
fi
}
function getUserName {
sqlplus -s /nolog << EOF
CONNECT $sys_username/$sys_password
SPOOL $filename
SET LINESIZE 100
SET PAGESIZE 50
select username from all_users where username like '%$schema_name_string%';
SPOOL OFF
exit;
EOF
}
function readUserNamesandCheckDiskUsage {
awk '{ print $0}' $filename | grep -v -E '(^USERNAME|^SQL|^[0-9]|^$|^-)' | (
IFS='
' read -d '' -a arr
for linename in ${arr[@]}
do
echo USERNAME $linename
echo USER "$linename's" DISK USAGE
sqlplus -s $linename/cmms << EOF
Select sum(bytes)/1024/1024 Mb, tablespace_name from user_segments group by tablespace_name;
exit;
EOF
done
)
}
function removeTempFile {
rm $filename
}
init
getUserName
readUserNamesandCheckDiskUsage
removeTempFile
exit ${SUCCESS}
########### USER INPUTS ###########
sys_username="system"
sys_password="
schema_name_string="
########### USER INPUTS ###########
filename="username.txt"
SUCCESS=0
FAILURE=1
IMPORT_EXECUTABLE=sqlplus
function init
{
echo "Initialising..."
IMPORT_EXECUTABLE_LOCATION=$( which ${IMPORT_EXECUTABLE} | grep "no ${IMPORT_EXECUTABLE}" )
if [[ -n "${IMPORT_EXECUTABLE_LOCATION}" ]] ; then
echo "Unable to execute import script as the import executable [${IMPORT_EXECUTABLE}] is not on the path"
exit ${FAILURE}
fi
}
function getUserName {
sqlplus -s /nolog << EOF
CONNECT $sys_username/$sys_password
SPOOL $filename
SET LINESIZE 100
SET PAGESIZE 50
select username from all_users where username like '%$schema_name_string%';
SPOOL OFF
exit;
EOF
}
function readUserNamesandCheckDiskUsage {
awk '{ print $0}' $filename | grep -v -E '(^USERNAME|^SQL|^[0-9]|^$|^-)' | (
IFS='
' read -d '' -a arr
for linename in ${arr[@]}
do
echo USERNAME $linename
echo USER "$linename's" DISK USAGE
sqlplus -s $linename/cmms << EOF
Select sum(bytes)/1024/1024 Mb, tablespace_name from user_segments group by tablespace_name;
exit;
EOF
done
)
}
function removeTempFile {
rm $filename
}
init
getUserName
readUserNamesandCheckDiskUsage
removeTempFile
exit ${SUCCESS}
Command to remote login into Oracle DB using sqlplus...
$ sqlplus _username_/_password_@//_servername or ipaddredd_:_port_/_SID_
example:
$ sqlplus system/hello@//10.10.4.15:1521/INSTANCE
Enjoy.
example:
$ sqlplus system/hello@//10.10.4.15:1521/INSTANCE
Enjoy.
Thursday, 6 January 2011
Finding Searching Table name or Column name in Oracle
Try:
select table_name from user_tables where table_name like '%myString%';
select * from all_tab_columns where COLUMN_NAME like '%myString%'
Thanks...
select table_name from user_tables where table_name like '%myString%';
select * from all_tab_columns where COLUMN_NAME like '%myString%'
Thanks...
Tuesday, 4 January 2011
Opensource Forex Trading...
Open source Linux components (Marketcetra, openFAST, QuickFIX, MySQL etc) used in Forex.
Thanks!
Thanks!
Subscribe to:
Posts (Atom)
Azure OpenAI Architecture Patterns & Deployment Patterns
Sharing some useful links that will help customers architect Azure OpenAI solution using the best practices: (1) Azure OpenAI Landing Zone r...
-
Setting up a MPI cluster on Ubuntu involves the following steps: 1. Install OpenMPI on all machines. $sudo apt-get install libopenmpi-de...
-
Very Useful Link: http://people.cc.ku.edu/~grobe/intro-to-LSL/index.html#particle Using the Linden Script Language This page is a short...
-
float p_size = 0.1; default { state_entry() { llSay(0, "Hello, Avatar!"); llSetPrimitiveParams( [ PRIM_...