Tuesday, November 30, 2010

2. Oracle Database Tablespaces

coTablespaces, Datafiles, and Control Files

This chapter describes tablespaces, the primary logical database structures of any Oracle database, and the physical datafiles that correspond to each tablespace.

This chapter contains the following topics:

* Introduction to Tablespaces, Datafiles, and Control Files
* Overview of Tablespaces
* Overview of Datafiles
* Overview of Control Files

Introduction to Tablespaces, Datafiles, and Control Files

Oracle stores data logically in tablespaces and physically in datafiles associated with the corresponding tablespace. Figure 3-1 illustrates this relationship.



Figure 3-1 Datafiles and Tablespaces

Your browser may not support display of this image.
Description of "Figure 3-1 Datafiles and Tablespaces"

Databases, tablespaces, and datafiles are closely related, but they have important differences:

* An Oracle database consists of one or more logical storage units called tablespaces, which collectively store all of the database's data.
* Each tablespace in an Oracle database consists of one or more files called datafiles, which are physical structures that conform to the operating system in which Oracle is running.
* A database's data is collectively stored in the datafiles that constitute each tablespace of the database. For example, the simplest Oracle database would have one tablespace and one datafile. Another database can have three tablespaces, each consisting of two datafiles (for a total of six datafiles).

Oracle-Managed Files

Oracle-managed files eliminate the need for you, the DBA, to directly manage the operating system files comprising an Oracle database. You specify operations in terms of database objects rather than filenames. Oracle internally uses standard file system interfaces to create and delete files as needed for the following database structures:

* Tablespaces
* Redo log files
* Control files

Through initialization parameters, you specify the file system directory to be used for a particular type of file. Oracle then ensures that a unique file, an Oracle-managed file, is created and deleted when no longer needed.

Allocate More Space for a Database

The size of a tablespace is the size of the datafiles that constitute the tablespace. The size of a database is the collective size of the tablespaces that constitute the database.

You can enlarge a database in three ways:

* Add a datafile to a tablespace
* Add a new tablespace
* Increase the size of a datafile

When you add another datafile to an existing tablespace, you increase the amount of disk space allocated for the corresponding tablespace. Figure 3-2 illustrates this kind of space increase.

Figure 3-2 Enlarging a Database by Adding a Datafile to a Tablespace


Description of "Figure 3-2 Enlarging a Database by Adding a Datafile to a Tablespace"

Alternatively, you can create a new tablespace (which contains at least one additional datafile) to increase the size of a database. Figure 3-3 illustrates this.


Figure 3-3 Enlarging a Database by Adding a New Tablespace

Your browser may not support display of this image.
Description of "Figure 3-3 Enlarging a Database by Adding a New Tablespace"

The third option for enlarging a database is to change a datafile's size or let datafiles in existing tablespaces grow dynamically as more space is needed. You accomplish this by altering existing files or by adding files with dynamic extension properties. Figure 3-4 illustrates this.



Figure 3-4 Enlarging a Database by Dynamically Sizing Datafiles

Your browser may not support display of this image.
Description of "Figure 3-4 Enlarging a Database by Dynamically Sizing Datafiles"

Overview of Tablespaces

A database is divided into one or more logical storage units called tablespaces. Tablespaces are divided into logical units of storage called segments, which are further divided into extents. Extents are a collection of contiguous blocks.

This section includes the following topics about tablespaces:

* Bigfile Tablespaces
* The SYSTEM Tablespace
* The SYSAUX Tablespace
* Undo Tablespaces
* Default Temporary Tablespace
* Using Multiple Tablespaces
* Managing Space in Tablespaces
* Multiple Block Sizes
* Online and Offline Tablespaces
* Read-Only Tablespaces
* Temporary Tablespaces for Sort Operations
* Transport of Tablespaces Between Databases

See Also:

o Chapter 2, "Data Blocks, Extents, and Segments" for more information about segments and extents
o Oracle Database Administrator's Guide for detailed information on creating and configuring tablespaces

Bigfile Tablespaces

Oracle lets you create bigfile tablespaces. This allows Oracle Database to contain tablespaces made up of single large files rather than numerous smaller ones. This lets Oracle Database utilize the ability of 64-bit systems to create and manage ultralarge files. The consequence of this is that Oracle Database can now scale up to 8 exabytes in size.

With Oracle-managed files, bigfile tablespaces make datafiles completely transparent for users. In other words, you can perform operations on tablespaces, rather than the underlying datafile. Bigfile tablespaces make the tablespace the main unit of the disk space administration, backup and recovery, and so on. Bigfile tablespaces also simplify datafile management with Oracle-managed files and Automatic Storage Management by eliminating the need for adding new datafiles and dealing with multiple files.

The system default is to create a smallfile tablespace, which is the traditional type of Oracle tablespace. The SYSTEM and SYSAUX tablespace types are always created using the system default type.

Bigfile tablespaces are supported only for locally managed tablespaces with automatic segment-space management. There are two exceptions: locally managed undo and temporary tablespaces can be bigfile tablespaces, even though their segments are manually managed.

An Oracle database can contain both bigfile and smallfile tablespaces. Tablespaces of different types are indistinguishable in terms of execution of SQL statements that do not explicitly refer to datafiles.

You can create a group of temporary tablespaces that let a user consume temporary space from multiple tablespaces. A tablespace group can also be specified as the default temporary tablespace for the database. This is useful with bigfile tablespaces, where you could need a lot of temporary tablespace for sorts.

Benefits of Bigfile Tablespaces

* Bigfile tablespaces can significantly increase the storage capacity of an Oracle database. Smallfile tablespaces can contain up to 1024 files, but bigfile tablespaces contain only one file that can be 1024 times larger than a smallfile tablespace. The total tablespace capacity is the same for smallfile tablespaces and bigfile tablespaces. However, because there is limit of 64K datafiles for each database, a database can contain 1024 times more bigfile tablespaces than smallfile tablespaces, so bigfile tablespaces increase the total database capacity by 3 orders of magnitude. In other words, 8 exabytes is the maximum size of the Oracle database when bigfile tablespaces are used with the maximum block size (32 k).
* Bigfile tablespaces simplify management of datafiles in ultra large databases by reducing the number of datafiles needed. You can also adjust parameters to reduce the SGA space required for datafile information and the size of the control file.
* They simplify database management by providing datafile transparency.

Considerations with Bigfile Tablespaces

* Bigfile tablespaces are intended to be used with Automatic Storage Management or other logical volume managers that support dynamically extensible logical volumes and striping or RAID.
* Avoid creating bigfile tablespaces on a system that does not support striping because of negative implications for parallel execution and RMAN backup parallelization.
* Avoid using bigfile tablespaces if there could possibly be no free space available on a disk group, and the only way to extend a tablespace is to add a new datafile on a different disk group.
* Using bigfile tablespaces on platforms that do not support large file sizes is not recommended and can limit tablespace capacity. Refer to your operating system specific documentation for information about maximum supported file sizes.
* Performance of database opens, checkpoints, and DBWR processes should improve if data is stored in bigfile tablespaces instead of traditional tablespaces. However, increasing the datafile size might increase time to restore a corrupted file or create a new datafile.

