iSelfSchooling.com  Since 1999     References  |  Search more  | Oracle Syntax  | Free Online Oracle Training

    Home      .Services     Login       Start Learning     Certification      .                 .Share your BELIEF(s)...

 

. Online Accounting        .Copyright & User Agreement   |
    .Vision      .Biography     .Acknowledgement

.Contact Us      .Comments/Suggestions       Email2aFriend    |

 

Online Oracle Training for beginners and advanced - The most comprehensive Oracle tutorial

The authors do not guarantee or take any responsibility for the accuracy, or completeness of the information.

 

 

 

 

 

 

 

Lesson 16

‘I object to violence because when it appears to do good, the good is only temporary; the evil it does is permanent.’ Gandhi

The Oracle 10g database more features that are important to note

Dynamic Performance Views

The V$FAST_START_TRANSACTIONS view

Use the V$FAST_START_TRANSACTIONS view to monitor (in real-time) normal transaction rollback and transaction recovery by SMON.

SQL> SELECT * FROM v$fast_start_ transactions;

 

The V$FAST_START_SERVERS view

Use the V$FAST_START_SERVERS view to display historical information about transaction recovery.

SQL> SELECT * FROM v$fast_start_servers;

 

The DBA_ENABLED_TRACES view

Use the DBA_ENABLED_TRACES view to display enabled and disabled trace.

SQL> SELECT * FROM dba_enabled_traces;

 

Session-Based Tracing

Now, you can consolidate the output tracing to a single output using the TRCSESS command line and then use the TKPROF tool to read it.

$ trcsess output=iself.trc clientid=iself

 

The DBMS_MONITOR statistics package

In the Oracle 10g database, you can control additional tracing and statistics gathering based on client identifier:

SQL> BEGIN

dbms_monitor.client_id_stat_enable (your_client_id);

END;

/

$ trcsess output=iself.trc clientid=iself

 

Client Connection

If your platform is using native TCP/IP, then you do not need to have tnsnames.ora or sqlnet.ora configured in the client machine.

SQL> CONNECT iself/schooling@//host_name:port/service_name

The default port number is 1521

SQL> CONNECT iself/schooling@//myserver/school -- Assuming that myserver is the name of your database server and school is your service name.

 

Flushing the BUFFER CACHE memory

You should never do this unless you know the ramifications. It is useful on the test environment to determine the effects of changes in queries or application.

SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;

 

Regular Expression

It is a method for simple and complex patterns for searching and manipulating a text. You can search, extract, format, and manipulate a text in the database. At the beginning, it appears that the syntax is not very intuitive but by second look, it may look easy. The technique more reflects as UNIX style regular expressions.

Interfaces: Oracle Regular Expressions are implemented by the following functions available in SQL and PL/SQL.

· REGEXP_LIKE,

· REGEXP_REPLACE,

· REGEXP_INSTR, and

· REGEXP_SUBSTR

Meta-characters: The following is a list of supported Oracle Meta-characters use in Oracle Regular Expressions.

Syntax

Description

Classification

Match any character

Dot

a?

Match ‘a’ zero or one time

Quantifier

a*

Match ‘a’ zero or more time

Quantifier

a+

Match ‘a’ one or more time

Quantifier

a|b

Match either ‘a’ or ‘b’

Alternation

a{m}

Match ‘a’ exactly m times

Quantifier

a{m,}

Match ‘a’ at least m times

Quantifier

a{m,n}

Match ‘a’ between m and n times

Quantifier

[abc]

Match either ‘a’ or ‘b’ or ‘c’

Bracket Expression

(…)

Group an expression

Sub-expression

 

Match nth sub-expression

Back-reference

[:cc:]

Match character class in bracket expression

Character Class

[.ce.]

Match collation element in bracket expression

Collation Element

[=ec=]

Match equivalence class in bracket expression

Equivalence Class

NOTE:

It is important to realize that the results of a particular regular expression query could be different under a different locale such as changing NLS_SORT, Case and Accent Sensitivity, etc.

 

Character Classes: They are sensitive to the underlying character set such as the [:lower:] character class.

The following is a list of Oracle supports character classes, based on character class definitions in NLS classification data:

Character Class Syntax

Meaning

[:alnum:]

All alphanumeric characters

[:alpha:]

All alphabetic characters

[:blank:]

All blank space characters.

[:cntrl:]

All control characters (nonprinting)

[:digit:]

All numeric digits

[:graph:]

All [:punct:], [:upper:], [:lower:], and [:digit:] characters.

[:lower:]

All lowercase alphabetic characters

[:print:]

All printable characters

[:punct:]

All punctuation characters

[:space:]

All space characters (nonprinting)

[:upper:]

All uppercase alphabetic characters

[:xdigit:]

All valid hexadecimal characters

Example: Consider a simple query to convert the ‘McLean’ city name to a more readable format. You should look for any instance for a lower case letter immediately followed by an upper case letter. Your query should record these two letters in back-references by using sub-expressions, then replaces the first one, followed by a space, then followed by the second letter:

SQL> SELECT

REGEXP_REPLACE(‘McLean’,

‘([[:lower:]])([[:upper:]])’, ‘1 2’) as “City”

FROM dual;

 

Equivalence Class: It allows searching for all characters that have a common base letter.

Example:

SQL> SELECT

REGEXP_SUBSTR

(‘iSelfSchooling NOT ISelfSchooling’, ‘[[=i=]]SelfSchooling’) as name

FROM dual;

 

Datatypes’ functions support

Keep this in your mind that these functions support CHAR, VARCHAR2, CLOB, NCHAR, NVARCHAR, and NCLOB datatypes.

 

