Introducing Oracle Regular Expressions. An Oracle White Paper September 2003
|
|
|
- Imogen Barber
- 9 years ago
- Views:
Transcription
1 Introducing Oracle Regular Expressions An Oracle White Paper September 2003
2 Introducing Oracle Regular Expressions Introduction...4 History of Regular Expressions...4 Traditional Database Pattern Matching...5 Oracle Regular Expressions...6 Enhancing the Data Flow...6 Database to Client...7 Database Update...7 Client to Database...7 Oracle Regular Expressions Key Features...8 Interfaces...8 Metacharacters...9 Locale Support...9 Character sets Case and Accent Sensitivity Range Character Class Collation Element Equivalence Class Using Regular Expressions in Oracle Function Overview REGEXP_LIKE REGEXP_SUBSTR REGEXP_INSTR REGEXP_REPLACE Arguments Offset Occurrence Multiline Newline Using with DDL Constraints Indexes Views Using with PL/SQL Performance Considerations Advanced Topics Architecture Introducing Oracle Regular Expressions Page 2
3 Looping behaviour Backreferences SQL Text Literals SQL*Plus NULL and the empty string Conclusion Introducing Oracle Regular Expressions Page 3
4 Introducing Oracle Regular Expressions INTRODUCTION Regular expressions provide a powerful means of identifying a pattern within a body of text. A pattern describes what the text to identify looks like and could be something quite simple, such as that which describes any three-letter word, to something quite complex, like that which describes an address. Oracle Regular Expressions provide a simple yet powerful mechanism for rapidly describing patterns and greatly simplifies the way in which you search, extract, format, and otherwise manipulate text in the database. The remainder of this document introduces Oracle regular Expressions and describes how to leverage their power using SQL and PL/SQL. History of Regular Expressions If you are familiar with UNIX or Perl then you almost certainly have used regular expressions to search for or manipulate text data. Indeed, the indispensable searching tool grep shares its middle two initials with the technology, standing for Global Regular Expression Print. Adoption of regular expressions by the mainstream developer community was fueled mostly by web based technologies and the need to manipulate text data coming from and going to the browser. With the advent of CGI, web programmers were able to leverage regular expression capabilities from UNIX tools in order to perform important tasks that could not be done as easily before. While an impressive list of languages, such as Java, PHP, XML, and Python, have incorporated support for regular expressions, Perl stands out as the one language that helped their popularization beyond UNIX based platforms. Pattern matching with regular expressions can be applied to all kinds of real word problems. They are used heavily in web applications to verify, parse, manipulate, and format data coming to and from the middle tier; a surprisingly large amount of middle tier processing is taken up with such string processing. They are used in bioinformatics to assist with identifying DNA and protein sequences. Linguists use regular expressions to aid research of natural languages. Server configuration is often done in terms of regular expressions such as in a mail server to help identify potential spammers, and are perhaps also used by the spammers themselves to effortlessly collect innocent victims addresses from Internet based data stores. Many protocol and language standards accept regular expressions as filters Introducing Oracle Regular Expressions Page 4
5 and validation constructs. In short, it is hard to imagine an application that could not benefit from the functionality that regular expressions offer. Historically, regular expressions have been the domain of expert users, such as administrators or developers. Casual application users will most likely never come across them but that is not to say that they could not benefit from their power, it is mainly that the syntax is often not very intuitive to non-experts. This appears to be changing; everyone should take a second look to see if there is a task that could be simplified by using regular expressions. Indeed, many string searching and manipulation tasks cannot be performed without regular expressions. How would you attempt to search for all Internet addresses in a document? Most applications do not allow you to perform such pattern matching but once you become accustomed to their availability, you will surely wonder how you ever managed to live without them. Traditional Database Pattern Matching A simple form of pattern matching has long been part of Oracle SQL through use of the LIKE condition that provides two variants of wildcarding with the zero or more of any character percent (%), and any character underscore (_). Such characters are termed metacharacters as they describe the pattern rather than partake in it. A simple example could be LIKE 'abc% that matches any row that beginning with abc. In many cases, LIKE is limiting and other solutions have been sought as a means to perform more complex queries. Suppose you wanted to construct a query to search the company employee database for both John and Jon. There is no way to specify a single pattern that represents these variants using LIKE as there is no means to express that a particular portion of text does not have to be present to prove a match, in this case the optional h. Note that LIKE Jo%n is not restrictive enough for our task as it would also match Joan and Johan. To remedy this limitation, applications could perform pattern matching operations by constructing complex SQL or PL/SQL logic. This approach is both hard to write and difficult to maintain as even the simplest of logic could consume hours of development time. Often there is no way to represent a pattern in SQL alone, consider how difficult it would be to extract all addresses from a body of text using SQL. The query would be almost impossible and would translate to many lines of PL/SQL source. It should be noted that although Oracle already provides a simple PL/SQL pattern matching package (OWA_PATTERN) it is far from being a full regular expression implementation and does not support several key required features such as alternation, the OR condition that allows matching either of two expressions. In this respect it is limiting in its ability to perform complex pattern matching operations. It is still possible to obtain good regular expression support in the database by creating user-defined functions to publicly available regular expression libraries. While fine as a temporary solution, this approach has many limitations and issues. Callouts are difficult to develop, deploy, maintain, and in most cases, difficult for Introducing Oracle Regular Expressions Page 5
6 the vendor to support. As they are not native to the database, callout solutions are rarely able to inherit database features such as locale support, performance enhancements, and most likely cannot handle larger datatypes. Perhaps the most limiting is that applications built on databases cannot rely on the callouts being available so it is difficult for developers to make use of them without requiring that they be deployed, often a risk not worth taking. Some Oracle based applications use third party regular expression technology at the client level to provide pattern matching capabilities. Typically, data from the database is being extracted to a client, manipulated with regular expressions then passed on to another source, or even turned around and written right back to the database. Alternatively, data from a source external to the database is often manipulated with regular expressions before it is written in to the database, or possibly even filtered and rejected as input. It is evident that this approach is far from ideal as data is being pulled back and forth between database and client primarily in order to access regular expression functionality. In a similar manner to that dictated by the object-oriented paradigm, it is desirable that this logic be as close to the data as possible. Oracle Regular Expressions The web paradigm has reached a reasonably stable state in terms of major software components. Most large-scale web applications consist of a database backend, a web server middle tier with access to a database, and the front end. While the middle tier technology employed tends to be quite dynamic in nature, ranging from simple CGI to large scale Java applications, the backend remains a solid component and in most cases is a database that understands SQL or a similar query language. Oracle Regular Expressions build on the limitations of existing solutions by providing a sophisticated set of metacharacters for describing more complex patterns than previously possible, all native to the database. Leveraging their power, an application will not only run more efficiently but it can have an improved data flow and be more robust. Enhancing the Data Flow While middle tier technologies have long had the ability to perform regular expression searching, support in the backend database is a valuable and often overlooked consideration. The introduction of Oracle Regular Expressions brings the database closer to the Internet by providing enhanced string manipulation features right within the database, providing the flexibility to perform regular expression based string manipulation at any tier. Oracle Regular Expressions can be used in many data manipulation scenarios such as updating, selecting, and formatting for presentation. These scenarios are described in the following sections in terms of the data flow. Introducing Oracle Regular Expressions Page 6
7 Database to Client Regular expressions are especially helpful in a web application where data from the database needs to be filtered and formatted for presentation. As an example, consider an application that selects a phone number stored within a CHAR(10) column as a series of 10 digits in the format XXXXXXXXXX. The requirement is to format this column as (XXX) XXX-XXXX for presentation to the end user. Should this processing occur in the middle tier then other clients who have access to the same data will need to duplicate the formatting logic. A DBA querying the table through SQL*Plus, for example, will only be able to view the format as stored on disk without incorporating their own means of formatting. This forces all clients of the data to have special knowledge of how the telephone number is stored within the database; when clients have such an expectation it becomes difficult to change the backend format. As a means to resolve this it would be a trivial task to create a database view that uses the regular expression enabled replace function (REGEXP_REPLACE) to reformat the telephone number. All clients of the data will then simply need to query the view and will benefit from the centralized logic providing them only the pre-formatted version of the telephone number. Regular expressions are often used in a client to filter and refine a result set to the desired rows. With the regular expression enabled LIKE condition (REGEXP_LIKE) this filtering can now easily occur within the database directly on the data minimizing network data flow and putting the job of getting the correct data right where it ought to be, in the hands of the database. Moving complex logic closer to the data in this manner creates a more robust environment as data not targeted for the end user does not have to leave the database and client processing is reduced. Database Update Oracle Database 10G allows you to perform updates in terms of regular expressions. Where traditionally it would have been easiest to select the query set, perform regular expression based updates within a client and write the results back to the database, it is now possible to perform all of this in a single update statement. The data never has to leave the database bringing benefits such as reduction in network traffic, tighter security, and improved performance. Client to Database Where regular expressions normally play a part in data flowing from client to database is in validating and formatting data for storage. We may want to validate that a credit card number or an address matches a certain pattern or we may want to reformat a user provided telephone number into a format that will make more sense when stored in the database. Much like the flow from database to client, while it is possible to perform such manipulation on the middle tier, only clients of the middle tier would have access to this logic. Introducing Oracle Regular Expressions Page 7
8 When a regular expression describes the required format for data in a column, the regular expression itself is a property of the data and therefore should not be externalized in client logic. With column constraints defined in terms of regular expressions, we can bulletproof our database so that only data matching a certain pattern will be allowed into a table irrespective of the source that the data originates from, be it an external client or even an internal PL/SQL routine. With the above scenarios in mind, it is evident that the combination of Oracle Regular Expressions and SQL is an extremely powerful one that can drastically change the way in which string manipulation and pattern matching is performed within an application. ORACLE REGULAR EXPRESSIONS KEY FEATURES Most regular expression implementations are based to some extent on the documented behaviour of Basic and Extended Regular Expressions (BRE and ERE) as described in the POSIX 1 standard, often referred to as UNIX style regular expressions. The standard leaves plenty of room for extensions that most regular expression implementations readily take advantage of which means that in general, no two implementations are alike. It is because of this incompatibility issue that Oracle Regular Expressions are based on the POSIX ERE definition. This assures that any Oracle Regular Expression will have the same behaviour on similarly conformant implementations. POSIX style regular expressions are currently not part of the SQL standard 2. The standard does however introduce the SIMILAR predicate for pattern matching which could be considered a version of LIKE with regular expression support. SIMILAR maintains support for the LIKE behaviour of percent (%) and underscore (_) and adds some features that are found in POSIX but misses some key important features such as backreferences, interval quantifiers, and anchors. Furthermore, the standard has no means to locate, extract, or replace the matching pattern as SIMILAR only places focus on proving the existence of a pattern, in the same manner as LIKE. Interfaces Oracle Regular Expressions are implemented by the following interfaces available in both SQL and PL/SQL: SQL Function REGEXP_LIKE Description Determine whether pattern matches REGEXP_SUBSTR Determine what string matches the pattern REGEXP_INSTR Determine where the match occurred in the string REGEXP_REPLACE Search and replace a pattern Table 1 Introducing Oracle Regular Expressions Page 8
9 For detailed information on the valid arguments and syntax, refer to the sections on Conditions and Functions in the SQL Reference 3. Metacharacters For a complete list of supported metacharacters please refer to the Appendix C of the SQL Reference 3. They are listed here for reference and will not be described further. Syntax Description Classification. Match any character Dot a? Match a zero or one time Quantifier a* Match a zero or more times Quantifier a+ Match a one or more times 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 Subexpression \n Match nth subexpression Backreference [: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 Locale Support Table 2 Locale support refers to how the regular expression will behave under the properties of a given character set, language, territory, and sort order. As regular expressions are for matching text, and text is not limited to English, it stands to reason that they should be able to handle text in any language or character set and that the unique properties of that locale should be honoured. Most standards are rather vague when it comes to supporting different locales. POSIX, while stating that there are some considerations that should be taken to support locales, does not match up to the locale definition that Oracle provides. Introducing Oracle Regular Expressions Page 9
10 Oracle Regular Expression pattern matching is sensitive to the underlying locale defined by the session environment. This affects all aspects of matching including whether it will be case or accent insensitive, whether a character is considered to fall within a range, what collation elements are considered valid, and so on. The engine is also strictly character based, as an example the dot (.) will match a single character in the current character set and never a single byte of the data. It is important to realize that the results of a particular regular expression query could be different under a different locale. Table 3 shows how certain features are affected by the underlying locale and what property of the locale affects it. The Character Set dependency refers to the database character set or national character set while Sort Order refers to the setting of NLS_SORT. If NLS_SORT is set to BINARY then the matching always follows the binary properties of the character set. Match Type Character based matching Character classes String comparisons Range matching Collation element Equivalence class Dependency Character Set Character Set Sort Order Sort Order Sort Order Sort Order Table 3 Character sets All Oracle character sets are fully supported by Oracle Regular Expressions. This includes all multibyte character sets, variants of Unicode such as UTF-8 (AL32UTF8) and UTF-16 (AL16UTF16), and all shift sensitive character sets. Metacharacters always operate on the data in terms of characters and never bytes. As the input character set is always that of the database character set (or national character set), there is no way to directly refer to arbitrary byte values or characters from other character sets. Case and Accent Sensitivity The regular expression functions are sensitive to NLS_SORT as described in Table 3. In matching string literals, if NLS_SORT consider two characters equal, then so does the regular expression function. This is a very useful feature that is not available in any other means of pattern matching within the Oracle Database. As an example, consider the following statement: Introducing Oracle Regular Expressions Page 10
11 ALTER SESSION SET NLS_SORT=GEN ERIC_BASELETTER; SELECT REGEXP_SUBSTR( Café, cafe ) FROM dual; -> Café The query returned the entire string Café as the NLS_SORT setting equates C to c that differ in case, and also é to e that differ in accents. Case sensitivity can always be overridden at a statement level using the case sensitivity match options. Range When a range is specified within a bracket expression, characters are considered to be in or out of the range depending on the current setting of NLS_SORT. The default value for NLS_SORT derives itself from the setting of NLS_LANGUAGE, which is in turn normally derived from the client environment variable NLS_LANG. While the default language sort is normally useful for sorting purposes, it is not useful for comparisons such as those that take place when determining whether a certain character falls between the range end points. As an example, should NLS_LANGUAGE be set to FRENCH then the default sort order is FRENCH where ordering is as follows a < A < b < B. Should we specify a range [a-z] then following this ordering it can be noted that every alphabetic character other than Z will fall into this range; this is most likely not the desired behaviour. Better sorts for ranges would be those that are case insensitive that treat case variants to be equal. This can be achieved by appending _CI to the end of a sort name such as setting NLS_SORT to FRENCH_CI. Character Class Character classes, such as [:alpha:], are sensitive to the underlying character set. Each character within a character set has a certain number of properties, which can be extracted using regular expression character classes. For example, most of the Asian multibyte character sets have full width variants of numeric characters, both the half width and full with variants are considered to be digits and will match the [:digit:] character class. Also, rather than using [a-za-z] to define all alphabetical characters, you could use [:alpha:] and be portable across different languages and character sets as [:alpha:] consists of all alphabetical characters in the current character set. As a usage example, consider a simple query to convert Java names enumerated in a table to a more readable format. This works by looking for any instance of a lower case letter immediately followed by an upper case letter, something that is rarely found in English (short of McDonald) but often used the Java namespace. It records these two letters in backreferences by using subexpressions, then replaces the first letter, followed by a space, followed by the second letter: SELECT REGEXP_REPLACE( StringBuffer, ([[:lower:]])([[:upper:]]), \1 \2 ) Introducing Oracle Regular Expressions Page 11
12 FROM dual; -> String Buffer For a complete list of character classes see Appendix C of the SQL Reference 3 Collation Element A collation element is any valid letter within a given alphabet. Any valid collation element is allowed, for example, cs is considered a single letter in Hungarian but not in French: ALTER SESSION SET NLS_SORT=XHUNGARIAN; SELECT REGEXP_SUBSTR( cs, [[.cs.]]) FROM dual; -> cs ALTER SESSION SET NLS_SORT=FRENCH; SELECT REGEXP_SUBSTR( cs, [[.cs.]]) FROM dual; -> ORA-12731: invalid collation class This is primarily useful in ranges where you only want to match certain letters in an alphabet where one of the endpoints is a multi-letter collation element. In traditional Spanish, for example, ch is considered a single letter but if we simply specified ALTER SESSION SET NLS_SORT=XSPANISH; SELECT REGEXP_SUBSTR( ch, [ch] ) FROM dual; -> c This would match a single 'c' as an individual letter and never 'ch'. It is for this reason that POSIX introduced the collation element to the bracket expression. ALTER SESSION SET NLS_SORT=XSPANISH; SELECT REGEXP_SUBSTR( ch, [[.ch.]] ) FROM dual; -> ch For a list of valid collation elements see Table A-10 on Monolingual Linguistic Sorts in the Globalization Guide 4. For an introduction to sorting and collation elements see the Oracle white paper on linguistic sorting 5. Equivalence Class The equivalence class allows searching for all characters that have a common base letter. Equivalence class is sensitive to NLS_SORT and works by converting both the source and destination characters to their base (lower case with accents removed) before performing a comparison. As the character is converted to lower case, it can also be used to isolate accent and case sensitivity to a single character. SELECT REGEXP_SUBSTR('Oracle', '[[= o=]]racle') FROM dual; Introducing Oracle Regular Expressions Page 12
13 -> Oracle USING REGULAR EXPRESSIONS IN ORACLE Function Overview This section introduces the functions that provide Oracle Regular Expressions support and shows some simple usage scenarios. All functions have similar signatures and support CHAR, VARCHAR2, CLOB, NCHAR, NVARCHAR, and NCLOB datatypes. REGEXP_LIKE The REGEXP_LIKE condition is a little different to the other REGEXP functions in that it only returns a Boolean indicating whether the pattern matched in the given string or not. No details on how or where the match occurred is provided. There is only one optional argument being the match option, position and occurrence are redundant. Consider a usage example where you were given the task to write an expression that could search for rows containing common inflections of the verb fly. The following regular expression would do the job nicely matching fly, flying, flew, flown, and flies. SELECT c1 FROM t1 WHERE REGEXP_LIKE(c1, fl(y(ing)? (ew) (own) (ies)) ); REGEXP_SUBSTR This function returns the actual data that matches the specified pattern. In cases where it is not obvious how the pattern matched, REGEXP_INSTR can be called to locate the exact character offsets. Using the scenario above: SELECT REGEXP_SUBSTR( the bird flew over the river, fl(y(ing)? (ew) (own) (ies)) ) FROM dual; -> flew REGEXP_INSTR The REGEXP_INSTR function performs a regular expression match and returns the character position of either the beginning or end of the match. Unlike INSTR, REGEXP_INSTR is not able to work from the end of a string. When analyzing the return value it often helps to view the match position as being the position right before the character count returned. Special care must be taken when using the output of this function as input to other SQL functions as they might not interpret the values in the same manner. Some common scenarios regarding the return values are described below. Introducing Oracle Regular Expressions Page 13
14 Empty String Any regular expression can match the empty string in a particular location. This concept does not exist in other pattern matching functions so it is important to know how to interpret the return results of REGEXP_INSTR when an empty string match occurs. Consider the following expression: SELECT REGEXP_INSTR('abc', 'd?') FROM dual; -> 1 This function call returns 1 indicating that the match commenced at the first character. We know that really d? matches the empty string at the beginning of abc so if we apply the rule that the match commences at the position just before the character indicated by the return value then this will become a little clearer. Issuing the same query indicating that the return value be the end of the match returns 1, the match also completes on the first character. SELECT REGEXP_INSTR('abc', 'd?', 1, 1, 1) FROM dual; -> 1 Now we know that the match starts just before character 1 and ends just before character 1 meaning that this expression matched the empty string just before the a. Last Character The position of the end of a match consumes the last character in that match. As the actual position of the match is just before the return character, REGEXP_INSTR can return a character count that does not necessarily exist within the string. As an example, note the return value of the following query: SELECT REGEXP_INSTR('abc', 'abc', 1, 1, 1) FROM dual; -> 4 Although there are only 3 characters in abc the return value was 4. The match should be interpreted as ending before the 4 th character or right after the 3 rd character. REGEXP_REPLACE The power of Oracle Regular Expressions really becomes evident when coupled with the ability to replace the pattern matched. This function works by looking for an occurrence of a regular expression and replacing it with the contents of a supplied text literal. The replacement text literal can also contain backreferences to subexpressions included in the match giving extremely granular control over your search and replace operations. Introducing Oracle Regular Expressions Page 14
15 Simple HTML Filter With REGEXP_REPLACE it is simple to filter out certain parts of data. This example shows how a very simple HTML filter could be written. SELECT REGEXP_REPLACE (c1, <[^>]+> ) FROM t1; Using Backreferences References to matched subexpressions are valid within the replacement string and are identified as \n where n refers to the nth subexpression. In order to specify the backslash (\) to be part of the replace expression, it must be escaped with the backslash as in '\\'. Arguments Oracle Regular Expression functions take a number of arguments that affect the way in which matching will occur. All functions take the mandatory source string and regular expression and the optional match parameters but beyond these there are several other important arguments. All arguments have defaults but in SQL there is no mechanism to allow you to explicitly indicate that you want the default behaviour without leaving the arguments out of the function call. This means that if you want to specify the right most argument but require the default behaviour of those proceeding, you are required to explicitly define the default values. Both the source string and the regular expression itself are SQL character expressions and can just as easily come from a column than a text literal. The regular expression itself must be valid otherwise the function will return a compilation error. Offset All REGEXP SQL functions provide an offset argument to indicate the character position to commence the matching. It should be noted that the caret (^) anchor is always tied to the beginning of the string rather than the offset so a pattern that is anchored with an offset greater than 1, will never match: SELECT REGEXP_SUBSTR('bbb', '^b', 2) FROM dual; -> NULL One exception to this rule is when the multiline option is set, as the anchor could match an embedded newline character within the string. Occurrence All functions also take an occurrence that specifies you require the n th matching expression in REGEXP_SUBSTR and REGEXP_INSTR, the default for which is 1. For REGEXP_REPLACE the occurrence defaults to 0 meaning replace all matching expressions, otherwise it will only replace the expression specified in the Introducing Oracle Regular Expressions Page 15
16 occurrence parameter. An occurrence for which there exists no match will return NULL. The REGEXP_INSTR function takes an optional position parameter to indicate whether the beginning (0) or end (1) of the match is the required return value. The default is the beginning of the match. Occurrence is particularly useful when working with delimited text, such as newline, comma, or colon delimited text, as you can extract any arbitrary line or field. Consider this example that extracts the 5 th field being the full name from a typical entry in the colon delimited UNIX password file: SELECT REGEXP_SUBSTR( joe:x:123:123:joe Bloggs:/home/joe :/bin/sh, [^:]+, 1, 5) FROM dual; -> Joe Bloggs Multiline The multiline match option changes the behaviour of the anchors so that they match at the start and end of each line in the string rather than the start and end of the entire string. This setting is useful when you have newline delimited text data stored in the database and you want to perform a search on a line basis. As an example, consider a database where is archived in its raw format within a CLOB row, one mail per row. The task at hand is to extract the Subject header from each row. We might be tempted to start out by writing the expression as ^Subject:.*$. This expression would work wonders with grep as the regular expression is applied to each line in the specified file rather than the entire document. In Oracle, the expression is applied to the entire contents of the given string. In this case the anchors will match only at the first and last characters within the whole text and the expression would fail to match so in order for this to work properly we need to enable multiline mode by specifying m in the match options parameter. Our new expression would look like this: SELECT REGEXP_SUBSTR(mail, ^Subject:.*$, 1, 1, m ) FROM mail_table; Newline The default behaviour of the dot (.) is to match any character except the newline character, as defined by the underlying operating system. Should a column contain newline characters, the result of the expression '.*' will be to match only up to, and not including, the first newline character. The match parameter 'n' indicates that the dot (.) should match everything, including the newline character. A simple example that demonstrates this behaviour is shown below. This assumes a UNIX platform where a newline is indicated by a single Line Feed character Introducing Oracle Regular Expressions Page 16
17 denoted by decimal 10. We introduce the newline character into the sample data using the SQL CHR function and concatenation operator. SELECT REGEXP_SUBSTR('abc' CHR(10) 'def', '.*') FROM dual; -> abc The above query does not consume the new line character but if we specify the newline match parameter, the query will match the entire string. SELECT REGEXP_SUBSTR('abc' CHR(10) 'def', '.*', 1, 1, 'n') FROM dual; -> abc def By the same token, if you are searching a large document for a series of terms and anticipate using the dot in such a manner, then you will need to enable this option. Using with DDL Constraints You can use Oracle Regular Expressions to filter data that is allowed to enter a table by using constraints. The following example shows how a column could be configured to allow only alphabetical characters within a VARCHAR2 column. This will disallow all punctuation, digits, spacing elements, and so on, from entering the table. CREATE TABLE t1 ( c1 VARCHAR2(20), CHECK (REGEXP_LIKE(c1, '^[[:alpha:]]+$'))); INSERT INTO t1 VALUES ('newuser'); -> 1 row created. INSERT INTO t1 VALUES ('newuser1'); -> ORA-02290: check constraint violated INSERT INTO t1 VALUES ('new-user'); -> ORA-02290: check constraint violated As the description of allowable data is tied in with the column definition, this acts as a shield to all incoming data so it is no longer required to filter such data on the client before inserting into the database. Introducing Oracle Regular Expressions Page 17
18 Indexes It is normal to improve performance when accessing a table by creating an index on frequently accessed and easily indexable columns. Oracle Regular Expressions are not easily able to make use of these indexes as they rely on knowing how the data within the column begins and do not lend well to functions that seek for columns with an abstract pattern. It is possible, however, to make use of functional indexes for cases where the same expression is expected to be issued on a column within a query. Functional indexes are created based on the results CREATE INDEX t1_ind ON t1 (REGEXP_SUBSTR(c1, 'a')); SELECT c1 FROM t1 WHERE REGEXP_SUBSTR(c1, 'a') = 'a'; Views Views are a great mechanism for query subsetting or formatting data before it is presented to the end user. In this example we show how combining views with regular expressions makes it easy to reformat data. Suppose there was a requirement to mangle an address, perhaps in order to avoid automatic detection but remain readable. One way we could do this would be to insert a space between each character. With REGEXP_REPLACE and backreferences, we are able to replace every letter by itself followed by a space: CREATE VIEW v1 AS SELECT empno, REGEXP_REPLACE( , '(.)', '\1 ) FROM emp; SELECT FROM v1 WHERE empno = 7369; -> j d o s o m e w h e r e. c o m Using with PL/SQL The Oracle Regular Expression functions do not have to be part of a SQL statement and are fully supported as a PL/SQL built-in function. As an example, to create a function that performs several regular expression operations on the provided data, the code would look something like the following: src := REGEXP_REPLACE (src, <regexp_1> ); src := REGEXP_REPLACE (src, <regexp_2> ); src := REGEXP_REPLACE (src, <regexp_3> ); PL/SQL can also be used to enhance regular expression functionality. The following shows some PL/SQL that could be used to create a function that returns the n th subexpression: CREATE FUNCTION regexp_subx ( Introducing Oracle Regular Expressions Page 18
19 input VARCHAR2, regx VARCHAR2, subx NUMBER) RETURN VARCHAR2 IS ret VARCHAR2(4000); BEGIN ret := REGEXP_SUBSTR (input, regx); ret := REGEXP_REPLACE (ret, regx, \ subx); RETURN (ret); END regexp_subx; / Performance Considerations Due to the inherent complexity of the compile and match logic, regular expression functions can perform slower than their non-regular expression counter parts. When an expression is provided, internally a compiler begins to process the string to try to convert it to an internal format, this process also ensures that the regular expression is well formed and contains no errors. This cost alone can be expensive especially when compared to parsing the arguments of LIKE for which it is impossible to construct a badly formed expression. It is also possible that the regular expression functions run faster as the compiled regular expression is highly optimized at run time. This is especially true when a complex regular expression would have to be written in a number of different SQL conditions rather than a single regular expression based function. Bear in mind that the regular expression functions are not able to make use of normal indexes. The compilation is a little different for REGEXP_LIKE as it is optimized to work in a manner where it is not required that Oracle proves where a match occurs, we only need to prove whether the pattern occurs in the string or not. For this reason, REGEXP_LIKE can be considerably faster than other regular expression functions and may be used as a preprocessing phase to the other, more expensive, regular expression functions. For complex expressions that would require several LIKE statements or possibly PL/SQL logic, Oracle Regular Expressions can be considerably faster at performing the same logic within a single function but it is difficult to quantify how much faster as it depends not only on the regular expression, but also on the data being matched against. Sometimes the combination of regular expression and a particular segment of text can provide many thousands of alternatives that Oracle has to process in order to prove that a match exists, or in the worst case, that it does not exist as every possible alternative must be exhausted. The trick to writing fast performing regular expressions is to aim at avoiding costly backtracking that most often comes with liberal use of the infinite quantifiers (+ and *). This statement is especially valid when dealing with large volumes of data, Introducing Oracle Regular Expressions Page 19
20 the matching engine can consume large amounts of CPU cycles and memory particularly when the pattern does not exist as every possibility has to be exhausted. For a full discussion on how to write fast performing regular expressions, refer to Mastering Regular Expressions 6. ADVANCED TOPICS This section introduces some advanced topics that are aimed at the DBA or application developer using Oracle Regular Expressions. Some features that are particular to this implementation follow a quick overview of the architecture. Architecture Oracle Regular Expressions are based on the POSIX ERE standard 1 and employs and architecture known as a Traditional Nondeterministic Finite Automata (NFA). There is one requirement of POSIX ERE that many popular implementations, for very good reasons, choose not to conform to and that is the requirement to match the longest possible pattern. If we were to describe a pattern that tried to match "a" or "ab" as "(a ab)" then, according to POSIX, "ab" should always succeed over "a" as it is the longer of the two. The reason most implementations do not conform to this is that it is very expensive in terms of CPU cycles to compute the longest possible match and still conform to other requirements of the POSIX standard. This approach is more expensive because even if the matching engine finds a match, it still has to cycle through all alternatives originating from the same character position to determine if any of them result in a longer match. It should be noted that greediness and longest match are two quite different things as greediness simply refers to the fact that the quantifiers, such as * and +, will attempt to consume as much text as possible for the match. When a pattern is provided to a regular expression function Oracle attempts to compile the expression into an optimized internal form. This is very much like Java code being compiled to byte codes interpreted on a virtual machine. Oracle Regular Expressions have their own compiler and virtual machine. Once compilation has succeeded, the result is then applied to each row in the query so that recompilation does not have to occur for each row. Looping behaviour Because it is possible to match an empty string with Oracle Regular Expressions, functions that take occurrence as a match option need to handle cases where consecutive empty strings could match so as to avoid needless looping. The way Oracle resolves this is by nudging forward a character in cases where a match could be caught in a loop. This is best shown with the REGEXP_REPLACE function in the following example: SELECT REGEXP_REPLACE('abc', 'd?', 'X') FROM dual; Introducing Oracle Regular Expressions Page 20
21 -> XaXbXcX The expression attempts to replace all occurrences of d with X, if d is not found then it replaces the empty string with X anyway. The result may seem surprising as the expression seems to consume the a, b, and c in its result. What is actually happening is that Oracle realizes it will be caught in a loop if it attempts to replace each occurrence of this expression so it jumps forward a single character before attempting to match the expression a second time thus resulting in the output above. This behaviour can also be found in REGEXP_SUBSTR and REGEXP_INSTR when occurrence is used. Backreferences Oracle extends POSIX ERE by adding support for backreferences within a regular expression. This is considered a valid extension of POSIX ERE as the behaviour of a backslash followed by something other than a metacharacter, is undefined. In order to specify a back reference, a group expression must precede in the regular expression. As an example, '\1(abc)' will cause error ORA as the grouping appears after the back reference. The back reference may appear within the grouping it refers to as in the expression '(a\1?)+'. Note that in this case the occurrence of the back reference must be optional otherwise the expression will never match as the back reference is only ever set when the matching engine passes through the right parentheses. A back reference that is not set is quite different to a back reference that is set and contains an empty string. A back reference that is not set will never match. A back reference which is set to the empty string that is applied to one of the infinite quantifiers (+, or *) will not cause a loop, the engine will perform one check for the empty string and pass control over to the next component in the expression. SQL Text Literals Strings, known as character or text literals in SQL, have particular requirements as documented in the SQL Reference 3. The following is not specific to regular expressions and applies to SQL text literals in general, but is particularly pertinent to Oracle Regular Expressions as they are represented within text literals. An escape character must precede a single quotation mark within the literal: SELECT REGEXP_SUBSTR('that''s all', 'hat''s') FROM dual; -> hat's The alternative quoting mechanism can also be used to avoid the need to escape the quotation mark but you must be careful to choose a quote delimiter that you do not anticipate will be present within the source or regular expression with a trailing quotation mark. In this example, the quote delimiter is the single quote so we must be sure that two consecutive single quotes never appear in the regular expression. Introducing Oracle Regular Expressions Page 21
22 SELECT REGEXP_SUBSTR(q''that's all'', q''hat's'') FROM dual; -> hat's Note that this escaping mechanism is quite different to other environments where regular expressions can be found, as backslash (\) is most often required to escape itself. SQL*Plus When issuing SQL from within SQL*Plus several considerations need to be made. An ampersand (&) will be treated as a define variable so should it appear in the pattern as a text literal, you will be prompted to enter it's value. This behaviour can be removed by setting the SQL*Plus variable DEFINE to be OFF. If the SQL*Plus variable ESCAPE is set to ON then any instance of the escape variable will be stripped. This is unfortunate for regular expressions as the default escape character is backslash (\) which is a common metacharacter. To be safe it is best to ensure that ESCAPE is set to OFF before issuing a regular expression query. NULL and the empty string Oracle treats NULL and the empty string ('') as the same thing. This is quite different to the normal treatment of the empty string in other regular expression implementations where it happens to match everything. With Oracle Regular Expressions, in order to be conformant with other functions defined in SQL, the explicitly empty string will cause the function to return NULL and will match nothing. Note that the empty string itself will still match in the expected manner in expressions such as '()', '(a ), and 'a?'. CONCLUSION The Oracle Database 10G provides the most comprehensive functionality for developing versatile, scalable, and high performance database applications for Grid computing. String searching, manipulation, validation, and formatting are at the heart of all applications that deal with text data; regular expressions are considered the most sophisticated means of performing such operations. The introduction of native regular expression support to SQL and PL/SQL in the Oracle Database revolutionizes the ability to search for and manipulate text within the database by providing expressive power in queries, data definitions and string manipulations. 1 IEEE Std , Open Group Technical Standard 2 ISO/IEC :1999 SQL 3 Oracle Database SQL Reference 10G 4 Oracle Database Globalization Guide 10G 5 Sorting Your Linguistic Data inside the Oracle9i Database, An Oracle Technical White Paper, September 2002 Introducing Oracle Regular Expressions Page 22
23 6 Mastering Regular Expressions, Second Edition, Jeffrey, E. F. Friedl, ISBN Introducing Oracle Regular Expressions Page 23
24 Introducing Oracle Regular Expressions September 2003 Author: Peter Linsley Contributing Authors: Barry Trute Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA U.S.A. Worldwide Inquiries: Phone: Fax: Copyright 2003, Oracle. All rights reserved. This document is provided for information purposes only and the contents hereof are subject to change without notice. This document is not warranted to be error-free, nor subject to any other warranties or conditions, whether expressed orally or implied in law, including implied warranties and conditions of merchantability or fitness for a particular purpose. We specifically disclaim any liability with respect to this document and no contractual obligations are formed either directly or indirectly by this document. This document may not be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without our prior written permission. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Migrating Non-Oracle Databases and their Applications to Oracle Database 12c O R A C L E W H I T E P A P E R D E C E M B E R 2 0 1 4
Migrating Non-Oracle Databases and their Applications to Oracle Database 12c O R A C L E W H I T E P A P E R D E C E M B E R 2 0 1 4 1. Introduction Oracle provides products that reduce the time, risk,
An Oracle White Paper June 2013. Migrating Applications and Databases with Oracle Database 12c
An Oracle White Paper June 2013 Migrating Applications and Databases with Oracle Database 12c Disclaimer The following is intended to outline our general product direction. It is intended for information
Being Regular with Regular Expressions. John Garmany Session
Being Regular with Regular Expressions John Garmany Session John Garmany Senior Consultant Burleson Consulting Who Am I West Point Graduate GO ARMY! Masters Degree Information Systems Graduate Certificate
Using Regular Expressions in Oracle
Using Regular Expressions in Oracle Everyday most of us deal with multiple string functions in Sql. May it be for truncating a string, searching for a substring or locating the presence of special characters.
Oracle Database Gateways. An Oracle White Paper July 2007
Oracle Database Gateways An Oracle White Paper July 2007 Oracle Database Gateways Introduction... 3 Connecting Disparate systems... 3 SQL Translations... 4 Data Dictionary Translations... 4 Datatype Translations...
ETPL Extract, Transform, Predict and Load
ETPL Extract, Transform, Predict and Load An Oracle White Paper March 2006 ETPL Extract, Transform, Predict and Load. Executive summary... 2 Why Extract, transform, predict and load?... 4 Basic requirements
3.GETTING STARTED WITH ORACLE8i
Oracle For Beginners Page : 1 3.GETTING STARTED WITH ORACLE8i Creating a table Datatypes Displaying table definition using DESCRIBE Inserting rows into a table Selecting rows from a table Editing SQL buffer
An Oracle White Paper October 2009. In-Database Map-Reduce
An Oracle White Paper October 2009 In-Database Map-Reduce Introduction... 2 The Theory... 3 Step-by-Step Example... 4 Step 1 Setting up the Environment... 4 Step 2 Creating the Mapper... 6 Step 3 A Simple
Guide to SQL Programming: SQL:1999 and Oracle Rdb V7.1
Guide to SQL Programming: SQL:1999 and Oracle Rdb V7.1 A feature of Oracle Rdb By Ian Smith Oracle Rdb Relational Technology Group Oracle Corporation 1 Oracle Rdb Journal SQL:1999 and Oracle Rdb V7.1 The
Guide to Performance and Tuning: Query Performance and Sampled Selectivity
Guide to Performance and Tuning: Query Performance and Sampled Selectivity A feature of Oracle Rdb By Claude Proteau Oracle Rdb Relational Technology Group Oracle Corporation 1 Oracle Rdb Journal Sampled
An Oracle White Paper November 2010. Leveraging Massively Parallel Processing in an Oracle Environment for Big Data Analytics
An Oracle White Paper November 2010 Leveraging Massively Parallel Processing in an Oracle Environment for Big Data Analytics 1 Introduction New applications such as web searches, recommendation engines,
An Oracle White Paper June 2014. RESTful Web Services for the Oracle Database Cloud - Multitenant Edition
An Oracle White Paper June 2014 RESTful Web Services for the Oracle Database Cloud - Multitenant Edition 1 Table of Contents Introduction to RESTful Web Services... 3 Architecture of Oracle Database Cloud
October 2015. Oracle Application Express Statement of Direction
October 2015 Oracle Application Express Statement of Direction Disclaimer This document in any form, software or printed matter, contains proprietary information that is the exclusive property of Oracle.
An Oracle White Paper June 2014. Security and the Oracle Database Cloud Service
An Oracle White Paper June 2014 Security and the Oracle Database Cloud Service 1 Table of Contents Overview... 3 Security architecture... 4 User areas... 4 Accounts... 4 Identity Domains... 4 Database
An Oracle White Paper August 2010. Oracle Database Auditing: Performance Guidelines
An Oracle White Paper August 2010 Oracle Database Auditing: Performance Guidelines Introduction Database auditing has become increasingly important as threats to applications become more sophisticated.
Load Testing Hyperion Applications Using Oracle Load Testing 9.1
Oracle White Paper Load Testing Hyperion System 9 HFM An Oracle White Paper May 2010 Load Testing Hyperion Applications Using Oracle Load Testing 9.1 Oracle White Paper Load Testing Hyperion System 9 HFM
An Oracle White Paper June 2012. High Performance Connectors for Load and Access of Data from Hadoop to Oracle Database
An Oracle White Paper June 2012 High Performance Connectors for Load and Access of Data from Hadoop to Oracle Database Executive Overview... 1 Introduction... 1 Oracle Loader for Hadoop... 2 Oracle Direct
SQL Server An Overview
SQL Server An Overview SQL Server Microsoft SQL Server is designed to work effectively in a number of environments: As a two-tier or multi-tier client/server database system As a desktop database system
An Oracle White Paper August 2013. Express Mode Loading with SQL*Loader in Oracle Database 12c
An Oracle White Paper August 2013 Express Mode Loading with SQL*Loader in Oracle Database 12c Introduction... 3 Benefits of Using Express Mode... 3 Overview of CSV Files... 3 CSV files are text files where
How To Load Data Into An Org Database Cloud Service - Multitenant Edition
An Oracle White Paper June 2014 Data Movement and the Oracle Database Cloud Service Multitenant Edition 1 Table of Contents Introduction to data loading... 3 Data loading options... 4 Application Express...
An Oracle White Paper January 2011. Using Oracle's StorageTek Search Accelerator
An Oracle White Paper January 2011 Using Oracle's StorageTek Search Accelerator Executive Summary...2 Introduction...2 The Problem with Searching Large Data Sets...3 The StorageTek Search Accelerator Solution...3
Regular Expressions Overview Suppose you needed to find a specific IPv4 address in a bunch of files? This is easy to do; you just specify the IP
Regular Expressions Overview Suppose you needed to find a specific IPv4 address in a bunch of files? This is easy to do; you just specify the IP address as a string and do a search. But, what if you didn
ORACLE OLAP. Oracle OLAP is embedded in the Oracle Database kernel and runs in the same database process
ORACLE OLAP KEY FEATURES AND BENEFITS FAST ANSWERS TO TOUGH QUESTIONS EASILY KEY FEATURES & BENEFITS World class analytic engine Superior query performance Simple SQL access to advanced analytics Enhanced
An Oracle White Paper May 2012. Oracle Database Cloud Service
An Oracle White Paper May 2012 Oracle Database Cloud Service Executive Overview The Oracle Database Cloud Service provides a unique combination of the simplicity and ease of use promised by Cloud computing
Performance with the Oracle Database Cloud
An Oracle White Paper September 2012 Performance with the Oracle Database Cloud Multi-tenant architectures and resource sharing 1 Table of Contents Overview... 3 Performance and the Cloud... 4 Performance
An Oracle White Paper December 2013. Advanced Network Compression
An Oracle White Paper December 2013 Advanced Network Compression Disclaimer The following is intended to outline our general product direction. It is intended for information purposes only, and may not
An Oracle White Paper June 2012. Creating an Oracle BI Presentation Layer from Imported Oracle OLAP Cubes
An Oracle White Paper June 2012 Creating an Oracle BI Presentation Layer from Imported Oracle OLAP Cubes Introduction Oracle Business Intelligence Enterprise Edition version 11.1.1.5 and later has the
Instant Client: An Overview. An Oracle White Paper May 2004
An Oracle White Paper May 2004 Introduction... 3 Advantages For Customers... 3 Instant Deploy and Upgrade... 3 No ORACLE_HOME... 3 Same Functionality... 3 Same High Performance... 3 Small Size... 4 No
An Overview of Oracle Forms Server Architecture. An Oracle Technical White Paper April 2000
An Oracle Technical White Paper INTRODUCTION This paper is designed to provide you with an overview of some of the key points of the Oracle Forms Server architecture and the processes involved when forms
Driving the Business Forward with Human Capital Management. Five key points to consider before you invest
Driving the Business Forward with Human Capital Management Five key points to consider before you invest For HR leaders to contribute to the business successfully, they need HR solutions with the right
An Oracle White Paper March 2014. Oracle Data Guard Broker. Best Practices for Configuring Redo Transport for Data Guard and Active Data Guard 12c
An Oracle White Paper March 2014 Oracle Data Guard Broker Best Practices for Configuring Redo Transport for Data Guard and Active Data Guard 12c Introduction... 1 Broker Redo Transport Configuration Properties...
Oracle Database Resident Connection Pooling. Database Resident Connection Pooling (DRCP) Oracle Database 11g. Technical White paper
Database Resident Connection Pooling (DRCP) Oracle Database 11g Technical White paper 1 Introduction Web tier and mid-tier applications typically have many threads of execution, which take turns using
An Oracle Technical Article October 2014. Certification with Oracle Linux 5
An Oracle Technical Article October 2014 Certification with Oracle Linux 5 Introduction... 1 Comparing Oracle Linux 5 and Red Hat Enterprise Linux (RHEL) 5.. 2 Checking the /etc/ File... 2 Checking for
Database Programming with PL/SQL: Learning Objectives
Database Programming with PL/SQL: Learning Objectives This course covers PL/SQL, a procedural language extension to SQL. Through an innovative project-based approach, students learn procedural logic constructs
Oracle Database 11g Express Edition PL/SQL and Database Administration Concepts -II
Oracle Database 11g Express Edition PL/SQL and Database Administration Concepts -II Slide 1: Hello and welcome back to the second part of this online, self-paced course titled Oracle Database 11g Express
White Paper. Blindfolded SQL Injection
White Paper In the past few years, SQL Injection attacks have been on the rise. The increase in the number of Database based applications, combined with various publications that explain the problem and
An Oracle White Paper July 2013. Introducing the Oracle Home User in Oracle Database 12c for Microsoft Windows
An Oracle White Paper July 2013 Introducing the Oracle Home User Introduction Starting with Oracle Database 12c Release 1 (12.1), Oracle Database on Microsoft Windows supports the use of an Oracle Home
JD Edwards EnterpriseOne Tools. 1 Understanding JD Edwards EnterpriseOne Business Intelligence Integration. 1.1 Oracle Business Intelligence
JD Edwards EnterpriseOne Tools Embedded Business Intelligence for JD Edwards EnterpriseOne Release 8.98 Update 4 E21426-02 March 2011 This document provides instructions for using Form Design Aid to create
A Joint Oracle Teradata White Paper March 2012. Configuring Oracle Business Intelligence Enterprise Edition for Teradata Temporal Tables
A Joint Oracle Teradata White Paper March 2012 Configuring Oracle Business Intelligence Enterprise Edition for Teradata Temporal Tables Executive Overview... 2 Introduction... 2 As-is and As-was Example...
Driving Down the High Cost of Storage. Pillar Axiom 600
Driving Down the High Cost of Storage Pillar Axiom 600 Accelerate Initial Time to Value, and Control Costs over the Long Term Make a storage investment that will pay off in rapid time to value and low
An Oracle White Paper February 2009. Oracle Data Pump Quick Start
An Oracle White Paper February 2009 Oracle Data Pump Quick Start Introduction Oracle Data Pump is the replacement for the original Export and Import utilities. Available starting in Oracle Database 10g,
Siebel CRM Reports. Easy to develop and deploy. Administration
Siebel CRM Reports The Siebel CRM integration with Oracle Business Intelligence Publisher (BI Publisher) provides an enterprise reporting solution to author, manage, and deliver all types of highly formatted
Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
Lecture 18 Regular Expressions
Lecture 18 Regular Expressions Many of today s web applications require matching patterns in a text document to look for specific information. A good example is parsing a html file to extract tags
Retrieving Data Using the SQL SELECT Statement. Copyright 2006, Oracle. All rights reserved.
Retrieving Data Using the SQL SELECT Statement Objectives After completing this lesson, you should be able to do the following: List the capabilities of SQL SELECT statements Execute a basic SELECT statement
An Oracle White Paper September 2013. Advanced Java Diagnostics and Monitoring Without Performance Overhead
An Oracle White Paper September 2013 Advanced Java Diagnostics and Monitoring Without Performance Overhead Introduction... 1 Non-Intrusive Profiling and Diagnostics... 2 JMX Console... 2 Java Flight Recorder...
One View Report Samples Warehouse Management
One View Report Samples Warehouse Management Introduction... 1 Application: One View Warehouse Request Inquiry P46270... 2 Report: Warehouse Pick Request Analysis... 2 Report: Warehouse Putaway Request
An Oracle White Paper January 2014. Oracle Database 12c: Full Transportable Export/Import
An Oracle White Paper January 2014 Oracle Database 12c: Full Transportable Export/Import Introduction... 3 Benefits of Using Full Transportable Export/Import... 4 Full Transportable Export/Import Support
How Strings are Stored. Searching Text. Setting. ANSI_PADDING Setting
How Strings are Stored Searching Text SET ANSI_PADDING { ON OFF } Controls the way SQL Server stores values shorter than the defined size of the column, and the way the column stores values that have trailing
MS SQL Performance (Tuning) Best Practices:
MS SQL Performance (Tuning) Best Practices: 1. Don t share the SQL server hardware with other services If other workloads are running on the same server where SQL Server is running, memory and other hardware
Eventia Log Parsing Editor 1.0 Administration Guide
Eventia Log Parsing Editor 1.0 Administration Guide Revised: November 28, 2007 In This Document Overview page 2 Installation and Supported Platforms page 4 Menus and Main Window page 5 Creating Parsing
Oracle Application Server 10g Web Services Frequently Asked Questions Oct, 2006
Oracle Application Server 10g Web Services Frequently Asked Questions Oct, 2006 This FAQ addresses frequently asked questions relating to Oracle Application Server 10g Release 3 (10.1.3.1) Web Services
An Oracle White Paper October 2013. Oracle Database and IPv6 Statement of Direction
An Oracle White Paper October 2013 Oracle Database and IPv6 Statement of Direction Disclaimer The following is intended to outline our general product direction. It is intended for information purposes
Partitioning in Oracle Database 11g. An Oracle White Paper June 2007
Partitioning in Oracle Database 11g An Oracle White Paper June 2007 NOTE: The following is intended to outline our general product direction. It is intended for information purposes only, and may not be
Oracle Forms 10g Dynamic LOVs
Oracle Forms 10g Dynamic LOVs An Oracle Forms Community White Paper François Degrelle [email protected] September 2005 Oracle Forms 10g Dynamic LOVs Oracle Forms 10g Dynamic Generic Lovs Page 2 Oracle
Regular Expressions. Abstract
Regular Expressions Sanjiv K. Bhatia Department of Mathematics & Computer Science University of Missouri St. Louis St. Louis, MO 63121 email: [email protected] Abstract Regular expressions provide a powerful
An Oracle White Paper Dec 2013. Oracle Access Management Security Token Service
An Oracle White Paper Dec 2013 Oracle Access Management Security Token Service Disclaimer The following is intended to outline our general product direction. It is intended for information purposes only,
Oracle SQL Developer for Database Developers. An Oracle White Paper June 2007
Oracle SQL Developer for Database Developers An Oracle White Paper June 2007 Oracle SQL Developer for Database Developers Introduction...3 Audience...3 Key Benefits...3 Architecture...4 Key Features...4
Unicode Enabling Java Web Applications
Internationalization Report: Unicode Enabling Java Web Applications From Browser to DB Provided by: LingoPort, Inc. 1734 Sumac Avenue Boulder, Colorado 80304 Tel: +1.303.444.8020 Fax: +1.303.484.2447 http://www.lingoport.com
An Oracle White Paper October 2009. Frequently Asked Questions for Oracle Forms 11g
An Oracle White Paper October 2009 Frequently Asked Questions for Oracle Forms 11g Disclaimer The following is intended to outline our general product direction. It is intended for information purposes
National Language (Tamil) Support in Oracle An Oracle White paper / November 2004
National Language (Tamil) Support in Oracle An Oracle White paper / November 2004 Vasundhara V* & Nagarajan M & * [email protected]; & [email protected]) Oracle
An Oracle White Paper October 2013. Oracle Data Integrator 12c New Features Overview
An Oracle White Paper October 2013 Oracle Data Integrator 12c Disclaimer This document is for informational purposes. It is not a commitment to deliver any material, code, or functionality, and should
ORACLE SALES ANALYTICS
ORACLE SALES ANALYTICS KEY FEATURES & BENEFITS FOR BUSINESS USERS Analyze pipeline opportunities to determine actions required to meet sales targets Determine which products and customer segments generate
An Oracle White Paper February, 2015. Oracle Database In-Memory Advisor Best Practices
An Oracle White Paper February, 2015 Oracle Database In-Memory Advisor Best Practices Disclaimer The following is intended to outline our general product direction. It is intended for information purposes
An Oracle White Paper July 2014. Oracle Linux and Oracle VM Remote Lab User Guide
An Oracle White Paper July 2014 Oracle Linux and Oracle VM Remote Lab User Guide Contents Introduction... 1 Infrastructure Requirements on the Client Side... 2 Overview of the Lab Hardware... 3 Logging
PL / SQL Basics. Chapter 3
PL / SQL Basics Chapter 3 PL / SQL Basics PL / SQL block Lexical units Variable declarations PL / SQL types Expressions and operators PL / SQL control structures PL / SQL style guide 2 PL / SQL Block Basic
Oracle Data Integrator and Oracle Warehouse Builder Statement of Direction
First Published January 2010 Updated May 2011 Oracle Data Integrator and Oracle Warehouse Builder Statement of Direction Disclaimer This document in any form, software or printed matter, contains proprietary
ORACLE USER PRODUCTIVITY KIT USAGE TRACKING ADMINISTRATION & REPORTING RELEASE 3.6 PART NO. E17087-01
ORACLE USER PRODUCTIVITY KIT USAGE TRACKING ADMINISTRATION & REPORTING RELEASE 3.6 PART NO. E17087-01 FEBRUARY 2010 COPYRIGHT Copyright 1998, 2009, Oracle and/or its affiliates. All rights reserved. Part
Oracle Utilities Mobile Workforce Management Benchmark
An Oracle White Paper November 2012 Oracle Utilities Mobile Workforce Management Benchmark Demonstrates Superior Scalability for Large Field Service Organizations Introduction Large utility field service
ORACLE DATA QUALITY ORACLE DATA SHEET KEY BENEFITS
ORACLE DATA QUALITY KEY BENEFITS Oracle Data Quality offers, A complete solution for all customer data quality needs covering the full spectrum of data quality functionalities Proven scalability and high
Oracle Whitepaper April 2015. Security and the Oracle Database Cloud Service
Oracle Whitepaper April 2015 Security and the Oracle Database Cloud Service Table of Contents Overview... 3 Security architecture... 4 User areas... 4 Accounts... 4 Identity Domains... 4 Database Cloud
Ensuring Web Service Quality for Service-Oriented Architectures. An Oracle White Paper June 2008
Ensuring Web Service Quality for Service-Oriented Architectures An Oracle White Paper June 2008 Ensuring Web Service Quality for Service-Oriented Architectures WEB SERVICES OFFER NEW OPPORTUNITIES AND
Compiler Construction
Compiler Construction Regular expressions Scanning Görel Hedin Reviderad 2013 01 23.a 2013 Compiler Construction 2013 F02-1 Compiler overview source code lexical analysis tokens intermediate code generation
Partitioning with Oracle Database 11g Release 2
An Oracle White Paper October 2010 Partitioning with Oracle Database 11g Release 2 Partitioning Concepts... 3 Introduction... 3 Benefits of Partitioning... 3 Basics of Partitioning... 3 Partitioning Modeling
Introduction to Web Services
Department of Computer Science Imperial College London CERN School of Computing (icsc), 2005 Geneva, Switzerland 1 Fundamental Concepts Architectures & escience example 2 Distributed Computing Technologies
The Case for a Stand-alone Rating Engine for Insurance. An Oracle Brief April 2009
The Case for a Stand-alone Rating Engine for Insurance An Oracle Brief April 2009 The Case for a Stand-alone Rating Engine for Insurance Stand-alone rating engines provide the opportunity to modernize
Oracle Easy Connect Naming. An Oracle White Paper October 2007
Oracle Easy Connect Naming An Oracle White Paper October 2007 NOTE: The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated
An Oracle White Paper August 2013. Automatic Data Optimization with Oracle Database 12c
An Oracle White Paper August 2013 Automatic Data Optimization with Oracle Database 12c Introduction... 1 Storage Tiering and Compression Tiering... 2 Heat Map: Fine-grained Data Usage Tracking... 3 Automatic
An Oracle White Paper June, 2013. Enterprise Manager 12c Cloud Control Application Performance Management
An Oracle White Paper June, 2013 Enterprise Manager 12c Cloud Control Executive Overview... 2 Introduction... 2 Business Application Performance Monitoring... 3 Business Application... 4 User Experience
Using Database Metadata and its Semantics to Generate Automatic and Dynamic Web Entry Forms
Using Database Metadata and its Semantics to Generate Automatic and Dynamic Web Entry Forms Mohammed M. Elsheh and Mick J. Ridley Abstract Automatic and dynamic generation of Web applications is the future
.CRF. Electronic Data Capture and Workflow System for Clinical Trials
.CRF Electronic Data Capture and Workflow System for Clinical Trials Business challenge Most research takes place in different centers simultaneously. These are often located in different cities or even
Oracle Forms Services Secure Web.Show_Document() calls to Oracle Reports
Oracle Forms Services Secure Web.Show_Document() calls to Oracle Reports $Q2UDFOH7HFKQLFDO:KLWHSDSHU )HEUXDU\ Secure Web.Show_Document() calls to Oracle Reports Introduction...3 Using Web.Show_Document
Oracle Utilities Customer Care and Billing
Customer Care and Billing Utilities are faced with a rapidly changing industry and increasing expectations from their customers. Adapting to these factors with existing customer information systems likely
An Oracle Best Practice Guide April 2012. Best Practices for Knowledgebase and Search Effectiveness
An Oracle Best Practice Guide April 2012 Best Practices for Knowledgebase and Search Effectiveness Introduction Ensuring that your knowledgebase is properly optimized to help customers find what they need
Oracle Primavera Gateway
Oracle Primavera Gateway Disclaimer The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is
Oracle Database: Introduction to SQL
Oracle University Contact Us: 1.800.529.0165 Oracle Database: Introduction to SQL Duration: 5 Days What you will learn This Oracle Database: Introduction to SQL training teaches you how to write subqueries,
SQL Server Database Coding Standards and Guidelines
SQL Server Database Coding Standards and Guidelines http://www.sqlauthority.com Naming Tables: Stored Procs: Triggers: Indexes: Primary Keys: Foreign Keys: Defaults: Columns: General Rules: Rules: Pascal
Oracle Database: Introduction to SQL
Oracle University Contact Us: +381 11 2016811 Oracle Database: Introduction to SQL Duration: 5 Days What you will learn Understanding the basic concepts of relational databases ensure refined code by developers.
OpenLDAP Oracle Enterprise Gateway Integration Guide
An Oracle White Paper June 2011 OpenLDAP Oracle Enterprise Gateway Integration Guide 1 / 29 Disclaimer The following is intended to outline our general product direction. It is intended for information
An Oracle White Paper March 2009. Oracle Label Security in Government and Defense Environments
An Oracle White Paper March 2009 Oracle Label Security in Government and Defense Environments Protecting Sensitive Information... 2 Oracle Label Security Overview... 2 Getting Started with Oracle Label
The Bayesian Approach to Forecasting. An Oracle White Paper Updated September 2006
The Bayesian Approach to Forecasting An Oracle White Paper Updated September 2006 The Bayesian Approach to Forecasting The main principle of forecasting is to find the model that will produce the best
12 File and Database Concepts 13 File and Database Concepts A many-to-many relationship means that one record in a particular record type can be relat
1 Databases 2 File and Database Concepts A database is a collection of information Databases are typically stored as computer files A structured file is similar to a card file or Rolodex because it uses
An Oracle White Paper May 2013. Creating Custom PDF Reports with Oracle Application Express and the APEX Listener
An Oracle White Paper May 2013 Creating Custom PDF Reports with Oracle Application Express and the APEX Listener Disclaimer The following is intended to outline our general product direction. It is intended
orrelog SNMP Trap Monitor Software Users Manual
orrelog SNMP Trap Monitor Software Users Manual http://www.correlog.com mailto:[email protected] CorreLog, SNMP Trap Monitor Software Manual Copyright 2008-2015, CorreLog, Inc. All rights reserved. No
Managed Storage Services
An Oracle White Paper January 2014 Managed Storage Services Designed to Meet Your Custom Needs for Availability, Reliability and Security A complete Storage Solution Oracle Managed Cloud Services (OMCS)
An Oracle White Paper November 2010. Oracle Business Intelligence Standard Edition One 11g
An Oracle White Paper November 2010 Oracle Business Intelligence Standard Edition One 11g Introduction Oracle Business Intelligence Standard Edition One is a complete, integrated BI system designed for
Primavera Unifier Integration Overview: A Web Services Integration Approach O R A C L E W H I T E P A P E R F E B R U A R Y 2 0 1 6
Primavera Unifier Integration Overview: A Web Services Integration Approach O R A C L E W H I T E P A P E R F E B R U A R Y 2 0 1 6 Introduction Oracle s Primavera Unifier offers an extensible interface