The SYSTEM Tablespace

Every Oracle database contains a tablespace named SYSTEM, which Oracle creates automatically when the database is created. The SYSTEM tablespace is always online when the database is open.

To take advantage of the benefits of locally managed tablespaces, you can create a locally managed SYSTEM tablespace, or you can migrate an existing dictionary managed SYSTEM tablespace to a locally managed format.

In a database with a locally managed SYSTEM tablespace, dictionary managed tablespaces cannot be created. It is possible to plug in a dictionary managed tablespace using the transportable feature, but it cannot be made writable.

Note:

If a tablespace is locally managed, then it cannot be reverted back to being dictionary managed.

The Data Dictionary

The SYSTEM tablespace always contains the data dictionary tables for the entire database. The data dictionary tables are stored in datafile 1.

PL/SQL Program Units Description

All data stored on behalf of stored PL/SQL program units (that is, procedures, functions, packages, and triggers) resides in the SYSTEM tablespace. If the database contains many of these program units, then the database administrator must provide the space the units need in the SYSTEM tablespace.

The SYSAUX Tablespace

The SYSAUX tablespace is an auxiliary tablespace to the SYSTEM tablespace. Many database components use the SYSAUX tablespace as their default location to store data. Therefore, the SYSAUX tablespace is always created during database creation or database upgrade.

The SYSAUX tablespace provides a centralized location for database metadata that does not reside in the SYSTEM tablespace. It reduces the number of tablespaces created by default, both in the seed database and in user-defined databases.

During normal database operation, the Oracle database server does not allow the SYSAUX tablespace to be dropped or renamed. Transportable tablespaces for SYSAUX is not supported.

Note:

If the SYSAUX tablespace is unavailable, such as due to a media failure, then some database features might fail.

Undo Tablespaces

Undo tablespaces are special tablespaces used solely for storing undo information. You cannot create any other segment types (for example, tables or indexes) in undo tablespaces. Each database contains zero or more undo tablespaces. In automatic undo management mode, each Oracle instance is assigned one (and only one) undo tablespace. Undo data is managed within an undo tablespace using undo segments that are automatically created and maintained by Oracle.

When the first DML operation is run within a transaction, the transaction is bound (assigned) to an undo segment (and therefore to a transaction table) in the current undo tablespace. In rare circumstances, if the instance does not have a designated undo tablespace, the transaction binds to the system undo segment.

Caution:

Do not run any user transactions before creating the first undo tablespace and taking it online.

Each undo tablespace is composed of a set of undo files and is locally managed. Like other types of tablespaces, undo blocks are grouped in extents and the status of each extent is represented in the bitmap. At any point in time, an extent is either allocated to (and used by) a transaction table, or it is free.

You can create a bigfile undo tablespace.

Creation of Undo Tablespaces

A database administrator creates undo tablespaces individually, using the CREATE UNDO TABLESPACE statement. It can also be created when the database is created, using the CREATE DATABASE statement. A set of files is assigned to each newly created undo tablespace. Like regular tablespaces, attributes of undo tablespaces can be modified with the ALTER TABLESPACE statement and dropped with the DROP TABLESPACE statement.

Note:

An undo tablespace cannot be dropped if it is being used by any instance or contains any undo information needed to recover transactions.

Assignment of Undo Tablespaces

You assign an undo tablespace to an instance in one of two ways:

* At instance startup. You can specify the undo tablespace in the initialization file or let the system choose an available undo tablespace.
* While the instance is running. Use ALTER SYSTEM SET UNDO_TABLESPACE to replace the active undo tablespace with another undo tablespace. This method is rarely used.

You can add more space to an undo tablespace by adding more datafiles to the undo tablespace with the ALTER TABLESPACE statement.

You can have more than one undo tablespace and switch between them. Use the Database Resource Manager to establish user quotas for undo tablespaces. You can specify the retention period for undo information See Also:

Tablespace

When the SYSTEM tablespace is locally managed, you must define at least one default temporary tablespace when creating a database. A locally managed SYSTEM tablespace cannot be used for default temporary storage.

If SYSTEM is dictionary managed and if you do not define a default temporary tablespace when creating the database, then SYSTEM is still used for default temporary storage. However, you will receive a warning in ALERT.LOG saying that a default temporary tablespace is recommended and will be necessary in future releases.

How to Specify a Default Temporary Tablespace

Specify default temporary tablespaces when you create a database, using the DEFAULT TEMPORARY TABLESPACE extension to the CREATE DATABASE statement.

If you drop all default temporary tablespaces, then the SYSTEM tablespace is used as the default temporary tablespace.

You can create bigfile temporary tablespaces. A bigfile temporary tablespaces uses tempfiles instead of datafiles.

Note:

You cannot make a default temporary tablespace permanent or take it offline.

Using Multiple Tablespaces

A very small database may need only the SYSTEM tablespace; however, Oracle recommends that you create at least one additional tablespace to store user data separate from data dictionary information. This gives you more flexibility in various database administration operations and reduces contention among dictionary objects and schema objects for the same datafiles.

You can use multiple tablespaces to perform the following tasks:

* Control disk space allocation for database data
* Assign specific space quotas for database users
* Control availability of data by taking individual tablespaces online or offline
* Perform partial database backup or recovery operations
* Allocate data storage across devices to improve performance

A database administrator can use tablespaces to do the following actions:

* Create new tablespaces
* Add datafiles to tablespaces
* Set and alter default segment storage settings for segments created in a tablespace
* Make a tablespace read only or read/write
* Make a tablespace temporary or permanent
* Rename tablespaces
* Drop tablespaces

Managing Space in Tablespaces

Tablespaces allocate space in extents. Tablespaces can use two different methods to keep track of their free and used space:

* Locally managed tablespaces: Extent management by the tablespace
* Dictionary managed tablespaces: Extent management by the data dictionary

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.

Note:

If you do not specify extent management when you create a tablespace, then the default is locally managed.

Locally Managed Tablespaces

A tablespace that manages its own extents maintains a bitmap in each datafile to keep track of the free or used status of blocks in that datafile. Each bit in the bitmap corresponds to a block or a group of blocks. When an extent is allocated or freed for reuse, Oracle changes the bitmap values to show the new status of the blocks. These changes do not generate rollback information because they do not update tables in the data dictionary (except for special cases such as tablespace quota information).

Locally managed tablespaces have the following advantages over dictionary managed tablespaces:

* Local management of extents automatically tracks adjacent free space, eliminating the need to coalesce free extents.
* Local management of extents avoids recursive space management operations. Such recursive operations can occur in dictionary managed tablespaces if consuming or releasing space in an extent results in another operation that consumes or releases space in a data dictionary table or rollback segment.