The REGEXP_LIKE function

It returns a Boolean indicating whether the pattern matched or not.

Example: Consider to write an expression that could search for common inflections of the verb ‘try’. The following regular expression will match try, trying, tried, and tries.

SQL> SELECT

REGEXP_LIKE (‘We are trying to make the subject easier.’,

‘tr(y(ing)? | (ied) | (ies))’) as REGEXT_SAMPLE

FROM dual;

 

The REGEXP_SUBSTR function

It returns the actual data that matches the specified pattern.

Example: Consider to write an expression that could return the ‘trying’ specified pattern.

SQL> SELECT

REGEXP_SUBSTR (‘We are trying to make the subject easier.’,

‘tr(y(ing)? | (ied) | (ies))’) as REGEXT_SAMPLE

FROM dual;

 

The REGEXP_INSTR function

It returns the character position of either the beginning or end of the match.

Example: Consider to write an expression that could return the position of ‘trying’ specified pattern.

SQL> SELECT

REGEXP_INSTR (‘We are trying to make the subject easier.’,

‘tr(y(ing)? | (ied) | (ies))’) as REGEXT_SAMPLE

FROM dual;

 

The REGEXP_REPLACE function

It looks for an occurrence of a regular expression and replaces it with the contents of a supplied text literal.

Example:

SQL> SELECT

REGEXP_REPLACE (‘We are trying to make the subject easier.’,

‘.’, ‘ for you.’ ) as REGEXT_SAMPLE

FROM dual;

Or, query a list of all employees’ name that hired between 1996 and 1999.

SQL> SELECT ename FROM emp

WHERE REGEXP_REPLACE

(TO_CHAR(hire_date, ‘YYYY’), ‘^199[6-9]$’);

You used ‘^’ to indicate that the beginning of the line has to be 199, and [-] with $ to specify range of valid characters.

 

Occurrence in the REGEXP functions

All functions take an occurrence that specifies you require the nth matching expression in REGEXP_SUBSTR and REGEXP_INSTR, the default for which is 1.

Example: Consider extracting the 3rd field being the Oracle system idenfication in a column.

SQL> SELECT

REGEXP_SUBSTR(‘system/password@myhost:1521:mysid’,

‘[^:]+’, 1, 3) as “SID name”

FROM dual;

You also can the REGEXP function in the DDL statement. Consider to configure a column to allow only alphabetical characters within a VARCHAR2 column.

SQL> CREATE TABLE mytest (c1 VARCHAR2(20),

CHECK (REGEXP_LIKE(c1, ‘^[[:alpha:]]+$)));

 

Case-insensitive sorting

In the Oracle 10g database, you can use the ALTER SESSION command to change NLS_SORT for your session to use case-insensitive binary sorting.

Connect as ISELF, and insert a record with employee’s name lower case.

SQL> CONNECT iself/schooling

SQL> INSERT INTO emp

VALUES (9991, ‘scott’,’CLERK’, 7698,

TO_DATE(’04-DEC-87’), 765.5, null, 30);

SQL> COMMIT;

Query the employees’ name.

SQL> SELECT ename FROM emp;

Now, change the NLS_SORT parameter to case-insensitive binary.

SQL> ALTER SESSION SET NLS_SORT = binary_ci;

Query the employees’ name again.

SQL> SELECT ename FROM emp;

Check the scott employee’s name before and after the ALTER SESSION command.

 

Quote Operator q

Now, you can eliminate previous additional quotation string. See the following example:

SQL> UPDATE customers

SET comments =

q’X In this example, ‘X’ is used as the quotation mark delimiter. X’;

WHERE ID = 100;

SQL> COMMIT;

 

The UTL_MAIL package

You can send e-mail to a user. In order to use the package, you should have already run the utlmail.sql and prvtmail.plb scripts located in the $ORACLE_HOME/rdbms/admin directory.

Connect as sysdba and run the above scripts.

SQL> CONNECT / AS SYSDBA

SQL> @$ORACLE_HOME/rdbms/admin/utlmail.sql

SQL> @$ORACLE_HOME/rdbms/admin/prvtmail.plb

Write a PL/SQL block to test a value of a binding variable. If it is less than 10, then email a message that we are going to have a shortage of books.

SQL> VARIABLE number_of_items NUMBER

SQL> VARIABLE my_message VARCHAR2

SQL> BEGIN

:number_of_items := 8;

:my_message := ‘There is a shortage of books. They are: ‘

|| :number_of_items );

IF :number_of_items < 10 THEN

-- email the responsible person

utl_mail.send (

SENDER => ‘help@iselfschooling.com’,

RECIPIENTS => ‘help@iselfschooling.com’,

SUBJECT => ‘Make orders’,

MESSAGE => :my_message);

END IF;

END;

/

 

 

 

“Let me not be understood as saying that there are no bad laws, nor that grievances may not arise for the redress of which no legal provisions have been made. I mean to say no such thing. But I do mean to say that although bad laws, if they exist, should be repealed as soon as possible, still, while they continue in force, for the sake of example they should be religiously observed.” Abraham Lincoln (1809 - 1865)

Questions:

Questions on

The Oracle 10g database more features that are important to note

Q: How do you use the V$FAST_START_TRANSACTIONS view to monitor (in real-time) normal transaction rollback and transaction recovery by SMON?

Q: How do you use the V$FAST_START_SERVERS view to display historical information about transaction recovery?

Q: How do you use the DBA_ENABLED_TRACES view to display enabled and disabled trace?

Q: What is case-insensitive sorting in the Oracle 10g?

Q: What is Quote Operator q?

Q: What does the UTL_MAIL package?