4rth Complete Book Database Systems Handbook Dbms Rdbms by Muhammad Sharif
4rth Complete Book Database Systems Handbook Dbms Rdbms by Muhammad Sharif
4rth Complete Book Database Systems Handbook Dbms Rdbms by Muhammad Sharif
==============
Dedication
I dedicate all my efforts to my reader who gives me an urge and inspiration
to work more.
Muhammad Sharif
Author
Database Systems Handbook
Acknowledgments
We are grateful to numerous individuals who contributed
Levels of Data
1. Real world Data (Entity, attributes)
2. Metadata (Record types, item types, Max, Min Lingth)
3. Data occurrences (Employee_Name =>'Amir')
Categories of Data
Types of Data
Example Metadata for Relation Class Roster catalogs (Attr_Cat(attr_name, rel_name, type, position like 1,2,3,
access rights on objects, what is the position of attribute in the relation). Simple definition is data about data.
The user is not concerned about the physical data storage details.
Physical storage structure can be changed without requiring changes in the internal structure of the
database as well as users view.
The conceptual structure of the database can be changed without affecting end users.
It makes the database abstract.
It hides the details of how the data is stored physically in an electronic system, which makes it easier to
understand and easier to use for an average user.
It also allows the user to concentrate on the data rather than worrying about how it should be stored.
2-tier architecture (basic client-server APIs like ODBC, JDBC, and ORDS are used), Client and disk are connected by
APIs called network.
3-tier architecture (Used for web applications, it uses a web server to connect with a database server).
Three-tier architecture is a well-established software application architecture that organizes applications into three
logical and physical computing tiers: the presentation tier, or user interface; the application tier, where data is
processed; and the data tier, where the data associated with the application is stored and managed.
The chief benefit of three-tier architecture is that because each tier runs on its own infrastructure, each tier can be
developed simultaneously by a separate development team, and can be updated or scaled as needed without
impacting the other tiers.
Sonewhere we divide web server first and Application server second into two separate layers within three tier
architecture. And that are also called four tier in some books. More details are below.
For Web accessible database approach we use client->Application->Web Server->Application Server->DBMS-
>Database.
There are 3 types of buses used in uniform While in non-uniform Memory Access, There are
1 Memory Access which are: Single, Multiple 2 types of buses used which are: Tree and
and Crossbar. hierarchical.
Advantages of NUMA
Improves the scalability of the system.
Memory bottleneck (shortage of memory) problem is minimized in this architecture.
NUMA machines provide a linear address space, allowing all processors to directly address all memory.
Distributed Databases
Distributed database system (DDBS) = Database Systems + Communication
A set of databases in a distributed system that can appear to applications as a single data source.
A distributed DBMS (DDBMS) can have the actual database and DBMS software distributed over many sites,
connected by a computer network.
government legal rules, data rules, and different business algorithms which are designed to keep data structure
consistent. This is also known as conceptual layer.
Data layer
The 3-Data layer is the physical database tier where data is stored or manipulated. It is internal layer of database
management system where data stored.
Collaborative/Multi server: Collaborating Server system. We can have a collection of database servers,
each capable of running transactions against local data, which cooperatively execute transactions spanning
multiple servers. This is an integrated database system formed by a collection of two or more autonomous
database systems. Multi-DBMS can be expressed through six levels of schema:
1. Multi-database View Level − Depicts multiple user views comprising subsets of the integrated distributed
database.
2. Multi-database Conceptual Level − Depicts integrated multi-database that comprises global logical multi-
database structure definitions.
3. Multi-database Internal Level − Depicts the data distribution across different sites and multi-database to
local data mapping.
4. Local database View Level − Depicts a public view of local data.
5. Local database Conceptual Level − Depicts local data organization at each site.
6. Local database Internal Level − Depicts physical data organization at each site.
There are two design alternatives for multi-DBMS −
1. A model with a multi-database conceptual level.
2. Model without multi-database conceptual level.
Peer-to-Peer: The Middleware architecture is designed to allow a single query to span multiple servers,
without requiring all database servers to be capable of managing such multisite execution strategies. It is
especially attractive when trying to integrate several legacy systems, whose basic capabilities cannot be
extended. Architecture model for DDBMS, In these systems, each peer acts both as a client and a server for
imparting database services. The peers share their resources with other peers and coordinate their activities.
Its scalability and flexibility is growing and shrinking. All nodes have the same role and functionality. Harder to
manage because all machines are autonomous and loosely coupled.
This architecture generally has four levels of schemas:
1. Global Conceptual Schema − Depicts the global logical view of data.
2. Local Conceptual Schema − Depicts logical data organization at each site.
3. Local Internal Schema − Depicts physical data organization at each site.
4. Local External Schema − Depicts user view of data
Autonomous databases
1. Autonomous Transaction Processing - Serverless
2. Autonomous Transaction Processing - Dedicated
3. Autonomous data warehourse processing - Analytics
Autonomous Serverless is a simple and elastic deployment choice. Oracle autonomously operates all aspects of
the database lifecycle from database placement to backup and updates.
Autonomous Dedicated is a private cloud in public cloud deployment choice. A completely dedicated compute,
storage, network, and database service for only a single tenant.
Autonomous Shared is a private cloud in public cloud deployment choice. A completely dedicated compute,
storage, network, and database service for only a single tenant.
Heterogeneous Distributed Databases (Dissimilar schema for each site database, it can be any
variety of dbms, relational, network, hierarchical, object oriented)
Types of Heterogeneous Distributed Databases
1. Federated − The heterogeneous database systems are independent and integrated so that they function
as a single database system.
2. Un-federated − The database systems employ a central coordinating module
In a heterogeneous distributed database, different sites have different operating systems, DBMS products, and data
models.
Parameters at which distributed DBMS architectures developed
DDBMS architectures are generally developed depending on three parameters:
1. Distribution − It states the physical distribution of data across the different sites.
2. Autonomy − It indicates the distribution of control of the database system and the degree to which each
constituent DBMS can operate independently.
3. Heterogeneity − It refers to the uniformity or dissimilarity of the data models, system components, and
databases.
Database Gateways
Traditionally, a database gateway is a software component that links two different DBMS suites Like Oracle SQL-
Oracle Database to DB2 SQL -DB2 Database. Another alternative is to use the software called Open Database
Connectivity (ODBC).
Note: The Semi Join and Bloom Join are two techniques/data fetching method in distributed databases.
BASE Model:
Basically Available – Rather than enforcing immediate consistency, BASE-modelled NoSQL databases will ensure the
availability of data by spreading and replicating it across the nodes of the database cluster.
Soft State – Due to the lack of immediate consistency, data values may change over time. The BASE model breaks
off with the concept of a database that enforces its consistency, delegating that responsibility to developers.
Eventually Consistent – The fact that BASE does not enforce immediate consistency does not mean that it never
achieves it. However, until it does, data reads are still possible (even though they might not reflect the reality).
Just as SQL databases are almost uniformly ACID compliant, NoSQL databases tend to conform to BASE principles.
NewSQL Database
NewSQL is a class of relational database management systems that seek to provide the scalability of NoSQL systems
for online transaction processing (OLTP) workloads while maintaining the ACID guarantees of a traditional database
system.
Examples and properties of Relational Non-Relational Database:
The term NewSQL categorizes databases that are the combination of relational models with the advancement in
scalability, and flexibility with types of data. These databases focus on the features which are not present in NoSQL,
which offers a strong consistency guarantee. This covers two layers of data one relational one and a key-value store.
Use Cases: Big Data, Social Network Use Cases: E-Commerce, Telecom industry, and
8. Applications, and IoT. Gaming.
Oracle Cloud Infrastructure (OCI) Regions are globally distributed data centers that provide secure, high-
performance, local environments. Businesses can move, build, and run all workloads and cloud applications on OCI
while complying with regional data regulations.
END
Datatypes Descriptions
-------------------------------- ---------------------------------------------------------------------------------------------------
BINARY_FLOAT 32-bit floating point number. This data type requires 4 bytes.
BINARY_DOUBLE 64-bit floating point number. This data type requires 8 bytes.
If max_string_size = extended Number having precision p and scale s. The precision p can range from 1
32767 bytes or characters to 38. The scale s can range from -84 to 127. Both precision and scale
If max_string_size = standard are in decimal digits. A number value requires from 1 to 22 bytes.
Number(p,s) data type 4000
bytes or characters
The character data types represent alphanumeric text. PL/SQL uses the
SQL character data types such as CHAR, VARCHAR2, LONG, RAW, LONG
Character data types RAW, ROWID, and UROWID.
CHAR(n) is a fixed-length character type whose length is from 1 to
32,767 bytes.
VARCHAR2(n) is varying length character data from 1 to 32,767 bytes.
Exact Numeric: bit, Tinyint, Smallint, Int, Bigint, Numeric, Decimal, SmallMoney, Money.
Approximate Numeric: float, real
Data and Time: DateTime, Smalldatatime, date, time, Datetimeoffset, Datetime2
Character Strings: char, varchar, text
Unicode Character strings: Nchar, Nvarchar, Ntext
Binary strings: binary, Varbinary, image
Other Data types: sql_variant, timestamp, Uniqueidentifier, XML
CLR data types: hierarchyid
Spatial data types: geometry, geography
Abstract Data Types in OracleOne of the shortcomings of the Oracle 7 database was the limited number of
intrinsic data types.
artificial row indicator key in result set of query. Rowid is allocation of physical memory. Its permanent address of
inserted row. Rowid give you row location, disk number, cylinder, block and offset into the block.
Format of Rowid
Database Key
A key is a field of a table that identifies the tuple in that table.
Super key
An attribute or a set of attributes that uniquely identifies a tuple within a relation.
Candidate key
A super key such that no proper subset is a super key within the relation. Contains no unique subset (irreducibility).
Possibly many candidate keys (specified using UNIQUE), one of which is chosen as the primary key. PRIMARY KEY
(sid), UNIQUE (id, grade)) A candidate can be unique but its value can be changed.
Foreign key
An attribute or set of attributes within one relation that matches the candidate key of some (possibly the same)
relation. Can you add a non-key as a foreign key? Yes, the minimum condition is it should be unique. It should be
candidate key.
Composite Key
The composite key consists of more than one attribute. COMPOSITE KEY is a combination of two or more columns
that uniquely identify rows in a table. The combination of columns guarantees uniqueness, though individually
uniqueness is not guaranteed. Hence, they are combined to uniquely identify records in a table. You can you
composite key as PK but the Composite key will go to other tables as a foreign key.
Alternate key
A relation can have only one primary key. It may contain many fields or a combination of fields that can be used as
the primary key. One field or combination of fields is used as the primary key. The fields or combinations of fields
that are not used as primary keys are known as candidate keys or alternate keys.
Sort Or control key
A field or combination of fields that are used to physically sequence the stored data is called a sort key. It is also
known s the control key.
Alternate key
An alternate key is a secondary key it can be simple to understand an example:
Let's take an example of a student it can contain NAME, ROLL NO., ID, and CLASS.
Unique key
A unique key is a set of one or more than one field/column of a table that uniquely identifies a record in a database
table.
You can say that it is a little like a primary key but it can accept only one null value and it cannot have duplicate
values.
The unique key and primary key both provide a guarantee for uniqueness for a column or a set of columns.
There is an automatically defined unique key constraint within a primary key constraint.
There may be many unique key constraints for one table, but only one PRIMARY KEY constraint for one table.
Artificial Key
The key created using arbitrarily assigned data are known as artificial keys. These keys are created when a primary
key is large and complex and has no relationship with many other relations. The data values of the artificial keys are
usually numbered in a serial order.
For example, the primary key, which is composed of Emp_ID, Emp_role, and Proj_ID, is large in employee relations.
So it would be better to add a new virtual attribute to identify each tuple in the relation uniquely. Rownum and
rowid are artificial keys. It should be a number or integer, numeric.
Surrogate key
SURROGATE KEYS is An artificial key that aims to uniquely identify each record and is called a surrogate key. This
kind of partial key in DBMS is unique because it is created when you don’t have any natural primary key. You can't
insert values of the surrogate key. Its value comes from the system automatically.
No business logic in key so no changes based on business requirements
Surrogate keys reduce the complexity of the composite key.
Surrogate keys integrate the extract, transform, and load in DBs.
Compound Key
COMPOUND KEY has two or more attributes that allow you to uniquely recognize a specific record. It is possible that
each column may not be unique by itself within the database.
Operators
SQL UNION clause is used to select distinct values from the tables.
SQL UNION ALL clause used to select all values including duplicates from the tables
The UNION operator is used to combine the result-set of two or more SELECT statements.
Every SELECT statement within UNION must have the same number of columns
IN operator allows you to specify multiple values in a WHERE clause. The IN operator is a shorthand for multiple OR
conditions.
ANY operator
Returns a Boolean value as a result Returns true if any of the subquery values meet the condition . ANY means that
the condition will be true if the operation is true for any of the values in the range.
NOT IN can also take literal values whereas not existing need a query to compare the results.
SELECT CAT_ID FROM CATEGORY_A WHERE CAT_ID NOT IN (SELECT CAT_ID FROM CATEGORY_B)
NOT EXISTS
SELECT A.CAT_ID FROM CATEGORY_A A WHERE NOT EXISTS (SELECT B.CAT_ID FROM CATEGORY_B B WHERE
B.CAT_ID = A.CAT_ID)
NOT EXISTS could be good to use because it can join with the outer query & can lead to usage of the index if the
criteria use an indexed column.
EXISTS AND NOT EXISTS are typically used in conjuntion with a correlated nested query. The result of EXISTS is a
boolean value, TRUE if the nested query ressult contains at least one tuple, or FALSE if the nested query result
contains no tuples
Supporting operators in different DBMS environments:
Keyword Database System
TOP SQL Server, MS Access
LIMIT MySQL, PostgreSQL, SQLite
FETCH FIRST Oracle
But 10g onward TOP Clause no longer supported replace with ROWNUM clause.
SQL FUNCTIONS
Subquery Concept
END
Data abstraction Process of hiding (suppressing) unnecessary details so that the high-level concept can be made
more visible. A data model is a relatively simple representation, usually graphical, of more complex real-world data
structures.
Database Instance is the data which is stored in the database at a particular moment is called an instance of
the database. Also called database state (or occurrence or snapshot). The content of the database, instance is also
called an extension.
The term instance is also applied to individual database components,
E.g., record instance, table instance, entity instance
Types of Instances
Initial Database Instance: Refers to the database instance that is initially loaded into the system.
Valid Database Instance: An instance that satisfies the structure and constraints of the database.
The database instance changes every time the database is updated.
Database Schema is the overall design or skeleton structure of the database. It represents the logical view, visual
diagram having relationals of objects of the entire database.
A database schema can be represented by using a visual diagram. That diagram shows the database objects and
their relationship with each other. A schema contains schema objects like table, foreign key, primary key, views,
columns, data types, stored procedure, etc.
A database schema is designed by the database designers to help programmers whose software will interact with
the database. The process of database creation is called data modeling.
Relational Schema definition
Relational schema refers to the meta-data that describes the structure of data within a certain domain . It is the
blueprint of a database that outlines the way any database will have some number of constraints that must be
applied to ensure correct data (valid states).
Database Schema definition
A relational schema may also refer to as a database schema. A database schema is the collection of relation schemas
for a whole database. A relational or Database schema is a collection of meta-data. Database schema describes the
structure and constraints of data represented in a particular domain . A Relational schema can be described as a
blueprint of a database that outlines the way data is organized into tables. This blueprint will not contain any type
of data. In a relational schema, each tuple is divided into fields called Domain.
Other definitions: The overall design of the database.Structure of database, Schema is also called intension.
Types of Schemas w.r.t Database
DBMS Schemas: Logical/Conceptual/physical schema/external schema
Data warehouse/multi-dimensional schemas: Snowflake/star
OLAP Schemas: Fact constellation schema/galaxy
ANSI-SPARC schemas
External Level: View level, user level, external schema, Client level.
Conceptual Level: Community view, ERD Model, conceptual schema, server level, Conceptual (high-level,
semantic) data models, entity-based or object-based data models, what data is stored .and relationships, it’s deal
Logical data independence (External/conceptual mapping)
logical schema: It is sometimes called conceptual schema too (server level), Implementation (representational)
data models. Specific DBMS level modeling.
Internal Level: Physical representation, Internal schema, Database level, Low level. It deals with how data is stored
in the database and Physical data independence (Conceptual/internal mapping)
Physical data level: Physical storage, physical schema, some-time deals with internal schema. It is detailed in
administration manuals.
The Conceptual Model Is To Establish The Entities, Their Attributes, And Their Relationships. It is also
called ERD. This is also called canonical data model
Logical Data Model: Defines HOW the system should be implemented regardless of the DBMS. This model
is typically created by Data Architects and Business Analysts. The purpose is to developed technical map
of rules and data structures. The logical data model defines the structure of the data elements and set the
relationships between them. conceptual data model this data model defines what the system contains.
This model is typically created by Business stakeholders and Data Architects. The purpose is to organize,
scope and define business concepts and rules.
Physical Data Model: This Data Model describes HOW the system will be implemented using a specific
DBMS system. This model is typically created by DBA and developers. The purpose is actual
implementation of the database. The Physical Data Model Describes The Database-Specific
Implementation Of The Data Model.
There are mainly three different types of data ERD models: conceptual data models, logical data models,
and physical data models.
Data independence
IT is the ability to make changes in either the logical or physical structure of the database without requiring
reprogramming of application programs.
Data Independence types
Logical data independence=>Immunity of external schemas to changes in the conceptual schema
Physical data independence=>Immunity of the conceptual schema to changes in the internal schema.
Detail description
When a schema at a lower level is changed, only the mappings.
between this schema and higher-level schemas need to be changed in a DBMS that fully supports data
independence.
The higher-level schemas themselves are unchanged.
Hence, the application programs need not be changed since they refer to the external schemas.
For example, the internal schema may be changed when certain file structures are reorganized or new indexes are
created to improve database performance.
Data abstraction
Data abstraction makes complex systems more user-friendly by removing the specifics of the system mechanics.
The conceptual data model has been most successful as a tool for communication between the designer and the
end user during the requirements analysis and logical design phases. Its success is because the model, using either
ER or UML, is easy to understand and convenient to represent. Another reason for its effectiveness is that it is a top-
down approach using the concept of abstraction. In addition, abstraction techniques such as generalization provide
useful tools for integrating end user views to define a global conceptual schema.
These differences show up in conceptual data models as different levels of abstraction; connectivity of relationships
(one-to-many, many-to-many, and so on); or as the same concept being modeled as an entity, attribute, or
relationship, depending on the user’s perspective.
Techniques used for view integration include abstraction, such as generalization and aggregation to create new
supertypes or subtypes, or even the introduction of new relationships. The higher-level abstraction, the entity
cluster, must maintain the same relationships between entities inside and outside the entity cluster as those that
occur between the same entities in the lower-level diagram.
ERD, EER terminology is not only used in conceptual data modeling but also in artificial intelligence literature when
discussing knowledge representation (KR).
The goal of KR techniques is to develop concepts for accurately modeling some domain of knowledge by creating an
ontology.
Types of Abstractions
Classification: A is a member of class B
Aggregation: B, C, D Are Aggregated Into A, A Is Made Of/Composed Of B, C, D, Is-Made-Of, Is-
Associated-With, Is-Part-Of, Is-Component-Of. Aggregation is an abstraction through which relationships are
treated as higher-level entities.
Generalization: B,C,D can be generalized into a, b is-a/is-an a, is-as-like, is-kind-of.
Category or Union: A category represents a single superclass or subclass relationship with more than one
superclass.
Specialization: A can be specialized into B, C, DB, C, or D (special cases of A) Has-a, Has-A, Has An, Has-An
approach is used in the specialization
Composition: IS-MADE-OF (like aggregation)
Identification: IS-IDENTIFIED-BY
Ontology is the fundamental part of Semantic Web. The goal of World Wide Web Consortium (W3C) is to bring the
web into (its full potential) a semantic web with reusing previous systems and artifacts. Most legacy systems have
been documented in structural analysis and structured design (SASD), especially in simple or Extended ER Diagram
(ERD). Such systems need up-gradation to become the part of semantic web. In this paper, we present ERD to OWL-
DL ontology transformation rules at concrete level. These rules facilitate an easy and understandable transformation
from ERD to OWL. Ontology engineering is an important aspect of semantic web vision to attain the meaningful
representation of data. Although various techniques exist for the creation of ontology, most of the methods involve
the number of complex phases, scenario-dependent ontology development, and poor validation of ontology. This
research work presents a lightweight approach to build domain ontology using Entity Relationship (ER) model.
We now discuss four abstraction concepts that are used in semantic data models, such as the EER model as well as
in KR schemes: (1) classification and instantiation, (2) identification, (3) specialization and generalization, and (4)
aggregation and association.
One ongoing project that is attempting to allow information exchange among computers on the Web is called the
Semantic Web, which attempts to create knowledge representation models that are quite general in order to allow
meaningful information exchange and search among machines.
One commonly used definition of ontology is a specification of a conceptualization. In this definition, a
conceptualization is the set of concepts that are used to represent the part of reality or knowledge that is of interest
to a community of users.
Data Modelling
Data Modelling is the diagrammatic representation showing how the entities are related to each other. It is the initial
step towards database design. We first create the conceptual model, then the logical model and finally move to the
physical model.
The two types of Data Modeling Techniques are
1. Entity Relationship (E-R) Model
2. UML (Unified Modelling Language)
UML Diagrams Notations
UML stands for Unified Modeling Language. ERD stands for Entity Relationship Diagram. UML is a popular and
standardized modeling language that is primarily used for object-oriented software. Entity-Relationship diagrams
are used in structured analysis and conceptual modeling.
Object-oriented data models are typically depicted using Unified Modeling Language (UML) class diagrams. Unified
Modeling Language (UML) is a language based on OO concepts that describes a set of diagrams and symbols that
can be used to graphically model a system. UML class diagrams are used to represent data and their relationships
within the larger UML object-oriented system’s modeling language.
Associations
UML uses Boolean attributes instead of unary relationships but allows relationships of all other entities. Optionally,
each association may be given at most one name. Association names normally start with a capital letter. Binary
associations are depicted as lines between classes. Association lines may include elbows to assist with layout or
when needed (e.g., for ring relationships).
ER Diagram and Class Diagram Synchronization Sample
Supporting the synchronization between ERD and Class Diagram. You can transform the system design from the
data model to the Class model and vice versa, without losing its persistent logic.
Conversions of Terminology of UML and ERD
Types of Attributes-
In ER diagram, attributes associated with an entity set may be of the following types-
1. Simple attributes/atomic attributes/Static attributes
2. Key attribute
3. Unique attributes
4. Stored attributes
5. Prime attributes
6. Derived attributes (DOB, AGE, Oval is a derived attribute)
7. Composite attribute (Address (street, door#, city, town, country))
8. The multivalued attribute (double ellipse (Phone#, Hobby, Degrees))
9. Dynamic Attributes
10. Boolean attributes
The fundamental new idea in the MOST model is the so-called dynamic attributes. Each attribute of an object class
is classified to be either static or dynamic. A static attribute is as usual. A dynamic attribute changes its value with
time automatically.
Attributes of the database tables which are candidate keys of the database tables are called prime attributes.
Symbols of Attributes:
The Entity
The entity is the basic building block of the E-R data model. The term entity is used in three different meanings or
for three different terms and are:
Entity type
Entity instance
Entity set
Characteristics
DFDs show the flow of data between different processes or a specific system.
DFDs are simple and hide complexities.
DFDs are descriptive and links between processes describe the information flow.
DFDs are focused on the flow of information only.
Data flows are pipelines through which packets of information flow.
DBMS applications store data as a file. RDBMS applications store data in a tabular form.
In the file system approach, there is no concept of data models exists. It mostly consists of different types
of files like mp3, mp4, txt, doc, etc. that are grouped into directories on a hard drive.
Collection of logical constructs used to represent data structure and relationships within the database.
A data flow diagram shows the way information flows through a process or system. It includes data inputs
and outputs, data stores, and the various subprocesses the data moves through.
Symbols used in DFD
Dataflow => Arrow symbol
Data store => It is expressed with a rectangle open on the right width and the left width of the rectangle drawn
with double lines.
Processes => Circle or near squire rectangle
DFD-process => Numbered DFD processes circle and rectangle by passing a line above the center of the circle or
rectangle
To create DFD following steps:
1. Create a list of activities
2. Construct Context Level DFD (external entities, processes)
3. Construct Level 0 DFD (manageable sub-process)
4. Construct Level 1- n DFD (actual data flows and data stores)
Types of DFD
1. Context diagram
2. Level 0,1,2 diagrams
3. Detailed diagram
4. Logical DFD
5. Physical DFD
Context diagrams are the most basic data flow diagrams. They provide a broad view that is easily digestible but
offers little detail. They always consist of a single process and describe a single system. The only process displayed
in the CDFDs is the process/system being analyzed. The name of the CDFDs is generally a Noun Phrase.
Implementation models (Types of Record-based logical Models are (Hierarchical database model
(HDBM), Network database model (NDBM), Relational database model (RDBM)
Semi-structured Data Model (The semi-structured data model allows the data specifications at places
where the individual data items of the same type may have different attribute sets. The Extensible
Markup Language, also known as XML, is widely used for representing semi-structured data).
N-ary
N-ary (many entities involved in the relationship)
An N-ary relationship exists when there are n types of entities. There is one limitation of the N-ary any entities so it
is very hard to convert into an entity, a rational table.
A relationship between more than two entities is called an n-ary relationship.
Examples of relationships R between two entities E and F
Normalize the ERD and remove FD from Entities to enter the final steps
Transformation Rule 1. Each entity in an ER diagram is mapped to a single table in a relational database;
Transformation Rule 2. A key attribute of the entity type is represented by the primary key.
All single-valued attribute becomes a column for the table
Transformation Rule 3. Given an entity E with primary identify, a multivalued attributed attached to E in
an ER diagram is mapped to a table of its own;
database design. The table contains columns for all attributes in the primary keys of both tables
transformed from entities E and F, and this set of columns form the primary key for table T.
Table T also contains columns for all attributes attached to the relationship. Relationship occurrences are
represented by rows of the table, with the related entity instances uniquely identified by their primary
key values as rows.
Case 1: Binary Relationship with 1:1 cardinality with the total participation of an entity
Total participation, i.e. min occur is 1 with double lines in total.
A person has 0 or 1 passport number and the Passport is always owned by 1 person. So it is 1:1 cardinality
with full participation constraint from Passport. First Convert each entity and relationship to tables.
Case 2: Binary Relationship with 1:1 cardinality and partial participation of both entities
A male marries 0 or 1 female and vice versa as well. So it is a 1:1 cardinality with partial participation
constraint from both. First Convert each entity and relationship to tables. Male table corresponds to Male
Entity with key as M-Id. Similarly, the Female table corresponds to Female Entity with the key as F-Id.
Marry Table represents the relationship between Male and Female (Which Male marries which female).
So it will take attribute M-Id from Male and F-Id from Female.
Case 3: Binary Relationship with n: 1 cardinality
Case 4: Binary Relationship with m: n cardinality
Case 5: Binary Relationship with weak entity
In this scenario, an employee can have many dependents and one dependent can depend on one
employee. A dependent does not have any existence without an employee (e.g; you as a child can be
dependent on your father in his company). So it will be a weak entity and its participation will always be
total.
Generalization
Reverse processes of defining subclasses (bottom-up approach). Bring together common attributes in entities (ISA,
IS-A, IS AN, IS-AN)
Union
Models a class/subclass with more than one superclass of distinct entity types. Attribute inheritance is selective.
It expresses some entity occurrences associated with one occurrence of the related entity=>The specific.
The cardinality of a relationship is the number of instances of entity B that can be associated with entity A. There is
a minimum cardinality and a maximum cardinality for each relationship, with an unspecified maximum cardinality
being shown as N. Cardinality limits are usually derived from the organization's policies or external constraints.
For Example:
At the University, each Teacher can teach an unspecified maximum number of subjects as long as his/her weekly
hours do not exceed 24 (this is an external constraint set by an industrial award). Teachers may teach 0 subjects if
they are involved in non-teaching projects. Therefore, the cardinality limits for TEACHER are (O, N).
The University's policies state that each Subject is taught by only one teacher, but it is possible to have Subjects that
have not yet been assigned a teacher. Therefore, the cardinality limits for SUBJECT are (0,1). Teacher and subject
have M: N relationship connectivity. And they are binary (two) ternary too if we break this relationship. Such
situations are modeled using a composite entity (or gerund)
Cardinality Constraint: Quantification of the relationship between two concepts or classes (a constraint on
aggregation)
Remember cardinality is always a relationship to another thing.
Max Cardinality(Cardinality) Always 1 or Many. Class A has a relationship to Package B with a cardinality of one,
which means at most there can be one occurrence of this class in the package. The opposite could be a Package
that has a Max Cardinality of N, which would mean there can be N number of classes
Min Cardinality(Optionality) Simply means "required." Its always 0 or 1. 0 would mean 0 or more, 1 or more
The three types of cardinality you can define for a relationship are as follows:
Minimum Cardinality. Governs whether or not selecting items from this relationship is optional or required. If you
set the minimum cardinality to 0, selecting items is optional. If you set the minimum cardinality to greater than 0,
the user must select that number of items from the relationship.
Optional to Mandatory, Optional to Optional, Mandatory to Optional, Mandatory to Mandatory
Summary Of ER Diagram Symbols
Maximum Cardinality. Sets the maximum number of items that the user can select from a relationship. If you set the
minimum cardinality to greater than 0, you must set the maximum cardinality to a number at least as large If you do
not enter a maximum cardinality, the default is 999.
Type of Max Cardinality: 1 to 1, 1 to many, many to many, many to 1
Default Cardinality. Specifies what quantity of the default product is automatically added to the initial solution that
the user sees. Default cardinality must be equal to or greater than the minimum cardinality and must be less than
or equal to the maximum cardinality.
Replaces cardinality ratio numerals and single/double line notation
Associate a pair of integer numbers (min, max) with each participant of an entity type E in a relationship type R,
where 0 ≤ min ≤ max and max ≥ 1 max=N => finite, but unbounded
Relationship types can also have attributes
Attributes of 1:1 or 1:N relationship types can be migrated to one of the participating entity types
For a 1:N relationship type, the relationship attribute can be migrated only to the entity type on the N-side of the
relationship
Attributes on M: N relationship types must be specified as relationship attributes
In the case of Data Modelling, Cardinality defines the number of attributes in one entity set, which can be associated
with the number of attributes of other sets via a relationship set. In simple words, it refers to the relationship one
table can have with the other table. They can be One-to-one, One-to-many, Many-to-one, or Many-to-many. And
third may be the number of tuples in a relation.
In the case of SQL, Cardinality refers to a number. It gives the number of unique values that appear in the table for
a particular column. For eg: you have a table called Person with the column Gender. Gender column can have values
either 'Male' or 'Female''.
cardinality is the number of tuples in a relation (number of rows).
The Multiplicity of an association indicates how many objects the opposing class of an object can be instantiated.
When this number is variable then the.
Multiplicity Cardinality + Participation dictionary definition of cardinality is the number of elements in a particular
set or other.
Multiplicity can be set for attribute operations and associations in a UML class diagram (Equivalent to ERD) and
associations in a use case diagram.
A cardinality is how many elements are in a set. Thus, a multiplicity tells you the minimum and maximum allowed
members of the set. They are not synonymous.
Given the example below:
0-1 ---------- 1-1
Multiplicities:
The first multiplicity, for the left entity: 0-1
The second multiplicity, for the right entity: 1-
Cardinalities for the first multiplicity:
Lower cardinality: 0
Upper cardinality: 1
Cardinalities for the second multiplicity:
Lower cardinality: 1
Upper cardinality:
Multiplicity is the constraint on the collection of the association objects whereas Cardinality is the count of the
objects that are in the collection. The multiplicity is the cardinality constraint.
A multiplicity of an event = Participation of an element + cardinality of an element.
UML uses the term Multiplicity, whereas Data Modelling uses the term Cardinality. They are for all intents and
purposes, the same.
Cardinality (sometimes referred to as Ordinality) is what is used in ER modeling to "describe" a relationship between
two Entities.
Cardinality and Modality
The maindifference between cardinality and modality is that cardinality is defined as the metric used to specify the
number of occurrences of one object related to the number of occurrences of another object. On the contrary,
modality signifies whether a certain data object must participate in the relationship or not.
Cardinality refers to the maximum number of times an instance in one entity can be associated with instances in
the related entity. Modality refers to the minimum number of times an instance in one entity can be associated
with an instance in the related entity.
Cardinality can be 1 or Many and the symbol is placed on the outside ends of the relationship line, closest to the
entity, Modality can be 1 or 0 and the symbol is placed on the inside, next to the cardinality symbol. For a
cardinality of 1, a straight line is drawn. For a cardinality of Many a foot with three toes is drawn. For a modality of
1, a straight line is drawn. For a modality of 0, a circle is drawn.
zero or more
1 or more
1 and only 1 (exactly 1)
Multiplicity = Cardinality + Participation
Cardinality: Denotes the maximum number of possible relationship occurrences in which a certain entity can
participate (in simple terms: at most).
Note: Connectivity and Modality/ multiplicity/ Cardinality and Relationship are same terms.
Participation: Denotes if all or only some entity occurrences participate in a relationship (in simple terms: at least).
BASIS FOR
CARDINALITY MODALITY
COMPARISON
Generalization is like a bottom-up approach in which two or more entities of lower levels combine to form a
higher level entity if they have some attributes in common.
Generalization is more like a subclass and superclass system, but the only difference is the approach.
Generalization uses the bottom-up approach. Like subclasses are combined to make a superclass. IS-A, ISA, IS A, IS
AN, IS-AN Approach is used in generalization
Generalization is the result of taking the union of two or more (lower level) entity types to produce a higher level
entity type.
Generalization is the same as UNION. Specialization is the same as ISA.
A specialization is a top-down approach, and it is the opposite of Generalization. In specialization, one higher-level
entity can be broken down into two lower-level entities. Specialization is the result of taking a subset of a higher-
level entity type to form a lower-level entity type.
Normally, the superclass is defined first, the subclass and its related attributes are defined next, and the
relationship set is then added. HASA, HAS-A, HAS AN, HAS-AN.
UML to EER specialization or generalization comes in the form of hierarchical entity set:
Mapping Process
1. Create tables for all higher-level entities.
2. Create tables for lower-level entities.
3. Add primary keys of higher-level entities in the table of lower-level entities.
4. In lower-level tables, add all other attributes of lower-level entities.
5. Declare the primary key of the higher-level table and the primary key of the lower-level table.
6. Declare foreign key constraints.
This section presents the concept of entity clustering, which abstracts the ER schema to such a degree that the
entire schema can appear on a single sheet of paper or a single computer screen.
END
is NULL. Referential integrity can be violated if the value of any foreign key in t refers to a tuple that does not exist
in the referenced relation.
Note: Insertions Constraints and constraints on NULLs are called explicit. Insert can violate any of the four types of
constraints discussed in the implicit constraints.
1. Business Rule or default relation constraints
These rules are applied to data before (first) the data is inserted into the table columns. For example, Unique, Not
NULL, Default constraints.
1. The primary key value can’t be null.
2. Not null (absence of any value (i.e., unknown or nonapplicable to a tuple)
3. Unique
4. Primary key
5. Foreign key
6. Check
7. Default
2. Null Constraints
Comparisons Involving NULL and Three-Valued Logic:
SQL has various rules for dealing with NULL values. Recall from Section 3.1.2 that NULL is used to represent a missing
value, but that it usually has one of three different interpretations—value unknown (exists but is not known), value
not available (exists but is purposely withheld), or value not applicable (the attribute is undefined for this tuple).
Consider the following examples to illustrate each of the meanings of NULL.
1. Unknownalue. A person’s date of birth is not known, so it is represented by NULL in the database.
2. Unavailable or withheld value. A person has a home phone but does not want it to be listed, so it is withheld
and represented as NULL in the database.
3. Not applicable attribute. An attribute Last_College_Degree would be NULL for a person who has no college
degrees because it does not apply to that person.
3. Enterprise Constraints
Enterprise constraints – sometimes referred to as semantic constraints – are additional rules specified by users or
database administrators and can be based on multiple tables.
Here are some examples.
A class can have a maximum of 30 students.
A teacher can teach a maximum of four classes per semester.
An employee cannot take part in more than five projects.
The salary of an employee cannot exceed the salary of the employee’s manager.
4. Key Constraints or Uniqueness Constraints :
These are called uniqueness constraints since it ensures that every tuple in the relation should be unique.
A relation can have multiple keys or candidate keys(minimal superkey), out of which we choose one of the keys as
primary key, we don’t have any restriction on choosing the primary key out of candidate keys, but it is suggested to
go with the candidate key with less number of attributes.
Null values are not allowed in the primary key, hence Not Null constraint is also a part of key constraint.
5. Domain, Field, Row integrity ConstraintsA domain of possible values must be associated with every
attribute (for example, integer types, character types, date/time types). Declaring an attribute to be of a
particular domain act as the constraint on the values that it can take. Domain Integrity rules govern the values.
In the specific field/cell values must be with in column domain and represent a specific location within at table
An assertion is any condition that the database must always satisfy. Domain constraints and Integrity constraints
are special forms of assertions.
8. Authorization constraints
We may want to differentiate among the users as far as the type of access they are permitted to various data values
in the database. This differentiation is expressed in terms of Authorization.
The most common being:
Read authorization – which allows reading but not the modification of data;
Insert authorization – which allows the insertion of new data but not the modification of existing data
Update authorization – which allows modification, but not deletion.
The types of constraints we discussed so far may be called state constraints because they define the constraints that
a valid state of the database must satisfy. Another type of constraint, called transition constraints, can be defined
to deal with state changes in the database. An example of a transition constraint is: “the salary of an employee can
only increase.”
What is the use of data constraints?
Constraints are used to:
Avoid bad data being entered into tables.
At the database level, it helps to enforce business logic.
Improves database performance.
Enforces uniqueness and avoid redundant data to the database.
END
SQL version:
1970 – Dr. Edgar F. “Ted” Codd described a relational model for databases.
1974 – Structured Query Language appeared.
1978 – IBM released a product called System/R.
1986 – SQL1 IBM developed the prototype of a relational database, which is standardized by ANSI.
1989- First minor changes but not standards changed
1992 – SQL2 launched with features like triggers, object orientation, etc.
SQL1999 to 2003- SQL3 launched
SQL2006- Support for XML Query Language
SQL2011-improved support for temporal databases
SQL-86 in 1986, the most recent version in 2011 (SQL:2016).
SQL-86
The first SQL standard was SQL-86. It was published in 1986 as ANSI standard and in 1987 as International
Organization for Standardization (ISO) standard. The starting point for the ISO standard was IBM’s SQL standard
implementation. This version of the SQL standard is also known as SQL 1.
SQL-89
The next SQL standard was SQL-89, published in 1989. This was a minor revision of the earlier standard, a superset
of SQL-86 that replaced SQL-86. The size of the standard did not change.
SQL-92
The next revision of the standard was SQL-92 – and it was a major revision. The language introduced by SQL-92 is
sometimes referred to as SQL 2. The standard document grew from 120 to 579 pages. However, much of the growth
was due to more precise specifications of existing features.
The most important new features were:
An explicit JOIN syntax and the introduction of outer joins: LEFT JOIN, RIGHT JOIN, FULL JOIN.
The introduction of NATURAL JOIN and CROSS JOIN
SQL:1999
SQL:1999 (also called SQL 3) was the fourth revision of the SQL standard. Starting with this version, the standard
name used a colon instead of a hyphen to be consistent with the names of other ISO standards. This standard was
published in multiple installments between 1999 and 2002.
In 1993, the ANSI and ISO development committees decided to split future SQL development into a multi-part
standard.
learning SQL window functions here.) SQL:2003 also introduced XML-related functions, sequence generators, and
identity columns.
Conformance with Standard SQL
This section declares Oracle's conformance to the SQL standards established by these organizations:
1. American National Standards Institute (ANSI) in 1986.
2. International Standards Organization (ISO) in 1987.
3. United States Federal Government Federal Information Processing Standards (FIPS)
Example of QBE:
III. Physical design. The physical design step involves the selection of indexes (access methods), partitioning, and
clustering of data. The logical design methodology in step II simplifies the approach to designing large relational
databases by reducing the number of data dependencies that need to be analyzed. This is accomplished by inserting
conceptual data modeling and integration steps (II(a) and II(b) of pictures into the traditional relational design
approach.
IV. Database implementation, monitoring, and modification.
Once thedesign is completed, and the database can be created through the implementation of the formal schema
using the data definition language (DDL) of a DBMS.
Attribute Describes some aspect of the entity/object, characteristics of object. An attribute is a data item that
describes a property of an entity or a relationship
Column or field The column represents the set of values for a specific attribute. An attribute is for a model and a
column is for a table, a column is a column in a database table whereas attribute(s) are externally visible
facets of an object.
A relation instance is a finite set of tuples in the RDBMS system. Relation instances never have duplicate tuples.
Relationship Association between entities, connected entities are called participants, Connectivity describes the
relationship (1-1, 1-M, M-N)
The degree of a relationship refers to the=> number of entities
Following the relation in above image consist degree=4, 5=cardinality, data values/cells = 20.
Characteristics of relation
1. Distinct Relation/table name
2. Relations are unordered
3. Cells contain exactly one atomic (Single) value means Each cell (field) must contain a single value
4. No repeating groups
5. Distinct attributes name
6. Value of attribute comes from the same domain
7. Order of attribute has no significant
8. The attributes in R(A1, ...,An) and the values in t = <V1,V2, ..... , Vn> are ordered.
9. Each tuple is a distinct
10. order of tuples that has no significance.
11. tuples may be stored and retrieved in an arbitrary order
12. Tables manage attributes. This means they store information in form of attributes only
13. Tables contain rows. Each row is one record only
14. All rows in a table have the same columns. Columns are also called fields
15. Each field has a data type and a name
16. A relation must contain at least one attribute (column) that identifies each tuple (row) uniquely
There are Magic Tables (virtual tables) in SQL Server that hold the temporal information of recently inserted and
recently deleted data in the virtual table.
The INSERTED magic table stores the before version of the row, and the DELETED table stores the after version of
the row for any INSERT, UPDATE, or DELETE operations.
A record is a collection of data objects that are kept in fields, each having its name and datatype. A Record can be
thought of as a variable that can store a table row or a set of columns from a table row. Table columns relate to the
fields.
External Tables
An external table is a read-only table whose metadata is stored in the database but whose data is
stored outside the database.
Table Partitioning In this way, large tables can be broken down into smaller, more manageable parts.
A non-partitioned table cannot store more than 2 billion rows. It is possible to overcome this limit by distributing
the rows across several partitions. Each partition must not contain more than 2 billion rows.
Parallelization
Partitioning allows operations to be parallelized by using several execution threads for each table.
Horizontal partitioning divides a table into multiple tables that contain the same number of columns, but fewer rows.
Vertical partitioning splits a table into two or more tables containing different columns.
Table partitioning vertically (Table columns)
Collections Records
All items are of the same data type All items are different data types
Same data type items are called elements Different data type items are called fields
For creating a collection variable you can use %TYPE For creating a record variable you can use %ROWTYPE or
%TYPE
Lists and arrays are examples Tables and columns are examples
By default, tables are heap-organized. This means the database is free to store rows wherever there is space. You
can add the "organization heap" clause if you want to be explicit.
We can once again be faced with possible ambiguity among attribute names if attributes of the same name exist—
one in a relation in the FROM clause of the outer query, and another in a relation in the FROM clause of the nested
query. The rule is that a reference to an unqualified attribute refers to the relation declared in the innermost nested
query.
On the other hand, when we TRUNCATE a table, the table structure remains the same, so you will not face any of
the above problems.
In general, ANSI SQL permits the use of ON DELETE and ON UPDATE clauses to cover
CASCADE, SET NULL, or SET DEFAULT.
MS Access, SQL Server, and Oracle support ON DELETE CASCADE.
MS Access and SQL Server support ON UPDATE CASCADE.
Oracle does not support ON UPDATE CASCADE.
Oracle supports SET NULL.
MS Access and SQL Server do not support SET NULL.
Refer to your product manuals for additional information on referential constraints.
While MS Access does not support ON DELETE CASCADE or ON UPDATE CASCADE at the SQL command-line level,
A view is a virtual relation or one that does not exist but is dynamically derived it can be constructed by performing
operations (i.e., select, project, join, etc.) on values of existing base relation (a named relation that is designed in a
conceptual schema whose tuples are physically stored in the database). Views are viewable in the external
schema.
Types of View
1. User-defined view
a. Simple view (Single table view)
b. Complex View (Multiple tables having joins, group by, and functions)
c. Inline View (Based on a subquery in from clause to create a temp table and form a complex
query)
d. Materialized View (It stores physical data, definitions of tables)
e. Dynamic view
f. Static view
2. Database View
3. System Defined Views
4. Information Schema View
5. Catalog View
6. Dynamic Management View
7. Server-scoped Dynamic Management View
8. Sources of Data Dictionary Information View
a. General Views
b. Transaction Service Views
c. SQL Service Views
Types of query or Applications of Multidimensional Indexes/ Tables
Advantages of View:
Provide security
Hide specific parts of the database from certain users
Customize base relations based on their needs
It supports the external model
Provide logical independence
Views don't store data in a physical location.
Views can provide Access Restriction, since data insertion, update, and deletion is not possible with the
view.
We can DML on view if it is derived from a single base relation, and contains the primary key or a
candidate key
When can a view be updated?
1. The view is defined based on one and only one table.
2. The view must include the PRIMARY KEY of the table based upon which the view has been created.
3. The view should not have any field made out of aggregate functions.
4. The view must not have any DISTINCT clause in its definition.
5. The view must not have any GROUP BY or HAVING clause in its definition.
6. The view must not have any SUBQUERIES in its definitions.
7. If the view you want to update is based upon another view, the latter should be updatable.
8. Any of the selected output fields (of the view) must not use constants, strings, or value expressions.
END
In most cases, if you can place your relations in the third normal form (3NF), then you will have avoided most of
the problems common to bad relational designs. Boyce-Codd (BCNF) and the fourth normal form (4NF) handle
special situations that arise only occasionally.
Denormalization in Databases
Denormalization is a database optimization technique in which we add redundant data to one or more tables. This
can help us avoid costly joins in a relational database. Note that denormalization does not mean not doing
normalization. It is an optimization technique that is applied after normalization.
Types of Denormalization
The two most common types of denormalization are two entities in a one-to-one relationship and two entities in a
one-to-many relationship.
Pros of Denormalization: -
Retrieving data is faster since we do fewer joins Queries to retrieve can be simpler (and therefore less likely to
have bugs), since we need to look at fewer tables.
Cons of Denormalization: -
Updates and inserts are more expensive. Denormalization can make an update and insert code harder to write.
Data may be inconsistent. Which is the “correct” value for a piece of data?
Data redundancy necessities more storage.
Relational Decomposition
Decomposition is used to eliminate some of the problems of bad design like anomalies, inconsistencies, and
redundancy.
When a relation in the relational model is not inappropriate normal form then the decomposition of a relationship
is required. In a database, it breaks the table into multiple tables.
Types of Decomposition
1 Lossless Decomposition
If the information is not lost from the relation that is decomposed, then the decomposition will be lossless. The
process of normalization depends on being able to factor or decompose a table into two or smaller tables, in such a
way that we can recapture the precise content of the original table by joining the decomposed parts.
2 Lossy Decomposition
Data will be lost for more decomposition of the table.
END
Trivial − If a functional dependency (FD) X → Y holds, where Y is a subset of X, then it is called a trivial FD. It occurs
when B is not a subset of A in − A ->B, DeptId -> DeptName
Non-trivial − If an FD X → Y holds, where Y is not a subset of X, then it is called a non-trivial FD.
Completely non-trivial − If an FD X → Y holds, where x intersects Y = Φ, it is said to be a completely non-trivial FD.
When A intersection B is NULL, then A → B is called a complete non-trivial. A ->B Intersaction is empty.
Multivalued Dependency and its types
1. Join Dependency
2. Join decomposition is a further generalization of Multivalued dependencies.
3. Inclusion Dependency
Example of Dependency diagrams and flow
Dependency Preserving
If a relation R is decomposed into relations R1 and R2, then the dependencies of R either must be a part of R1 or
R2 or must be derivable from the combination of functional dependencies of R1 and R2.
For example, suppose there is a relation R (A, B, C, D) with a functional dependency set (A->BC). The relational R is
decomposed into R1(ABC) and R2(AD) which is dependency preserving because FD A->BC is a part of relation
R1(ABC)
Find the canonical cover?
Solution: Given FD = { B → A, AD → BC, C → ABD }, now decompose the FD using decomposition rule( Armstrong
Axiom ).
B→A
AD → B ( using decomposition inference rule on AD → BC)
AD → C ( using decomposition inference rule on AD → BC)
C → A ( using decomposition inference rule on C → ABD)
C → B ( using decomposition inference rule on C → ABD)
C → D ( using decomposition inference rule on C → ABD)
Now set of FD = { B → A, AD → B, AD → C, C → A, C → B, C → D }
Canonical Cover/ irreducible
A canonical cover or irreducible set of functional dependencies FD is a simplified set of FD that has a similar closure
as the original set FD.
Extraneous attributes
An attribute of an FD is said to be extraneous if we can remove it without changing the closure of the set of FD.
Closure Of Functional Dependency
The Closure Of Functional Dependency means the complete set of all possible attributes that can be functionally
derived from given functional dependency using the inference rules known as Armstrong’s Rules.
If “F” is a functional dependency then closure of functional dependency can be denoted using “{F}+”.
There are three steps to calculate closure of functional dependency. These are:
Step-1 : Add the attributes which are present on Left Hand Side in the original functional dependency.
Step-2 : Now, add the attributes present on the Right Hand Side of the functional dependency.
Step-3 : With the help of attributes present on Right Hand Side, check the other attributes that can be derived
from the other given functional dependencies. Repeat this process until all the possible attributes which can be
derived are added in the closure.
END
Consistency: The word consistency means that the value should remain preserved always, the database remains
consistent before and after the transaction.
Isolation and levels of isolation: The term 'isolation' means separation. Any changes that occur in any
particular transaction will not be seen by other transactions until the change is not committed in the memory.
A transaction isolation level is defined by the following phenomena:
Concurrency Control Problems and isolation levels are the same
The Three Bad Transaction Dependencies. Locks are often used to prevent these dependencies
Every transaction has three characteristics: access mode, diagnostics size, and isolation level. The
diagnostics size determines the number of error conditions that can be recorded; we will not discuss this feature
further. If the access mode is READ ONLY, the transaction is not allowed to modify the database.
The five concurrency problems that can occur in the database are:
1. Temporary Update Problem
2. Incorrect Summary Problem
3. Lost Update Problem
4. Unrepeatable Read Problem
5. Phantom Read Problem
Dirty Read – A Dirty read is a situation when a transaction reads data that has not yet been committed. For
example, Let’s say transaction 1 updates a row and leaves it uncommitted, meanwhile, Transaction 2 reads the
updated row. If transaction 1 rolls back the change, transaction 2 will have read data that is considered never to
have existed. (Dirty Read Problems (W-R Conflict))
Lost Updates occur when multiple transactions select the same row and update the row based on the value
selected (Lost Update Problems (W - W Conflict))
Non Repeatable read – Non Repeatable read occurs when a transaction reads the same row twice and gets a
different value each time. For example, suppose transaction T1 reads data. Due to concurrency, another
transaction T2 updates the same data and commits, Now if transaction T1 rereads the same data, it will retrieve a
different value. (Unrepeatable Read Problem (W-R Conflict))
Phantom Read – Phantom Read occurs when two same queries are executed, but the rows retrieved by the two,
are different. For example, suppose transaction T1 retrieves a set of rows that satisfy some search criteria. Now,
Transaction T2 generates some new rows that match the search criteria for transaction T1. If transaction T1 re-
executes the statement that reads the rows, it gets a different set of rows this time.
Based on these phenomena, the SQL standard defines four isolation levels :
Read Uncommitted – Read Uncommitted is the lowest isolation level. In this level, one transaction may read
not yet committed changes made by another transaction, thereby allowing dirty reads. At this level, transactions
are not isolated from each other.
Read Committed – This isolation level guarantees that any data read is committed at the moment it is read.
Thus it does not allows dirty reading. The transaction holds a read or write lock on the current row, and thus
prevents other transactions from reading, updating, or deleting it.
Repeatable Read – This is the most restrictive isolation level. The transaction holds read locks on all rows it
references and writes locks on all rows it inserts, updates, or deletes. Since other transactions cannot read, update
or delete these rows, consequently it avoids non-repeatable read.
Serializable – This is the highest isolation level. A serializable execution is guaranteed to be serializable.
Serializable execution is defined to be an execution of operations in which concurrently executing transactions
appear to be serially executing.
Durability: Durability ensures the permanency of something. In DBMS, the term durability ensures that the data
after the successful execution of the operation becomes permanent in the database. If a transaction is committed,
it will remain even error, power loss, etc.
ACID Example:
States of Transaction
Begin, active, partially committed, failed, committed, end, aborted
Aborted details are necessary
If any of the checks fail and the transaction has reached a failed state then the database recovery system will make
sure that the database is in its previous consistent state. If not then it will abort or roll back the transaction to bring
the database into a consistent state.
If the transaction fails in the middle of the transaction then before executing the transaction, all the executed
transactions are rolled back to their consistent state. After aborting the transaction, the database recovery module
will select one of the two operations: 1) Re-start the transaction 2) Kill the transaction
The scheduler
A module that schedules the transaction’s actions, ensuring serializability
Two main approaches
1. Pessimistic: locks
Process Scheduling handles the selection of a process for the processor on the basis of a
scheduling algorithm and also the removal of a process from the processor. It is an important part of
multiprogramming in operating system.
Process scheduling involves short-term scheduling, medium-term scheduling and long-term scheduling.
The major differences between long term, medium term and short term scheduler are as follows –
Long term scheduler is a job Medium term is a process of Short term scheduler is
scheduler. swapping schedulers. called a CPU scheduler.
The speed of long term is lesser The speed of medium term is The speed of short term is
than the short term. in between short and long term fastest among the other two.
scheduler.
Long term controls the degree Medium term reduces the The short term provides
of multiprogramming. degree of multiprogramming. lesser control over the
degree of
multiprogramming.
The long term is almost nil or The medium term is a part of Short term is also a minimal
minimal in the time sharing the time sharing system. time sharing system.
system.
The long term selects the Medium term can reintroduce Short term selects those
processes from the pool and the process into memory and processes that are ready to
loads them into memory for execution can be continued. execute.
execution.
Serial Schedule
The serial schedule is a type of schedule where one transaction is executed completely before starting another
transaction.
Example of Serial Schedule
Non-Serial Schedule
If interleaving of operations is allowed, then there will be a non-serial schedule.
Serializability is a guarantee about transactions over one or more objects
Doesn’t impose real-time constraints
The schedule is serializable if the precedence graph is acyclic
The serializability of schedules is used to find non-serial schedules that allow the transaction to execute
concurrently without interfering with one another.
Example of Serializable
A serializable schedule always leaves the database in a consistent state. A serial schedule is always a
serializable schedule because, in a serial schedule, a transaction only starts when the other transaction finished
execution. However, a non-serial schedule needs to be checked for Serializability.
A non-serial schedule of n number of transactions is said to be a serializable schedule if it is equivalent to the serial
schedule of those n transactions. A serial schedule doesn’t allow concurrency, only one transaction executes at a
time, and the other stars when the already running transaction is finished.
Linearizability: a guarantee about single operations on single objects Once the write completes, all later reads
(by wall clock) should reflect that write.
Types of Serializability
There are two types of Serializability.
Conflict Serializability
View Serializability
Conflict Serializable A schedule is conflict serializable if it is equivalent to some serial schedule
Non-conflicting operations can be reordered to get a serial schedule. If a schedule is conflict serializable, then it is
also viewed as serializable but not vice versa
View serializability/view equivalence is a concept that is used to compute whether schedules are View-
Serializable or not. A schedule is said to be View-Serializable if it is view equivalent to a Serial Schedule (where no
interleaving of transactions is possible).
The non-serializable schedule is divided into two types, Recoverable and Non-recoverable Schedules.
1. Recoverable Schedule(Cascading Schedule, cascades Schedule, strict Schedule). In a recoverable schedule, if a
transaction T commits, then any other transaction that T read from must also have committed.
A schedule is recoverable if:
It is conflict-serializable, and
Whenever a transaction T commits, all transactions that have written elements read by T have already been
committed.
2. Non-Recoverable Schedule
The relation between various types of schedules can be depicted as:
If TS(T) < R_TS(X) then transaction T is aborted and rolled back, and the operation is rejected.
If TS(T) < W_TS(X) then don't execute the W_item(X) operation of the transaction and continue
processing.
Different Types of reading Write Conflict in DBMS
As I mentioned earlier, the read operation is safe as it does modify any information. So, there is no Read-Read (RR)
conflict in the database. So, there are three types of conflict in the database transaction.
Problem 1: Reading Uncommitted Data (WR Conflicts)
Reading the value of an uncommitted object might yield an inconsistency
Dirty Reads or Write-then-Read (WR) Conflicts.
Problem 2: Unrepeatable Reads (RW Conflicts)
Reading the same object twice might yield an inconsistency
Read-then-Write (RW) Conflicts (Write-After-Read)
Problem 3: Overwriting Uncommitted Data (WW Conflicts)
Overwriting an uncommitted object might yield an inconsistency
What is Write-Read (WR) conflict?
This conflict occurs when a transaction read the data which is written by the other transaction before committing.
What is Read-Write (RW) conflict?
Transaction T2 is Writing data that is previously read by transaction T1.
Here if you look at the diagram above, data read by transaction T1 before and after T2 commits is different.
What is Write-Write (WW) conflict?
Here Transaction T2 is writing data that is already written by other transaction T1. T2 overwrites the data written
by T1. It is also called a blind write operation.
Data written by T1 has vanished. So it is data update loss.
Phase Commit (PC)
One-phase commit
The Single Phase Commit protocol is more efficient at run time because all updates are done without any explicit
coordination.
BEGIN
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );
COMMIT;
Two-Phase Commit (2PC)
The most commonly used atomic commit protocol is a two-phase commit. You may notice that is very similar to
the protocol that we used for total order multicast. Whereas the multicast protocol used a two-phase approach to
allow the coordinator to select a commit time based on information from the participants, a two-phase commit
lets the coordinator select whether or not a transaction will be committed or aborted based on information from
the participants.
Three-phase Commit
Another real-world atomic commit protocol is a three-phase commit (3PC). This protocol can reduce the amount of
blocking and provide for more flexible recovery in the event of failure. Although it is a better choice in unusually
failure-prone environments, its complexity makes 2PC the more popular choice.
Transaction atomicity using a two-phase commit
Transaction serializability using distributed locking.
DBMS Deadlock and Types, addressing techniques
All lock requests are made to the concurrency-control manager. Transactions proceed only once the lock request is
granted. A lock is a variable, associated with the data item, which controls the access of that data item. Locking is
the most widely used form of concurrency control.
Deadlock Example:
1. Binary Locks: A Binary lock on a data item can either be locked or unlocked states.
2. Shared/exclusive: This type of locking mechanism separates the locks in DBMS based on their uses. If a
lock is acquired on a data item to perform a write operation, it is called an exclusive lock.
3. Simplistic Lock Protocol: This type of lock-based protocol allows transactions to obtain a lock on every
object before beginning operation. Transactions may unlock the data item after finishing the ‘write’
operation.
4. Pre-claiming Locking: Two-Phase locking protocol which is also known as a 2PL protocol needs a
transaction should acquire a lock after it releases one of its locks. It has 2 phases growing and shrinking.
5. Shared lock: These locks are referred to as read locks, and denoted by 'S'.
If a transaction T has obtained Shared-lock on data item X, then T can read X, but cannot write X. Multiple Shared
locks can be placed simultaneously on a data item.
A deadlock is an unwanted situation in which two or more transactions are waiting indefinitely for one another to
give up locks.
No preemption -- resources cannot be preempted; a resource can be released only voluntarily by the
process holding it.
Circular wait – one waits for others, others wait for one.
The Bakery algorithm is one of the simplest known solutions to the mutual exclusion problem for the general case
of the N process. The bakery Algorithm is a critical section solution for N processes. The algorithm preserves the first
come first serve the property.
Before entering its critical section, the process receives a number. The holder of the smallest number enters the
critical section.
Deadlock detection
This technique allows deadlock to occur, but then, it detects it and solves it. Here, a database is periodically checked
for deadlocks. If a deadlock is detected, one of the transactions, involved in the deadlock cycle, is aborted. Other
transactions continue their execution. An aborted transaction is rolled back and restarted.
When a transaction waits more than a specific amount of time to obtain a lock (called the deadlock timeout),
Derby can detect whether the transaction is involved in a deadlock.
If deadlocks occur frequently in your multi-user system with a particular application, you might need to do some
debugging.
A deadlock where two transactions are waiting for one another to give up locks.
In below diagram second graph has deadlock. We will abort one transaction to remove deadlock. Transaction
executation start from T28-> T26->T27-> T25. In second we can abort transection coming from T28 to T27.
Phantom deadlock detection is the condition where the deadlock does not exist but due to a delay in propagating
local information, deadlock detection algorithms identify the locks that have been already acquired.
There are three alternatives for deadlock detection in a distributed system, namely.
Centralized Deadlock Detector − One site is designated as the central deadlock detector.
Hierarchical Deadlock Detector − Some deadlock detectors are arranged in a hierarchy.
Distributed Deadlock Detector − All the sites participate in detecting deadlocks and removing them.
The deadlock detection algorithm uses 3 data structures –
Available
Vector of length m Indicates the number of available resources of each type.
Allocation
Matrix of size n*m A[i,j] indicates the number of j the resource type allocated to I the process.
Request
Matrix of size n*m Indicates the request of each process.
Request[i,j] tells the number of instances Pi process is the request of jth resource type.
Deadlock Avoidance
Deadlock avoidance
Acquire locks in a pre-defined order
Acquire all locks at once before starting transactions
Aborting a transaction is not always a practical approach. Instead, deadlock avoidance mechanisms can be used to
detect any deadlock situation in advance.
The deadlock prevention technique avoids the conditions that lead to deadlocking. It requires that every
transaction lock all data items it needs in advance. If any of the items cannot be obtained, none of the items are
locked.
The transaction is then rescheduled for execution. The deadlock prevention technique is used in two-phase locking.
To prevent any deadlock situation in the system, the DBMS aggressively inspects all the operations, where
transactions are about to execute. If it finds that a deadlock situation might occur, then that transaction is never
allowed to be executed.
Deadlock Prevention Algorithm/protocols
1. Wait-Die scheme
2. Wound wait scheme
Note! Deadlock prevention is more strict than Deadlock Avoidance.
Example: Wait-Die − If T1 is older than T2, T1 is allowed to wait. Otherwise, if T1 is younger than T2, T1 is aborted
and later restarted.
Wait-die: permit older waits for younger
Wound-Wait − permit younger waits for older.
Note: In a bulky system, deadlock prevention techniques may work well. If T1 is older than T2, T2 is aborted and
later restarted. Otherwise, if T1 is younger than T2, T1 is allowed to wait.
Here, we want to develop an algorithm to avoid deadlock by making the right choice all the time
Dijkstra's Banker's Algorithm is an approach to trying to give processes as much as possible while guaranteeing
no deadlock.
Safe state -- a state is safe if the system can allocate resources to each process in some order and still avoid a
deadlock.
Banker's Algorithm for Single Resource Type is a resource allocation and deadlock avoidance algorithm. This
name has been given since it is one of most problems in Banking Systems these days.
In this, as a new process P1 enters, it declares the maximum number of resources it needs.
The system looks at those and checks if allocating those resources to P1 will leave the system in a safe state or not.
If after allocation, it will be in a safe state, the resources are allocated to process P1.
Otherwise, P1 should wait till the other processes release some resources.
This is the basic idea of Banker’s Algorithm.
A state is safe if the system can allocate all resources requested by all processes ( up to their stated maximums )
without entering a deadlock state.
Resource Preemption:
To eliminate deadlocks using resource preemption, we preempt some resources from processes and give those
resources to other processes. This method will raise three issues –
(a) Selecting a victim:
We must determine which resources and which processes are to be preempted and also order to minimize the
cost.
(b) Rollback:
We must determine what should be done with the process from which resources are preempted. One simple idea
is total rollback. That means aborting the process and restarting it.
(c) Starvation:
In a system, the same process may be always picked as a victim. As a result, that process will never complete its
designated task. This situation is called Starvation and must be avoided. One solution is that a process must be
picked as a victim only a finite number of times.
Concurrent executions are done for Better transaction throughput, response time Done via better utilization of
resources
What is Concurrency Control?
Concurrent access is quite easy if all users are just reading data. There is no way they can interfere with one another.
Though for any practical Database, it would have a mix of READ and WRITE operations, and hence the concurrency
is a challenge. DBMS Concurrency Control is used to address such conflicts, which mostly occur with a multi-user
system.
The concurrency control protocols ensure the atomicity, consistency, isolation, durability and serializability of the
concurrent execution of the database transactions.
Two Phase Locking Protocol is also known as 2PL protocol is a method of concurrency control in DBMS that
ensures serializability by applying a lock to the transaction data which blocks other transactions to access the same
data simultaneously. Two Phase Locking protocol helps to eliminate the concurrency problem in DBMS. Every 2PL
schedule is serializable.
Theorem: 2PL ensures/enforce conflict serializability schedule
But does not enforce recoverable schedules
2PL rule: Once a transaction has released a lock it is not allowed to obtain any other locks
This locking protocol divides the execution phase of a transaction into three different parts.
In the first phase, when the transaction begins to execute, it requires permission for the locks it needs.
The second part is where the transaction obtains all the locks. When a transaction releases its first lock, the third
phase starts.
In this third phase, the transaction cannot demand any new locks. Instead, it only releases the acquired locks.
The Two-Phase Locking protocol allows each transaction to make a lock or unlock request Growing Phase and
Shrinking Phase.
The 2PL protocol indeed offers serializability. However, it does not ensure that deadlocks do not happen.
In the above-given diagram, you can see that local and global deadlock detectors are searching for deadlocks and
solving them by resuming transactions to their initial states.
In this kind of two-phase locking mechanism, Lock managers are distributed to all sites. They are responsible for
managing locks for data at that site. If no data is replicated, it is equivalent to primary copy 2PL. Communication
costs of Distributed 2PL are quite higher than primary copy 2PL
Time-Stamp Methods for Concurrency control:
The timestamp is a unique identifier created by the DBMS to identify the relative starting time of a transaction.
Typically, timestamp values are assigned in the order in which the transactions are submitted to the system. So, a
timestamp can be thought of as the transaction start time. Therefore, time stamping is a method of concurrency
control in which each transaction is assigned a transaction timestamp.
Timestamps must have two properties namely
Uniqueness: The uniqueness property assures that no equal timestamp values can exist.
Monotonicity: monotonicity assures that timestamp values always increase.
Timestamps are divided into further fields:
Granule Timestamps
Timestamp Ordering
Conflict Resolution in Timestamps
Timestamp-based Protocol in DBMS is an algorithm that uses the System Time or Logical Counter as a timestamp
to serialize the execution of concurrent transactions. The Timestamp-based protocol ensures that every conflicting
read and write operation is executed in timestamp order.
The timestamp-based algorithm uses a timestamp to serialize the execution of concurrent transactions. The
protocol uses the System Time or Logical Count as a Timestamp.
Conflict Resolution in Timestamps:
To deal with conflicts in timestamp algorithms, some transactions involved in conflicts are made to wait and abort
others.
Following are the main strategies of conflict resolution in timestamps:
Wait-die:
The older transaction waits for the younger if the younger has accessed the granule first.
The younger transaction is aborted (dies) and restarted if it tries to access a granule after an older concurrent
transaction.
Wound-wait:
The older transaction pre-empts the younger by suspending (wounding) it if the younger transaction tries to access
a granule after an older concurrent transaction.
An older transaction will wait for a younger one to commit if the younger has accessed a granule that both want.
Timestamp Ordering:
Following are the three basic variants of timestamp-based methods of concurrency control:
1. Total timestamp ordering
2. Partial timestamp ordering
Multiversion timestamp ordering
Multi-version concurrency control
Multiversion Concurrency Control (MVCC) enables snapshot isolation. Snapshot isolation means that whenever a
transaction would take a read lock on a page, it makes a copy of the page instead, and then performs its
operations on that copied page. This frees other writers from blocking due to read lock held by other transactions.
Maintain multiple versions of objects, each with its timestamp. Allocate the correct version to reads. Multiversion
schemes keep old versions of data items to increase concurrency.
The main difference between MVCC and standard locking:
Read locks do not conflict with write locks ⇒ reading never blocks writing, writing blocks reading
Advantage of MVCC
Locking needed for serializability considerably reduced. It also increase performance and throughput more and
more then 2PL. With MVCC read operations never lead to a conflict. With MVCC the isolation level serializable
does not permit dirty read nonrepeatable reads, and phantom reads.
Disadvantages of MVCC
visibility-check overhead (on every tuple read/write)
Validation-Based Protocols
Validation-based Protocol in DBMS also known as Optimistic Concurrency Control Technique is a method to avoid
concurrency in transactions. In this protocol, the local copies of the transaction data are updated rather than the
data itself, which results in less interference while the execution of the transaction.
Optimistic Methods of Concurrency Control:
The optimistic method of concurrency control is based on the assumption that conflicts in database operations are
rare and that it is better to let transactions run to completion and only check for conflicts before they commit.
The Validation based Protocol is performed in the following three phases:
Read Phase
Validation Phase
Write Phase
Read Phase
In the Read Phase, the data values from the database can be read by a transaction but the write operation or
updates are only applied to the local data copies, not the actual database.
Validation Phase
In the Validation Phase, the data is checked to ensure that there is no violation of serializability while applying the
transaction updates to the database.
Write Phase
In the Write Phase, the updates are applied to the database if the validation is successful, else; the updates are not
applied, and the transaction is rolled back.
Laws of concurrency control
1. First Law of Concurrency Control
Concurrent execution should not cause application programs to malfunction.
2. Second Law of Concurrency Control
Concurrent execution should not have lower throughput or much higher response times than serial
execution.
Lock Thrashing is the point where system performance(throughput) decreases with increasing load
(adding more active transactions). It happens due to the contention of locks. Transactions waste time on lock waits.
The default concurrency control mechanism depends on the table type
Disk-based tables (D-tables) are by default optimistic.
Main-memory tables (M-tables) are always pessimistic.
Pessimistic locking (Locking and timestamp) is useful if there are a lot of updates and relatively high chances
of users trying to update data at the same time.
Optimistic (Validation) locking is useful if the possibility for conflicts is very low – there are many records but
relatively few users, or very few updates and mostly read-type operations.
Optimistic concurrency control is based on the idea of conflicts and transaction restart while pessimistic concurrency
control uses locking as the basic serialization mechanism (it assumes that two or more users will want to update the
same record at the same time, and then prevents that possibility by locking the record, no matter how unlikely
conflicts are.
Properties
Optimistic locking is useful in stateless environments (such as mod_plsql and the like). Not only useful but critical.
optimistic locking -- you read data out and only update it if it did not change.
Optimistic locking only works when developers modify the same object. The problem occurs when multiple
developers are modifying different objects on the same page at the same time. Modifying one
object may affect the process of the entire page, which other developers may not be aware of.
pessimistic locking -- you lock the data as you read it out AND THEN modify it.
Lock Granularity:
A database is represented as a collection of named data items. The size of the data item chosen as the unit of
protection by a concurrency control program is called granularity. Locking can take place at the following level :
Database level.
Table level(Coarse-grain locking).
Page level.
Row (Tuple) level.
Attributes (fields) level.
Multiple Granularity
Let's start by understanding the meaning of granularity.
Granularity: It is the size of the data item allowed to lock.
It can be defined as hierarchically breaking up the database into blocks that can be locked.
The Multiple Granularity protocol enhances concurrency and reduces lock overhead.
It maintains the track of what to lock and how to lock.
It makes it easy to decide either to lock a data item or to unlock a data item. This type of hierarchy can be
graphically represented as a tree.
In our example:
– T1: reads the list of products
– T2: inserts a new product
– T1: re-reads: a new product appears!
Dealing With Phantoms
Lock the entire table, or
Lock the index entry for ‘blue’
– If the index is available
Or use predicate locks
– A lock on an arbitrary predicate
Dealing with phantoms is expensive
END
What is an “Algebra”?
Answer: Set of operands and operations that are “closed” under all compositions
What is the basis of Query Languages?
Answer: Two formal Query Languages form the basis of “real” query languages (e.g., SQL) are:
1) Relational Algebra: Operational, it provides a recipe for evaluating the query. Useful for representing execution
plans. A language based on operators and a domain of values. The operator's map values are taken from the domain
into other domain values. Domain: The set of relations/tables.
2) Relational Calculus: Let users describe what they want, rather than how to compute it. (Nonoperational, Non-
Procedural, declarative.)
SQL is an abstraction of relational algebra. It makes using it much easier than writing a bunch of math. Effectively,
the parts of SQL that directly relate to relational algebra are:
SQL -> Relational Algebra
Select columns -> Projection
Select row -> Selection (Where Clause)
INNER JOIN -> Set Union
OUTER JOIN -> Set Difference
JOIN -> Cartesian Product (when you screw up your join statement)
Inner Join Inner join includes only those tuples that satisfy the matching criteria.
Outer Join In an outer join, along with tuples that satisfy the matching criteria.
Left Outer Join( ) In the left outer join, the operation allows keeping all tuples in the left
relation.
Right Outer join( ) In the right outer join, the operation allows keeping all tuples in the right
relation.
Full Outer Join( ) In a full outer join, all tuples from both relations are included in the result
irrespective of the matching condition.
Select Operation Select(σ) The SELECT operation is used for selecting a subset of the tuples according to a given
selection condition (Unary operator).
Notation: ⴋp(r) p is called the selection predicate
Project Operation
Projection(π) The projection eliminates all attributes of the input relation but those mentioned in the
projection list. (Unary operator)/ Projection operator has to eliminate duplicates!
Notation: πA1,..., Ak (r)
The result is defined as the relation of k columns obtained by deleting the columns that are not listed
Union Operation
Notation: r U s
operations into relational-algebra expressions is just like composing arithmetic operations (such as −, ∗, and ÷) into
arithmetic expressions.
Relational Calculus
There is an alternate way of formulating queries known as Relational Calculus. Relational calculus is a non-procedural
query language. In the non-procedural query language, the user is concerned with the details of how to obtain the
results. The relational calculus tells what to do but never explains how to do it. Most commercial relational languages
are based on aspects of relational calculus including SQL-QBE and QUEL.
It is based on Predicate calculus, a name derived from a branch of symbolic language. A predicate is a truth-valued
function with arguments.
Notations of RC
Differences in RA and RC
Sr. No. Key Relational Algebra Relational Calculus
Relational Algebra targets how to obtain the Relational Calculus targets what result
2 Objective
result. to obtain.
In TRS, the variables represent the tuples In DRS, the variables represent the value drawn from the
from specified relations. specified domain.
A tuple is a single element of relation. In A domain is equivalent to column data type and any
database terms, it is a row. constraints on the value of data.
Notation : Notation :
{T | P (T)} or {T | Condition (T)} { a1, a2, a3, …, an | P (a1, a2, a3, …, an)}
Example : Example :
{T | EMPLOYEE (T) AND T.DEPT_ID = 10} { | < EMPLOYEE > DEPT_ID = 10 }
Examples of RC:
Query Block in RA
SQL, Relational Algebra, Tuple Calculus, and domain calculus examples: Comparisons
Select Operation
R = (A, B)
Relational Algebra: σB=17 (r)
Tuple Calculus: {t | t ∈ r ∧ B = 17}
Domain Calculus: {<a, b> | <a, b> ∈ r ∧ b = 17}
Project Operation
R = (A, B)
Relational Algebra: ΠA(r)
Tuple Calculus: {t | ∃ p ∈ r (t[A] = p[A])}
Domain Calculus: {<a> | ∃ b ( <a, b> ∈ r )}
Combining Operations
R = (A, B)
Relational Algebra: ΠA(σB=17 (r))
Tuple Calculus: {t | ∃ p ∈ r (t[A] = p[A] ∧ p[B] = 17)}
Domain Calculus: {<a> | ∃ b ( <a, b> ∈ r ∧ b = 17)}
Natural Join
R = (A, B, C, D) S = (B, D, E)
Relational Algebra: r ⋈ s
Πr.A,r.B,r.C,r.D,s.E(σr.B=s.B ∧ r.D=s.D (r × s))
Tuple Calculus: {t | ∃ p ∈ r ∃ q ∈ s (t[A] = p[A] ∧ t[B] = p[B] ∧
t[C] = p[C] ∧ t[D] = p[D] ∧ t[E] = q[E] ∧
p[B] = q[B] ∧ p[D] = q[D])}
Domain Calculus: {<a, b, c, d, e> | <a, b, c, d> ∈ r ∧ <b, d, e> ∈ s}
The parsing of a query is performed within the database using the Optimizer component. Taking all of these inputs
into consideration, the Optimizer decides the best possible way to execute the query. This information is stored
within the SGA in the Library Cache – a sub-pool within the Shared Pool.
The memory area within the Library Cache in which the information about a query’s processing is kept is called the
Cursor. Thus, if a reusable cursor is found within the library cache, it’s just a matter of picking it up and using it to
execute the statement. This is called Soft Parsing. If it’s not possible to find a reusable cursor or if the query has
never been executed before, query optimization is required. This is called Hard Parsing. Query processor two steps:
Hard parsing means that either the cursor was not found in the library cache or it was found but was invalidated for
some reason. For whatever reason, Hard Parsing would mean that work needs to be done by the optimizer to ensure
the most optimal execution plan for the query.
Before the process of finding the best plan is started for the query, some tasks are completed. These tasks are
repeatedly executed even if the same query executes in the same session for N number of times:
1. Syntax Check
2. Semantics Check
3. Hashing the query text and generating a hash key-value pair
Various phases of query executation in system. First query go from client process to server process and in PGA SQL
area then following phases start:
1 Parsing (Parse query tree, (syntax check, semantic check, shared pool check) used for soft parse
2 Transformation (Binding)
3 Estimation/query optimization
4 Plan generation, row source generation
5 Query Execution & plan
6 Query result
Query Evaluation
Query plans are algebra expressions and can be represented as trees. Left-deep (every right subtree is a leaf),
right-deep (every left-subtree is a leaf), and bushy (arbitrary) are the three common structures. In a left-deep tree,
each operator draws input from one input and an inner loop integrates over the other input.
Cost Estimation
The cost estimation of a query evaluation plan is calculated in terms of various resources that include: Number of
disk accesses. Execution time is taken by the CPU to execute a query.
Query Optimization
Summary of steps of processing an SQL query:
Lexical analysis, parsing, validation, Query Optimizer, Query Code Generator, Runtime Database Processor
The term optimization here has the meaning “choose a reasonably efficient strategy” (not necessarily the best
strategy)
Query optimization: choosing a suitable strategy to execute a particular query more efficiently
An SQL query undergoes several stages: lexical analysis (scanning, LEX), parsing (YACC), validation
Scanning: identify SQL tokens
Parser: check the query syntax according to the SQL grammar
Validation: check that all attributes/relation names are valid in the particular database being queried
Then create the query tree or the query graph (these are internal representations of the query)
Main techniques to implement query optimization
Heuristic rules (to order the execution of operations in a query)
Computing cost estimates of different execution strategies
Optimizing Queries AND tuning the database query for best performance:
Always use WHEREclause in SELECTqueries, when we don’t need all rows to be returned. This will help to narrow
the return rows else it will perform a whole table scan and waste the Sql server resources with increasing the
network bandwidth.
While running a query, the operators used with the WHERE clause directly affect the performance. The operators
shown below are in their decreasing order of their performance.
1)=
2)>,>=,<, <=
3)LIKE
4)<>
When we are writing queries using NOT IN, which result poor performance as the optimizer need to use nested
table scan to perform activity. Which can be replaced by using NOT EXISTS.
While we use IN, in the sql query it better to use one or more leading characters in the clause instead of using the
wildcard character at the starting.
While there is case to use IN or BETWEEN clause in the query, it is always advisable to use BETWEEN for better
result.
Avoid using SUBSTRING function in query.
The queries having WHERE clause connected by AND operators are evaluated from left to right in the order they
are written.
Do not use the COUNT() aggregate in a subquery to do an existence check
Try to avoid dynamic SQL Unless really required, try to avoid the use of dynamic SQL because:
It is hard to debugging and finding the solutions or troubleshoots.
When user inserts the input to the dynamic SQL, there is possibility of SQL injection attacks.
Process for heuristics optimization
1. The parser of a high-level query generates an initial
internal representation;
2. Apply heuristics rules to optimize the internal
representation.
3. A query execution plan is generated to execute groups of
operations based on the access paths available on the files
involved in the query.
Clustered Index Scan: Sometimes considered equivalent to Table Scan. It also happened when a non-clustered
index on an eligible column is not indexing. Many times, creating/indexing a non-clustered index will enable you to
get rid of it.
Hash Join: This is the most expensive joining methodology, which takes place when the joining columns between
two tables are not indexed. So creating/indexing indexes on the columns will enable you to get rid of it.
Nested Loops: Most cases, this happens when a non-clustered index does not include (Cover) a column that is
used in the SELECT column list. In this case, for each member in the non-clustered index column, the database
server has to seek into the clustered index to retrieve the other column value which specified in SELECT list. On
creating a covered index which will enable to get rid of it.
RID Lookup: Takes place when you have a non-clustered index but the same table does not have any clustered
index. In this case, the database engine has to look up the actual row which is using the row ID and is more
expensive operation. On creating a clustered index on the corresponding table would enable you to get rid of it.
Database tuning
END
A file system defines how files are named, stored, and retrieved from a storage device.
File structure
A File Structure needs to be predefined format in such a way that an operating system understands. It has an
exclusively defined structure, which is based on its type.
Three types of files structure in OS:
1. A text file: It is a series of characters that is organized in lines.
2. An object file: It is a series of bytes that is organized into blocks.
3. A source file: It is a series of functions and processes.
Functions of File
Create file, find space on disk, and make an entry in the directory.
Write to file, requires positioning within the file
Read from file involves positioning within the file
Delete directory entry, regain disk space.
Reposition: move read/write position.
Sequential Access
This type of accessing method is based on simple sequential access. In this access method, an index is built for
every file, with a direct pointer to different memory blocks. In this method, the Index is searched sequentially, and
its pointer can access the file directly. Multiple levels of indexing can be used to offer greater efficiency in access. It
also reduces the time needed to access a single record.
Space Allocation
In the Operating system, files are always allocated disk spaces.
Three types of space allocation methods are:
1. Linked Allocation
2. Indexed Allocation
3. Contiguous Allocation
Contiguous Allocation
In this method,
Every file users a contiguous address space on memory.
Here, the OS assigns disk address is in linear order.
In the contiguous allocation method, external fragmentation is the biggest issue.
Linked Allocation
In this method,
Every file includes a list of links.
The directory contains a link or pointer in the first block of a file.
With this method, there is no external fragmentation
This File allocation method is used for sequential access files.
This method is not ideal for a direct access file.
Indexed Allocation
In this method,
Directory comprises the addresses of index blocks of the specific files.
An index block is created, having all the pointers for specific files.
All files should have individual index blocks to store the addresses for disk space.
File Organization
File Organization defines how file records are mapped onto disk blocks. We have four types of File Organization to
organize file records −
Sorted Files: Best if records must be retrieved in some order, or only a `range’ of records is needed.
Sequential File Organization
Store records in sequential order based on the value of the search key of each record. Each record organized by
index or key process is called a sequential file organization that would be much faster to find records based on the
key.
Hashing File Organization
A hash function is computed on some attribute of each record; the result specifies in which block of the file the
record is placed. Data structures to organize records via trees or hashing on some key Called a hashing file
organization.
Heap File Organization
A record can be placed anywhere in the file where there is space; there is no ordering in the file. Some records are
organized randomly Called a heap file organization.
Every record can be placed anywhere in the table file, wherever there is space for the record Virtually all databases
provide heap file organization.
Heap file organized table can search through the entire table file, looking for all rows where the value of
account_id is A-591. This is called a file scan.
Note: Generally, each relation is stored in a separate file.
Clustered File Organization
Clustered file organization is not considered good for large databases.
In this mechanism, related records from one or more relations are kept in the same disk block, that is, the ordering
of records is not based on the primary key or search key.
File Operations
Operations on database files can be broadly classified into two categories −
1. Update Operations
2. Retrieval Operations
Update operations change the data values by insertion, deletion, or update. Retrieval operations, on the other
hand, do not alter the data but retrieve them after optional conditional filtering. In both types of operations,
selection plays a significant role. Other than the creation and deletion of a file, there could be several operations,
which can be done on files.
Open − A file can be opened in one of the two modes, read mode or write mode. In read mode, the operating
system does not allow anyone to alter data. In other words, data is read-only. Files opened in reading mode can be
shared among several entities. Write mode allows data modification. Files opened in write mode can be read but
cannot be shared.
Locate − Every file has a file pointer, which tells the current position where the data is to be read or written. This
pointer can be adjusted accordingly. Using the find (seek) operation, it can be moved forward or backward.
Read − By default, when files are opened in reading mode, the file pointer points to the beginning of the file. There
are options where the user can tell the operating system where to locate the file pointer at the time of opening a
file. The very next data to the file pointer is read.
Write − Users can select to open a file in write mode, which enables them to edit its contents. It can be deletion,
insertion, or modification. The file pointer can be located at the time of opening or can be dynamically changed if
the operating system allows it to do so.
Close − This is the most important operation from the operating system’s point of view. When a request to close a
file is generated, the operating system removes all the locks (if in shared mode).
Tree-Structured Indexing
Indexing is a data structure technique to efficiently retrieve records from the database files based on some attributes
on which the indexing has been done. Indexing in database systems is like what we see in books.
Indexing is defined based on its indexing attributes.
Indexing is a data structure technique which allows you to quickly retrieve records from a database file.
An Index is a small table having only two columns. The first column comprises a copy of the primary or candidate
key of a table. Its second column contains a set of pointers for holding the address of the disk block where that
specific key value stored.
4 Non-Clustering The Non-Clustering indexes are used to quickly find all records whose values in a certain
field satisfy some condition. Non-clustering index (different order of data and index). Non-clustering Index
whose search key specifies an order different from the sequential order of the file. Non-clustering indexes
are also called secondary indexes.
Dense Index
In a dense index, there is an index record for every search key value in the database. This makes searching faster
but requires more space to store index records themselves. Index records contain a search key value and a pointer
to the actual record on the disk.
Sparse Index
In a sparse index, index records are not created for every search key. An index record here contains a search key
and an actual pointer to the data on the disk. To search a record, we first proceed by index record and reach the
actual location of the data. If the data we are looking for is not where we directly reach by following the index,
then the system starts a sequential search until the desired data is found.
Multilevel Index
Index records comprise search-key values and data pointers. The multilevel index is stored on the disk along with
the actual database files. As the size of the database grows, so does the size of the indices. There is an immense
need to keep the index records in the main memory to speed up the search operations. If the single-level index is
used, then a large size index cannot be kept in memory which leads to multiple disk accesses.
A multi-level Index helps in breaking down the index into several smaller indices to make the outermost level so
small that it can be saved in a single disk block, which can easily be accommodated anywhere in the main memory.
B+ Tree
A B+ tree is a balanced binary search tree that follows a multi-level index format. The leaf nodes of a B+ tree
denote actual data pointers. B+ tree ensures that all leaf nodes remain at the same height, thus balanced.
Additionally, the leaf nodes are linked using a link list; therefore, a B+ tree can support random access as well as
sequential access.
Structure of B+ Tree
Every leaf node is at an equal distance from the root node. A B+ tree is of the order n where n is fixed for every
B+ tree.
Internal nodes −
Internal (non-leaf) nodes contain at least ⌈n/2⌉ pointers, except the root node.
At most, an internal node can contain n pointers.
Leaf nodes −
Leaf nodes contain at least ⌈n/2⌉ record pointers and ⌈n/2⌉ key values.
At most, a leaf node can contain n record pointers and n key values.
Every leaf node contains one block pointer P to point to the next leaf node and forms a linked list.
An index is an on-disk structure associated with a table or view that speeds the retrieval of rows from the table or
view. An index contains keys built from one or more columns in the table or view. Indexes are automatically created
when PRIMARY KEY and UNIQUE constraints are defined on table columns. An index on a file speeds up selections
on the search key fields for the index.
The index is a collection of buckets.
Bucket = primary page plus zero or more overflow pages. Buckets contain data entries.
Types of Indexes
1 Clustered Index
2 Non-Clustered Index (Secondary index)
3 Column Store Index
4 Filtered Index
5 Hash-based Index
6 Dense Index (primary index)
7 sparse index (Primary Index)
8 b or b+ tree index
9 FK index
10 Outer and Inner Index
11 Secondary index
12 File Indexing – B+ Tree
13 Bitmap Indexing
14 Inverted Index
15 Forward Index
16 Function-based index
17 Spatial index
18 Bitmap Join Index
19 Composite index
20 Ordered index
21 Primary key index If the search key contains a primary key, then it is called a primary index.
22 Unique index: Search key contains a candidate key.
23 Multilevel index(A multilevel index considers the index file, which we will now refer to as the first (or
base) level of a multilevel index, as an ordered file with a distinct value for each K(i))
24 Inner index: The main index file for the data
An inverted index is an index data structure storing a mapping from content, such as words or numbers, to its
locations in a document or a set of documents. In simple words, it is a hashmap like data structure that directs you
from a word to a document or a web page.
There are two types of inverted indexes: A record-level inverted index contains a list of references to documents for
each word. A word-level inverted index additionally contains the positions of each word within a document. The
latter form offers more functionality, but needs more processing power and space to be created.
Hash Organization
Hashing uses hash functions with search keys as parameters to generate the address of a data record.
Bucket − A hash file stores data in bucket format. The bucket is considered a unit of storage. A bucket typically
stores one complete disk block, which in turn can store one or more records.
Hash Function − A hash function, h, is a mapping function that maps all the set of search keys K to the address
where actual records are placed. It is a function from search keys to bucket addresses.
Types of Hashing Techniques
There are mainly two types of SQL hashing methods/techniques:
1 Static Hashing
2 Dynamic Hashing/Extendible hashing
Static Hashing
In static hashing, when a search-key value is provided, the hash function always computes the same address.
Static hashing is further divided into:
1. Open hashing
2. Close hashing.
Dynamic Hashing or Extendible hashing
Dynamic hashing offers a mechanism in which data buckets are added and removed dynamically and on demand.
In this hashing, the hash function helps you to create a large number of values.
The problem with static hashing is that it does not expand or shrink dynamically as the size of the database grows
or shrinks. Dynamic hashing provides a mechanism in which data buckets are added and removed dynamically and
on-demand. Dynamic hashing is also known as extended hashing.
Key terms when dealing with hashing the records
Hashing function h(r) Mapping from the index’s search key to a bucket in which the (data entry for) record r
belongs.
What is Collision?
Hash collision is a state when the resultant hashes from two or more data in the data set, wrongly map the same
place in the hash table.
How to deal with Hashing Collision?
There is two technique that you can use to avoid a hash collision:
1. Rehashing: This method, invokes a secondary hash function, which is applied continuously until an empty slot is
found, where a record should be placed.
2. Chaining: The chaining method builds a Linked list of items whose key hashes to the same value. This method
requires an extra link field to each table position.
END
ACTIVATE A ROLE
SCOTT> set role SHARIF identified by devdb;
TO DISABLING ALL ROLE
SCOTT> set role none;
GRANT A PRIVILEGE
SYS> grant create any table to SHARIF;
REVOKE A PRIVILEGE
SYS> revoke create any table from SHARIF;
SET ALL ROLES ASSIGNED TO scott AS DEFAULT
SYS> alter user scott default role all;
SYS> alter user scott default role SHARIF;
Grant succeeded.
SHAM> grant all on EMP to SCOTT;
Grant succeeded.
SHAM> grant references on EMP to SCOTT;
Grant succeeded.
Sql> Revoke all suppliers from the public;
SHAM> revoke all on EMP from SCOTT;
SHAM> revoke references on EMP from SCOTT CASCADE CONSTRAINTS;
Grant succeeded.
SHAM> grant select on EMP to PUBLIC;
SYS> grant create session to PUBLIC;
Grant succeeded.
Note: If a privilege has been granted to PUBLIC, all users in the database can use it.
Note: Public acts like a ROLE, sometimes acts like a USER.
Note: NOTE: Is there DROP TABLE PRIVILEGE in oracle? NO. DROP TABLE is NOT a PRIVILEGE.
What is Privilege
Privilege is special right or permission. Privileges are granted to perform operations in a database.
Example of Privilege: CREATE SESSION privilege is used to a user connect to the oracle database.
The syntax for revoking privileges on a table in oracle is:
Revoke privileges on the object from a user;
Privileges can be assigned to a user or a role. Privileges are given to users with GRANT command and taken away
with REVOKE command.
There are two distinct type of privileges.
1. SYSTEM PRIVILEGES (Granted by DBA like ALTER DATABASE, ALTER SESSION, ALTER SYSTEM, CREATE USER)
2. SCHEMA OBJECT PRIVILEGES.
SYSTEM privileges are NOT directly related to any specific object or schema.
Two type of users can GRANT, REVOKE SYSTEM PRIVILEGES to others.
User who have been granted specific SYSTEM PRIVILEGE WITH ADMIN OPTION.
User who have been granted GRANT ANY PRIVILEGE.
You can GRANT and REVOKE system privileges to the users and roles.
Powerful system Privileges DBA, SYSDBA, SYSOPER(Roles or Privilleges); SYS, SYSTEM (tablespace or user)
SONY can access user sham.emp table because SELECT PRIVILEGE given to ‘PUBLIC’. So that sham.emp is available
to everyone of the database. SONY has created a view EMP_VIEW based on sham.emp.
Note: If you revoke OBJECT PRIVILEGE from a user, that privilege also revoked to whom it was granted.
Note: If you grant RESOURCE role to the user, this privilege overrides all explicit tablespace quotas. The UNLIMITED
TABLESPACE system privilege lets the user allocate as much space in any tablespaces that make up the database.
Database account locks and unlock
Alter user admin identified by admin account lock;
Select u.username from all_users u where u.username like 'info';
Database security and non-database(non database ) security
Contengency plan: Its about good to have but hope you never use it. Disaster recovery plan. When disaster
control and management failed. It give data backup plan, recovery plan, emergency mode operation plan,
Business impact analysis, incident response plan, bunisess continuity plan. It is also call Plan B.
Example: Work from home is alternative to recourse planning when pendamic is contingency planning.
Four-Step Planning Process for Your Business Continuity Plan
1 Threat Assessment
2 Business Critical Impact Analysis
3 Prevention and Mitigation Strategies
4 Testing, Practice and Continuous Improvement
The Contingency plan should address the following issues:
1. Operation Risk assessment
2. Contingency planning
3. Software errors outside of normal working hours
Example:
The National Institute of Standards and Technology (NIST) standard for IT disaster recovery planning includes
contingency in its title.
A popular IT contingency plan model is defined in NIST SP 800-34 Rev. 1 (2010), "Contingency Planning Guide for
Federal Information Systems."
In includes the following four steps:
Contingency planning policy statement. This policy provides the outline and authorization to develop a contingency
plan.
Business impact analysis. BIA identifies and prioritizes the systems that are important to an organization's business
functions.
Preventive controls. Proactive measures that prevent system outages and disruptions can ensure system availability
and reduce costs related to contingency measures and lifecycle.
Contingency strategies. Thorough recovery strategies ensure that a system may be recovered fast and completely
after a disruption.
Business Continuity plan/ contengency plan/ Plan B
“A continuity plan is in place to respond to threats to data security, including significant data breaches or near
misses, and it is tested once a year as a minimum, with a report to senior management.”
A business continuity policy is the set of standards and guidelines an organization enforces to ensure resilience and
proper risk management. Business continuity policies vary by organization and industry and require periodic
updates as technologies evolve and business risks change.
There are 9 Policies To Reduce IT Security And Compliance Risks
1. Acceptable Use Policy (AUP)
2. Information Security
3. Security Awareness
4. Remote Access
5. Business Continuity
6. Change Management
7. Data Backup, Retention, And Disposal Policy
8. Incident Response
9. Bring Your Own Device Policy
Standards for Security
The ISO/IEC 270001 family of standards, also known as the ISO 27000 series, is a series of best practices to help
organisations improve their information security.
Published by ISO (the International Organization for Standardization) and the IEC (International Electrotechnical
Commission), the series explains how to implement best-practice information security practices.
It does this by setting out ISMS (information security management system) requirements.
An ISMS is a systematic approach to risk management, containing measures that address the three pillars of
information security: people, processes and technology.
The series consists of 46 individual standards, including ISO 27000, which provides an introduction to the family as
well as clarifying key terms and definitions.
That’s why organisations are increasingly investing heavily in their defences, using ISO 27001 as a guideline for
effective security.
Discover our bestselling standards:
ISO/IEC 27001:2013 and ISO/IEC 27002:2013 Information technology – Security techniques – ISO 27001 and ISO
27002 standards bundle
ISO/IEC 27017:2015 (ISO 27017) Information technology – Security techniques – Code of practice for information
security controls based on ISO/IEC 27002 for cloud services
ISO/IEC 27031:2011 (ISO 27031) Information technology – Security techniques – Guidelines for information and
communication technology readiness for business continuity
ISO/IEC 27000:2018 (ISO 27000) Information technology – Security techniques – Information security management
systems – Overview and vocabulary
A business continuity plan (BCP) is concerned with how you keep the organisation relocating and reshaping
services.
To meet an organization’s RTO and RPO objectives, data center operators face numerous challenges. A key
challenge is data synchronization, and it depends on frequency of replication. The most common replication
methods are:
Replication The process of copying a portion of the database from one environment to another andkeeping
subsequent copies of the data in synchronization with the original sourceChanges made to the original source are
propagated to the copies of the data in otherenvironments. It is the final form of denormalization. It increases the
access speed andfailure damage of the database. In replication entire table or part of table can bereplicated.
Hot or dynamic replication/backup. Cold or static backup when database is offline.
Vertical Partitioning=> Different columns of a table at different sites (Joining across partitions and Complex of
query)
Horizontal Partitioning=> Different rows of a table at different sites (Unions across partitions and ease of query)
Synchronous Replication
In a synchronous replication, the receiving system acknowledges every single change received from the sending
system. Adopting this method requires maintenance of a “hot” backup site, and it is most effective in combination
with “hot” failover solutions and Global Server Load Balancing (GSLB) solutions. We will refer to replication with
this semantics as synchronous replication; before an update transaction commits, it synchronizes all copies of
modifed data. There are two basic techniques for ensuring that transactions see the same value regardless of
which copy of an object they access. In the first technique, called voting, a transaction must write a majority of
copies in order to modify an object and read at least enough copies to make sure that one of the copies is current.
In the second technique, called read-any write-all, to read an object, a transaction can read any one copy, but to
write an object, it must write all copies. Reads are fast, especially if we have a local copy, but writes are slower,
relative to the first technique. This technique is attractive when reads are much more frequent than writes, and it
is usually adopted for implementing synchronous replication.
Semi-Synchronous Replication
The receiving system sends an acknowledgement only after a series of changes have been received. This method
of synchronization is parallel to the “warm” failover approach and may be the right choice for services that — in
the event of a disaster — can allow for some loss of data and a reasonable amount of downtime.
Asynchronous Replication
This method’s data replication is faster but less secure, as the sending system simply continues to send data,
without receiving any response. Parallel to the “cold” failover approach, this method is best suited for static
resources or scenarios in which data loss is acceptable.
Using Replication’s Horizontal and Vertical partitioning capabilities to manage pubications in a distributed
database environment. An alternative approach to replication, called asynchronous replication, has come to be
widely used in commercial distributed DBMSs. Copies of a modified relation are updated only periodically in this
approach, and a transaction that reads different copies of the same relation may see different values.
Horizontal Scaling
“Scaling out”, or Horizontal Scaling is the practice of adding more instances or servers, to spread out databases on
more machines to deal with low capacity or increased demand”.
Vertical Scaling
Vertical scaling, or “scaling up”, involves adding more resources to a smaller number of server instances - the
opposite approach to a horizontal system.
Horizontal = a predicate was applied to replicate only SOME rows.
Vertical = a select list was applied to replicate only SOME columns.
Oracle has at least 3 methods
snapshots -- aka materialized views. simple to implement, ease of use is great, over 11 years in maturity.
peer to peer (master to master) replication. More moving bits, more complexity -- with corresponding flexibility.
Over 9 years of maturity.
streams -- new with 9iR2, new architecture. middleware, message based, pub/sub orientedSQL Server's replication
feature lets you reproduce data from one database to another. A major component of SQL Server's replication
technology involves horizontal (row) and vertical (column) partitioning, which lets you control what data you
replicate. Once you understand horizontal and vertical partitioning, you can streamline how you store and
distribute data from your SQL Server databases.
Disaster Recovery Sites/Backup Strategy
Cold Backup Strategy
Warm Backup Strategy
Hot Backup Strategy
END
Inmon’s approach – designing centralized storage first and then creating data marts from the summarized data
warehouse data and metadata.
Type is Normalized.
Focuses on data reorganization using relational database management systems (RDBMS)
Holds simple relational data between a core data repository and data marts, or subject-oriented databases Ad-hoc
SQL queries needed to access data are simple
Kimball’s approach – creating data marts first and then developing a data warehouse database incrementally from
independent data marts.
Type is Denormalized.
Focuses on infrastructure functionality using multidimensional database management systems (MDBMS) like star
schema or snowflake schema
On the one hand there is data that can be measured – e.g. costs, temperatures, speed. But such data - in DW
terminology called facts - will have no business value if not used in context of time intervals and/or other describing
attributes. On the other hand only the describing data - in DW terminology called dimensions – gives meaning to
facts.
“A data warehouse is a relational database that is designed for query and analysis rather than for
transaction processing.”
Types of Data Warehouse System
Following are the types of DW systems −
1. Data Mart
2. Online Analytical Processing (OLAP)
3. Online Transaction Processing (OLTP) or Operational DWH
4. Predictive Analysis/Enterprise Data Warehouse
5. Cloud Data warehouse
Data Mart
A data mart(s) can be created from an existing data warehouse—the top-down approach—or other sources, such as
internal operational systems or external data. Similar to a data warehouse, it is a relational database that stores
transactional data (time value, numerical order, reference to one or more objects) in columns and rows making it
easy to organize and access.
Data marts and data warehouses are both highly structured repositories where data is stored and managed until it
is needed. Data marts are designed for a specific line of business and DWH is designed for enterprise-wide range
use. The data mart is >100 and DWH is >100 and the Data mart is a single subject but DWH is a multiple subjects
repository. Data marts are independent data marts and dependent data marts.
Data mart contains a subset of organization-wide data. This subset of data is valuable to specific groups of an
organization.
Definition
Types of Dimensions
Conformed Conformed dimensions are the very fact to which it relates. This dimension is used in more
Dimensions than one-star schema or Datamart.
Outrigger A dimension may have a reference to another dimension table. These secondary dimensions
Dimensions are called outrigger dimensions. This kind of Dimension should be used carefully.
Shrunken Rollup Shrunken Rollup dimensions are a subdivision of rows and columns of a base dimension. These
Dimensions kinds of dimensions are useful for developing aggregated fact tables.
Dimension-to-
Dimensions may have references to other dimensions. However, these relationships can be
Dimension Table
modeled with outrigger dimensions.
Joins
Role-Playing A single physical dimension helps to reference multiple times in a fact table as each reference
Dimensions links to a logically distinct role for the dimension.
Type of
Explanation
facts/measure
It is a collection of random transactional codes, flags, or text attributes. It may not logically
Junk Dimensions
belong to any specific dimension.
A degenerate dimension is without a corresponding dimension. It is used in the transaction
Degenerate
and collecting snapshot fact tables. This kind of dimension does not have its dimension as it is
Dimensions
derived from the fact table.
Swappable They are used when the same fact table is paired with different versions of the same
Dimensions dimension.
Sequential processes, like web page events, mostly have a separate row in a fact table for
Step Dimensions
every step in a process. It tells where the specific step should be used in the overall session.
In short definitions types of fact table and dimensions:
Facts Table represent quantitative data.
Factless fact table is a fact table that contains no fact measure in it or without numeric coloumn. It has only the
dimension keys in it. Use a dummy fact column that always has value 1.
Data Capture
Data capture is an advanced extraction process. It enables the extraction of data from documents, converting it
into machine-readable data. This process is used to collect important organizational information when the source
systems are in the form of paper/electronic documents (receipts, emails, contacts, etc.)
OLAP Model and Its types
Online Analytical Processing (OLAP) is a tool that enables users to perform data analysis from various database
systems simultaneously. Users can use this tool to extract, query, and retrieve data. OLAP enables users to analyze
the collected data from diverse points of view.
Data analysis techniques:
3. Front-end tool.
Characteristics of OLAP
In the FASMI characteristics of OLAP methods, the term derived from the first letters of the characteristics are:
Fast
It defines which system is targeted to deliver the most feedback to the client within about five seconds, with the
elementary analysis taking no more than one second and very few taking more than 20 seconds.
Analysis
It defines which method can cope with any business logic and statistical analysis that is relevant for the function and
the user, and keep it easy enough for the target client. Although some preprogramming may be needed we do not
think it acceptable if all application definitions have to allow the user to define new Adhoc calculations as part of the
analysis and to document the data in any desired method, without having to program so we exclude products (like
Oracle Discoverer) that do not allow the user to define new Adhoc calculation as part of the analysis and to document
on the data in any desired product that do not allow adequate end user-oriented calculation flexibility.
Share
It defines which the system tools all the security requirements for understanding and, if multiple write connection
is needed, concurrent update location at an appropriated level, not all functions need the customer to write data
back, but for the increasing number which does, the system should be able to manage multiple updates in a timely,
secure manner.
Multidimensional
This is the basic requirement. OLAP system must provide a multidimensional conceptual view of the data, including
full support for hierarchies, as this is certainly the most logical method to analyze businesses and organizations.
OLAP Operations
Since OLAP servers are based on a multidimensional view of data, we will discuss OLAP operations in
multidimensional data. Its operations are same as data ware house operations.
Here is the list of OLAP operations −
1. Roll-up
2. Drill-down
3. Slice and dice
4. Pivot (rotate)
Roll-up
Roll-up performs aggregation on a data cube in any of the following ways −
By climbing up a concept hierarchy for a dimension
By dimension reduction
The following diagram illustrates how roll-up works.
Drill-down is performed by stepping down a concept hierarchy for the dimension time.
Initially, the concept hierarchy was "day < month < quarter < year."
On drilling down, the time dimension descended from the level of the quarter to the level of the month.
When drill-down is performed, one or more dimensions from the data cube are added.
It navigates the data from less detailed data to highly detailed data.
Slice
The slice operation selects one particular dimension from a given cube and provides a new sub-cube. Consider the
following diagram that shows how a slice works.
Here Slice is performed for the dimension "time" using the criterion time = "Q1".
It will form a new sub-cube by selecting one or more dimensions.
Dice
Dice selects two or more dimensions from a given cube and provides a new sub-cube. Consider the following
diagram that shows the dice operation.
The dice operation on the cube based on the following selection criteria involves three dimensions.
(location = "Toronto" or "Vancouver")
Pivot
The pivot operation is also known as rotation. It rotates the data axes in view to provide an alternative
presentation of data. Consider the following diagram that shows the pivot operation.
Sequential Patterns:
This data mining technique helps to discover or identify similar patterns or trends in transaction data for a certain
period.
Prediction:
Where the end user can predict the most repeated things.
5 Data integration
Integration of multiple databases, data cubes, or files
Information Retrieval (IR) can be defined as a software program that deals with the organization, storage,
retrieval, and evaluation of information from document repositories, particularly textual information.
An Information Retrieval (IR) model selects and ranks the document that is required by the user or the user has
asked for in the form of a query.
The software program deals with the Data retrieval deals with obtaining data from a database
organization, storage, retrieval, and evaluation management system such as ODBMS. It is A process of
of information from document repositories, identifying and retrieving the data from the database, based
particularly textual information. on the query provided by the user or application.
Small errors are likely to go unnoticed. A single error object means total failure.
END
The BPM lifecycle is considered to have five stages: design, model, execute, monitor, optimize, and Process
reengineering.
The difference between BP and BPMS is defined as BPM is a discipline that uses various methods to discover, model,
analyze, measure, improve, and optimize business processes.
BPM is a method, technique, or way of being/doing and BPMS is a collection of technologies to help build software
systems or applications to automate processes.
BPMS is a software tool used to improve an organization’s business processes through the definition, automation,
and analysis of business processes. It also acts as a valuable automation tool for businesses to generate a competitive
advantage through cost reduction, process excellence, and continuous process improvement. As BPM is a discipline
used by organizations to identify, document, and improve their business processes; BPMS is used to enable aspects
of BPM.
BPMN Task
A logical unit of work that is carried out as a single whole
Resource
A person or a machine that can perform specific tasks
Activity -the performance of a task by a resource
Case
A sequence of activities performed to achieve some goal, an order, an insurance claim, a car assembly
Work item
The combination of a case and a task that is just to be carried out
Process
Describes how a particular category of cases shall be managed
Control flow construct ->sequence, selection, iteration, parallelisation
BPMN concepts
Events
Things that happen instantaneously (e.g. an invoice
Activities
Units of work that have a duration (e.g. an activity to
Process, events, and activities are logically related
Sequence
The most elementary form of relation is Sequence, which implies that one event or activity A is followed by
another event or activity B.
Start event
Circles used with a thin border
End event
Circles used with a thick border
Label
Give a name or label to each activity and event
Token
Once a process instance has been spawned/born, we use a token to identify the progress (or state) of that
instance.
Gateway
There is a gating mechanism that either allows or disallows the passage of tokens through the gateway
Split gateway
A point where the process flow diverges
Have one incoming sequence flow and multiple outgoing sequence flows (representing the branches that diverge)
Join gateway
A point where the process flow converges
Mutually exclusive
Only one of them can be true every time the XOR split is reached by a token
Exclusive (XOR) split
To model the relation between two or more alternative activities, like in the case of the approval or rejection of a
claim.
Exclusive (XOR) join
To merge two or more alternative branches that may have previously been forked with an XOR-split
Indicated with an empty diamond or empty diamond marked with an “X”
Naming/Label Conventions in BPMN:
The label will begin with a verb followed by a noun.
The noun may be preceded by an adjective
The verb may be followed by a complement to explain how the action is being done.
The flow of a process with Big Database
Model the depicted BPMN process by combining the specific elements as shown below.
Also observe the following hints:
All BPMN elements can be accessed via the toolbar on the left. Click the needed element and position it on the
modelling area. After placing an element, you can access the different types by clicking the wrench icon displayed
next to it after selection. In this example you need User, Service and Script tasks. Apart from that, this flow
contains Start, Boundary and End Events, Exclusive Gateways and Swim Lanes (modelled by using the Create
Pool/Participant function on the toolbar).
The shown Timer Boundary Event can be modelled by dragging a boundary event to the border of a task and
changing its type afterwards. Set the Timer Definition Type to Duration and enter PT30S for the Timer Definition to
define a 30 second duration using the ISO 8601 syntax. The source of the depicted arrow pointing to the Send
Reminder task must be set to that Timer Boundary Event.
The Text Annotation as show at the Review for payment task can be used, to give extensive information about
elements in the process.
The Pizza Collaboration Example
END
Disk Array: Arrangement of several disks that gives abstraction of a single, large disk.
RAID techniques:
Key to lower I/O cost: reduce seek/rotation delays! Hardware vs. software solutions?
2. Data-transfer rate: the rate at which data can be retrieved from or stored on disk (e.g., 25-100 MB/s)
3. Mean time to failure (MTTF): average time the disk is expected to run continuously without any failure
BLOCK vs Page vs Sectors
Block Page Sectors
Block is also a sequence of bits and A page is made up of unit blocks or A sector is a physical spot on a
bytes groups of blocks. formatted disk that hold a info.
A block is made up of a contiguous Pages have fixed sizes, usually 2k or Each sector can hold 512 bytes of
sequence of sectors from a single 4k or 8k. data
track.. No fix size.
A block is also called a physical Recards that have no fixed size Any data transferred between
record on hard drives and floppies depends on the data types of the hard disk and the RAM is
columns usually sent in blocks
. The default NTFS Block size is 4096 A disk can read/write a page faster. Pages manage data that is stored
bytes. Pages are virtual blocks Each block/page consists of some in RAM.
records.
4 tuples fit in one block if the block A block is virtual memory unit that A hard disk plate has many
size is 2 kb and 30 tuples fit on 1 stores tables rows and records concentric circles on it, called
block if the block size is 8kb. logically in its segments and A page tracks. Every track is further
Smallest unit of logical memory, it is is a physical memory unit that store divided into sectors.
used to read a file or write data to a data physically in disk file Page/block: processing with
file or physical memory unit called A page is loaded into the processor pages is easier/faster than the
page. from the main memory. block
It is also called variable length Fixed length records, inflexible OS prefer page not block but both
records having complex structure. structure in memory. are storage units.
If I insert a new row/record it will come in a block/page if the existing block/page has space. Otherwise, it assigned
a new block within the file.
Block Diagram depicting paging. Page Map Table(PMT) contains pages from page number 0 to 7
Pinned block: Memory block that is not allowed to be written back to disk.
Toss immediate strategy: Frees the space occupied by a block as soon as the final tuple of that block has been
processed
Example: We can say if we have an employee table and have email, name, CNIC... Empid = 12 bytes, name = 59
bytes, CNIC = 15 bytes.... so all employee table columns are 230 bytes. Its means each row in the employee table
have of 230 bytes. So its means we can store around 2 rows in one block. For example, say your hard drive has a
block size of 4K, and you have a 4.5K file. This requires 8K to store on your hard drive (2 whole blocks), but only 4.5K
on a floppy (9 floppy-size blocks).
Architecture: The buffer manager stages pages from external storage to the main memory buffer pool. File and
index layers make calls to the buffer manager.
What is the steal approach in DBMS? What are the Buffer Manager Policies/Roles? Data
storage on disk?
Note: Buffer manager moves pages between the main memory buffer pool (volatile memory) from the external
storage disk (in non-volatile storage). When execution starts, the file and index layer make the call to the buffer
manager.
The steal approach is used when the buffer manager replaces an existing page in the cache, that has been updated
by a transaction not yet committed, by another page requested by another transaction.
No-force. The force rule means that REDO will never be needed during recovery since any committed transaction
will have all its updates on disk before it is committed.
The deferred update ( NO-UNDO ) recovery scheme a no-steal approach. However, typical database systems employ
a steal/no-force strategy. The advantage of steel is that it avoids the need for very large buffer space.
Steal/No-Steal
Similarly, it would be easy to ensure atomicity with a no-steal policy. The no-steal policy states
that pages cannot be evicted from memory (and thus written to disk) until the transaction commits.
Need support for undo: removing the effects of an uncommitted transaction on the disk
Force/No Force
Durability can be a very simple property to ensure if we use a force policy. The force policy states
when a transaction executes, force all modified data pages to disk before the transaction commits.
Data on a hard disk is stored in microscopic areas called magnetic domains on the magnetic material. Each domain
stores either 1 or 0 values.
When the computer is switched off, then the head is lifted to a safe zone normally termed a safe parking zone to
prevent the head from scratching against the data zone on a platter when the air bearing subsides. This process is
called parking. The basic difference between the magnetic tape and magnetic disk is that magnetic tape is used for
backups whereas, the magnetic disk is used as secondary storage.
Dynamic Storage-Allocation Problem/Algorithms
Memory allocation is a process by which computer programs are assigned memory or space. It is of four types:
First Fit Allocation
The first hole that is big enough is allocated to the program. In this type fit, the partition is allocated, which is the
first sufficient block from the beginning of the main memory.
Best Fit Allocation
The smallest hole that is big enough is allocated to the program. It allocates the process to the partition that is the
first smallest partition among the free partitions.
Worst Fit Allocation
The largest hole that is big enough is allocated to the program. It allocates the process to the partition, which is the
largest sufficient freely available partition in the main memory.
Next Fit allocation: It is mostly similar to the first Fit, but this Fit, searches for the first sufficient partition from the
last allocation point.
Note: First-fit and best-fit better than worst-fit in terms of speed and storage utilization
Static and Dynamic Loading:
To load a process into the main memory is done by a loader. There are two different types of loading :
Static loading:- loading the entire program into a fixed address. It requires more memory space.
Dynamic loading:- The entire program and all data of a process must be in physical memory for the process to
execute. So, the size of a process is limited to the size of physical memory.
Methods Involved in Memory Management
There are various methods and with their help Memory Management can be done intelligently by the Operating
System:
Fragmentation
As processes are loaded and removed from memory, the free memory space is broken into little pieces. It happens
after sometimes that processes cannot be allocated to memory blocks considering their small size and memory
blocks remain unused. This problem is known as Fragmentation.
Fragmentation Category −
1. External fragmentation
Total memory space is enough to satisfy a request or to reside a process in it, but it is not contiguous, so it cannot
be used.
2. Internal fragmentation
The memory block assigned to the process is bigger. Some portion of memory is left unused, as it cannot be used
by another process.
Two types of fragmentation are possible
1. Horizontal fragmentation
2. Vertical Fragmentation
Reconstruction of Hybrid Fragmentation
The original relation in hybrid fragmentation is reconstructed by performing union and full outer join.
3. Hybrid fragmentation can be achieved by performing horizontal and vertical partitions together.
4. Mixed fragmentation is a group of rows and columns in relation.
As shown in the following diagram, the Intel 386 uses segmentation with paging for memory management with a
two-level paging scheme
Swapping
Swapping is a mechanism in which a process can be swapped temporarily out of the main memory (or move) to
secondary storage (disk) and make that memory available to other processes. At some later time, the system
swaps back the process from the secondary storage to the main memory.
Though performance is usually affected by the swapping process it helps in running multiple and big processes in
parallel and that's the reason Swapping is also known as a technique for memory compaction.
Note: Bring a page into memory only when it is needed. The same page may be brought into memory several times
Paging
A page is also a unit of data storage. A page is loaded into the processor from the main memory. A page is made up
of unit blocks or groups of blocks. Pages have fixed sizes, usually 2k or 4k. A page is also called a virtual page or
memory page. When the transfer of pages occurs between main memory and secondary memory it is known as
paging.
Paging is a memory management technique in which process address space is broken into blocks of the same size
called pages (size is the power of 2, between 512 bytes and 8192 bytes). The size of the process is measured in the
number of pages.
Divide logical memory into blocks of the same size called pages.
Similarly, main memory is divided into small fixed-sized blocks of (physical) memory called frames and the size of a
frame is kept the same as that of a page to have optimum utilization of the main memory and to avoid external
fragmentation.
Divide physical memory into fixed-sized blocks called frames (size is the power of 2, between 512 bytes and 8192
bytes)
The basic difference between the magnetic tape and magnetic disk is that magnetic tape is used for backups
whereas, the magnetic disk is used as secondary storage.
Hard disk stores information in the form of magnetic fields. Data is stored digitally in the form of tiny magnetized
regions on the platter where each region represents a bit.
Microsoft SQL Server databases are stored on disk in two files: a data file and a log file
Note: To run a program of size n pages, need to find n free frames and load the program
Implementation of Page Table
The page table is kept in the main memory
Page-table base register (PTBR) points to the page table
Page-table length register (PRLR) indicates the size of the page table
In this scheme, every data/instruction access requires two memory accesses. One for the page table and one for
the data/instruction.
The two memory access problems can be solved by the use of a special fast-lookup hardware cache called
associative memory or translation look-aside buffers (TLBs)
The concept of a logical address space that is bound to separate physical address space is central to proper
memory management
Logical address – generated by the CPU; also referred to as virtual address
Physical address – address seen by the memory unit
Logical and physical addresses are the same in compile-time and load-time address-binding schemes; logical
(virtual) and physical addresses differ in the execution-time address-binding scheme
The user program deals with logical addresses; it never sees the real physical addresses
The logical address space of a process can be noncontiguous; the process is allocated physical memory whenever
the latter is available
1. Oracle 18c (new name) = Oracle Database 12c Release 2 12.2.0.2 (Patch Set for 12c Release 2).
2. Oracle 19c (new name) = Oracle Database 12c Release 2 12.2.0.3 (Terminal Patch Set for Release
Update the password of an Oracle Home Oracle Home User Control None
User
OCOPY
Oracle Database creates server processes to handle the requests of user processes connected to an instance. A
server process can be either of the following: A dedicated server process, which services only one user process. A
shared server
process, which can service multiple user processes.
We can see the listener has the default name of "LISTENER" and is listening for TCP connections on port 1521.
The listener process is started when the server is started (or whenever the instance is started). The listener is only
required for connections from other servers, and the DBA performs the creation of the listener process. When a
new connection comes in over the network, the listener passes the connection to Oracle.
Shutdown immediate:
1. New connections are not allowed
2. Connected uses can’t perform an ongoing transaction
3. Idle sessions will be disconnected
4. Oracle performs rollback’s the ongoing Tx’s(uncommitted) and the database gets shutdown.
5. A common scn number will be updated to control files and data files before the database shutdown.
Hence, It is also a graceful shutdown, So it doesn’t require ICR in the next startup.
Shutdown Abort:
1. New connections are not allowed
2. Connected uses can’t perform an ongoing transaction
3. Idle sessions will be disconnected
4. Db gets shutdown abruptly (NO Commit /No Rollback)
Hence, It is an abrupt shutdown, So it requires ICR in the next startup.
I want to make one of the tablespaces READ ONLY, and guarantee its state to be same as it was before startup.
> save the scripts of making the datafile online and tablespace to read only in .sql file.
> alter database datafile 'd:\data_file_location' online;
> alter tablespace <tablespace_name> read only;
Types of Standby Databases
1. Physical Standby Database
2. Snapshot Standby Database
3. Logical Standby Database
Physical Standby Database
A physical standby database is physically identical to the primary database, with on-disk database structures that
are identical to the primary database on a block-for-block basis. The physical standby database is updated by
performing recovery using redo data that is received from the primary database. Oracle Database12c enables a
physical standby database to receive and apply redo while it is open in read-only mode.
Logical Standby Database
A logical standby database contains the same logical information (unless configured to skip certain objects) as the
production database, although the physical organization and structure of the data can be different. The logical
standby database is kept synchronized with the primary database by transforming the data in the redo received from
the primary database into SQL statements and then executing the SQL statements on the standby database. This is
done with the use of LogMiner technology on the redo data received from the primary database. The tables in a
logical standby database can be used simultaneously for recovery and other tasks such as reporting, summations,
and queries.
A standby database is a transactionally consistent copy of the primary database. Using a backup copy of the primary
database, you can create up to nine standby databases and incorporate them in a Data Guard configuration.
A standby database is a database replica created from a backup of a primary database. By applying archived redo
logs from the primary database to the standby database, you can keep the two databases synchronized.
A standby database has the following main purposes:
1. Disaster protection
2. Protection against data corruption
The basic features of the two products may look similar but takes GoldenGate uses replication while dataguard
not.
Data Guard is best for disaster recovery and data protection problems, GoldenGate is a more flexible
heterogeneous replication mechanism and is also able to transform the data while it is being replicated.
Data Guard is an Oracle specific technology while GoldenGate support heterogeneous database systems including
all the major RDBMS as DB2,Sybase, MySQL .
Data Guard supports active-passive replication. One of the database is the primary database and the other one is
in an inactive Data Guard mode.
GoldenGate supports an active-active replication mode and allows both systems to work simultaneously while
maintaining the data integrity.
GoldenGate allows transformation of the data, with conflict management while it is being replicated between both
database systems.
GoldenGate allows replication across platform. Data can be extracted from a Unix platform and replicated to an
Oracle database running on platform Windows.
GoldenGate has many case of utilization. The use of flat files for data transportation and the support of
heterogeneous systems makes the technology so very interesting
Oracle Active Data Guard provides the best data protection and availability for Oracle Database in the simplest most
economical manner by maintaining an exact physical replica of the production copy at a remote location that is
open read-only while replication is active.
GoldenGate is an advanced logical replication product that supports multi-master replication, hub and spoke
deployment and data transformation, providing customers very flexible options to address the complete range of
replication requirements. GoldenGate also supports replication between a broad range of heterogeneous hardware
platforms and database management systems.
1 Basic Data replication can be happened only Data replication can be happened
heterogeneous database platforms only homogeneous database
platforms
4 Transparency of Only DATA which are replicated are An Oracle Data Guard ,primary and
backups similar to each other. It does not have standby are physically exact copies
transparency of backup of each other.
What is Cloning?
Database Cloning is a procedure that can be used to create an identical copy of the existing Oracle database. DBAs
occasionally need to clone databases to test backup and recovery strategies or export a table that was dropped from
the production database and import it back into the production databases. Cloning can be done on a different host
or the same host even if it is different from the standby database.
Database Cloning can be done using the following methods,
Cold Cloning
Hot Cloning
RMAN Cloning
The basic memory structures associated with Oracle Database include:
System global area (SGA)
The SGA is a group of shared memory structures, known as SGA components, that contain data and control
information for one Oracle Database instance. All server and background processes share the SGA. Examples of
data stored in the SGA include cached data blocks and shared SQL areas.
Program global area (PGA)
A PGA is a nonshared memory region that contains data and control information exclusively for use by an Oracle
process. Oracle Database creates the PGA when an Oracle process starts.
One PGA exists for each server process and background process. The collection of individual PGAs is the total
instance PGA or instance PGA. Database initialization parameters set the size of the instance PGA, not individual
PGAs.
Oracle allocates logical database space for all data in a database. The units of database space allocation are data
blocks, extents, and segments.
The Relationships Among Segments, Extents, Data Blocks in the data file, Oracle block, and OS block:
Oracle Block: At the finest level of granularity, Oracle stores data in data blocks (also called logical blocks, Oracle
blocks, or pages). One data block corresponds to a specific number of bytes of physical database space on a disk.
Oracle Extent: The next level of logical database space is an extent. An extent is a specific number of contiguous
data blocks allocated for storing a specific type of information. It can be spared over two tablespaces.
Oracle Segment: The level of logical database storage greater than an extent is called a segment. A segment is a set
of extents, each of which has been allocated for a specific data structure and all of which are stored in the same
tablespace. For example, each table's data is stored in its data segment, while each index's data is stored in its index
segment. If the table or index is partitioned, each partition is stored in its segment.
Data block: Oracle manages the storage space in the data files of a database in units called data blocks. A data
block is the smallest unit of data used by a database.
Oracle block and data block are equal in data storage by logical and physical respectively like table's (logical) data is
stored in its data segment.
The high water mark is the boundary between used and unused space in a segment.
Operating system block: The data consisting of the data block in the data files are stored in operating system
blocks.
OS Page: The smallest unit of storage that can be atomically written to non-volatile storage is called a page
Details of Data storage in Oracle Blocks:
An extent is a set of logically contiguous data blocks allocated for storing a specific type of information. In the
Figure above, the 24 KB extent has 12 data blocks, while the 72 KB extent has 36 data blocks.
A segment is a set of extents allocated for a specific database object, such as a table. For example, the data for the
employee's table is stored in its data segment, whereas each index for employees is stored in its index segment.
Every database object that consumes storage consists of a single segment.
Advantages
1. You can perform hot backups (backups when the database is online).
2. The archive logs and the last full backup (offline or online) or an older backup can completely recover the
database without losing any data because all changes made in the database are stored in the log file.
Disadvantages
1. It requires additional disk space to store archived log files. However, the agent offers the option to purge
the logs after they have been backed up, giving you the opportunity to free disk space if you need it.
NO-ARCHIVELOG MODE
Advantages
Disadvantages
1. If you must recover a database, you can only restore the last full offline backup. As a result, any changes
made to the database after the last full offline backup are lost.
2. Database downtime is significant because you cannot back up the database online. This limitation
becomes a very serious consideration for large databases.
Note: Because NOARCHIVELOG mode does not guarantee Oracle database recovery if there is a disaster, the Agent
for Oracle does not support this mode. If you need to maintain Oracle Server in NOARCHIVELOG mode, then you
must backup full Oracle database files without the agent using CA ARCserve Backup while the database is offline to
ensure disaster recovery.
LOG_ARCHIVE_FORMAT: This parameter names the archive logs in this format. For example, if your format is:
arch%s.arc, your log files will be called: arch1.arc, arch2.arc, arch3.arc where the ‘1’, ‘2’, ‘3’, etc is the sequence
number.
Switching Database Archiving Mode
1. Shut down the database instance.
SQL> shutdown immediate
An open database must be closed and dismounted and any associated instances shut down before the database’s
archiving mode can be switched. Archiving cannot be disabled if any datafiles need media recovery.
2. Backup the database. This backup can be used with the archive logs that you will generate.
3. Perform any operating system specific steps (optional).
4. Start up a new instance and mount, but do not open the database.
SQL> startup mount
NOTE: If you are using the Real Application Cluster (RAC), then you must mount the database exclusively using one
instance to switch the database’s archiving mode.
5. Put the database into archivelog mode
SQL> alter database archivelog;
NOTE: You can also use below shown query to take the database out of archivelog mode.
SQL> alter database noarchivelog;
6. Open the database.
SQL> alter database open;
7. Verify your database is now in archivelog mode.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 22
Next log sequence to archive 24
Current log sequence 24
8. Archive all your redo logs at this point.
SQL> archive log all;
9. Ensure these newly created Archive log files are added to the backup process.
A big file tablespace eases database administration because it consists of only one data file. The
a single data file can be up to 128TB (terabytes) in size if the tablespace block size is 32KB; if you
use the more common 8KB block size, 32TB is the maximum size of a big file tablespace.
Oracle Database must use logical space management to track and allocate the extents in a tablespace. When a
database object requires an extent, the database must have a method of finding and providing it. Similarly, when
an object no longer requires an extent, the database must have a method of making the free extent available.
Oracle Database manages space within a tablespace based on the type that you create.
SGA (System Global Area) is an area of memory (RAM) allocated when an Oracle Instance starts up. The SGA's size
and function are controlled by initialization (INIT.ORA or SPFILE) parameters.
In general, the SGA consists of the following subcomponents, as can be verified by querying the V$SGAINFO:
SELECT FROM v$sgainfo;
The common components are:
Data buffer cache - cache data and index blocks for faster access.
Shared pool - cache parsed SQL and PL/SQL statements.
Dictionary Cache - information about data dictionary objects.
Redo Log Buffer - committed transactions that are not yet written to the redo log files.
JAVA pool - caching parsed Java programs.
Streams pool - cache Oracle Streams objects.
Large pool - used for backups, UGAs, etc.
Automatic Shared Memory Management simplifies the configuration of the SGA and is the recommended
memory configuration. To use Automatic Shared Memory Management, set the SGA_TARGET initialization
parameter to a nonzero value and set the STATISTICS_LEVEL initialization parameter to TYPICAL or ALL. The value
of the SGA_TARGET parameter should be set to the amount of memory that you want to dedicate to the SGA. In
response to the workload on the system, the automatic SGA management distributes the memory appropriately
for the following memory pools:
1. Database buffer cache (default pool)
2. Shared pool
3. Large pool
4. Java pool
5. Streams pool
Audit access and authentication: This component measure and understands the core security design and it gather
details about who accessed which systems, when, and how
Audit user and administrator: It lists details about the activities that were performed in the database by application
users and administrators
Monitor security activity: This component identify and flag any suspicious activity, unusual or abnormal access to
sensitive data or critical systems
Database audit vulnerability and threat detection: This would detect vulnerabilities in the database, and monitor
every user who is attempting to exploit the database
Change Auditing: In this stage, the baseline policy for the database is established. The policy includes configuration
change, schema change, user access, privileges elevation and file structure validation, and then track any
deviations from that baseline metrics.
END
Physical backups Physical backups, which are the primary concern in a backup and recovery strategy, are copies
of physical database files. You can make physical backups with either the Oracle Recovery Manager (RMAN) utility
or operating system utilities. These are copies of physical database files. For example, a physical backup might copy
database content from a local disk drive to another secure location.
Physical backup Types (cold, hot, full, incremental)
Full or incremental
Open or closed
Consistent or inconsistent
User-managed Backup SQLPlus and OS Commands by starting from the beginning null end; Back up your
database manually by executing commands specific to your operating system.
If you do not want to use RMAN, you can use operating system commands such as the UNIX cp command to make
backups. You can also automate backup operations by writing scripts. User managed backup include hot and cold
backup. Hot and cold backup also called manual backup. No tool required for these types of backup. It also perform
manual recorvery when manual backup done.
A backup set is one or more datafiles, control files, or archived redo logs that are written in an RMAN-specific
format; it requires you to use the RMAN restore command for recovery operations. In contrast, when you use the
copy command to create an image copy of a file, it is in an instance-usable format--you do not need to invoke
RMAN to restore or recover it.
When you issue RMAN commands such as backup or copy, RMAN establishes a connection to an Oracle server
session. The server session then backs up the specified datafile, control file, or archived log from the target
database.
By default, RMAN creates backup sets rather than image copies. A backup set consists of one or more backup pieces,
which are physical files written in a format that only RMAN can access. A multiplexed backup set contains the blocks
from multiple input files. RMAN can write backup sets to disk or tape.
If you specify BACKUP AS COPY, then RMAN copies each file as an image copy, which is a bit-for-bit copy of a database
file created on disk. Image copies are identical to copies created with operating system commands like cp on Linux
or COPY on Windows, but are recorded in the RMAN repository and so are usable by RMAN. You can use RMAN to
make image copies while the database is open.
RMAN obtains the information it needs from either the control file or the optional recovery catalog. The recovery
catalog is a central repository containing a variety of information useful for backup and recovery. Conveniently,
RMAN automatically establishes the names and locations of all the files that you need to back up.
Using RMAN, you can perform two types of incremental backups: a differential backup or a cumulative backup.
In a differential level n incremental backup, you back up all blocks that have changed since the most recent level n
or lower backup. For example, in a differential level 2 backup, RMAN determines which level 1 or level 2 backup
occurred most recently and backs up all blocks modified since that backup.
In a cumulative level n backup, RMAN backs up all the blocks used since the most recent backupat level n-1 or
less. For example, in a cumulative level 3 backup, RMAN determines which level 2 or level 1 backup occurred most
recently and backs up all blocks used since that backup.
Backup
Type Definition
Full A backup of a datafile that includes every allocated block in the file being backed up. A full backup
of a datafile can be an image copy, in which case every data block is backed up. It can also be
stored in a backup set, in which case datafile blocks not in use may be skipped, according to rules
in Oracle Database Backup and Recovery Reference.
A full backup cannot be part of an incremental backup strategy; that is, it cannot be the parent for
a subsequent incremental backup.
Incremental An incremental backup is either a level 0 backup, which includes every block in the file except
blocks compressed out because they have never been used, or a level 1 backup, which includes
only those blocks that have been changed since the parent backup was taken.
Open A backup of online, read/write datafiles when the database is open.
Closed A backup of any part of the target database when it is mounted but not open. Closed backups can
be consistent or inconsistent.
Consistent A backup taken when the database is mounted (but not open) after a normal shutdown. The
checkpoint SCNs in the datafile headers match the header information in the control file. None of
the datafiles has changes beyond its checkpoint. Consistent backups can be restored without
recovery.
Note: If you restore a consistent backup and open the database in read/write mode without
recovery, transactions after the backup are lost. You still need to perform an OPEN RESETLOGS.
Inconsistent A backup of any part of the target database when it is open or when a crash occurred
or SHUTDOWN ABORT was run prior to mounting.
What is SCN Number in Oracle Database? And what is use in incremental backup?
Each data block in a datafile contains a system change number (SCN), which is the SCN at which the most recent
change was made to the block. During an incremental backup, RMAN reads the SCN of each data block in the input
file and compares it to the checkpoint SCN of the parent incremental backup. (If block change tracking is enabled,
RMAN does not read the portions of the file known to have not changed since the parent incremental backup.) If
the SCN in the input data block is greater than or equal to the checkpoint SCN of the parent, then RMAN copies the
block. One consequence of this mechanism is that RMAN applies all blocks containing changed data during
recovery—even if the change is to an object created with the NOLOGGING option. Hence, making incremental
backups is a safeguard against the loss of changes made by NOLOGGING operations.
RMAN does not need to restore a base incremental backup of a datafile in order to apply incremental backups to
the datafile during recovery. For example, you can restore non-incremental image copies of the datafiles in the
database, and RMAN can recover them with incremental backups.
Level 0 are a base for subsequent backups. Copies all blocks containing data similar to a full backup, with the only
difference that full backups are never included in an incremental strategy. Level 0 can be backup sets or image
copies. Level 1 are subsequent backups of a level 0.
A level 1 incremental backup can be either of the following types:
A differential backup, which backs up all blocks changed after the most recent incremental backup at level 1 or 0.
In a differential level 1 backup, RMAN backs up all blocks that have changed since the most recent incremental
backup at level 1 (cumulative or differential) or level 0. For example, in a differential level 1 backup, RMAN
determines which level 1 backup occurred most recently and backs up all blocks modified after that backup. If no
level 1 is available, RMAN copies all blocks changed since the base level 0 backup.
A cumulative backup, which backs up all blocks changed after the most recent incremental backup at level 0.
Cumulative backups are preferable to differential backups when recovery time is more important than disk space,
because fewer incremental backups need to be applied during recovery.
The size of the backup file depends solely upon the number of blocks modified and the incremental backup level.
A level 0 incremental backup is physically identical to a full backup. The only difference is that the level 0 backup is
recorded as an incremental backup in the RMAN repository, so it can be used as the parent for a level 1 backup.
There are two types of incremental backups, "differential" and "cumulative". The goal of an incremental backup is
to back up only those data blocks that have changed since a previous backup. You can use RMAN to create
incremental backups of datafiles, tablespaces, or the whole database. RMAN does not need to restore a base
incremental backup of a datafile in order to apply incremental backups to the datafile during recovery. For example,
you can restore non-incremental image copies of the datafiles in the database, and RMAN can recover them with
incremental backups. Backup sets are logical entities produced by the RMAN BACKUP command.
You can make a backup of the whole database at once or supplement a whole database backup with backups of
individual tablespaces, datafiles, control files, and archived logs. You can use O/S commands to perform these
backups. Because incremental backups are not as big as full backups, you can create them on disk more easily.
Full backup—Creates a copy of data that can include parts of a database such as the control file, transaction files
(redo logs), tablespaces, archive files, and data files. Regular cold full physical backups are recommended. The
database must be in archive log mode for a full physical backup.
Incremental—Captures only changes made after the last full physical backup. Incremental backup can be done with
a hot backup.
Cold-full backup - A cold-full backup is when the database is shut down, all of the physical files are backed up, and
the database is started up again.
Cold-partial backup - A cold-partial backup is used when a full backup is not possible due to some physical
constraints.
Hot-full backup - A hot-full backup is one in which the database is not taken off-line during the backup process.
Rather, the tablespace and data files are put into a backup state.
Hot-partial backup - A hot-partial backup is one in which the database is not taken off-line during the backup
process, plus different tablespaces are backed up on different nights.
Although the content is same both are a part of different backup strategy. if you plan to take incremental backups
and restore them then full backups cannot be used. In other words you can not restore a level 1 incremental backup
on top of a full backup, you can only restore level backup on top of a level 0 backup.
If lost the APEX tablespace but your database is currently functioning. If this is the case, and assuming your APEX
tablespace does not span multiple datafiles, you can attempt to swap out the datafile. Please force a backup in rman
before trying any of this.
The RMAN client: An Oracle Database executable that interprets commands, directs server sessions to execute those
commands, and records its activity in the target database control file. The RMAN executable is automatically installed
with the database and is typically located in the same directory as the other database executables. For example, the
RMAN client on Linux is located in $ORACLE_HOME/bin.
RMAN client is the client application that performs all the backup and recovery operations for the target database.
It uses Oracle net to connect to the target database so that its location can be found on any host that is connected
to the target host using Oracle Net. It is a command line interface which helps in issuing the backup, recover, SQL
and special RMAN commands. It is a mandatory component for RMAN.
Recovery catalog schema: It is the user present in the recovery catalog database that has the metadata tables made
by RMAN. RMAN periodically shifts metadata from the control file of the target database to the recovery catalog. It
is an optional component.
Recovery catalog database: It is a database that contains the recovery catalog that contains metadata which is used
by RMAN to perform backup and recovery tasks. One recovery catalog can be created for containing metadata of
multiple target databases. It is also an optional component.
Physical standby database: It is a copy of the primary database which is updated with archived redo logs. It has the
same Database id and database name as the primary database, but it has different DB_UNIQUE_NAME. Standby
databases can be created, backed up and recovered by RMAN. It is not a mandatory component.
Duplicate database: It is also a copy of the primary database but it is used for testing purposes. Its DB_ID is also
different from the primary database.
Fast recovery area: It is a disk location used to store files related to recovery such as control file, online redo files
flashback logs, RMAN backups, and archived redo files. Files present in the fast recovery area are automatically
managed by the Oracle database and RMAN.
Media Manager: It is a vendor-specific application that allows RMAN to back up the storage system such as tape. It
is an optional component.
Media Management catalog: It is a vendor-specific repository of metadata related to media management
application. It is also an optional component.
A fast recovery area: A disk location in which the database can store and manage files related to backup and
recovery. You set the fast recovery area location and size with the DB_RECOVERY_FILE_DEST and
DB_RECOVERY_FILE_DEST_SIZE initialization parameters.
A media manager: An application required for RMAN to interact with sequential media devices such as tape libraries.
A media manager controls these devices during backup and recovery, managing the loading, labeling, and unloading
of media. Media management devices are sometimes called SBT (system backup to tape) devices.
A recovery catalog: A separate database schema used to record RMAN activity against one or more target databases.
A recovery catalog preserves RMAN repository metadata if the control file is lost, making it much easier to restore
and recover following the loss of the control file. The database may overwrite older records in the control file, but
RMAN maintains records forever in the catalog unless the records are deleted by the user.
Oracle Enterprise Manager: It is a browser-based interface that includes backup and recovery through RMAN. It is
also an optional component.
Typically we’ll use “BACKUP AS BACKUPSET” to backup a database. So, to take a full backup of the database with or
without by PLUS sign for archive logs, do the following.
RMAN> BACKUP AS BACKUPSET DATABASE or PLUS ARCHIVELOG;
To take a full backup of the database with the archive logs, do the following:
You can also take a backup of only a specific table space. The following example takes backup of only PRD01
tablespace.
RMAN> BACKUP AS BACKUPSET TABLESPACE PRD01;
The RMAN backup output will be something similar to the following:
RMAN> BACKUP AS BACKUPSET DATABASE
Once backup is completed, check backup tag via below command
For example, enter the following commands to guarantee that the database is in a consistent state for a backup:
For example, enter the following command at the RMAN prompt to back up the database to the default backup
device:
The following variation of the command creates image copy backups of all datafiles in the database:
FORMAT Specifies a location and name for backup pieces and copies. You must use BACKUP
substitution variables to generate unique filenames. FORMAT
'AL_%d/%t/%s/%p'
The most common substitution variable is %U, which generates a unique ARCHIVELOG LIKE
name. Others include %d for the DB_NAME, %t for the backup set time '%arc_dest%';
stamp, %s for the backup set number, and %p for the backup piece number.
TAG Specifies a user-defined string as a label for the backup. If you do not BACKUP
specify a tag , then RMAN assigns a default tag with the date and time. Tags TAG
are always stored in the RMAN repository in uppercase. 'weekly_full_db_bkup'
DATABASE MAXSETSIZE
10M;
Data Replication
Replication is the process of copying and maintaining database objects in multiple databases that make up a
distributed database system. Replication can improve the performance and protect the availability of applications
because alternate data access options exist.
Oracle provides its own set of tools to replicate Oracle and integrate it with other databases. In this post, you will
explore the tools provided by Oracle as well as open-source tools that can be used for Oracle database replication
by implementing custom code.
The catalog is needed to keep track of the location of each fragment & replica
Data replication techniques
Synchronous vs. asynchronous
Synchronous: all replicas are up-to-date
Asynchronous: cheaper but delay in synchronization
Regarding the timing of data transfer, there are two types of data replication:
Asynchronous replication is when the data is sent to the model server -- the server where the replicas take data
from the client. Then, the model server pings the client with a confirmation saying the data has been received. From
there, it goes about copying data to the replicas at an unspecified or monitored pace.
Synchronous replication is when data is copied from the client-server to the model server and then replicated to
all the replica servers before the client is notified that data has been replicated. This takes longer to verify than the
asynchronous method, but it presents the advantage of knowing that all data was copied before proceeding.
Asynchronous database replication offers flexibility and ease of use, as replications happen in the background.
Methods to Setup Oracle Database Replication
You can easily set up the Oracle Database Replication using the following methods:
Method 1: Oracle Database Replication Using Hevo Data
Method 2: Oracle Database Replication Using A Full Backup And Load Approach
Method 3: Oracle Database Replication Using a Trigger-Based Approach
Method 4: Oracle Database Replication Using Oracle Golden Gate CDC
Method 5: Oracle Database Replication Using Custom Script-Based on Binary Log
Oracle types of data replication and integration in OLAP
Three main architectures:
Consolidation database: All data is moved into a single database and managed from a central location. Oracle Real
Application Clusters (Oracle RAC), Grid computing, and Virtual Private Database (VPD) can help you consolidate
information into a single database that is highly available, scalable, and secure.
Federation: Data appears to be integrated into a single virtual database while remaining in its current distributed
locations. Distributed queries, distributed SQL, and Oracle Database Gateway can help you create a federated
database.
Sharing Mediation: Multiple copies of the same information are maintained in multiple databases and application
data stores. Data replication and messaging can help you share information at multiple databases.
Types of Recovery:
Complete recovery
Recovering the database exactly till the point of failure.
Incomplete Recovery
It cannot recover the database till the point of failure. It recover database till you have taken backup.
Recovering Tablespaces
Use the RESTORE TABLESPACE and RECOVER TABLESPACE commands on individual tablespaces when the
database is open. In this case, must take the tablespace that needs recovery offline, restore and then
recover the tablespace, and bring the recovered tablespace online.
If you cannot restore a datafile to a new location, then use the RMAN SET NEWNAME command within
a RUN command to specify the new filename. Afterward, use a SWITCH DATAFILE ALL command, which is
equivalent to using the SQL statement ALTER DATABASE RENAME FILE, to update the control file to reflect
the new names for all datafiles for which a SET NEWNAME has been issued in the RUN command.
Unlike in user-managed media recovery, you should not place an online tablespace in backup mode.
Unlike user-managed tools, RMAN does not require extra logging or backup mode because it knows the
format of data blocks.
To recover an individual tablespace when the database is open:
Prepare for recovery
Take the tablespace to be recovered offline:
The following example takes the users tablespace offline:
RMAN> SQL 'ALTER TABLESPACE users OFFLINE';
Restore and recover the tablespace.
The following RUN command, which you execute at the RMAN prompt, sets a new name for the datafile
in the users tablespace:
RUN
{
SET NEWNAME FOR DATAFILE '/disk1/oradata/prod/users01.dbf'
TO '/disk2/users01.dbf';
RESTORE TABLESPACE users;
SWITCH DATAFILE ALL; # update control file with new filenames
RECOVER TABLESPACE users;
}
Bring the tablespace online, as shown in the following example:
RMAN> SQL 'ALTER TABLESPACE users ONLINE';
While Oracle permits queries against objects stored in the recycle bin, you cannot use DML or DDL statements on
objects in the recycle bin.
You can perform Flashback Query on tables in the recycle bin, but only by using the recycle bin name. You cannot
use the original name of the table.
A table and all of its dependent objects (indexes, LOB segments, nested tables, triggers, constraints and so on) go
into the recycle bin together, when you drop the table. Likewise, when you perform Flashback Drop, the objects are
generally all retrieved together.
Question: I accidently deleted a production data file and we have no backups of the datafile, except an
old one from am month ago. How can you recover Oracle when a data file has been deleted?
Answer: Recovering a lost datafile, especially when you do not have a backup, requires experts. DO NOT shutdown
the database, and call BC for emergency recovery support. You have little chance of a fast recovery without an
expert and BC can be in your system within minutes using vpn or ssh to get your recovery done right.
Recover via Oracle: If you are running in ARCHIVELOG mode and you have valid backup and all of the archived redo
logs since the last backup, then recovery is possible.
UNIX Inode recovery: On UNIX/Linux (Solaris, AIX, HPUX), when a file is deleted, an Oracle background process still
has the file open. The deleted file is still there in the filesystem disk, and only the inode is removed. By replacing the
inode entry you can recover the lost data file.
Oracle Dictionary Recovery: If you dropped the datafile using the Oracle "drop datafile" command, the dictionary
can be restored to re-enable the data file. Re-adding a dropped datafile is tricky and un-supported but it can work,
requiring tools such as BBED tool and an in-depth understanding of Oracle internals.
As with Flashback Table, you can use Flashback Drop while the database is open. Also, you can perform the flashback
without undoing changes in objects not affected by the Flashback Drop operation. Flashback Table is more
convenient than forms of media recovery that require taking the database offline and restoring files from backup.
Important Recovery Data Structures
Table describes important data structures involved in recovery processes. Be familiar with these data structures
before starting any recovery procedure.
Data Description
Structure
Control File The control file contains records that describe and maintain information about the physical
structure of a database. The control file is updated continuously during database use, and must be
available for writing whenever the database is open. If the control file is not accessible, the
database will not function properly.
System The system change number is a clock value for the Oracle database that describes a committed
Change version of the database. The SCN functions as a sequence generator for a database, and controls
Number (SCN) concurrency and redo record ordering. Think of the SCN as a timestamp that helps ensure
transaction consistency.
Redo Records A redo record is a group of change vectors describing a single, atomic change to the database.
Redo records are constructed for all data block changes and saved on disk in the redo log. Redo
records allow multiple database blocks to be changed so that either all changes occur or no
changes occur, despite arbitrary failures.
Redo Logs All changes to the Oracle database are recorded in redo logs, which consist of at least two redo log
files that are separate from the datafiles. During database recovery from an instance or media
failure, Oracle applies the appropriate changes in the database's redo log to the datafiles; this
updates database data to the instant that the failure occurred.
Backup A database backup consists of operating system backups of the physical files that constitute the
Oracle database. To begin database recovery from a media failure, Oracle uses file backups to
restore damaged datafiles or control files.
Checkpoint A checkpoint is a data structure in the control file that defines a consistent point of the database
across all threads of a redo log. Checkpoints are similar to SCNs, and also describe which threads
exist at that SCN. Checkpoints are used by recovery to ensure that Oracle starts reading the log
threads for the redo application at the correct point. For Parallel Server, each checkpoint has its
own redo information.
Log: The log is a sequence of records. The log of each transaction is maintained in some stable storage so that if
any failure occurs, then it can be recovered from there.
Store the LSN of the most recent checkpoint at a master record on a disk
Checkpoint
The checkpoint is like a bookmark. While the execution of the transaction, such checkpoints are marked, and the
transaction is executed then using the steps of the transaction, the log files will be created.
Checkpoint declares a point before which all the logs are stored permanently in the storage disk and are in an
inconsistent state. In the case of crashes, the amount of work and time is saved as the system can restart from the
checkpoint. Checkpointing is a quick way to limit the number of logs to scan on recovery.
END
Amend the SSL Keystore Settings Using WebLogic Scripting Tool (WLST) - This article shows how to amend
the SSL keystore settings for a managed server in an existing domain using WebLogic Scripting Tool
(WLST).
Oracle HTTP Server (OHS) 12cR2 (12.2.1) Installation on Oracle Linux 6 and 7 - This article demonstrates
how to perform an installation of Oracle HTTP Server (OHS) on Oracle Linux.
Here are some miscellaneous installation articles.
Oracle VM (2.2) Installation
Oracle VM (3.0) Installation
SUSE Linux 10.1 Installation
Ubuntu 6.10 Installation
VMware ESX Server 3 Installation
Solaris 10 (x86-32) Installation
Modifying SCAN Configuration in Oracle 11g Release 2 RAC - Some notes on modifying SCAN configuration
after installation of Oracle RAC.
VMware ESX Server 3.5 Update 2 Installation - This article describes the bare-metal installation and basic
usage of VMware ESX Server 3.5 Update 2.
Application Server Installation Matrix
For installations on RHEL clones, like Oracle Linux and CentOS, use the instructions provided below for the
appropriate RHEL release.
OS 9iAS AS10g AS10g AS10g WebLogic WebLogic WebLogic WebLogic WebLogic
R1 R2 R3 11g 12cR1 12cR1 12cR1 12cR2
(12.1.1) (12.1.2) (12.1.3) (12.2.1)
Red Hat Enterprise Linux Yes Yes
2.1 (RHEL2)
Red Hat Enterprise Linux 3 Yes Yes Yes
(RHEL3)
Red Hat Enterprise Linux 4 Yes
(RHEL4)
Oracle Linux 5 (OL5) Yes Yes Yes Yes
Oracle Linux 6 (OL6) Yes Yes Yes Yes Yes
Oracle Linux 7 (OL7) Yes
Fedora Core 1 (FC1), Yes
Fedora 36 (F36)
Installation
Requirement Value
Virtual memory (swap) If physical memory is between 2 GB and 16 GB, then set
virtual memory to 1 times the size of the RAM
If physical memory is more than 16 GB, then set virtual
memory to 16 GB
* Refers to the contents of the admin, cfgtoollogs, flash_recovery_area, and oradata directories in the ORACLE_BASE
directory.
Memory Requirements for Installing Oracle Fusion Middleware
Operating System Minimum Physical Memory Required Minimum Available Memory Required
Linux 4 GB 8 GB
UNIX 4 GB 8 GB
Windows 4 GB 8 GB
Type Size
Maximum possible file size with 16 K sized 64 Gigabytes (GB) (4,194,304 * 16,384) = 64 gigabytes (GB)
blocks
2 KB 20,000
4 KB 40,000
8 KB 65,536
16 KB 65,536
Type Size
In this section, you will be installing the Oracle Database and creating an Oracle Home User
account.
Here OUI is used to install Oracle Software
1. Expand the database folder that you extracted in the previous section. Double-click setup.
2. Click Yes in the User Account Control window to continue with the installation.
3. The Configure Security Updates window appears. Enter your email address and My Oracle Support password to
receive security issue notifications via email. If you do not wish to receive notifications via email, deselect.
Select "Skip software updates" if do not want to apply any updates.
Accept the default and click Next.
4. The Select Installation Option window appears with the following options:
Select "Create and configure a database" to install the database, create database instance and configure the
database.
Select "Install database software only" to only install the database software.
Select "Upgrade an existing database" to upgrade the database that is already installed.
In this OBE, we create and configure the database. Select the Create and configure a database option and click
Next.
5. The System Class window appears. Select Desktop Class or Server Class depending on the type of system you are
using. In this OBE, we will perform the installation on a desktop/laptop. Select Desktop class and click Next.
6. The Oracle Home User Selection window appears. Starting with Oracle Database 12c Release 1 (12.1), Oracle
Database on Microsoft Windows supports the use of an Oracle Home User, specified at the time of installation. This
Oracle Home User is used to run the Windows services for a Oracle Home, and is similar to the Oracle User on Oracle
Database on Linux. This user is associated with an Oracle Home and cannot be changed to a different user post
installation.
Note: Different Oracle homes on a system can share the same Oracle Home User or use different Oracle Home Users.
The Oracle Home User is different from an Oracle Installation User. The Oracle Installation User is the user who
requires administrative privileges to install Oracle products. The Oracle Home User is used to run the Windows
services for the Oracle Home.
The window provides the following options:
1. If you select "Use Existing Windows User", the user credentials provided must be a standard Windows
user account (not an administrator).
2. If this is a single instance database installation, the user can be a local user, a domain user, or a managed
services account.
3. If this is an Oracle RAC database installation, the existing user must be a Windows domain user. The
Oracle installer will display an error if this user has administrator privileges.
4. If you select "Create New Windows User", the Oracle installer will create a new standard Windows user
account. This user will be assigned as the Oracle Home User. Please note that this user will not have login
privileges. This option is not available for an Oracle RAC Database installation.
5. If you select "Use Windows Built-in Account", the system uses the Windows Built-in account as the Oracle
Home User.
Select the Create New Windows User option. Enter the user name as OracleHomeUser1 and password as
Welcome1. Click Next.
Note: Remember the Windows User password. It will be required later to administer or manage database
services.
6. The Typical Install Configuration window appears. Click on a text field and then the balloon icon ( )to
know more about the field. Note that by default, the installer creates a container database along with a
pluggable database called "pdborcl". The pluggable database contains the sample HR schema.
8. Change the Global database name to orcl. Enter the “Administrative password” as Oracle_1. This password will
be used later to log into administrator accounts such as SYS and SYSTEM. Click Next.
9. The prerequisite checks are performed and a Summary window appears. Review the settings and click Install.
Note: Depending on your firewall settings, you may need to grant permissions to allow java to access the network.
11. The Database Configuration Assistant started and creates your the database.
12. After the Database Configuration Assistant creates the database, you can navigate to https://localhost:5500/em
as a SYS user to manage the database using Enterprise Manager Database Express. You can click “Password
Management…” to unlock accounts. Click OK to continue.
13. The Finish window appears. Click Close to exit the Oracle Universal Installer.
13.5. To verify the installation Navigate to C:\Windows\system32 using Windows Explorer. Double-click services.
The Services window appears, displaying a list of services.
There is no need to spend time on the GUI at the very beginning. Thus, the developer can directly start with
implementing the business logic.
This is the reason why Oracle APEX is feasible to create rapid GUI-Prototypes without logic. Thus, prospective
customers can get an idea of how their future application will look.
And the cool thing is, it’s going to get even better with time. Oracle’s roadmap for the technology is extensive and
mentions things such as:
Process modeling
Support for MySQL
Native map component (you’ll be able to create a map like those you saw in these Covid-19 apps I
mentioned natively – right now you have to use additional tools for that, like JavaScript or a map plug-in).
Oracle JET-based components (JavaScript Extension Toolkit – it’s definitely not low-code, but it’s got nice
data visualizations)
Expanded capabilities in APEX Service Cloud Console
REST Service Catalog (I had to google around for the one I used, but in the future, you’ll have a catalog of
freely available options to choose)
Integration with developer lifecycle services
Improved printing and PDF export capabilities
As you can see, there’s a lot of things that are worth waiting for. Oracle APEX is going to get a lot more powerful,
and that’s even more of a reason to get to know it and start using it.
Apex history
APEX is a very powerful development tool, which is used to create web-based database-centric applications. The
tool itself consists of a schema in the database with a lot of tables, views, and PL/SQL code. It’s available for every
edition of the database. The techniques that are used with this tool are PL/SQL, HTML, CSS, and JavaScript.
Before APEX there was WebDB, which was based on the same techniques. WebDB became part of Oracle Portal and
disappeared in silence. The difference between APEX and WebDB is that WebDB generates packages that generate
the HTML pages, while APEX generates the HTML pages at runtime from the repository. Despite this approach APEX
is amazingly fast.
APEX became available to the public in 2004 and then it was part of version 10g of the database. At that time it was
called HTMLDB and the first version was 1.5. Before HTMLDB, it was called Oracle Flows, Oracle Platform, and Project
Marvel.
Note: Starting with Oracle Database 12c Release 2 (12.2), Oracle Application Express is included in the Oracle
Home on disk and is no longer installed by default in the database.
Oracle Application Express is included with the following Oracle Database releases:
Oracle Database 19c – Oracle Application Express Release 18.1.
Oracle Database 18c – Oracle Application Express Release 5.1.
Oracle Database 12c Release 2 (12.2)- Oracle Application Express Release 5.0.
Oracle Database 12c Release 1 (12.1) – Oracle Application Express Release 4.2.
Oracle Database 11g Release 2 (11.2) – Oracle Application Express Release 3.2.
Oracle Database 11g Release 1 (11.1) – Oracle Application Express Release 3.0.
The Oracle Database releases less frequently than Oracle Application Express. Therefore, Oracle recommends
updating to the latest Oracle Application Express release available on Oracle Technology Network.
Within each application, you can also specify a Compatibility Mode in the Application Definition. The Compatibility
Mode attribute controls the compatibility mode of the Application Express runtime engine. Compatibility
Mode options include Pre 4.1, 4.1, 4.2, 5.0, 5.1/18.1, 18.2, 19.1, and 19.2. or upper versions.
Version 22
This release of Oracle APEX introduces Approvals and the Unified Task List, Simplified Create Page wizards,
Readable Application Export formats, and Data Generator. APEX 22.1 also brings several enhancements existing
components, such as tokenized row search, an easy way to sort regions, improvements to faceted search,
additional customization of the PWA service worker, a more streamlined developer experience, and much more!
Version 21
This release of Oracle APEX introduces Smart Filters, Progressive Web Apps, and REST Service Catalogs. APEX 21.2
also brings greater UI flexibility with Universal Theme, new and updated page components, numerous
improvements to the developer experience, and a whole lot more!
Especially now Oracle has pointed out APEX as one of the important tools for building applications in their Oracle
Database Cloud Service, this interest will only grow. APEX shared a lot of the characteristics of cloud computing,
even before cloud computing became popular.
Elasticity
Browser-based development and runtime
RESTful web services (REST stands for Representational State Transfer)
Because the database is doing all the hard work, the architecture is fairly simple. We only have to add a web server.
We can choose one of the following web servers:
Oracle APEX has a strong history, starting with version 1.5, which came out in 2004 – it was known as HTML DB then
(before it also had other names, like Flows and Project Marvel).
Oracle APEX is a part of the Oracle RAD architecture and technology stack. What does it mean?
“R” stands for REST, or rather ORDS – Oracle REST Data Services. ORDS is responsible for asking the database for the
page and rendering it back to the client;
“A” stands for APEX, Oracle Application Express, the topic of this article;
“D” stands for Database, which is the place an APEX application resides in.
Other methodologies that work well with Oracle Application Express include:
Spiral - This approach is actually a series of short waterfall cycles. Each waterfall cycle yields new requirements and
enables the development team to create a robust series of prototypes.
Rapid application development (RAD) life cycle - This approach has a heavy emphasis on creating a prototype that
closely resembles the final product. The prototype is an essential part of the requirements phase. One disadvantage
of this model is that the emphasis on creating the prototype can cause scope creep; developers can lose sight of
their initial goals in the attempt to create the perfect application.
These include Oauth client, APEX User, Database Schema User, and OS User. While it is important to ensure your
ORDS web services are secured, you also need to consider what a client has access to once authenticate. As a quick
reminder, authentication confirms your identity and allows you into the system, authorization decides what you can
do once you are in.
Oracle REST Data Services is a Java EE-based alternative for Oracle HTTP Server and mod_plsql.
The Java EE implementation offers increased functionality including a command-line based configuration, enhanced
security, file caching, and RESTful web services.
Oracle REST Data Services also provides increased flexibility by supporting deployments using Oracle WebLogic
Server, GlassFish Server, Apache Tomcat, and a standalone mode.
The Oracle Application Express architecture requires some form of the webserver to proxy requests between a web
browser and the Oracle Application Express engine. Oracle REST Data Services satisfies this need but its use goes
beyond that of Oracle Application Express configurations.
Oracle REST Data Services simplifies the deployment process because there is no Oracle home required, as
connectivity is provided using an embedded JDBC driver.
Oracle REST Data Services is a Java Enterprise Edition (Java EE) based data service that provides enhanced security,
file caching features, and RESTful Web Services. Oracle REST Data Services also increases flexibility through support
for deployment in standalone mode, as well as using servers like Oracle WebLogic Server and Apache Tomcat.
ORDS, a Java-based application, enables developers with SQL and database skills to develop REST APIs for Oracle
Database. You can deploy ORDS on web and application servers, including WebLogic®, Tomcat®, and Glassfish®, as
shown in the following image:
ORDS is our middle tier JAVA application that allows you to access your Oracle Database resources via REST APIs.
Use standard HTTP(s) calls (GET|POST|PUT|DELETE) via URIs that ORDS makes available
(/ords/database123/user3/module5/something/)
ORDS will route your request to the appropriate database, and call the appropriate query or PL/SQL anonymous
block), and return the output and HTTP codes.
For most calls, that’s going to be the results of a SQL statement – paginated and formatted as JSON.
Oracle Cloud
You can run APEX in an Autonomous Database (ADB) – an elastic database that you can scale up. It’s self-driving,
self-healing, and can repair and upgrade itself. It comes in two flavours:
1. Autonomous Transaction Processing (ATP) – basically transaction processing, it’s where APEX sees most use;
2. Autonomous Data Warehouse (ADW) – for more query-driven APEX applications. Reporting data is also a
common use of Oracle APEX.
You can also use the new Database Cloud Service (DCS) – an APEX-only solution. For a fee, you can have a
commercial application running on a database cloud service.
Oracle APEX
Identifies Application
APEX_APPLICATION_COMPUTATIONS Computations which can run for APEX_APPLICATIONS
every page or on login
Identifies attributes of an
APEX_APPLICATION_PAGE_IR APEX_APPLICATION_PAGE_REGIONS
interactive report
Developer comments of an
APEX_APPL_DEVELOPER_COMMENTS APEX_APPLICATIONS
application
Identifies a collection of
APEX_APPL_LOAD_TABLE_RULES transformation rules that are to APEX_APPLICATIONS
be used on the load tables.
This article presents how to install and configure Apex 21.2 with standalone ORDS 21.2
In previous versions an upgrade was required when a release affected the first two numbers of the version (4.2 to
5.0 or 5.1 to 18.1), but if the first two numbers of the version were not affected (5.1.3 to 5.1.4) you had to
download and apply a patch, rather than do the full installation. This is no longer the case.
Steps
Setup (Download both software having equal version and paste unzip files at same location in directory)
Installation
Step One
Create a new tablespace to act as the default tablespace for APEX.
-- For non-OMF.
CREATE TABLESPACE apex DATAFILE ‘/path/to/datafiles/apex01.dbf’ SIZE 100M AUTOEXTEND ON NEXT 1M;
Tablespaces allocate space in extents. Tablespaces can use two different methods to keep track of their free and
used space:
When you create a tablespace, you choose one of these methods of space management. Later, you can change the
management method with the DBMS_SPACE_ADMIN PL/SQL package.
1- do incomplete recovery
4- shutdown immediate
5- startup mount
6- restart recovery --- this will not be possible right? because the system tablespace/datafiles got written,
Step two
Installation
$ cd /home/oracle/apex
Step three
IF: Connect to SQL*Plus as the SYS user and run the "apexins.sql" script, specifying the relevant tablespace names
and image URL.
Logon to database as SYSDBA and switch to pluggable database orclpdb1 and run installation script. You can install
apex on dedicated tablespaces if required.
sqlplus / as sysdba
Step four
If you want to add the user silently, you could run the following code, specifying the required password and email.
BEGIN
APEX_UTIL.set_security_group_id( 10 );
APEX_UTIL.create_user(
APEX_UTIL.set_security_group_id( null );
COMMIT;
END;
Note:
http://host:port/ords/apex_admin
http://host:port/ords
Or
When Oracle Application Express installs, it creates three new database accounts all with status LOCKED in
database:
APEX_210200– The account that owns the Oracle Application Express schema and metadata.
FLOWS_FILES – The account that owns the Oracle Application Express uploaded files.
APEX_PUBLIC_USER – The minimally privileged account is used for Oracle Application Express configuration with
ORDS.
Create and change password for ADMIN account. When prompted enter a password for the ADMIN account.
sqlplus / as sysdba
@apxchpwd.sql
output
SQL> @apxchpwd.sql
instance administrator. If the user does not yet exist, a user record will be
created.
Step Five
Create the APEX_LISTENER and APEX_REST_PUBLIC_USER users by running the "apex_rest_config.sql" script.
SQL> @apex_rest_config.sql
Configure RESTful Services. When prompted enter a password for the APEX_LISTENER, APEX_REST_PUBLIC_USER
account.
sqlplus / as sysdba
@apex_rest_config.sql
output
SQL> @apex_rest_config.sql
...set_appun.sql
For this post, I chose the first option, which Oracle recommends: Install APEX and ORDS and configure ORDS.
Step Six
Now you need to decide which gateway to use to access APEX. The Oracle recommendation is ORDS.
Note: Oracle REST Data Services (ORDS), formerly known as the APEX Listener, allows APEX applications to be
deployed without the use of Oracle HTTP Server (OHS) and mod_plsql or the Embedded PL/SQL Gateway. ORDS
version 3.0 onward also includes JSON API support to work in conjunction with the JSON support in the database.
ORDS can be deployed on WebLogic, Tomcat or run in standalone mode. This article describes the installation of
ORDS on Tomcat 8 and 9.
For Lone-PDB installations (a CDB with one PDB), or for CDBs with small numbers of PDBs, ORDS can be installed
directly into the PDB.
If you are using many PDBs per CDB, you may prefer to install ORDS into the CDB to allow all PDBs to share the
same connection pool.
mkdir /home/oracle/ords
cp ords-21.4.2.062.1806.zip /home/oracle/ords
cd /home/oracle/ords
unzip ords-21.4.2.062.1806.zip
mkdir /home/oracle/ords/conf
password for SYS AS SYSDBA: !!! you must know it from your DBA !!!
This Oracle REST Data Services instance has not yet been configured.
Confirm password:
Requires to login with administrator privileges to verify Oracle REST Data Services schema.
Confirm password:
Retrieving information.
If using Oracle Application Express or migrating from mod_plsql then you must enter 1 [1]:
Confirm password:
Confirm password:
Confirm password:
[5] None
Choose [1]:1
Completed installation for Oracle REST Data Services version 21.4.2.r0621806. Elapsed time: 00:00:12.611
Choose [1]:1
As a result ORDS will be running in standalone mode and configured so you can try to logon to apex.
cd /home/oracle/ords
Administration page
http://hostname:port/ords
In this case
http://oel8.dbaora.com:8080/ords
OR
If you want to use the Embedded PL/SQL Gateway (EPG) to front APEX, you can follow the instructions here. This is
used for both the first installation and upgrades.
Run the "apex_epg_config.sql" script, passing in the base directory of the installation software as a parameter.
OR
If you want to use Oracle HTTP Server (OHS) to front APEX, you can follow the instructions here.
Change the password and unlock the APEX_PUBLIC_USER account. This will be used for any Database Access
Descriptors (DADs).
Step Seven
Unlock the ANONYMOUS account.
DECLARE
l_passwd VARCHAR2(40);
BEGIN
EXECUTE IMMEDIATE 'ALTER USER anonymous IDENTIFIED BY ' || l_passwd || ' ACCOUNT UNLOCK
CONTAINER=ALL';
END;
GETHTTPPORT
-----------
1 row selected.
SQL>
If it is set to "0", you will need to set it to a non-zero value to enable it.
Recovery or uninstallation of OR
Oracle now supports Oracle REST Data Services (ORDS) running in standalone mode using the built-in Jetty web
server, so you no longer need to worry about installing WebLogic, Glassfish or Tomcat unless you have a
compelling reason to do so. Removing this extra layer means one less layer to learn and one less layer to patch.
ORDS can run as a standalone app with a built in webserver. This is perfect for local development purposes but in
the real world you will want a decent java application server (Tomcat, Glassfish or Weblogic) with a webserver in
front of it (Apache or Nginx).
$ $CATALINA_HOME/bin/startup.sh
$ $CATALINA_HOME/bin/shutdown.sh
ORDS Validate
You can validate/fix the current ORDS installation using the validate option.
Confirm password:
Retrieving information.
Completed validating Oracle REST Data Services version 18.2.0.r1831332. Elapsed time: 00:00:06.898
In recent versions you can use the following command to uninstall ORDS and provide the information when
prompted.
# su - tomcat
$ cd /u01/ords
Enter 1 to specify the database service name, or 2 to specify the database SID [1]:
Confirm password:
Retrieving information
Completed uninstall for Oracle REST Data Services. Elapsed time: 00:00:10.876
In older versions of ORDS you had to extract scripts to perform the uninstall in the following way.
su - tomcat
cd /u01/ords
Perform the uninstall from the "oracle" user using the following commands.
su -oracle
cd /tmp/scripts/uninstall/core/
@ords_manual_uninstall /tmp/scripts/logs
In Oracle Application Express, users sign in to a shared work area called a workspace. A workspace enables
multiple users to work within the same Oracle Application Express installation while keeping their objects, data
and applications private. This flexible architecture enables a single database instance to manage thousands of
applications.
Within a workspace, End users can only run existing database or Websheet application. Developers can create and
edit applications, monitor workspace activity, and view dashboards. Oracle Application Express includes two
administrator roles:
1. Workspace administrators are users who perform administrator tasks specific to a workspace.
2. Instance administrators are superusers that manage an entire hosted Oracle Application Express instance
which may contain multiple workspaces.
Workspace administrators can reset passwords, view product and environment information, manage the Export
repository, manage saved interactive reports, view the workspace summary report, and manage Websheet
database objects. Additionally, workspace administrators manage service requests, configure workspace
preferences, manage user accounts, monitor workspace activity, and view log files.
Oracle APEX is a full spectrum technology. It can be used by so-called citizen developers, who can use the wizard to
create some simple applications to get going. However, these people can team up with a technical developer to
create a more complex application together, and in such a case it also goes full spectrum – code by code, line by
line, back-end development, front-end development, database development. If you get a perfect mix of front-end
and back-end developers, then you can create a truly great APEX application.
Our methodology is composed of different elements related to all aspects of an APEX development project.
This methodology is referred to as a waterfall because the output from one stage is the input for the next stage. A
primary problem with this approach is that it is assumed that all requirements can be established in advance.
Unfortunately, requirements often change and evolve during the development process.
The Oracle Application Express development environment enables developers to take a more iterative approach to
development.
For features, I select an About Page, Configuration Options, Activity Reporting, and Theme Style Selection.
I leave the rest of the fields blank for now and instead, I just click Create Application. As you’ll see when you check
it out for yourselves, creating a basic app is very quick. Of course, I could’ve added more pages there, ticked more
options – but that’s what we need for now.
Apex Development
Use a different workspace and same schema. Export and then import the application into a different workspace.
This is an effective way to prevent a production application from being modified by developers.
Use a different workspace and different schema. Export and then import the application into a different workspace
and install it so that it uses a different schema. This new schema needs to have the database objects required by
your application. See "Using the Database Object Dependencies Report".
Use a different database with all its variations. Export and then import the application into a different Oracle
Application Express instance and install it using a different workspace, schema, and database.
Migration of Applications
Click Next.
Click Upload Another File if you have more XML files, otherwise click Create.
Now let's review each component in the upload forms to determine proper regions to use in the APEX Application.
Also, let's review the Triggers and Program Units in order to identify the business logic in your Forms Application and
determine if it will need to be replicated or not.
Oracle Forms applications still play a vital role, but many are looking for ways to modernize their
applications. Modernize your Oracle Forms applications by migrating them to Oracle Application Express (Oracle
APEX) in the cloud.
Your stored procedures and PL/SQL packages work natively in Oracle APEX, making it the clear platform of choice
for easily transitioning Oracle Forms applications to modern web applications with more capabilities, less complexity,
and lower development and maintenance costs.
Oracle APEX is a low-code development platform that enables you to build scalable, secure enterprise apps, with
world-class features, that you can deploy anywhere. You can quickly develop and deploy compelling apps that solve
real problems and provide immediate value. You won't need to be an expert in a vast array of technologies to deliver
sophisticated solutions.
Architecture
This architecture shows the process of migrating on-premises Oracle Forms applications to Oracle Application
Express (APEX) applications with the help of an XML converter, and then moving them to the cloud.The following
diagram illustrates this reference architecture.
VCN
When you create a VCN, determine how many IP addresses your cloud resources in each subnet require. Using
Classless Inter-Domain Routing (CIDR) notation, specify a subnet mask and a network address range large enough
for the required IP addresses. Use CIDR blocks that are within the standard private IP address space.
After you create a VCN, you can change, add, and remove its CIDR blocks.
When you design the subnets, consider functionality and security requirements. All compute instances within the
same tier or role should go into the same subnet.
Security lists
Use security lists to define ingress and egress rules that apply to the entire subnet.
Cloud Guard
Clone and customize the default recipes provided by Oracle to create custom detector and responder recipes. These
recipes enable you to specify what type of security violations generate a warning and what actions are allowed to
be performed on them. For example, you might want to detect Object Storage buckets that have visibility set to
public.
Apply Cloud Guard at the tenancy level to cover the broadest scope and to reduce the administrative burden of
maintaining multiple configurations.
You can also use the Managed List feature to apply certain configurations to detectors.
Security Zones
For resources that require maximum security, Oracle recommends that you use security zones. A security zone is a
compartment associated with an Oracle-defined recipe of security policies that are based on best practices. For
example, the resources in a security zone must not be accessible from the public internet and they must be
encrypted using customer-managed keys. When you create and update resources in a security zone, Oracle Cloud
Infrastructure validates the operations against the policies in the security-zone recipe, and denies operations that
violate any of the policies.
Schema
Retain the database structure that Oracle Forms was built on, as is, and use that as the schema for Oracle APEX.
Business Logic
Most of the business logic for Oracle Forms is in triggers, program units, and events. Before starting the migration
of Oracle Forms to Oracle APEX, migrate the business logic to stored procedures, functions, and packages in the
database.
Considerations
Consider the following key items when migrating Oracle Forms Object navigator components to Oracle Application
Express (APEX):
Data Blocks
A data block from Oracle Forms relates to Oracle APEX with each page broken up into several regions and
components. Review the Oracle APEX Component Templates available in the Universal Theme.
Triggers
In Oracle Forms, triggers control almost everything. In Oracle APEX, control is based on flexible conditions that are
activated when a page is submitted and are managed by validations, computations, dynamic actions, and processes.
Alerts
Most messages in Oracle APEX are generated when you submit a page.
Attached Libraries
Oracle APEX takes care of the JavaScript and CSS libraries that support the Universal Theme, which supports all of
the components that you need for flexible, dynamic applications. You can include your own JavaScript and CSS in
several ways, mostly through page attributes. You can choose to add inline code as reference files that exist either
in the database as a BLOB (#APP_IMAGES#) or sit on the middle tier, typically served by Oracle REST Data Services
(ORDS). When a reference file is on an Oracle WebLogic Server, the file location is prefixed with #IMAGE_PREFIX#.
Editors
Oracle APEX has a text area and a rich text editor, which is equivalent to Editors in Oracle Forms.
In APEX, the LOV is coupled with the Item type. A radio group works well with a small handful of values. Select Lists
for middle-sized sets, and select Popup LOV for large data sets. You can use the queries from Record Group in Oracle
Forms for the LOV query in Oracle APEX. LOV's in Oracle APEX can be dynamically driven by a SQL query, or be
statically defined. A static definition allows a variety of conditions to be applied to each entry. These LOVs can then
be associated with Items such as Radio Groups & Select Lists, or with a column in a report, to translate a code to a
label.
Parameters
Page Items in Oracle APEX are populated between pages to pass information to the next page, such as the selected
record in a report. Larger forms with a number of items are generally submitted as a whole, where the page process
handles the data, and branches to the next page. These values can be protected from URL tampering by session state
security, at item, page, and application levels, often by default.
Popup Menus
Popup Menus are not available out of the box in Oracle APEX, but you can build them by using Lists and associating
a button with the menu.
Program Units
Migrate the Stored procedures and functions defined in program units in Oracle Forms into Database Stored
Procedures/Functions and use Database Stored procedures/functions in Oracle APEX
processes/validations/computations.
Property Classes
Property Classes in Oracle Forms allow the developer to utilize common attributes among each instance of a
component. In APEX you can define User Interface Defaults in the data dictionary, so that each time items or reports
are created for specific tables or columns, the same features are applied by default. As for the style of the application,
you can apply classes to components that carry a particular look and feel. The Universal Theme has a default skin
that you can reconfigure declaratively.
Record Groups
Use queries in Record Groups to define the Dynamic LOV in Oracle APEX.
Reports
Interactive Reports in Oracle APEX come with a number of runtime manipulation options that give users the power
to customize and manipulate the reports. Classic Reports are simple reports that don't provide runtime manipulation
options, but are based on SQL.
Menus
Oracle Forms have specific menu files, controlled by database roles. Updating the .mmx file required that there be
no active users. The menu in Oracle APEX can either be across the top, or down the left side. These menus can be
statically defined, or dynamically driven. Static navigation entries can be controlled by authorization schemes, or
custom conditions. Dynamic menus can have security tables integrated within the SQL.
Properties
The Page Designer introduced in Oracle APEX is similar to Oracle Forms, particularly with regard to the ability to edit
multiple components at once, only intersecting attributes.
The Application Express engine uses two logs to track user activity. At any given time, one log is designated as
current. For each rendered page view, the Application Express engine inserts one row into the log file. A log switch
occurs at the interval listed on the Page View Activity Logs page. At that point, the Application Express engine
removes all entries in the noncurrent log and designates it as current.
Delete SQL Workshop log entries. The SQL Workshop maintains a history of SQL statements run in the SQL
Commands.
Workspace administrators are users who perform administrator tasks specific to a workspace and have the access
to various types of activity reports.
Instance administrators are superusers that manage an entire hosted instance using the Application Express
Administration Services application.
Then run rman target / from bash terminal. In rman run the following.
RESTORE CONTROLFILE FROM '/tmp/oradata/your_ctrl_file_dir'
ALTER TABLESPACE apex OFFLINE IMMEDIATE';
SET NEWNAME FOR DATAFILE '/tmp/oradata/apex01.dbf' TO
RESTORE TABLESPACE apex;
SWITCH DATAFILE ALL;
RECOVER TABLESPACE apex;
Swap out Datafile
First find the location of your datafiles. You can find them by running the following in sqlplus / as sysdba or
whatever client you use
spool '/tmp/spool.out'
Oracle APEX 125 MiB All This version includes patch 32598392: PSE
version BUNDLE FOR APEX 21.1, PATCH_VERSION 3.
21.1.v1
Oracle APEX 148 MiB All except This version includes patch 32006852: PSE
version 21c BUNDLE FOR APEX 20.2, PATCH_VERSION
20.2.v1 2020.11.12. You can see the patch number and
date by running the following query:
SELECT PATCH_VERSION, PATCH_NUMBER
FROM APEX_PATCHES;
Oracle APEX 173 MiB All except This version includes patch 30990551: PSE
version 21c BUNDLE FOR APEX 20.1, PATCH_VERSION
20.1.v1 2020.07.15.
When you create an authorization scheme you select an authorization scheme type. The authorization scheme
type determines how an authorization scheme is applied. Developers can create new authorization type plug-ins to
extend this list.
Authorization Scheme Types Description
Exists SQL Query Enter a query that causes the authorization scheme to pass if it returns
at least one row and causes the scheme to fail if it returns no rows
NOT Exists SQL Query Enter a query that causes the authorization scheme to pass if it returns
no rows and causes the scheme to fail if it returns one or more rows
PL/SQL Function Returning Boolean Enter a function body. If the function returns true, the authorization
succeeds.
Item in Expression 1 is NULL Enter an item name. If the item is null, the authorization succeeds.
Item in Expression1 is NOT NULL Enter an item name. If the item is not null, the authorization succeeds.
Value of Item in Expression 1 Equals Enter and item name and value.The authorization succeeds if the item's
Expression 2 value equals the authorization value.
Value of Item in Expression 1 Does Enter an item name and a value. The authorization succeeds if the
NOT Equal Expression 2 item's value is not equal to the authorization value.
Value of Preference in Expression 1 Enter an preference name and a value. The authorization succeeds if the
Does NOT Equal Expression 2 preference's value is not equal to the authorization value.
Value of Preference in Expression 1 Enter an preference name and a value. The authorization succeeds if the
Equals Expression 2 preference's value equal the authorization value.
Is In Group Enter a group name. The authorization succeeds if the group is enabled
as a dynamic group for the session.
Is Not In Group Enter a group name. The authorization succeeds if the group is not
enabled as a dynamic group for the session.
Run the APEX installation script against the target database. The same script is used for new installations
and upgrades. The script automatically senses whether there is a version of APEX present and automatically
takes the appropriate action.
Update the existing version of the /i/ virtual directory with the images, javascript, css, etc. with the current
versions APEX installation medium.
For the standard HTTP Server installations, this is just a simple copy command.
For the Embedded PL/SQL Gateway (EPG), the script apxldimg.sql is used to load the images into the
database.
For the APEX Listener / Oracle REST Data Services (ORDS), recreate the i.jar file that contains the references
to the images, javascript, css, etc. from the APEX installation media OR copy the new versions of the files to
the existing location referenced by the current APEX Listener / ORDS / web server.
Prior to the Application Express (APEX) upgrade, begin by identifying the version of the APEX currently installed
and the database prerequisites. To do this run the following query in SQLPLUS as SYS or SYSTEM:
Where <SCHEMA> represents the current version of APEX and is one of the following:
For APEX (HTML DB) versions 1.5 - 3.1, the schema name is: FLOWS_XXXXXX.
For example: FLOWS_010500 for HTML DB version 1.5.x
For APEX (HTML DB) versions 3.2.x and above, the schema name is: APEX_XXXXXX.
For example: APEX_210100 for APEX version 21.1.
If the query returns 0, it is a runtime only installation, and apxrtins.sql should be used for the upgrade. If
the query returns 1, this is a development install and apexins.sql should be used
The full download is needed if the first two digits of the APEX version are different. For example, the full
Application Express download is needed to go from 20.0 to 21.1. See <Note 752705.1> ORA-1435: User Does not
Exist" When Upgrading APEX Using apxpatch.sql: for more information. The patch is needed if only the third digit
of the version changes. So when upgrading from from 21.1.0 patch to upgrade to 21.1.2.
A patch set is a single patch that contains a collection of patches designed to be applied together.
Oracle Applications includes the Oracle 9.2.0.6 (9i) Database. However, Oracle Life Sciences Data Hub (Oracle LSH)
2.1.4 requires the Oracle 11gR2 Database Server, which requires Oracle Applications ATG RUP7, which is not
supported on Oracle Database 9.2.0.6 but is supported on 9.2.0.8.
To upgrade the 9.6.0.6 database you installed during the Oracle Applications installation, apply patch set 9.2.0.8
(4547809) for your operating system.
Downloading Patches From My Oracle Support
This section describes how to download patches from My Oracle Support. For additional information, enter
document ID 1302053.1 in the Knowledge Base search field on My Oracle Support.
OPatch is typically used to patch the software on your system by copying a small collection of files over your
existing installation.
In Oracle Fusion Middleware, OPatch is used to patch an existing Oracle Fusion Middleware 11g installation.
Click the Patches and Updates tab. From this tab, you have two options for downloading patches:
Enter the patch number and platform to download a single patch. See Downloading a Single Patch Using the Oracle
Patch Number.
Search for all available patches for your current product installation.
END
Others support are in are SOAP, UDDI, Web services description language, JSR-181.
WebLogic is an Application Server that runs on a middle tier, between back-end databases and related applications
and browser-based thin clients. WebLogic Server mediates the exchange of requests from the client tier with
responses from the back-end tier.
WebLogic Server is based on Java Platform, Enterprise Edition (Java EE) (formerly known as Java 2 Platform,
Enterprise Edition or J2EE), the standard platform used to create Java-based multi-tier enterprise applications.
Oracle WebLogic Server vs. Apache Tomcat
The Apache Tomcat web server is often compared with WebLogic Server. The Tomcat web server serves static
content in web applications delivered in Java servlets and JavaServer Pages.
XML capabilities include data exchange, and a means to store content independent of its presentation, and more.
Java Messaging Service (JMS) enables applications to communicate with one another through the exchange of
messages. A message is a request, report, and/or event that contains information needed to coordinate
communication between different applications.
Java Database Connectivity (JDBC) provides pooled access to DBMS resources.
Resource Adapters provide connectivity to Enterprise Information Systems (EISes).
Enterprise JavaBeans (EJB) provide Java objects to encapsulate data and business logic. Enterprise Java Beans (EJB)
modules—entity beans, session beans, and message-driven beans. See Enterprise JavaBean Modules.
Connector modules—resource adapters.
Remote Method Invocation (RMI) is the Java standard for distributed object computing, allowing applications to
invoke methods on a remote object locally.
Security APIs allow you to integrate authentication and authorization into your Java EE applications. You can also
use the Security Provider APIs to create your own custom security providers.
WebLogic Tuxedo Connectivity (WTC) provides interoperability between WebLogic Server applications and Tuxedo
services. WTC allows WebLogic Server clients to invoke Tuxedo services and Tuxedo clients to invoke EJBs in response
to a service request.
JavaServer Pages JavaServer Pages (JSPs) are Web pages coded with an extended HTML that makes it possible to
embed Java code in a Web page. JSPs can call custom Java classes, known as tag libraries, using HTML-like tags. The
appc compiler compiles JSPs and translates them into servlets. WebLogic Server automatically compiles JSPs if the
servlet class file is not present or is older than the JSP source file. See Using Ant Tasks to Create Compile Scripts.
You can also precompile JSPs and package the servlet class in a Web archive (WAR) file to avoid compiling in the
server. Servlets and JSPs may require additional helper classes that must also be deployed with the Web application.
An Enterprise Information System (EIS) resource is a specific type of WebLogic resource that is designed as a
Connector.
COM Resources
WebLogic jCOM is a software bridge that allows bidirectional access between Java/J2EE objects deployed in
WebLogic Server, and Microsoft ActiveX components available within the Microsoft Office family of products, Visual
Basic and C++ objects, and other Component Object Model/Distributed Component Object Model (COM/DCOM)
environments.
A COM resource is a specific type of WebLogic resource that is designed as a program component object according
to Microsoft's framework.
Java DataBase Connectivity (JDBC) Resources
A Java DataBase Connectivity (JDBC) resource is a specific type of WebLogic resource that is related to JDBC. To
secure JDBC database access, you can create security policies and security roles for all connection pools as a group,
individual connection pools, and MultiPools.
Oracle's service oriented architecture (SOA)
SOA is not a new concept. Sun defined SOA in the late 1990's to describe Jini, which is an environment for dynamic
discovery and use of services over a network. Web services have taken the concept of services introduced by Jini
technology and implemented it as services delivered over the web using technologies such as XML, Web Services
Description Language (WSDL), Simple Object Access Protocol (SOAP), and Universal Description, Discovery, and
Integration(UDDI). SOA is emerging as the premier integration and architecture framework in today's complex and
heterogeneous computing environment.
SOA uses the find-bind-execute paradigm as shown in Figure. In this paradigm, service providers register their
service in a public registry. This registry is used by consumers to find services that match certain criteria. If the
registry has such a service, it provides the consumer with a contract and an endpoint address for that service.
SOA can be thought of as an architectural style which formally separates services (the business functionality) from
the consumers (other business systems). Separation is achieved through a service contract between the consumer
and producer of the service. This contract should address issues such as availability, version control, security,
performance etc. Having said this many web services are freely available over the internet but use of them is risky
without a service level agreement as they may not exist in future however, this may not be an issue if similar
alternate web services are available for use. In addition to a service contract there must be a way for providers to
publish service contracts and for consumers to locate service contracts. These typically occur through standards
such as the Universal Description, Discovery and Integration (UDDI 1993) which is an XML (XML 2003) based
markup language from W3C that enables businesses to publish details of services available on the internet. The
Web Services Description Language (WSDL 2007) provides a way of describing web services in an XML format. Note
that WSDL tells you how to interact with the web service but says nothing about how it actually works behind the
interface. The standard for communication is via SOAP (Simple Object Access Protocol) (SOAP 2007) which is a
specification for exchanging information in web services. These standards are not described in detail here as
information about them is commonly available so the reader is referred elsewhere for further information. The
important issue to understand about SOA in this context, is that it separates the contract from the implementation
of that contract thus producing an architecture which is loosely coupled resulting in easily reconfigurable systems,
which can adapt to changes in business processes easily.
There has been a convergence in recent times towards integrating various approaches such as SOA with SaaS
(Software as a Service) (Bennett et al., 2000) and the Web with much talk about Web Oriented Architectures
(WOA). This approach extends SOA to web-based applications in order allow businesses to open up relevant parts
of their IT systems to customers, vendors etc. as appropriate. This has now become a necessity in order to address
competitive advantage. WOA (Hinchcliffe 2006) is often considered to be a light-weight version of SOA using
RESTful Web services, open APIs and integration approaches such as mashups.
In order to manage the lifecycle of business processes in an SOA architecture, software is needed that will enable
you to, for example: expose services without the need for programming, compose services from other services,
deploy services on any platform (hardware and operating system), maintain security and usage policies,
orchestrate services i.e. centrally coordinate the invocation of multiple web services, automatically generate the
WSDL; provide a graphical design tool, a distributable runtime engine and service monitoring capabilities, have the
ability to graphically design transformations to and from non-XML formats. These are all typical functions provided
by SOA middleware along with a runtime environment which should include e.g. event detection, service hosting,
intelligent routing, message transformation processing, security capabilities, synchronous and asynchronous
message delivery. Often these functions will be divided into several products. An enterprise service bus (ESB) is
typically at the core of a SOA tool providing an event-driven, standards based messaging engine.
Oracle offers three distinct products as part of the Oracle WebLogic Server 11g family:
Oracle WebLogic Server Standard Edition (SE)
Oracle WebLogic Server Enterprise Edition (EE)
Oracle WebLogic Suite
Oracle WebLogic 11g Server Standard Edition The WebLogic Server Standard Edition (SE) is a full-featured server,
but is mainly intended for developers to develop enterprise applications quickly. WebLogic Server SE implements all
the Java EE standards and offers management capabilities through the Administration Console.
Oracle WebLogic 11g Server Enterprise Edition Oracle WebLogic Server EE is designed for mission-critical
applications that require high availability and advanced diagnostic capabilities. The EE version contains all the
features of th SE version, of course, but in addition supports clustering of servers for high availability and the ability
to manage multiple domains, plus various diagnostic tools.
Oracle WebLogic Suite 11g
Oracle WebLogic Suite offers support for dynamic scale-out applications with features such as in-memory data grid
technology and comprehensive management capabilities.
It consists of the following components:
for development purposes. It includes all Oracle WebLogic Server and Oracle Coherence runtime software, but
excludes examples and localized WebLogic console help files.
The supplemental installer can be used to add examples and localized WebLogic console files to an installation
created with the quick installer.
The slim installer is for development and production usage of Docker or CRI-O images and containers in Kubernetes,
when WebLogic console monitoring and configuration is not required. It includes all Oracle WebLogic Server and
Oracle Coherence server runtime software, but excludes examples, the WebLogic console, WebLogic clients, Maven
plug-ins and Java DB.
6) Update the EM JSF libraries by running the "upgradeADF" function in wlst (in disconnected mode):
use weblogic console to upgrade to JSF 2.0
C:\...\weblogic-home\oracle_common\common\bin\wlst.bat
upgradeADF('C:\...\weblogic-home\user_projects\domains\your-domain')
OR
For JSF Upgradation
Open http://192.192.11.166:7001/console
Press Lock and Edit on
select jsf (1.2,1.2.9) and click update
JNDI Name
databasename
hostname
port
username
password
test the datasource
9) To Configure SQL Authenticator follow steps in SQLAuthentication.pdf document
Pacs deployed Path
http://192.192.11.166:7002/PACSMS/faces/Login.jsf
pacs deployment path
D:\app\oracle\middleware\user_projects\domains\base_domain\servers\adfmanage\stage\PACSMSFinal
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)))
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=hr1-svr)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=hr2-svr)(PORT=1521)))
(CONNECT_DATA=
(SERVICE_NAME=hr.us.example.com))))
(DESCRIPTION=
(SOURCE_ROUTE=yes)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630)) # 1
(ADDRESS_LIST=
(FAILOVER=on)
(LOAD_BALANCE=off) # 2
(ADDRESS=(PROTOCOL=tcp)(HOST=host2a)(PORT=1630))
(ADDRESS=(PROTOCOL=tcp)(HOST=host2b)(PORT=1630)))
(ADDRESS=(PROTOCOL=tcp)(HOST=host3)(PORT=1521))) # 3
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))
The client is instructed to connect to the protocol address of the first Oracle Connection Manager, as indicated by:
(ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))
Component and Description Default Port Number Port Range Protocol
The Automatic Diagnostics Repository (ADR) is a hierarchical file-based repository for handling diagnostic
information.
J2EE Platform
WebLogic Server contains Java 2 Platform, Enterprise Edition (J2EE) technologies. J2EE is the standard platform for
developing multitier enterprise applications based on the Java programming language. The technologies that make
up J2EE were developed collaboratively by Sun Microsystems and other software vendors, including BEA Systems.
J2EE applications are based on standardized, modular components. WebLogic Server provides a complete set of
services for those components and handles many details of application behavior automatically, without requiring
programming.
J2EE Platform and WebLogic Server
WebLogic Server implements Java 2 Platform, Enterprise Edition (J2EE) version 1.3 technologies. J2EE is the standard
platform for developing multi-tier Enterprise applications based on the Java programming language. The
technologies that make up J2EE were developed collaboratively by Sun Microsystems and other software vendors,
including BEA Systems.
WebLogic Server J2EE applications are based on standardized, modular components. WebLogic Server provides a
complete set of services for those modules and handles many details of application behavior automatically, without
requiring programming.
Use the .iso file or ISO file that can be downloaded from the internet and start the virtual box.
Here we need to allocate RAM to virtual OS. It should be 2 GB as per minimum requirement.
Choose a type of storage on physical hard disk. And choose the disk size(min 12 GB as per requirement)
Then choose how much you want to shrink your drive. It is recommended that you set aside at least 20GB
(20,000MB) for Linux.
Select the drive for completing the OS installation. Select “Erase Disk and install Ubuntu” in case you want to
replace the existing OS otherwise select “Something else” option and click INSTALL NOW.
You are almost done. It should take 10-15 minutes to complete the installation. Once the installation finishes,
restart the system.
Some of those kinds of requiring intermediate Linux commands are mentioned below:
1. Rm: Rm command is used for mainly deleting or removing files or multiple files. If we use this rm command
recursively, then it will remove the entire directory.
2. Uname: This command is very much useful for displaying the entire current system information properly. It
helps for displaying Linux system information in the Linux environment in a proper way for understanding the
system’s current configuration.
3. Uptime: The uptime command is also one of the key commands for the Kali Linux platform, which gives
information about how long the system is running.
4. Users: These Kali Linux commands are used for displaying the login user name who is currently logged in on the
Linux system.
5. Less: Less command is very much used for displaying the file without opening or using cat or vi commands. This
command is basically one of the powerful extensions of the ‘more’ command in the Linux environment.
6. More: This command is used for displaying proper output in one page at a time. It is mainly useful for reading
one long file by avoiding scrolling the same.
7. Sort: This is for using sorting the content of one specific define file. This is very much useful for displaying some
of the critical contents of a big file in sorted order. If we user including this sort command, then it will give reverse
order of the content.
8. Vi: This is one of the key editor available from the first day onwards in UNIX or Linux platform. It normally
provided two kinds of mode, normal and insert.
9. Free: It is provided details information of free memory or RAM available in a Linux system.
10. History: This command is holding the history of all the executed command on the Linux platform.
Operating System Minimum Physical Memory Required Minimum Available Memory Required
Linux 4 GB 8 GB
UNIX 4 GB 8 GB
Windows 4 GB 8 GB
Check Task
Server Make and Architecture Confirm that server make, model, core architecture,
and host bus adaptors (HBA) or network interface
controllers (NICs) are supported to run with Oracle
Database and Oracle Grid Infrastructure.
Runlevel 3 or 5
Server Display Cards At least 1024 x 768 display resolution, which Oracle
Universal Installer requires.
Check Task
Item Task
Operating system general requirements OpenSSH installed manually, if you do not have it
installed already as part of a default Linux
installation.
Linux x86-64 operating system requirements The following Linux x86-64 kernels are supported:
Oracle Database Preinstallation RPM for Oracle Linux If you use Oracle Linux, then Oracle recommends
that you run the Oracle Database Preinstallation RPM
for your Linux release to configure your operating
system for Oracle Database and Oracle Grid
Infrastructure installations.
Check Task
Disk space allocated to the /tmp directory At least 1 GB of space in the /tmp directory.
Swap space allocation relative to RAM (Oracle Between 1 GB and 2 GB: 1.5 times the size of the
Database) RAM
Between 2 GB and 16 GB: Equal to the size of the
RAM
More than 16 GB: 16 GB
Note: If you enable HugePages for your Linux servers,
then you should deduct the memory allocated to
HugePages from the available RAM before calculating
swap space.
Swap space allocation relative to RAM (Oracle Between 8 GB and 16 GB: Equal to the size of the
Restart) RAM
More than 16 GB: 16 GB
Note: If you enable HugePages for your Linux servers,
then you should deduct the memory allocated to
HugePages from the available RAM before calculating
swap space.
Oracle Inventory (oraInventory) and OINSTALL Group For upgrades, the installer detects an existing
Requirements oraInventory directory from the /etc/oraInst.loc file,
and uses the existing oraInventory.
For new installs, if you have not configured an
oraInventory directory, then you can specify the
oraInventory directory during the software
installation and Oracle Universal Installer will set up
the software directories for you. The Oracle
inventory is one directory level up from the Oracle
base for the Oracle software installation and
designates the installation owner's primary group as
the Oracle inventory group. Ensure that the
oraInventory path that you specify is in compliance
with the Oracle Optimal Flexible Architecture
recommendations.
The Oracle Inventory directory is the central
inventory of Oracle software installed on your
system. Users who have the Oracle Inventory group
as their primary group are granted the OINSTALL
privilege to write to the central inventory.
Check Task
Groups and users Oracle recommends that you create groups and user
accounts required for your security plans before
starting installation. Installation owners have
resource limits settings and other requirements.
Group and user names must use only ASCII
characters.
Mount point paths for the software binaries Oracle recommends that you create an Optimal
Flexible Architecture configuration as described in
the appendix "Optimal Flexible Architecture"
in Oracle Database Installation Guide for your
platform.
Ensure that the Oracle home (the Oracle home path The ASCII character restriction includes installation
you select for Oracle Database) uses only ASCII owner user names, which are used as a default for
characters some home paths, as well as other directory names
you may select for paths.
Unset Oracle software environment variables If you have an existing Oracle software installation,
and you are using the same user to install this
installation, then unset the following environment
variables: $ORACLE_HOME,$ORA_NLS10,
and $TNS_ADMIN.
If you have set $ORA_CRS_HOME as an environment
variable, then unset it before starting an installation
or upgrade. Do not use $ORA_CRS_HOME as a user
environment variable, except as directed by Oracle
Support.
Set locale (if needed) Specify the language and the territory, or locale, in
which you want to use Oracle components. A locale
is a linguistic and cultural environment in which a
system or program is running. NLS (National
Language Support) parameters determine the locale-
specific behavior on both servers and clients. The
locale setting of a component determines the
language of the user interface of the component, and
Check Task
Check Shared Memory File System Mount By default, your operating system includes an entry
in /etc/fstab to mount /dev/shm. However, if your
Cluster Verification Utility (CVU) or installer checks
fail, ensure that the /dev/shm mount area is of
type tmpfs and is mounted with the following
options:
rw and exec permissions set on it
Without noexec or nosuid set on it
Note:
These options may not be listed as they are usually
set as the default permissions by your operating
system.
Check Task
Minimum local disk storage space for Oracle software For Linux x86-64:
At least 6.0 GB for an Oracle Grid Infrastructure for a
standalone server installation.
At least 7.8 GB for Oracle Database Enterprise
Edition.
At least 7.8 GB for Oracle Database Standard Edition
2.
Note:
Oracle recommends that you allocate approximately
100 GB to allow additional space for applying any
future patches on top of the existing Oracle home.
Check Task
Select Database File Storage Option Ensure that you have one of the following storage
options available:
File system mounted on the server. Oracle
recommends that the file system you select is
separate from the file system used by the operating
system or the Oracle software. Options include the
following:
A file system on a logical volume manager (LVM)
volume or a RAID device
A network file system (NFS) mounted on a certified
network-attached storage (NAS) device
Oracle Automatic Storage Management (Oracle
ASM).
Oracle ASM is installed as part of an Oracle Grid
Infrastructure installation. If you plan to use Oracle
ASM for storage, then you should install Oracle Grid
Infrastructure before you install and create the
database.
Determine your recovery plan If you want to enable recovery during installation,
then be prepared to select one of the following
options:
File system: Configure a fast recovery area on a file
system during installation
Oracle Automatic Storage Management: Configure a
fast recovery area disk group using Oracle ASMCA.
Review the storage configuration sections of this
document for more information about configuring
recovery.
2. MobaXterm
3. Oracle Linux 8
4. Oracle Database 19c (19.3)
Prerequisites
Once you have downloaded and setup OL8, there are some prerequisite setups that needs to be performed before
kicking of the installation. These steps are shown below.
Get the IP Address using ‘ifconfig’ or ‘ip addr’ command. For example:
oracledb19col8.rishoradev.com
Amend the IP address and hostname to “/etc/hosts” file to resolve the hostname. You can use the vi editor for this.
192.168.XX.X oracledb19col8.rishoradev.com
Next, download “oracle-database-preinstall-19c” package. This package will perform all the setups that are
necessary to install 19c.
Installed:
ksh-20120801-254.0.1.el8.x86_64 libaio-devel-0.3.112-1.el8.x86_64
libnsl-2.28-151.0.1.el8.x86_64 lm_sensors-libs-3.4.0-23.20180522git70f7e08.el8.x86_64
oracle-database-preinstall-19c-1.0-2.el8.x86_64 sysstat-11.7.3-6.0.1.el8.x86_64
The next step is not mandatory. But I ran the ‘yum update’ because I wanted to make sure I had also the latest OS
packages. It might take a while for all the packages to be installed.
Edit “/etc/selinux/config” file and set “SELINUX=permissive“. It is recommended that you restart the server after
this step.
Disable firewall.
Create the directory structure for Oracle 19c to be installed and grant privileges.
Unzip the Oracle software in ‘/u01/app/oracle/product/19c/dbhome_1’ directory, using the ‘unzip’ command as
shown below. We’ll set this path as the ORACLE_HOME later on during the installation.
Create a directory for hosting the scripts and navigate to the directory.
>
> EOF
Issue the following command to add the reference of the environment file created above in
the “/home/oracle/.bash_profile”.
Copy the Oracle software that you have downloaded to a directory. I have copied it under dbhome1.
total 2987996
Unzip the Oracle software in ‘/u01/app/oracle/product/19c/dbhome_1’ directory, using the ‘unzip’ command as
shown below. We’ll set this path as the ORACLE_HOME later on during the installation.
[oracle@oracledb19col8 dbhome_1]$ ls
addnode clone cv deinstall drdaas hs javavm ldap mgw olap ord owm QOpatch
relnotes runInstaller sqldeveloper srvm utl
apex crs data demo dv install jdbc lib network OPatch ords perl R root.sh
schagent.conf sqlj suptools wwg
assistants css dbjava diagnostics env.ora instantclient jdk LINUX.X64_193000_db_home.zip nls opmn oss
plsql racg root.sh.old sdk sqlpatch ucp xdk
bin ctx dbs dmu has inventory jlib md odbc oracore oui precomp rdbms
root.sh.old.1 slax sqlplus usm
This completes all the prerequite steps and now we are all set to kick off the installation.
Installation
For installing Oracle, you can either chose to use the Interactive mode or the Silent mode. The interactive mode
would open up the GUI screens and user input would be required at every step, whereas, for the silent mode, all
the required parameters are passed using the command line, and hence, it does not display any screens.
For interactive mode, I generally launch the installer through MobaXterm. Download MobaXterm on the Host
machine, open a console and connect to your Linux machine using ‘ssh’ and IP address of the Linux machine
with oracle user, as shown in the screenshot below.
Navigate to the folder where you have unzipped the Oracle using MobaXterm console and execute ‘runInstaller’.
Note: If you are installing the software on Linux 8, you will get the following error when the installer is launched.
Execute the following command before you launch the installer, to get around the above error.
Now, if you execute the runInstaller, if will work just fine, and the installer would open without any issues.
You can go through the subsequent steps in the interactive mode to complete the installation. However, for this
post, we are going use the silent mode to install the software. You can find more details on the silent more here.
To install Oracle using the silent installation, login as oracle user, navigate to the folder where you have unzipped
the software, and run the following command.
> oracle.install.option=INSTALL_DB_SWONLY \
> ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \
> UNIX_GROUP_NAME=oinstall \
> INVENTORY_LOCATION=${ORA_INVENTORY} \
> SELECTED_LANGUAGES=en,en_GB \
> ORACLE_HOME=${ORACLE_HOME} \
> ORACLE_BASE=${ORACLE_BASE} \
> oracle.install.db.InstallEdition=EE \
> oracle.install.db.OSDBA_GROUP=dba \
> oracle.install.db.OSBACKUPDBA_GROUP=dba \
> oracle.install.db.OSDGDBA_GROUP=dba \
> oracle.install.db.OSKMDBA_GROUP=dba \
> oracle.install.db.OSRACDBA_GROUP=dba \
> SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
> DECLINE_SECURITY_UPDATES=true
On successful completion, the installer will prompt to run the root scripts.
1. /u01/app/oraInventory/orainstRoot.sh
2. /u01/app/oracle/product/19c/dbhome_1/root.sh
[oracledb19col8]
[oracledb19col8]
Database Creation
This should complete the installation process. The next stage will be to create the database.
Before we create the database, the first thing we need to do is to start the listener services, using “lsnrctl start”.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
---------------------------------
Alias LISTENER
SNMP OFF
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracledb19col8.rishoradev.com)(PORT=1521)))
Once the listener is up and running, you need to create the database using the Database Configuration Assistant
(DBCA). This can be done using the interactive mode by issuing the dbca command, through MobaXterm. Once
you execute the dbca command, the GUI should pop up .
OR, you can opt the Silent mode, as I have done below.
-templateName General_Purpose.dbc \
-characterSet AL32UTF8 \
-sysPassword Welcome1 \
-systemPassword Welcome1 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName ${PDB_NAME} \
-pdbAdminPassword Welcome1 \
-databaseType MULTIPURPOSE \
-memoryMgmtType auto_sga \
-totalMemory 2000 \
-storageType FS \
-datafileDestination "${DATA_DIR}" \
-redoLogFileSize 50 \
-emConfiguration NONE \
-ignorePreReqs
This would create the database for you. Now you have successfully installed Oracle Database 19c.
BANNER_FULL
Post-Installation Steps
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbstart \$ORACLE_HOME
EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbshut \$ORACLE_HOME
EOF
Set the restart flag for the instance(and for every instance) to ‘Y’ in the ‘/etc/oratab’ file. You can use the ‘vi’
editor.
Here, we have created only one contaner database, so I have edited the line as highlighted below:
Once you have edited the ‘/etc/oratab’ file, you can now start and stop the database by calling the scripts,
start_all.sh and stop_all.sh respectively, from the “oracle” user.
Enable Oracle Managed Files (OMF) and set the pluggable databse to start automatically when the instance is
started.
> exit;
> EOF
END
Major parts of PLSQL Block and block types: like Anonymouse block, procedure function:
The declarative part declares PL/SQL variables, exceptions, and cursors. The executable part contains PL/SQL code
and SQL statements, and can contain nested blocks. Exception handlers contain code that is called when the
exception is raised, either as a predefined PL/SQL exception (such as NO_DATA_FOUND or ZERO_DIVIDE) or as an
exception that you define.
Anonymous block
An anonymous block is a PL/SQL program unit that has no name. An anonymous block consists of an optional
declarative part, an executable part, and one or more optional exception handlers.
This PL/SQL anonymous block prints the names of all employees in department 20 in the hr.employees table by
using the DBMS_OUTPUT package:
DECLARE
Last_name VARCHAR2(10);
Cursor c1 IS SELECT last_name
FROM employees
WHERE department_id = 20;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO Last_name;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(Last_name);
END LOOP;
END;
/
Functions: A function must always return a value, but a procedure may or may not return a value.
CREATE [OR REPLACE] FUNCTION function_name [parameters] RETURN return_datatype; {IS, AS}
Declaration_section <variable,constant> ;
BEGIN Execution_section Return return_variable; EXCEPTION exception section
Return return_variable;
END;
create or replace function getsal (no IN number) return number is sal number(5); begin select salary into sal from
emp where id=no; return sal; end;
Procedure: A procedure is similar to an anonymous PL/SQL Block but it is named for repeated usage.
CREATE OR REPLACE PROCEDURE p1(id IN NUMBER, sal IN NUMBER) AS BEGIN INSERT INTO emp VALUES(id, sal);
DBMD_OUTPUT.PUT_LINE('VALUE INSERTED.'); END;
Procedures VS Functions:
A function MUST return a value
A procedure cannot return a value
Procedures and functions can both return data in OUT and IN OUT parameters
The return statement in a function returns control to the calling program and returns the results of the
function
The return statement of a procedure returns control to the calling program and cannot return a value
Functions can be called from SQL, procedure cannot
Functions are considered expressions, procedure are not
Package: A package is an encapsulated collection of related program objects stored together in the database.
Example:
CREATE PACKAGE citi AS
Example
The following example shows a package specification for a package named EMPLOYEE_MANAGEMENT. The
package contains one stored function and two stored procedures.
The body for this package defines the function and the procedures:
The function accepts all arguments for the fields in the employee table except for the employee number. A value
for this field is supplied by a sequence. The function returns the sequence number generated by the call to this
function.
new_empno NUMBER(10);
BEGIN
SELECT emp_sequence.NEXTVAL INTO new_empno FROM dual;
INSERT INTO emp VALUES (new_empno, name, job, mgr,
hiredate, sal, comm, deptno);
RETURN (new_empno);
END hire_emp;
The procedure deletes the employee with an employee number that corresponds to the argument emp_id. If no
employee is found, then an exception is raised.
BEGIN
DELETE FROM emp WHERE empno = emp_id;
IF SQL%NOTFOUND THEN
raise_application_error(-20011, 'Invalid Employee
Number: ' || TO_CHAR(emp_id));
END IF;
END fire_emp;
The procedure accepts two arguments. Emp_id is a number that corresponds to an employee number. Sal_incr is
the amount by which to increase the employee's salary.
BEGIN
UPDATE emp
SET sal = sal + sal_incr
WHERE empno = emp_id;
IF SQL%NOTFOUND THEN
raise_application_error(-20011, 'Invalid Employee
Number: ' || TO_CHAR(emp_id));
END IF;
END sal_raise;
END employee_management;
DBMS_APPLICATION_INFO Lets you register an application name with the database for auditing or
performance tracking purposes.
DBMS_AQ Lets you add a message (of a predefined object type) onto a queue or to
dequeue a message.
DBMS_AQADM Lets you perform administrative functions on a queue or queue table for
messages of a predefined object type.
DBMS_DDL Provides access to some SQL DDL statements from stored procedures, and
provides special administration operations not available as DDLs.
DBMS_DEBUG A PL/SQL API to the PL/SQL debugger layer, Probe, in the Oracle server.
DBMS_HS Lets you create and modify objects in the Heterogeneous Services dictionary.
DBMS_HS_PASSTHROUGH Lets you use Heterogeneous Services to send pass-through SQL statements to
non-Oracle systems.
DBMS_IOT Creates a table into which references to the chained rows for an Index
Organized Table can be placed using the ANALYZE command.
DBMS_JOB Lets you schedule administrative procedures that you want performed at
periodic intervals; it is also the interface for the job queue.
DBMS_LOB Provides general purpose routines for operations on Oracle Large Object
(LOBs) datatypes - BLOB, CLOB (read-write), and BFILEs (read-only).
DBMS_LOCK Lets you request, convert and release locks through Oracle Lock Management
services.
DBMS_LOGMNR Provides functions to initialize and run the log reader.
DBMS_LOGMNR_D Queries the dictionary tables of the current database, and creates a text
based file containing their contents.
DBMS_OFFLINE_OG Provides public APIs for offline instantiation of master groups.
DBMS_ORACLE_TRACE_AGENT Provides client callable interfaces to the Oracle TRACE instrumentation within
the Oracle7 Server.
DBMS_PIPE Provides a DBMS pipe service which enables messages to be sent between
sessions.
DBMS_PROFILER Provides a Probe Profiler API to profile existing PL/SQL applications and
identify performance bottlenecks.
DBMS_RANDOM Provides a built-in random number generator.
DBMS_RECTIFIER_DIFF Provides APIs used to detect and resolve data inconsistencies between two
replicated sites.
DBMS_REFRESH Lets you create groups of snapshots that can be refreshed together to a
transactionally consistent point in time. Requires the Distributed Option.
DBMS_REPAIR Provides data corruption repair procedures.
DBMS_REPCAT Provides routines to administer and update the replication catalog and
environment. Requires the Replication Option.
DBMS_REPCAT_ADMIN Lets you create users with the privileges needed by the symmetric replication
facility. Requires the Replication Option.
DBMS_REPCAT_INSTATIATE Instantiates deployment templates. Requires the Replication Option.
DBMS_REPCAT_RGT Controls the maintenance and definition of refresh group templates. Requires
the Replication Option.
DBMS_REPUTIL Provides routines to generate shadow tables, triggers, and packages for table
replication.
DBMS_RESOURCE_MANAGER Maintains plans, consumer groups, and plan directives; it also provides
semantics so that you may group together changes to the plan schema.
DBMS_RESOURCE_MANAGER_PR Maintains privileges associated with resource consumer groups.
IVS
DBMS_SPACE_ADMIN Provides tablespace and segment space administration not available through
the standard SQL.
DBMS_SQL Lets you use dynamic SQL to access the database.
DBMS_STANDARD Provides language facilities that help your application interact with Oracle.
DBMS_STATS Provides a mechanism for users to view and modify optimizer statistics
gathered for database objects.
DBMS_TRACE Provides routines to start and stop PL/SQL tracing.
DBMS_TRANSACTION Provides access to SQL transaction statements from stored procedures and
monitors transaction activities.
DBMS_TTS Checks if the transportable set is self-contained.
DEBUG_EXTPROC Lets you debug external procedures on platforms with debuggers that can
attach to a running process.
OUTLN_PKG Provides the interface for procedures and functions associated with
management of stored outlines.
PLITBLM Handles index-table operations.
SDO_ADMIN Provides functions implementing spatial index creation and maintenance for
spatial objects.
SDO_GEOM Provides functions implementing geometric operations on spatial objects.
SDO_MIGRATE Provides functions for migrating spatial data from release 7.3.3 and 7.3.4 to
8.1.x.
SDO_TUNE Provides functions for selecting parameters that determine the behavior of
the spatial indexing scheme used in the Spatial Cartridge.
UTL_FILE Enables your PL/SQL programs to read and write operating system (OS) text
files and provides a restricted version of standard OS stream file I/O.
UTL_HTTP Enables HTTP callouts from PL/SQL and SQL to access data on the Internet or
to call Oracle Web Server Cartridges.
UTL_PG Provides functions for converting COBOL numeric data into Oracle numbers
and Oracle numbers into COBOL numeric data.
UTL_RAW Provides SQL functions for RAW datatypes that concat, substr, etc. to and
from RAWS.
UTL_REF Enables a PL/SQL program to access an object by providing a reference to the
object.
Vir_Pkg Provides analytical and conversion functions for Visual Information Retrieval.
DISPLAY_AWR - to format and display the contents of the execution plan of a stored SQL statement in the AWR.
DISPLAY_CURSOR - to format and display the contents of the execution plan of any loaded cursor.
DISPLAY_SQL_PLAN_BASELINE - to display one or more execution plans for the SQL statement identified by SQL
handle
DISPLAY_SQLSET - to format and display the contents of the execution plan of statements stored in a SQL tuning
set.
DBMS_OUTPUT package
DBMS Output In PL/SQL
DBMS_OUTPUT package allows the display of the PL/SQL output produced from subprograms and blocks of code.
This helps us to debug, test our code, and to send messages.
The put_line procedure produces the output data to a buffer. The information is displayed with the help of the
get_line procedure or by configuring SERVEROUTPUT ON in the SQL*Plus.
DBMS_OUTPUT package contains the following subprograms:
Name Purposes
DBMS_OUTPUT.DISABLE Confines the message output.
DBMS_OUTPUT.ENABLE (buffer IN INTEGER DEFAULT 20000) Allows the message output. If the buffer is set to
NULL, it represents an unlimited size of the buffer.
DBMS_OUTPUT.GET_LINE (line OUT VARCHAR, status OUT NUMBER) Fetches a buffered information within a
single line.
DBMS_OUTPUT.NEW_LINE Terminates an end of line marker.
DBMS_OUTPUT.PUT (item IN VARCHAR) Puts an incomplete line in the buffer.
DBMS_OUTPUT.PUT_LINE (item IN VARCHAR) Puts a complete line in the buffer.
Code Implementation:
DECLARE
BEGIN
DBMS_OUTPUT.PUT_LINE ('Software Testing Help!');
END;
DBMS_CRYPTO Lets you encrypt and decrypt stored data, can be used
in conjunction with PL/SQL programs running network
communications, and supports encryption and hashing
algorithms
DBMS_MONITOR Let you use PL/SQL for controlling additional tracing and
statistics gathering
DBMS_MVIEW Lets you refresh snapshots that are not part of the same
refresh group and purge logs. DBMS_SNAPSHOT is a
synonym.
DBMS_REPCAT_ADMIN Lets you create users with the privileges needed by the
symmetric replication facility. Requires the Replication
Option.
DBMS_RESUMABLE Lets you suspend large operations that run out of space
or reach space limits after executing for a long time, fix
the problem, and make the statement resume
execution
DBMS_SERVER_ALERT Lets you issue alerts when some threshold has been
violated
Overloading A Package
There can be multiple subprograms within a package having similar names. This feature is useful if we want to
have homogenous parameters with heterogeneous data types. The concept of overloading within the package
allows the programmers to mention clearly the type of action they want to perform.
Coding Implementation with procedure overloading. (Package created):
CREATE PACKAGE overloadingprocedure AS
Procedure overl_method (p varchar2);
Procedure overl_method (numbr number);
END overloadingprocedure; /
Coding Implementation with procedure overloading. (Package body created)
CREATE OR REPLACE PACKAGE BODY overloadingprocedure AS
--procedure implemented
Procedure overl_method (p varchar2) AS
BEGIN
DBMS_OUTPUT.PUT_LINE ('First Procedure: ' || p);
END;
--procedure implemented
Procedure overl_method (numbr number) AS
BEGIN
DBMS_OUTPUT.PUT_LINE ('Second Procedure: ' || numbr);
END;
END;
===========================END=========================