The sizes of extents that are managed locally can be determined automatically by the system. Alternatively, all extents can have the same size in a locally managed tablespace and override object storage options.

The LOCAL clause of the CREATE TABLESPACE or CREATE TEMPORARY TABLESPACE statement is specified to create locally managed permanent or temporary tablespaces, respectively.

Segment Space Management in Locally Managed Tablespaces

When you create a locally managed tablespace using the CREATE TABLESPACE statement, the SEGMENT SPACE MANAGEMENT clause lets you specify how free and used space within a segment is to be managed. Your choices are:

* AUTO

This keyword tells Oracle that you want to use bitmaps to manage the free space within segments. A bitmap, in this case, is a map that describes the status of each data block within a segment with respect to the amount of space in the block available for inserting rows. As more or less space becomes available in a data block, its new state is reflected in the bitmap. Bitmaps enable Oracle to manage free space more automatically; thus, this form of space management is called automatic segment-space management.

Locally managed tablespaces using automatic segment-space management can be created as smallfile (traditional) or bigfile tablespaces. AUTO is the default.

* MANUAL

This keyword tells Oracle that you want to use free lists for managing free space within segments. Free lists are lists of data blocks that have space available for inserting rows.

Dictionary Managed Tablespaces

If you created your database with an earlier version of Oracle, then you could be using dictionary managed tablespaces. For a tablespace that uses the data dictionary to manage its extents, Oracle updates the appropriate tables in the data dictionary whenever an extent is allocated or freed for reuse. Oracle also stores rollback information about each update of the dictionary tables. Because dictionary tables and rollback segments are part of the database, the space that they occupy is subject to the same space management operations as all other data.

Multiple Block Sizes

Oracle supports multiple block sizes in a database. The standard block size is used for the SYSTEM tablespace. This is set when the database is created and can be any valid size. You specify the standard block size by setting the initialization parameter DB_BLOCK_SIZE. Legitimate values are from 2K to 32K.

In the initialization parameter file or server parameter, you can configure subcaches within the buffer cache for each of these block sizes. Subcaches can also be configured while an instance is running. You can create tablespaces having any of these block sizes. The standard block size is used for the system tablespace and most other tablespaces.

Note:

All partitions of a partitioned object must reside in tablespaces of a single block size.

Multiple block sizes are useful primarily when transporting a tablespace from an OLTP database to an enterprise data warehouse. This facilitates transport between databases of different block sizes.

Online and Offline Tablespaces

A database administrator can bring any tablespace other than the SYSTEM tablespace online (accessible) or offline (not accessible) whenever the database is open. The SYSTEM tablespace is always online when the database is open because the data dictionary must always be available to Oracle.

A tablespace is usually online so that the data contained within it is available to database users. However, the database administrator can take a tablespace offline for maintenance or backup and recovery purposes.

Bringing Tablespaces Offline

When a tablespace goes offline, Oracle does not permit any subsequent SQL statements to reference objects contained in that tablespace. Active transactions with completed statements that refer to data in that tablespace are not affected at the transaction level. Oracle saves rollback data corresponding to those completed statements in a deferred rollback segment in the SYSTEM tablespace. When the tablespace is brought back online, Oracle applies the rollback data to the tablespace, if needed.

When a tablespace goes offline or comes back online, this is recorded in the data dictionary in the SYSTEM tablespace. If a tablespace is offline when you shut down a database, the tablespace remains offline when the database is subsequently mounted and reopened.

You can bring a tablespace online only in the database in which it was created because the necessary data dictionary information is maintained in the SYSTEM tablespace of that database. An offline tablespace cannot be read or edited by any utility other than Oracle. Thus, offline tablespaces cannot be transposed to other databases.

Oracle automatically switches a tablespace from online to offline when certain errors are encountered. For example, Oracle switches a tablespace from online to offline when the database writer process, DBWn, fails in several attempts to write to a datafile of the tablespace. Users trying to access tables in the offline tablespace receive an error. If the problem that causes this disk I/O to fail is media failure, you must recover the tablespace after you correct the problem.

Use of Tablespaces for Special Procedures

If you create multiple tablespaces to separate different types of data, you take specific tablespaces offline for various procedures. Other tablespaces remain online, and the information in them is still available for use. However, special circumstances can occur when tablespaces are taken offline. For example, if two tablespaces are used to separate table data from index data, the following is true:

* If the tablespace containing the indexes is offline, then queries can still access table data because queries do not require an index to access the table data.
* If the tablespace containing the tables is offline, then the table data in the database is not accessible because the tables are required to access the data.

If Oracle has enough information in the online tablespaces to run a statement, it does so. If it needs data in an offline tablespace, then it causes the statement to fail.

Read-Only Tablespaces

The primary purpose of read-only tablespaces is to eliminate the need to perform backup and recovery of large, static portions of a database. Oracle never updates the files of a read-only tablespace, and therefore the files can reside on read-only media such as CD-ROMs or WORM drives.

Note:

Because you can only bring a tablespace online in the database in which it was created, read-only tablespaces are not meant to satisfy archiving requirements.

Read-only tablespaces cannot be modified. To update a read-only tablespace, first make the tablespace read/write. After updating the tablespace, you can then reset it to be read only.

Because read-only tablespaces cannot be modified, and as long as they have not been made read/write at any point, they do not need repeated backup. Also, if you need to recover your database, you do not need to recover any read-only tablespaces, because they could not have been modified.

Temporary Tablespaces for Sort Operations

You can manage space for sort operations more efficiently by designating one or more temporary tablespaces exclusively for sorts. Doing so effectively eliminates serialization of space management operations involved in the allocation and deallocation of sort space. A single SQL operation can use more than one temporary tablespace for sorting. For example, you can create indexes on very large tables, and the sort operation during index creation can be distributed across multiple tablespaces.

All operations that use sorts, including joins, index builds, ordering, computing aggregates (GROUP BY), and collecting optimizer statistics, benefit from temporary tablespaces. The performance gains are significant with Real Application Clusters.

Sort Segments

One or more temporary tablespaces can be used only for sort segments. A temporary tablespace is not the same as a tablespace that a user designates for temporary segments, which can be any tablespace available to the user. No permanent schema objects can reside in a temporary tablespace.

Sort segments are used when a segment is shared by multiple sort operations. One sort segment exists for every instance that performs a sort operation in a given tablespace.

Temporary tablespaces provide performance improvements when you have multiple sorts that are too large to fit into memory. The sort segment of a given temporary tablespace is created at the time of the first sort operation. The sort segment expands by allocating extents until the segment size is equal to or greater than the total storage demands of all of the active sorts running on that instance.

Creation of Temporary Tablespaces

Create temporary tablespaces by using the CREATE TABLESPACE or CREATE TEMPORARY TABLESPACE statement.

Transport of Tablespaces Between Databases

A transportable tablespace lets you move a subset of an Oracle database from one Oracle database to another, even across different platforms. You can clone a tablespace and plug it into another database, copying the tablespace between databases, or you can unplug a tablespace from one Oracle database and plug it into another Oracle database, moving the tablespace between databases.

Moving data by transporting tablespaces can be orders of magnitude faster than either export/import or unload/load of the same data, because transporting a tablespace involves only copying datafiles and integrating the tablespace metadata. When you transport tablespaces you can also move index data, so you do not have to rebuild the indexes after importing or loading the table data.

You can transport tablespaces across platforms. (Many, but not all, platforms are supported for cross-platform tablespace transport.) This can be used for the following:

* Provide an easier and more efficient means for content providers to publish structured data and distribute it to customers running Oracle on a different platform
* Simplify the distribution of data from a data warehouse environment to data marts which are often running on smaller platforms
* Enable the sharing of read only tablespaces across a heterogeneous cluster
* Allow a database to be migrated from one platform to another

Tablespace Repository

A tablespace repository is a collection of tablespace sets. Tablespace repositories are built on file group repositories, but tablespace repositories only contain the files required to move or copy tablespaces between databases. Different tablespace sets may be stored in a tablespace repository, and different versions of a particular tablespace set also may be stored. A version of a tablespace set in a tablespace repository consists of the following files:

* The Data Pump export dump file for the tablespace set
* The Data Pump log file for the export
* The datafiles that comprise the tablespace set



How to Move or Copy a Tablespace to Another Database

To move or copy a set of tablespaces, you must make the tablespaces read only, copy the datafiles of these tablespaces, and use export/import to move the database information (metadata) stored in the data dictionary. Both the datafiles and the metadata export file must be copied to the target database. The transport of these files can be done using any facility for copying flat files, such as the operating system copying facility, ftp, or publishing on CDs.

After copying the datafiles and importing the metadata, you can optionally put the tablespaces in read/write mode.

The first time a tablespace's datafiles are opened under Oracle Database with the COMPATIBLE initialization parameter set to 10 or higher, each file identifies the platform to which it belongs. These files have identical on disk formats for file header blocks, which are used for file identification and verification. Read only and offline files get the compatibility advanced after they are made read/write or are brought online. This implies that tablespaces that are read only prior to Oracle Database 10g must be made read/write at least once before they can use the cross platform transportable feature.

Note:

In a database with a locally managed SYSTEM tablespace, dictionary tablespaces cannot be created. It is possible to plug in a dictionary managed tablespace using the transportable feature, but it cannot be made writable.

Overview of Datafiles

A tablespace in an Oracle database consists of one or more physical datafiles. A datafile can be associated with only one tablespace and only one database.

Oracle creates a datafile for a tablespace by allocating the specified amount of disk space plus the overhead required for the file header. When a datafile is created, the operating system under which Oracle runs is responsible for clearing old information and authorizations from a file before allocating it to Oracle. If the file is large, this process can take a significant amount of time. The first tablespace in any database is always the SYSTEM tablespace, so Oracle automatically allocates the first datafiles of any database for the SYSTEM tablespace during database creation.

See Also:

Your Oracle operating system-specific documentation for information about the amount of space required for the file header of datafiles on your operating system

Datafile Contents

When a datafile is first created, the allocated disk space is formatted but does not contain any user data. However, Oracle reserves the space to hold the data for future segments of the associated tablespace—it is used exclusively by Oracle. As the data grows in a tablespace, Oracle uses the free space in the associated datafiles to allocate extents for the segment.

The data associated with schema objects in a tablespace is physically stored in one or more of the datafiles that constitute the tablespace. Note that a schema object does not correspond to a specific datafile; rather, a datafile is a repository for the data of any schema object within a specific tablespace. Oracle allocates space for the data associated with a schema object in one or more datafiles of a tablespace. Therefore, a schema object can span one or more datafiles. Unless table striping is used (where data is spread across more than one disk), the database administrator and end users cannot control which datafile stores a schema object.

Size of Datafiles

You can alter the size of a datafile after its creation or you can specify that a datafile should dynamically grow as schema objects in the tablespace grow. This functionality enables you to have fewer datafiles for each tablespace and can simplify administration of datafiles.

Note:

You need sufficient space on the operating system for expansion.

Offline Datafiles

You can take tablespaces offline or bring them online at any time, except for the SYSTEM tablespace. All of the datafiles of a tablespace are taken offline or brought online as a unit when you take the tablespace offline or bring it online, respectively.

You can take individual datafiles offline. However, this is usually done only during some database recovery procedures.

Temporary Datafiles

Locally managed temporary tablespaces have temporary datafiles (tempfiles), which are similar to ordinary datafiles, with the following exceptions:

* Tempfiles are always set to NOLOGGING mode.
* You cannot make a tempfile read only.
* You cannot create a tempfile with the ALTER DATABASE statement.
* Media recovery does not recognize tempfiles:
o BACKUP CONTROLFILE does not generate any information for tempfiles.
o CREATE CONTROLFILE cannot specify any information about tempfiles.
* When you create or resize tempfiles, they are not always guaranteed allocation of disk space for the file size specified. On certain file systems (for example, UNIX) disk blocks are allocated not at file creation or resizing, but before the blocks are accessed.

Caution:

This enables fast tempfile creation and resizing; however, the disk could run of space later when the tempfiles are accessed.

* Tempfile information is shown in the dictionary view DBA_TEMP_FILES and the dynamic performance view V$TEMPFILE, but not in DBA_DATA_FILES or the V$DATAFILE view.

Overview of Control Files

The database control file is a small binary file necessary for the database to start and operate successfully. A control file is updated continuously by Oracle during database use, so it must be available for writing whenever the database is open. If for some reason the control file is not accessible, then the database cannot function properly.

Each control file is associated with only one Oracle database.

Control File Contents

A control file contains information about the associated database that is required for access by an instance, both at startup and during normal operation. Control file information can be modified only by Oracle; no database administrator or user can edit a control file.

Among other things, a control file contains information such as:

* The database name
* The timestamp of database creation
* The names and locations of associated datafiles and redo log files
* Tablespace information
* Datafile offline ranges
* The log history
* Archived log information
* Backup set and backup piece information
* Backup datafile and redo log information
* Datafile copy information
* The current log sequence number
* Checkpoint information

The database name and timestamp originate at database creation. The database name is taken from either the name specified by the DB_NAME initialization parameter or the name used in the CREATE DATABASE statement.

Each time that a datafile or a redo log file is added to, renamed in, or dropped from the database, the control file is updated to reflect this physical structure change. These changes are recorded so that:

* Oracle can identify the datafiles and redo log files to open during database startup
* Oracle can identify files that are required or available in case database recovery is necessary

Therefore, if you make a change to the physical structure of your database (using ALTER DATABASE statements), then you should immediately make a backup of your control file.

Control files also record information about checkpoints. Every three seconds, the checkpoint process (CKPT) records information in the control file about the checkpoint position in the redo log. This information is used during database recovery to tell Oracle that all redo entries recorded before this point in the redo log group are not necessary for database recovery; they were already written to the datafiles.

1.Oracle Database Architecture

As an Oracle DBA, you must understand the concepts of Oracle architecture clearly. It is a basic step or main point that you need before you go to manage your database. By this article, I will try to share my knowledge about it. Hope it can be useful for you.
What is An Oracle Database?

Basically, there are two main components of Oracle database –– instance and database itself. An instance consists of some memory structures and the background processes, whereas a database refers to the disk resources. Figure 1 will show you the relationship.



Figure 1. Two main components of Oracle database
Instance


As we cover above, the memory structures and background processes contitute an instance. The memory structure itself consists of System Global Area (SGA), Program Global Area (PGA), and an optional area –– Software Area Code. In the other hand, the mandatory background processes are Database Writer (DBWn), Log Writer (LGWR), Checkpoint (CKPT), System Monitor (SMON), and Process Monitor (PMON). And another optional background processes are Archiver (ARCn), Recoverer (RECO), etc. Figure 2 will illustrate the relationship for those components on an instance.

Figure 2. The instance components
System Global Area

SGA is the primary memory structures. When Oracle DBAs talk about memory, they usually mean the SGA. This area is broken into a few of part memory –– Buffer Cache, Shared Pool, Redo Log Buffer, Large Pool, and Java Pool.
Buffer Cache

Buffer cache is used to stores the copies of data block that retrieved from datafiles. That is, when user retrieves data from database, the data will be stored in buffer cache. Its size can be manipulated via DB_CACHE_SIZE parameter in init.ora initialization parameter file.
Shared Pool

Shared pool is broken into two small part memories –– Library Cache and Dictionary Cache. The library cache is used to stores information about the commonly used SQL and PL/SQL statements; and is managed by a Least Recently Used (LRU) algorithm. It is also enables the sharing those statemens among users. In the other hand, dictionary cache is used to stores information about object definitions in the database, such as columns, tables, indexes, users, privileges, etc.

The shared pool size can be set via SHARED_POOL_SIZE parameter in init.ora initialization parameter file.
Redo Log Buffer

Each DML statement (insert, update, and delete) executed by users will generates the redo entry. What is a redo entry? It is an information about all data changes made by users. That redo entry is stored in redo log buffer before it is written into the redo log files. To manipulate the size of redo log buffer, you can use the LOG_BUFFER parameter in init.ora initialization parameter file.
Large Pool

Large pool is an optional area of memory in the SGA. It is used to relieves the burden place on the shared pool. It is also used for I/O processes. The large pool size can be set by LARGE_POOL_SIZE parameter in init.ora initialization parameter file.
Java Pool

As its name, Java pool is used to services parsing of the Java commands. Its size can be set by JAVA_POOL_SIZE parameter in init.ora initialization parameter file.
Program Global Area

Although the result of SQL statemen parsing is stored in library cache, but the value of binding variable will be stored in PGA. Why? Because it must be private or not be shared among users. The PGA is also used for sort area.
Software Area Code

Software area code is a location in memory where the Oracle application software resides.
Oracle Background Processes

Oracle background processes is the processes behind the scene that work together with the memories.
DBWn

Database writer (DBWn) process is used to write data from buffer cache into the datafiles. Historically, the database writer is named DBWR. But since some of Oracle version allows us to have more than one database writer, the name is changed to DBWn, where n value is a number 0 to 9.
LGWR

Log writer (LGWR) process is similar to DBWn. It writes the redo entries from redo log buffer into the redo log files.
CKPT

Checkpoint (CKPT) is a process to give a signal to DBWn to writes data in the buffer cache into datafiles. It will also updates datafiles and control files header when log file switch occurs.
SMON
System Monitor (SMON) process is used to recover the system crach or instance failure by applying the entries in the redo log files to the datafiles.
PMON

Process Monitor (PMON) process is used to clean up work after failed processes by rolling back the transactions and releasing other resources.
Database


The database refers to disk resources, and is broken into two main structures –– Logical structures and Physical structures.
Logical Structures

Oracle database is divided into smaller logical units to manage, store, and retrieve data effeciently. The logical units are tablespace, segment, extent, and data block. Figure 3 will illustrate the relationships between those units.



Figure 3. The relationships between the Oracle logical structures
Tablespace

A Tablespace is a grouping logical database objects. A database must have one or more tablespaces. In the Figure 3, we have three tablespaces –– SYSTEM tablespace, Tablespace 1, and Tablespace 2. Tablespace is composed by one or more datafiles.
Segment

A Tablespace is further broken into segments. A segment is used to stores same type of objects. That is, every table in the database will store into a specific segment (named Data Segment) and every index in the database will also store in its own segment (named Index Segment). The other segment types are Temporary Segment and Rollback Segment.
Extent

A segment is further broken into extents. An extent consists of one or more data block. When the database object is enlarged, an extent will be allocated. Unlike a tablespace or a segment, an extent cannot be named.
Data Block

A data block is the smallest unit of storage in the Oracle database. The data block size is a specific number of bytes within tablespace and it has the same number of bytes.
Physical Structures

The physical structures are structures of an Oracle database (in this case the disk files) that are not directly manipulated by users. The physical structure consists of datafiles, redo log files, and control files.
Datafiles

A datafile is a file that correspondens with a tablespace. One datafile can be used by one tablespace, but one tablespace can has more than one datafiles.
Redo Log Files

Redo log files are the files that store the redo entries generated by DML statements. It can be used for recovery processes.
Control Files

Control files are used to store information about physical structure of database, such as datafiles size and location, redo log files location, etc.

Monday, November 29, 2010

Developer 6i Patch Set 19 upgrade with EBS 11i

It has been more than two years since the last Developer 6i patchset 18 was certified with Oracle E-Business Suite Release 11i, and now, Developer 6i patchset 19 (6.0.8.28) is certified with Oracle Apps 11i.
Actually, since we migrated from Jinitiator to Java JRE 1.6, we've encountered some frustrating mouse focus issues, I really hope they were fixed with this patch and won't appear after upgrade.
Like with the last patch set, I'll bring you "step-by-step" upgrade instructions for linux deployments.
Other Operation Systems's need another patches - see Note 125767.1 - Upgrading Developer 6i with Oracle Applications 11i.
*** All patches must be installed on all Application tier nodes
  1. Stop all application processes by adstpall.sh
     
  2. Apply the latest certified Developer 6i patch set 19 (6194129) 
    - Source applications environment (e.g source .../testappl/APPSORA.env) 
    - Verify that $ORACLE_HOME is the 806_ORACLE_HOME
    - Execute with applmgr user
    $ unzip p6194129_60828_LINUX.zip
    $ cd developer6i_patch19
    $ ./patch_install.sh 2>&1 | tee patch_install_p19.log

    - Check patch_install_p19.log for any errors
    - Execute the following to relink Procedure Builder, Forms, Graphics and Reports
    $ cd $ORACLE_HOME/procbuilder60/lib; make -f ins_procbuilder.mk install

    $ cd $ORACLE_HOME/forms60/lib; make -f ins_forms60w.mk install


    $ cd $ORACLE_HOME/graphics60/lib; make -f ins_graphics60w.mk install


    $ cd $ORACLE_HOME/reports60/lib; make -f ins_reports60w.mk install



  1. Apply patch 9863561- Unzip patch file
    %cd $ORACLE_HOME
    %unzip  p9863561_60828_GENERIC.zip

    - Backup old files
    %mkdir $ORACLE_HOME/forms60/java/oracle/forms/backup
    %cp -r $ORACLE_HOME/forms60/java/oracle/forms/engine
        $ORACLE_HOME/forms60/java/oracle/forms/backup
        
         %cp -r $ORACLE_HOME/forms60/java/oracle/forms/handler
             $ORACLE_HOME/forms60/java/oracle/forms/backup 
    
        %cp -r $ORACLE_HOME/forms60/java/oracle/forms/ui
    $ORACLE_HOME/forms60/java/oracle/forms/backup
  2.  Special Instruction
$cd $ORACLE_HOME/forms60/java
jar -xvf f60all.jar oracle/forms/ui/VBean.class
Copy patch to appropriate directories
$ cd $ORACLE_HOME/9863561/oracle/forms/engine
   
   $ cp * $ORACLE_HOME/forms60/java/oracle/forms/engine/Main.class 
 
  $cd $ORACLE_HOME/9863561/oracle/forms/handler

  $cp * $ORACLE_HOME/forms60/java/oracle/forms/handler/AlertDialog.class

  $cd $ORACLE_HOME/9863561/oracle/forms/ui
 
  $cp * $ORACLE_HOME/forms60/java/oracle/forms/ui/VImage.class 
Backup the Forms java subtree and extract the changed files
    % cd $ORACLE_HOME/forms60/java % cp -r oracle/ewt oracle/ewt.PREBUG9863561 % jar -xvf $ORACLE_HOME/9863561/ewt3.jar
    % rm META-INF/MANIFEST.MF
    % rmdir META-INF


Verify that the EWT version has been updated under the
           $ORACLE_HOME/forms60/java directory.
       For example:
       % ls -la oracle/ewt | grep 3_4_49
    - Regenerate Jar files
    - Execute adadmin
    - Select the "Generate Applications Files menu" option
    - Select "Generate product JAR files"
    - Do you wish to force regeneration of all jar files? => Yes
    - Spot check that the JAR files have been generated by verifying the timestamp
$ cd $OA_JAVA/oracle/apps/fnd/jar
$ ll fndforms.jar fndewt.jar
  1. Apply patch 6125732- Unzip patch file + Apply patch
    $ unzip p6125732_60828_LINUX.zip
    $ cd 6125732
    $ sh patch.sh
           
  2. Apply patch 6857221 - Unzip patch file + Apply patch
    $ unzip p6857221_60828_LINUX.zip
    $ cd 6857221
    $ sh patch.sh
           
    - Relink f60webmx for Oracle Applications
    $ adrelink.sh force=y "fnd f60webmx"
           
  3. Apply patch 5232832- Unzip patch file + Apply patch
      $ unzip p5232832 _60828_LINUX.zip $ cd 5232832 $ sh patch.sh
            - Relink f60webmx for Oracle Applications
      $ adrelink.sh force=y "fnd f60webmx"
  4. Apply patch 8888184 - Unzip patch file + Apply patch
    $ unzip p8888184_60828_LINUX.zip
    $ cd 8888184
    $ sh patch.sh
           
    - Relink f60webmx for Oracle Applications
      $ adrelink.sh force=y "fnd f60webmx"

  5. Apply patch 7329300- Unzip patch file + Apply patch
      $ unzip p7329300_60828_LINUX.zip $ cd 7329300 $ sh patch.sh
           
    - Relink f60webmx for Oracle Applications
    $ adrelink.sh force=y "fnd f60webm
  6. Apply patch 7552880- Unzip patch file + Apply patch
      $ unzip p7552880_60828_LINUX.zip $ cd 7552880 $ sh patch.sh
           
    - Relink f60webmx for Oracle Applications
$ adrelink.sh force=y "fnd f60webm


  1. Relink applications executables - Run adadmin
    - Select (2) "Maintain Applications Files Menu"
    - Select (1) "Relink Applications programs"
    - List of product to link: fnd - Generate specific executables …: Yes - Relink with debug: No
    - Enter executables to relink: f60webmx ar60run ar60runb ar60rund
     
  2. Apply patch 9935935 (Apps Interoperability) - Unzip patch file
    $ unzip p9935935_11i_GENERIC.zip
           
    - Enable maintenance mode: adadmin -> (5) Change Maintenance Mode -> (1) Enable Maintenance Mode
    - apply patch with adpatch
    - Disable maintenance mode: adadmin -> (5) Change Maintenance Mode -> (2) Disable Maintenance Mode
     
  3. Verify your upgrade - Check the timestamp for the following files:
    $ cd $OA_JAVA/oracle/apps/fnd/jar
    $ ll fndforms.jar fndewt.jar
            
    If the timestamp is not current - run adadmin =>Generate Applications Files menu => Generate Product JAR Files. 
     
  4. Start all applications processes (adstrtall.sh) - You can also verify your upgrade by login to forms responsibility -> Help -> About Oracle Applications
      You should see: Oracle Forms version : 6.0.8.28

Saturday, November 27, 2010

Install Oracle Apps R12 on Linux

Part -1pre-installation-steps-for-oracle-r12
Part -2
The Oracle Applications Rapid Install Wizard, more commonly called RapidWiz, drives the EBS installation process. If you're accustomed to using the Oracle Universal Installer, you'll find that RapidWiz "feels" a bit different, but it still has that comforting grey, "It  Is a Java-based Oracle software installer!" look to it.

Step 1: Launching RapidWiz
Log in to your Linux server's desktop as root, not oracle. Open a terminal window and change to the startCD/Disk1/rapidwiz subdirectory of the software staging area

Run the rapidwiz utility in that directory:
[root@londo R12stage]# cd startCD/Disk1/rapidwiz/

[root@londo rapidwiz]# ./rapidwiz
You should see a few launch messages in your terminal window, and the welcome screen of the installer will appear. Click Next:




Step 2: Select installation type
In the Wizard Operations window, make sure that "Install Oracle Applications" is selected, but do not check the Express Install box. Click Next:



Step 3: OCM configuration
In the Oracle Configuration Manager window, leave all the fields and options blank, and click Next. OCM is not a complication we need right now.




Step 4: Configuration Choice
Since this is a new install, select the first option ("Create a new configuration") in the Configuration Options window and click Next.




Step 5: Port pool assignment
Select a number between 0 and 99 from the port pool list
 

Step 6: Database node configuration
Now we're finally getting to the fun bits! In the Database Node Configuration window, verify that the following fields have correct values:
  • Database type is "Vision Demo Database"
  • Hostname and domain name match the host and domain names on your Linux server. If you've configured this correctly in /etc/hosts and /etc/sysconfig/network, RapidWiz should pull the correct values.
  • The Operating System value should match your server's platform (Linux x86 or Linux x86-64)
Change the following fields as necessary:
  • Database SID: You can leave this at the default (VIS), or change it if you prefer.   
  • Database OS user: The OS user you created in part 1 as the owner of the Oracle software (e.g. oravis)
  • Database OS group: Change to oinstall
  • Base Directory: This should be set to a directory in the Very Large Mount Point(tm) that you created in part 1. RapidWiz doesn't exactly conform to the OFA standard, but if you're picky about such things, you can click the "Edit Paths" button for finer control over where things go. I'm usually picky, but for the sake of saving you a few more screenshots, I'm letting RapidWiz decide where to file everything this time.



Note: If your specified base directory doesn't exist, you'll need to create it.


Make sure to change the ownership, and to grant write permissions to the oinstall group:
[root@londo rapidwiz]# cd /u01

[root@londo u01]# mkdir -m 775 -p ebs/R12VIS

[root@londo u01]# chown -R oravis:oinstall ebs

[root@londo u01]# ls -lR ebs
Click OK once you've created the base directory, make sure the installer has retained your other configuration settings, and click Next.

Step 7: Applications node configuration
The next window, "Primary Applications Node Configuration," takes most of its values from the database node configuration. You'll need to change the values of Apps OS user and Apps OS group to match the ones created in part 1 of this series. Everything else should be fine; you'll just need to verify. Again, if you want to tinker with specific locations in the installation, you can click the Edit Paths button, but that's beyond the scope of these instructions. Oh yeah, and click Next when you're done.



Step 8: Node information review
The Node Information window presents a review of the servers you've configured so far, and offers the option to add an additional server. Adding a server would be useful in the case of multi-node installations, but for now, just click (what else?) Next:




Step 9: Pre-install system checks
RapidWiz will pop up a window showing the system checks it is performing prior to installation. Basically, it's making sure that the necessary ports are open for the applications and database to run, that there's enough disk space to install, that it can write to all its directories, etc. After the checks are done, a Pre-Install Checks results window will appear. Hopefully you'll see all green checkmarks, as below. If you see red X's next to any of the test categories, click on the X to see a log from the test run, find and fix the errors, and click the Retry button to re-run the tests. Once all tests have been run successfully, click Next.







Step 10: The actual installation part
Click Next at the Install Review window, then Yes in the inevitable "are you sure you want to install?" box, and you're off to the races! Or maybe off to run some errands while blue bars crawl across the installer windows for a few hours, whichever. You'll notice that the terminal window from which you launched RapidWiz will display some information about where it's writing out log files. Hopefully we won't need those, because the installation will just go swimmingly, right?







Step 11: Post-install checks
After a while (probably a few hours, depending on how speedy your server is) the installation will complete, and post-install checks will begin. If some of the post-install checks are listed as failed initially, don't be too worried. The initial startup of E-Business Suite can pretty resource-intensive, and it's not unusual for some of the post-install checks to time out waiting for responses from web pages, or for application server components themselves to time out when starting up. Keep in mind that you're installing software intended to run on server-class hardware, and your server might be under spec somewhere (disk speed, CPU, memory).




Here's what my post-install checks looked like the first time around. Ouch.  As with the pre-install checks, you can click on the icons to see more about the failed checks. I'll spare you all 5 screenshots, but in this case, all the messages have the same theme: HTTP server taking too long to respond.




Step 12: A troubleshooting interlude
My poor 2-CPU "server" had a load average above 10 when the post-install checks first ran, and a ridiculous level of I/O wait (thanks, 5400RPM hard drive!), so the first thing I did was to wait until the system has settled down a bit, and then click the Retry button. Unfortunately, the outcome of the post-install checks didn't change, so I had to look into fixing the web server. What follows may not be applicable to your install situation, but it does provide a small taste of basic Oracle Applications troubleshooting, so please bear with me. If you get bored, or if your post-install checks were all successful, you can always skip ahead to step 14. ;-)

The first thing I did was to log in as the owner of the Oracle Applications software, applvis in this case. Then, I set up the OS environment to be able to better navigate the various sections of the Apps filesystem. You'll often hear this called "sourcing the Apps environment."
[root@londo ~]# su - applvis

[applvis@londo ~]$ . /u01/ebs/R12VIS/apps/apps_st/appl/R12VIS_londo.env
If you don't feel like digging through the documentation to find out where the Apps environment file should be for your system, you can find the value from the result of the "Environment File" post-install check. The output from that check lists a number of environment files; the one that's relevant here is the "APPL_TOP environment file." Using the newly-defined environment variables, I checked the status of the 10g Application Server components and tried to restart the web server:
[applvis@londo ~]$ $ADMIN_SCRIPTS_HOME/adopmnctl.sh status

You are running adopmnctl.sh version 120.6

Checking status of OPMN managed processes...

Processes in Instance: R12VIS_londo.londo.local



error while loading shared libraries: 

libdb.so.2: cannot open shared object file: No such file or directory
That missing shared object library file is the most likely culprit. This often, but not always, means that there's a required OS package missing. In this case, a review of the installed packages on my server didn't show anything missing, so I turned to Google and My Oracle Support. I quickly found a handful of references in OTN forums and Oracle's non-EBS documentation to a quirk of installing R12.1 on 64-bit Oracle Enterprise Linux 5. One symlink later, and I was on my way:
[root@londo ~]# ln -s /usr/lib/libgdbm.so.2.0.0 /usr/lib/libdb.so.2

[applvis@londo ~]$ $ADMIN_SCRIPTS_HOME/adapcctl.sh start

You are running adapcctl.sh version 120.7.12010000.2

Starting OPMN managed Oracle HTTP Server (OHS) instance ...

opmnctl: opmn is already running.

opmnctl: starting opmn managed processes...

adapcctl.sh: exiting with status 0

adapcctl.sh: check the logfile 

/u01/ebs/R12VIS/inst/apps/R12VIS_londo/logs/appl/admin/log/adapcctl.txt for more information ...

[applvis@londo ~]$ $ADMIN_SCRIPTS_HOME/adopmnctl.sh status

You are running adopmnctl.sh version 120.6

Checking status of OPMN managed processes...Processes in Instance: R12VIS_londo.londo.local

---------------------------------+--------------------+---------+---------

ias-component                    | process-type       |     pid | status

---------------------------------+--------------------+---------+---------

OC4JGroup:default_group          | OC4J:oafm          |   10677 | Alive

OC4JGroup:default_group          | OC4J:forms         |   12390 | Alive

OC4JGroup:default_group          | OC4J:oacore        |   10505 | Alive

HTTP_Server                  | HTTP_Server     |  29299 | Alive  
After that, the post-install checks all came back green. Which is good, because I hadn't clicked Next in a while:
Step 14: Grand Finale
(what, you thought I'd risk the whole exercise by ending on step 13?)
And now, after hours of downloads and nigh-endless unzipping, the EBS install is done! That tempting "Connect to Oracle Applications Release 12.1.1" button may work, but if it doesn't, don't despair. Click Finish, open a web browser, and go the URL http://server.domain:80nn. The value for nn is the "port pool" value you selected in the early stages of the installation. Hopefully you know what "server" and "domain" are.  For example, when I browse to http://londo.local:8055, I am redirected to the main login page for EBS:







If you want to start looking around a little bit, the "superuser" for Oracle Applications is SYSADMIN, and the default password for the account is the same as the username. If you attempt to launch any of the Oracle Forms-based parts of the Apps interface from a browser on your Linux server, you may run into trouble. The EBS Forms interface is famously finicky on Linux-based browsers; I usually access EBS from browser on a Windows or OS X desktop, rather than from Linux, but the OTN forums are full of tips on how to get EBS Forms working on Linux.

PRE INSTALLATION STEPS FOR ORACLE R12

This series of posts will cover a Vision install of Oracle Applications 12.1.1 on Linux. In this installment, I'll discuss requirements and acquiring the software. Subsequent posts will cover the installation of the software and actually using your shiny new E-Business Suite system.

Requirements
  1. A Linux machine (physical or virtual).
  2. At least 2GB of memory. 3GB would be better. If your machine is on the low end of this list, don't expect to use it for anything else while EBS is running.
  3. Lots of disk space. At least 290GB. set aside 400GB for other propose(like backup )
.
Recommendations
  1. Install on a version of Linux that is supported/certified for use with EBS. I'm going to be using Redhat Enterprise linux 4 or Oracle Enterprise Linux 5, Update 4 (64-bit) or (32-bit) for this install, but there are other options, listed in My Oracle Support Doc ID 761566.1: Oracle Applications Installation and Upgrade Notes Release 12 (12.1.1) for Linux x86-64 (32-bit Linux users can check out My Oracle Support Note 761564.1) It may be possible to install EBS on your favorite flavor of Linux, but that's not what this particular adventure is all about.
  2. Consider installing EBS in a virtual machine, using VMware or Virtualbox. There are serious advantages to doing this, in my opinion, particularly if, like me, you'll be installing on your primary workstation.
  3. Get familiar with some of the documentation while you're downloading the massive software distribution and building and/or patching your Linux environment to get up to spec. You'll find a reference list at the end of this post.
Preparing the OS
When laying out the disk space for your Linux server, allocate your preferred amount of space for swap and the operating system (I usually set aside about 10GB), 260-275GB for the /u01 partition (where we'll be installing the EBS software and database), and 50GB for the stage directory for the installer (I usually mount this to /mnt/R12stage). Needless to say, a production system's layout would be more refined/detailed, but if you're reading this guide as a roadmap to a production deployment, you need to stop immediately and have your head examined.

Install packages and set kernel parameters according to the appropriate section in the Release Notes referenced above. If you don't have access to My Oracle Support, you're in a bit of a tough spot, but here are some thoughts:
  • Version R12.1 of EBS comprises Oracle RDBMS 11.1.0.7, Oracle Developer 10g, and two versions of Oracle Application Server 10g (ahem, excuse me, Fusion Middleware): 10.1.2.3 and 10.1.3.4. Presumably, combining the installation requirements for those products will get you most of the way to a full set of required packages and kernel parameters.
  • Similarly, installing all the packages that come with your OS distribution should get you almost all of the installation requirements.
  • The oracle-validated RPM seems to cover many, but not all, of the software and kernel parameter requirements for Oracle Enterprise Linux.
  • One point that bears mentioning (and has been discussed pretty openly in the OTN forums, so it's not like I'm giving away any deep My Oracle Support secrets) is that an old version of openmotif libraries is required for this install. The name of the package varies by OS distribution, but the version number is what's important: it has to be version 2.1. If you go with the install-everything route, be sure to remove any competing openmotif packages.
Create two OS users, one to own the Oracle RDBMS software, and one to own the Apps software. Oracle recommends oraSID and applSID, respectively, where SID is all or part of the database SID that you designate during installation. For example, since we'll be doing a Vision install, it would be appropriate to create users oravis and applvis. It's a good idea to make sure that both users share the same primary group, usually the oinstall group. Also, create a dba group and assign it to the Oracle RDBMS software owner as an additional (not primary) group.

Acquiring and staging the software
E-Business Suite software can't be found on Oracle Technet (OTN). You can either purchase the media from the Oracle Store, or download it from Oracle's E-Delivery site. I'll assume you'll be downloading from E-Delivery. Two things worth noting here:

After logging in to E-Delivery, select "E-Business Suite" in the Product Pack dropdown, and select your desired installation platform (Linux x86 or Linux x86-64). Click Go to search, and click the "Oracle E-Business Suite Release 12.1.1 Media Pack" link to get to the downloads page. Don't pick the "Upgrade Media" link, unless you really intend to upgrade, in which case you really shouldn't be reading this.



You don't need to download all of the files listed on the page, but you're still going to be grabbing about 45GB. You might want to fix yourself a snack while you wait. The media is separated as if to be burned to DVD. For this exercise, however, we won't be burning DVDs. Be sure to grab all of the parts labelled:
  • "Oracle E-Business Suite Release 12.1.1 for Linux x86-64 Rapid Install Start Here"
  • "Rapid Install RDBMS - Disk 1" "Rapid Install Databases - Disk 1" through "Rapid Install Databases - Disk 9," inclusive
  • "Oracle E-Business Suite Release 12.1.1 for Linux x86-64 Rapid Install Tools - Disk 1"
  • "Oracle E-Business Suite Release 12.1.1 for Linux x86-64 Rapid Install APPL_TOP - Disk 1"
  • "Oracle E-Business Suite Release 12.1.1 for Linux x86-64 Rapid Install APPL_TOP - Disk 2"
When I sent these instructions to Chet, he did the smart thing and created a spreadsheet to track his downloads. He's been kind enough to share it on Google Docs. Note that your part numbers may be different if you decide to go with 64-bit Linux instead of 32-bit.

Once you have all of the media, unzip the files into the stage directory on your Linux server. When the unzip utility asks if you want to replace dvd.label or component.label files, answer yes. If you get any other errors from unzip, you may have a corrupt download, and should re-download that zip file. Don't assume you can work around it. Once you've unpacked all of the files, your stage directory should look like this:
[root@londo R12stage]# ls

oraAppDB  oraApps  oraAS  oraDB  startCD
  • At this point, you'll be ready to start the installation (finally!). Hopefully, by the time you're done building your Linux server and downloading and staging the EBS software, the next installment in this series will be up.