• No results found

Oracle DBA

N/A
N/A
Protected

Academic year: 2021

Share "Oracle DBA"

Copied!
187
0
0

Loading.... (view fulltext now)

Full text

(1)

Hand’s-On Guide FOR ORACLE DBA’s

By

(2)

All rights reserved. No part of this publication may be reproduced, stored in retrieval system or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or

otherwise, without the prior permission of the author.

@ Anup Kumar Srivastav Published by Anup Kumar Srivastav

Powered by Pothi.com http://pothi.com

(3)

ABOUT ME I am Anup Kumar Srivastav. I have been over 7+ years of experience in IT Industries, of which 3-year as ERP techno-Functional, 1.2 years as a Oracle Core DBA and 3 years 8 months as a Oracle Application DBA, with major clients like Container Corporation of India, FLEX Industries Ltd, Shiv-Vani Oil & Exploration Services Ltd, Jhunjulwala Vanaspati Ltd and Lord Distillery.

I have a broad experience in Implementation, Managing and up-gradation of Oracle Database and Oracle Application (EBS) on Windows, Linux and Sun Solaris platform.

At present I am working as Senior System Engineer with HCL COMNET LIMITED, Noida. Thanking You.

Yours Truly,

(4)

Content Description of Content Page No

1. Oracle Architecture 7-16

How to Oracle work 7

Oracle Architecture (Diagram) 7

Basics of Oracle Architecture 7

Starting up a database 11

Shutdown the database 12

Managing an Oracle Instance 13

Oracle Background Processes 13

2. Oracle 10gR12 Software/binary installation 17-22

10gR2 Installation on Linux 17

10gR2 installation on Solaris 20

3. Database Creation (Manually) 23-45

For File System Storage Mechanism on Linux/Solaris 23 For OMF Enable Database on Linux/Solaris 24

For ASM Mechanism on Linux 25

For ASM Mechanism on Solaris 33

For RAW Device on Linux 37

For RAW Device on Solaris 41

For ASM Mechanism on Windows 42

4. Managing Tablespace 46-49

How to Manage Tablespace 46

Query Related to Tablespace 48

5. Managing Database 50-64

Managing Data file 50

How to Drop Data file 52

Managing Control File 54

Managing Redo Log File 56

Managing Temporary Tablespace 58

Managing Undo Tablespace 61

6. Creating and Managing 10G ASM 65-80

About ASM, Functionality and Advantage 65 ASM instance, archicture and management 66

Managing ASM Directory 66

Managing ASM Disk Group 69

Move Non-ASM database to ASM 72

How to access ASM file 75

ASM Disk Crash Case Study 76

Useful Query for ASM 78

(5)

User-Managed Backup Terminology 81

Type of Recovery and Diff. between Resetlog and No resetlogs Option 83 Recovery from missing or corrupted datafile 85

Recovery from missing or corrupted redo log group 86

Disaster recovery 87

8. Recovery Manager (RMAN) 91-104

Basic RMAN Tutorial 91

Type of RMAN Backup 93

RMAN: RESTORE Concept 96

How to Configure RMAN 101

Use RMAN with a Recovery Catalog 103

9. RMAN Recovery Case Study 105-120

Datafile Recovery 105

Controlfile Recovery 109

Redolog file Recovery 112

Disaster Recovery 114

10 Standby Database 121-136

Creating standby database using Manual 121

Creating standby database using RMAN 127

Standby Database Maintenance 131

Database Switchover/Failover 131

Standby Diagnosis Query for Primary Node 132 Standby Diagnosis Query for Standby Node 135

11. Oracle Database Up-gradation 137-170

Why upgrade oracle database to higher version 137 Role of DBA during database up-gradation 137 Different option for upgrade method, difference and process 137 Difference between Up-gradation and Migration 140

About Oracle release and Upgrade path 140

Converting database to 64 bit 143

Moving from standard edition to enterprise edition and via-verse 145 Upgrade Project Project A 147 Upgrade 8.1.x(x>7) to 8.1.7 Project B 154 Upgrade 8.1.7 to 9.2.0 Project C 163 Upgrade 8.1.7 to 10.2.0 Project D 168 Upgrade 9.2.0 to 10.2.0

(6)

Migrate through Export / Import 171 Migrate through ―RMAN Convert database‖ on source host 172 Migrate through ―RMAN Convert database‖ on destination host 176 Migrate by using Transporting Tablespace 181

(7)

Oracle Architecture How oracle works?

An instance is currently running on the computer that is executing Oracle called database server. A computer is running an application (local machine) runs the application in a user process. The client application attempts to establish a connection to the server using the proper Net8 driver.

When the oracle server detects the connection request from the client it‘s check client authentication, if authentication pass the oracle server creates a (dedicated) server process on behalf of the user process. When the user executes a SQL statement and commits the transaction. For example, the user changes a name in a row of a table. The server process receives the statement and checks the shared pool for any shared SQL area that contains an identical SQL statement. If a shared SQL area is found, the server process checks the user's access privileges to the requested data and the previously existing shared SQL area is used to process the statement; if not, a new shared SQL area is allocated for the statement so that it can be parsed and processed. The server process retrieves any necessary data values from the actual datafile or those stored in the system global area. The server process modifies data block in the system global area. The DBWn process writes modified blocks permanently to disk when doing so is efficient. Because the transaction committed, the LGWR process immediately records the transaction in the online redo log file. If the transaction is successful, the server process sends a message across the network to the application. If it is not successful, an appropriate error message is transmitted. Throughout this entire procedure, the other background processes run, watching for conditions that require intervention.

Oracle Architecture Diagram

The Basics of Oracle Architecture

As an Oracle DBA, you must be 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.

(8)

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 (SGA) and the background processes.

Above figure show, two main components of Oracle database Instance

As we cover above, instance is consist of the memory structures and background processes. The memory structure itself consists of System Global Area (SGA), Program Global Area (PGA). 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 show the instance components System Global Area

SGA is the primary memory structures. This area is broken into a few of part memory –– Buffer Cache, Shared Pool, Redo Log Buffer, Large Pool, and Java Pool.

(9)

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 statements 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. 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

(10)

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

We can broken up database into two main structures –– Logical structures and Physical structures.

Logical Structures

The logical units are tablespace, segment, extent, and data block. Bellow Figure, will illustrate the relationships between those units.

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

(11)

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.

Starting up a database

This article explains the procedures involved in starting an Oracle instance and database. First Stage: Oracle engine start an Oracle Instance

When Oracle starts an instance, it reads the initialization parameter file to determine the values of initialization parameters. Then, it allocates an SGA, which is a shared area of memory used for database information, and creates background processes. At this point, no database is associated with these memory structures and processes.

Second Stage: Mount the Database

To mount the database, the instance finds the database control files and opens them. Control files are specified in the CONTROL_FILES initialization parameter in the parameter file used to start the instance. Oracle then reads the control files to get the names of the database's datafiles and redo log files.

At this point, the database is still closed and is accessible only to the database administrator. The database administrator can keep the database closed while completing specific maintenance operations. However, the database is not yet available for normal operations.

(12)

Opening a mounted database makes it available for normal database operations. Usually, a database administrator opens the database to make it available for general use.

When you open the database, Oracle opens the online datafiles and online redo log files. If a tablespace was offline when the database was previously shut down, the tablespace and its corresponding datafiles will still be offline when you reopen the database.

If any of the datafiles or redo log files are not present when you attempt to open the database, then Oracle returns an error. You must perform recovery on a backup of any damaged or missing files before you can open the database.

Open a Database in Read-Only Mode

You can open any database in read-only mode to prevent its data from being modified by user transactions. Read-only mode restricts database access to read-only transactions, which cannot write to the datafiles or to the redo log files.

Disk writes to other files, such as control files, operating system audit trails, trace files, and alert files, can continue in read-only mode. Temporary tablespaces for sort operations are not affected by the database being open in read-only mode. However, you cannot take permanent tablespaces offline while a database is open in only mode. Also, job queues are not available in read-only mode.

Read-only mode does not restrict database recovery or operations that change the database's state without generating redo data. For example, in read-only mode: Datafiles can be taken offline and online

Offline datafiles and tablespaces can be recovered

The control file remains available for updates about the state of the database one useful application of read-only mode is that standby databases can function as temporary reporting databases.

Database Shutdown

The three steps to shutting down a database and its associated instance are: Close the database.

Unmount the database. Shut down the instance. Close a Database

When you close a database, Oracle writes all database data and recovery data in the SGA to the datafiles and redo log files, respectively. Next, Oracle closes all online datafiles and online redo log files. At this point, the database is closed and inaccessible for normal operations. The control files remain open after a database is closed but still mounted.

Close the Database by Terminating the Instance

In rare emergency situations, you can terminate the instance of an open database to close and completely shut down the database instantaneously. This process is fast, because the operation of writing all data in the buffers of the SGA to the datafiles and redo log files is skipped. The subsequent reopening of the database requires recovery, which Oracle performs automatically.

(13)

Un mount a Database

After the database is closed, Oracle un mounts the database to disassociate it from the instance. At this point, the instance remains in the memory of your computer.

After a database is un mounted, Oracle closes the control files of the database. Shut Down an Instance

The final step in database shutdown is shutting down the instance. When you shut down an instance, the SGA is removed from memory and the background processes are terminated. Abnormal Instance Shutdown

In unusual circumstances, shutdown of an instance might not occur cleanly; all memory structures might not be removed from memory or one of the background processes might not be terminated. When remnants of a previous instance exist, a subsequent instance startup most likely will fail. In such situations, the database administrator can force the new instance to start up by first removing the remnants of the previous instance and then starting a new instance, or by issuing a SHUTDOWN ABORT statement in Enterprise Manager.

Managing an oracle instance

When Oracle engine starts an instance, it reads the initialization parameter file to determine the values of initialization parameters. Then, it allocates an SGA and creates background processes. At this point, no database is associated with these memory structures and processes.

Type of initialization file:

Static (PFILE) Persistent (SPFILE)

Text file Binary file

Modification with an OS editor Cannot Modified

Modification made manually Maintained by the Server

Initialization parameter file content: Instance parameter

Name of the database

Memory structure of the SGA Name and location of control file Information about undo segments

Location of udump, bdump and cdump file Creating an SPFILE:

Create SPFILE=‘………..ORA‘ From PFILE=‘………..ORA‘; Note:

Required SYSDBA Privilege. Execute before or after instance startup. Oracle Background Processes

An Oracle instance runs two types of processes – Server Process

Background Process

(14)

Before work user must connect to an Instance. When user LOG on Oracle Server Oracle Engine create a process called Server processes. Server process communicate with oracle instance on the behalf of user process.

Each background process is useful for a specific purpose and its role is well defined.

Background processes are invoked automatically when the instance is started. Database Writer (DBW’r)

Process Name: DBW0 through DBW9 and DBWa through DBWj Max Processes: 20

This process writes the dirty buffers for the database buffer cache to data files. One database writer process is sufficient for most systems; more can be configured if essential. The initialisation parameter, DB_WRITER_PROCESSES, specifies the number of database writer processes to start.

The DBWn process writes dirty buffer to disk under the following conditions:  When a checkpoint is issued.

 When a server process cannot find a clean reusable buffer after scanning a threshold number of buffers.

 Every 3 seconds.

 When we place a normal or temporary table space offline and read only mode  When we drop and truncate table.

 When we put a table space in backup mode; Log Writer (LGWR)

Process Name: LGWR Max Processes: 1

The log writer process writes data from the redo log buffers to the redo log files on disk.

The writer is activated under the following conditions:

 When a transaction is committed, a System Change Number (SCN) is generated and tagged to it. Log writer puts a commit record in the redo log buffer and writes it to disk immediately along with the transaction's redo entries.

 Every 3 seconds.

 When the redo log buffer is 1/3 full.

 When DBWn signals the writing of redo records to disk. All redo records associated with changes in the block buffers must be written to disk first (The write-ahead protocol). While writing dirty buffers, if the DBWn process finds that some redo information has not been written, it signals the LGWR to write the information and waits until the control is returned.

Log writer will write synchronously to the redo log groups in a circular fashion. If any damage is identified with a redo log file, the log writer will log an error in the LGWR trace file and the system Alert Log. Sometimes, when additional redo log buffer space is required, the LGWR will

(15)

even write uncommitted redo log entries to release the held buffers. LGWR can also use group commits (multiple committed transaction's redo entries taken together) to write to redo logs when a database is undergoing heavy write operations.

The log writer must always be running for an instance. System Monitor

Process Name: SMON Max Processes: 1

This process is responsible for instance recovery, if necessary, at instance startup. SMON also cleans up temporary segments that are no longer in use. SMON wakes up about every 5 minutes to perform housekeeping activities. SMON must always be running for an instance.

Process Monitor Process Name: PMON Max Processes: 1

This process is responsible for performing recovery if a user process fails. It will rollback uncommitted transactions. PMON is also responsible for cleaning up the database buffer cache and freeing resources that were allocated to a process. PMON also registers information about the instance and dispatcher processes with network listener.

PMON wakes up every 3 seconds to perform housekeeping activities. PMON must always be running for an instance.

Checkpoint Process Process Name: CKPT Max processes: 1

Checkpoint process signals the synchronization of all database files with the checkpoint information. It ensures data consistency and faster database recovery in case of a crash.

CKPT ensures that all database changes present in the buffer cache at that point are written to the data files, the actual writing is done by the Database Writer process. The datafile headers and the control files are updated with the latest SCN (when the checkpoint occurred), this is done by the log writer process.

The CKPT process is invoked under the following conditions:

 When a log switch is done.

 When the time specified by the initialization parameter LOG_CHECKPOINT_TIMEOUT exists between the incremental checkpoint and the tail of the log; this is in seconds.

 When the number of blocks specified by the initialization parameter LOG_CHECKPOINT_INTERVAL exists between the incremental checkpoint and the tail of the log; these are OS blocks.

 The number of buffers specified by the initialization parameter FAST_START_IO_TARGET required to perform roll-forward is reached.

 Oracle 9i onwards, the time specified by the initialization parameter FAST_START_MTTR_TARGET is reached; this is in seconds and specifies the time required for a crash recovery. The parameter FAST_START_MTTR_TARGET replaces

(16)

LOG_CHECKPOINT_INTERVAL and FAST_START_IO_TARGET, but these parameters can still be used.

 When the ALTER SYSTEM SWITCH LOGFILE command is issued.  When the ALTER SYSTEM CHECKPOINT command is issued.

Incremental Checkpoints initiate the writing of recovery information to datafile headers and controlfiles. Database writer is not signaled to perform buffer cache flushing activity here.

(17)

Oracle 10gR12 Software/binary installation (10gR2 Installation on Linux)

Note: Bellow mention steps are for 10g Release 1 & 2 (32-bit/64-bit) on Red Hat Enterprise Linux 4.

Note: When you install Linux for Oracle you should create separate file system for ORACLE Software and Oracle Database

2.5 GB of disk space should be required by Oracle Software

1.3 GB of disk space should be required by General Purpose Database. Here we have created two mount point /oracle and /database for oracle software and database. Prerequisite Steps:

Check Memory

Memory should be 512 MB of RAM. How to check the size of physical memory? $ grep MemTotal /proc/meminfo

Check swap space

Swap space should be 1 GB or Twice the size of RAM How to check the size of Swap space?

$ grep SwapTotal /proc/meminfo

If you don‘t have 1 GB of twice of the size of RAM. You must add temporary swap space to your system by creating a temporary swap file. Bellow I am describing How to Add Swap Space?

How to Add Swap Space? Log in as a ROOT

$ dd if=/dev/zero of=tmpswap bs=1k count=900000 $ chmod 600 tmpswap

$ mkswap tmpswap $ swapon tmpswap Check TMP Space

Oracle Universal Installer (OUI) requires up to 400 MB of free space in the /tmp directory. How to check the space in /tmp?

$ df /tmp

If you don‘t have enough space in the /tmp filesystem, you must temporarily create a tmp directory in another filesystem. Bellow I am describing all steps for adding temp space?

(18)

Step 1 Log in as a ROOT user Step 2 mkdir //tmp

Step 3 chown root.root //tmp Step 4 chmod 1777 //tmp Step 5 export TEMP=/ Step 6 export TMPDIR=/

After Completion of Installation, you must remove the temporary /temp directory. Bellow I am describing How to remove temporary /temp directory?

Step 1 Log in as a Root Step 2 $ rmdir //tmp Step 3 $unset TEMP Step 4 $unset TMPDIR

Check Software RPM Package

Before install of Oracle Database 10g software you need to check the system for required RPMs. make-3.79

binutils-2.14 gcc-3.2 libaio-0.3.96 glibc-2.3.2-95.27

Check Kernel parameter

How to see all kernel parameters? Step 1 Log in as a Root user Step 2 $ sysctl –a

Bellow I am describing kernel parameters, which have to be set to values greater than or equal to the recommended values which can be changed in the proc filesystem:

shmmax = 2147483648 shmmni = 4096 shmall = 2097152 shmmin = 1 shmseg = 10 semmsl = 250 semmns = 32000 semopm = 100 semmni = 128 file-max = 65536 ip_local_port_range = 1024 65000

NOTE: Do not change the value of any kernel parameter on a system where it is already higher than listed as minimum requirement.

(19)

Note: Just you add minimum required value in /etc/sysctl.conf file which is used during the boot process: kernel.shmmax=2147483648 kernel.sem=250 32000 100 128 fs.file-max=65536 net.ipv4.ip_local_port_range=1024 65000 net.core.rmem_default=1048576 net.core.rmem_max=1048576 net.core.wmem_default=262144 net.core.wmem_max=262144

become effective immediately, execute the following command: Step 1 Log in as a Root

Step 2 $ sysctl –p Installation Steps:

Creating Oracle User Accounts and Group Step 1 Log in as a Root

Step 2 $groupadd dba # group of users to be granted SYSDBA system privilege Step 3 $groupadd oinstall # group owner of Oracle files

Step 4 useradd -c "Oracle software owner" –d /home/oracle -g oinstall -G dba oracle Step 5 chown oracle:dba /home/oracle /oracle

Step 6 chown oracle:dba /home/oracle /database Step 5 passwd oracle

Start Installation

Starting Oracle Universal InstallerInsert the Oracle CD that contains the image of the software. If you install Oracle10g from a CD, mount the CD by running the following commands in another terminal:

su – root

mount /mnt/cdrom run installer ./ runInstaller

Note: Message: - Can not connect to X11 windows server Step Log in as a Root user

Step 2 $xhost + Step 3 su – oracle

Step 4 Export Display=localhost:0.0 Step 5 ./runinstaller

Post Installation Steps:

Put following entries in bash file.

export ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1 export PATH=$PATH:$ORACLE_HOME/bin

(20)

Oracle 10gR12 Software/binary installation (10gR2 Installation on Solaris)

Note: Bellow mention steps are for 10g Release 1 & 2 (32-bit/64-bit) on Solaris 10.

Note: When you install Solaris for Oracle you should create separate file system for ORACLE Software and Oracle Database

2.5 GB of disk space should be required by Oracle Software

1.3 GB of disk space should be required by General Purpose Database. Here we have created two mount point /oracle and /database for oracle software and database. Note: No specified operating system patches are required with Solaris 10 OS.

Per-requisite Steps:

Make sure that following software packages has been installed. SUNWarc SUNWbtool SUNWhea SUNWlibm SUNWlibms SUNWsprot SUNWtoo SUNWilof SUNWxwfnt SUNWilcs SUNWsprox SUNWil5cs

we can verify that packages are installed or not by using following command: $pkginfo -i. Check following executable file must be presents in /usr/ccs/bin

make ar il nm

Checks swap space

Swap space should be 512MB or Twice the size of RAM. Use following command to know about Physical Memory and Swap space:

$ /usr/sbin/prtconf grep size $ /usr/sbin/swap –l

(21)

Need at least 400 MB of free space in /tmp directory. Check kernel parameter

Set following kernel parameter in /etc/system file and reboot the server. Set shmsys:shminfo_shmmax=4294967295 Set shmsys:shminfo_shmmni=100 Set semsys:seminfo_semmsl=256 Set semsys:seminfo_semmni=100 Create a group. $ groupadd –g 300 dba * $ groupadd –g 301 oinstall **

* ―DBA‖ group will be use by the Oracle Software Owner and Database Administrators.

** ―OINSTALL‖ group will be use when you installing multiple copies of the oracle software on one server and you will want some logins to be able to log onto some databases with DBA privileges but not others.

Create User

Create a UNIX user that will be the Oracle Software Owner.

$ useradd –c ‗Oracle Software Owner‘ –d /oracle –g oinstall –G dba –m –u 300 –s /usr/bin/ksh oracle

$passwd oracle

Create Directory Structure

Create directory for oracle software and Database. $ mkdir /oracle/app /oracle/oradata

$chown oracle:dba /oracle $chmod 775 /oracle

Create the /var/opt/oracle directory $mkdir /var/opt/oracle

$chown oracle:dba /var/opt/oracle $chmod 755 /var/opt/oracle Edit profile file

edit .profile file and type following endearments export ORACLE_BASE=/oracle

(22)

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib Set X window enveiroment.

Log in as a root with CDE (Common Desktop Environment Session) $ DISPLAY=:0.0 $export DISPLAY $xhost + $ su – oracle $DISPLAY=:0.0 $export DISPLAY $/usr/openwin/bin/xclock Execute runInstaller

Log in as a ORACLE user and execute run installer. $./runInstaller

(23)

Database Creation (Manually) (For File System Storage Mechanism on Linux/Solaris)

Step 1 Create a initSID.ora (Example: initTEST.ora) file in $ORACLE_HOME/dbs/ directory. Example: $ORACLE_HOME/dbs/initTEST.ora

Put following entry in initTEST.ora file

background_dump_dest=<put BDUMP log destination> core_dump_dest=<put CDUMP log destination>

user_dump_dest=<put UDUMP log destination>

control_files = (/<Destination>/control1.ctl,/ <Destination>/control2.ctl,/ <Destination>/control3.ctl) undo_management = AUTO undo_tablespace = UNDOTBS1 db_name = TEST db_block_size = 8192 sga_max_size = 1073741824 sga_target = 1073741824 Step 2 Create a password file

$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/pwd<sid>.ora password=<password> entries=5

Step 3 Set your ORACLE_SID $ export ORACLE_SID=test

$ export ORACLE_HOME=/<Destination>

Step 4 Run the following sqlplus command to connect to the database and startup the instance. $sqlplus '/ as sysdba'

SQL> startup nomount

Step 5 Create the Database. Use following scripts create database test

logfile group 1 ('<Destination>/redo1.log') size 100M, group 2 ('<Destination>/redo2.log') size 100M,

group 3 ('<Destination>/redo3.log') size 100M character set WE8ISO8859P1

national character set utf8

datafile '<Destination>/system.dbf' size 500M autoextend on next 10M maxsize unlimited extent management local

sysaux datafile '<Destination>/sysaux.dbf' size 100M autoextend on next 10M maxsize unlimited undo tablespace undotbs1 datafile '<Destination>/undotbs1.dbf' size 100M

default temporary tablespace temp tempfile '<Destination>/temp01.dbf' size 100M; Step 6 Run the scripts necessary to build views, synonyms, etc.:

(24)

 CATALOG.SQL-- creates the views of data dictionary tables and the dynamic performance views.

 CATPROC.SQL-- establishes the usage of PL/SQL functionality and creates many of the PL/SQL Oracle supplied packages.

(For OMF Enable Database on Linux/Solaris)

Step 1 Create a initSID.ora(Example: initTEST.ora) file in $ORACLE_HOME/dbs/ directory. Example: $ORACLE_HOME/dbs/initTEST.ora

Put following entry in initTEST.ora file

background_dump_dest=<put BDUMP log destination> core_dump_dest=<put CDUMP log destination>

user_dump_dest=<put UDUMP log destination>

control_files = (/<Destination>/control1.ctl,/ <Destination>/control2.ctl,/ <Destination>/control3.ctl) undo_management = AUTO undo_tablespace = UNDOTBS1 db_name = test db_block_size = 8192 sga_max_size = 1073741824 sga_target = 1073741824

db_create_file_dest = /<Put DB File Destination> #OMF

db_create_online_log_dest_1 = /<Put first redo and control file destination> #OMF db_create_online_log_dest_2 = /<Put second redo and control file destination> #OMF db_recovery_file_dest = /<put flash recovery area destination> #OM

Step 2 Create a password file

$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/pwd<sid>.ora password=<password> entries=5

Step 3 Set your ORACLE_SID export ORACLE_SID=test

export ORACLE_HOME=/<oracle home path>

Step 4 Run the following sqlplus command to connect to the database and startup the instance. sqlplus '/ as sysdba'

SQL> startup nomount Step 5 Create the database create database test

character set WE8ISO8859P1 national character set utf8 undo tablespace undotbs1

default temporary tablespace temp; Step 6 Run catalog and catproc

(25)

@?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql

(Implement ASM Enable Database on LHEL 4)

Now we are ready to implement ASM Enable Database on RHEL. We divided all task in following Section:

Section A: Prepare/Install RHEL Machine Section B: Prepare ASM Disk.

Section C: Configure Oracle Automatic Storage Management * Section D: Create ASM Instance – Manually

Section E: Create ASM Enable Database

*Important: We can use two methods to configure Oracle Automatic Storage Management on Linux:

ASM With ASMLib I/O – Database created on raw block devices with this method.

ASM With Standard Linux I/O – Database created on raw character devices with this method. NOTE: Here we use ASM with ASMLib I/O method in our task and also discuss about ASM with Standard Linux I/O in Section C.

SECTION - A First we prepare RHEL4 machine. Step 1 Install the RHEL 4

Here, we create partition (/dev/sda2) for Oracle Software at the time of OS Installation. Step 2 Create the oracle user (log in as a ROOT and execute following)

# groupadd oinstall # groupadd dba

# useradd -d /oracle -g oinstall -G dba -s /bin/ksh oracle # chown oracle:dba /oracle

# passwd oracle New Password:

(26)

passwd: password successfully changed for oracle Step 3 Install oracleasmlib package.

oracleasmlib-2.0.2-1.i386.rpm, oracleasm-support-2.0.3-2 and oracleasm-2.6.9-42.0.0.0.1.ELsmp-2.0.3-2

EXAMPLE: # rpm -Uvh oracleasmlib-2.0.2-1.i386.rpm Step 4 Configure the kernel parameters.

Add below listed to /etc/sysctl.conf file. To make the changes effective immediately, execute /sbin/sysctl –p. # more /etc/sysctl.conf kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 1048576 net.core.rmem_max = 1048576 net.core.wmem_default = 262144 net.core.wmem_max = 262144

Step 5 Create the oracle user environment file. /oracle/.profile export EDITOR=vi export ORACLE_SID=CONPROD export ORACLE_BASE=/oracle export ORACLE_HOME=$ORACLE_BASE/10.2.0 export LD_LIBRARY_PATH=$ORACLE_HOME/lib export PATH=$ORACLE_HOME/bin:/bin:/bin: /usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin

SECTION-B Prepare ASM Disk.

We will create 2 physical partitions on /dev/sdb and /dev/sdc. We must create Single Partition on whole Device. Reason is we have one controller per disk in this case so as faster IO and redundancy.

Step 1 Down the Machine and Attached Hard Disk with Machine and Start the machine

Step 2 Create Disk Partition for Oracle ASM storage (Prepare a set of raw disks for Oracle ASM (/dev/sdb, /dev/sdc)

(27)

You will be seeing here new added disk. Step 4 Follow following Screen Shot

(28)

SECTION - C Configure Oracle Automatic Storage Management (ASM) Follow bellow steps, If you want ASM With ASMLib I/O

Step 1 Configure ASMLib. Execute following command: # /etc/init.d/oracleasm configure

Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting without typing an

answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface []: oracle

Default group to own the driver interface []: dba

Start Oracle ASM library driver on boot (y/n) [n]: y Fix permissions of Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: [ OK ] Loading module "oracleasm": [ OK ]

Mounting ASMlib driver filesystem: [ OK ] Scanning system for ASM disks: [ OK ]

Step 2 Create ASM disks. Log ia as a root user and execute: # /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1

(29)

# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1 Marking disk "/dev/sdc1" as an ASM disk: [ OK ] Verify that the ASM disks are visible from every node. # /etc/init.d/oracleasm scandisks

Scanning system for ASM disks: [ OK ] # /etc/init.d/oracleasm listdisks

VOL1 VOL2

Follow bellow steps, if you want ASM with Standard Linux I/O Step 1 Map raw devices for ASM disks.

A raw device mapping is required only if you are planning on creating ASM disks using standard Linux I/O. The raw devices have to bind with the block devices each time a node boots.

Add the following lines in /etc/sysconfig/rawdevices. /etc/sysconfig/rawdevices

/dev/raw/raw1 /dev/sdb1 /dev/raw/raw2 /dev/sdc1

To make the mapping effective immediately, execute the following commands as the root user: # /sbin/service rawdevices restart

Assigning devices:

/dev/raw/raw1 --> /dev/sdb1

/dev/raw/raw1: bound to major 8, minor 33 /dev/raw/raw2 --> /dev/sdc1

/dev/raw/raw2: bound to major 8, minor 49 done

# chown oracle:dba /dev/raw/raw[1-2] # chmod 660 /dev/raw/raw[1-2] # ls -lat /dev/raw/raw*

crw-rw---- 1 oracle dba 162, 2 Nov 4 07:04 /dev/raw/raw2 crw-rw---- 1 oracle dba 162, 1 Nov 4 07:04 /dev/raw/raw1 Modify /etc/udev/permissions.d/50-udev.permissions.

Raw devices are remapped on boot. The ownership of the raw devices will change to the root user by default upon boot. ASM will have problem accessing the shared partitions if the ownership is not the oracle user. Comment the original line, ―raw/*:root:disk:0660‖ in /etc/udev/permissions.d/50-udev.permissions and add a new line,

―raw/*:oracle:dba:0660.‖

(30)

# raw devices ram*:root:disk:0660 #raw/*:root:disk:0660 raw/*:oracle:dba:0660

SECTION-D Create ASM Instance (Manually) Step 1 If CSS service is not there; create it by executing the following batch file: $<ORACLE_HOME/bin/localconfig add

Important: Cluster Synchronization Services (CSS) is required to enable synchronization

between an Automatic Storage Management (ASM) instance and the database instances. Step 2 Create Admin Directories

$mkdir /oracle/ASM/bdump $mkdir /oracle/ASM/cdump $mkdir /oracle/ASM/udump $mkdir /oracle/ASM/pfile

Step 3 Create ASM Instance Parameter file. In /oracle/ASM/pfile directory INSTANCE_TYPE=ASM DB_UNIQUE_NAME=+ASM LARGE_POOL_SIZE=16M BACKGROUND_DUMP_DEST = '/oracle/ASM/bdump' USER_DUMP_DEST=‘/oracle/ASM/udump‘ CORE_DUMP_DEST = '/oracle/ASM/cdump' ASM_DISKGROUPS='DB_DATA' ASM_DISKSTRING ='ORCL: *‘ Important:

 If you do not want to use above parameter just set only one parameter INSTANCE_TYPE=ASM. ASM instance will start with default values for other parameters.

 Bellow I am giving you 5 key parameter that you must configure for ASM instance. INSTANCE_TYPE

DB_UNIQUE_NAME

ASM_POWER_LIMIT (Indicate the maximum speed to be used by this ASM instance during a disk rebalancing operation. Default is 1 and the range 1 to 11)

ASM_DISKSTRING (set the disk location for oracle to consider during a disk-discovery process)

(31)

ASM_DISKGROUP (specify the name of any disk group that you want the ASM instance to automatically mount at instance startup)

 ASM instance uses the LARGE_POOL_SIZE memory buffer. We should allocate at least 8MB .

Step 4 Creating ASM Instance $export ORACLE_SID=+ASM $sqlplus /nolog

SQL> startup nomount pfile='/oracle/ASm/pfile/init+ASM.ora'

IMPORTANT: We can find error "ORA-29701: unable to connect to Cluster Manager" at the time of ASM instance startup. The Cause of error is Connect to CM failed or timed out. Just delete the CM local configuration and add local configuration by using. /localconfig delete and. /localconfig add command. This shall script is reside in $ORACLE_HOME/bin directory.

Step 5 Create ASM Disk Group

Let's start by determining if Oracle can find these four new disks: The view V$ASM_DISK can be queried from the ASM instance to determine which disks are being used or may potentially be used as ASM disks.

$export oracle_sid=+ASM $sqlplus "/ as sysdba"

SQL> SELECT group_number, disk_number, mount_status, header_status, state, path FROM v$asm_disk

Note:

The value of zero in the GROUP_NUMBER column for all four disks. This indicates that a disk is available but hasn't yet been assigned to a disk group.

Using SQL*Plus, the following will create a disk group with normal redundancy and two failure groups:

SQL> CREATE DISKGROUP DB_DATA NORMAL REDUNDANCY FAILGROUP controller1 DISK 'ORCL:VOL1'

FAILGROUP controller2 DISK 'ORCL:VOL2'; Diskgroup created.

Step 6 ALTER DISKGROUP ALL MOUNT;

(32)

SECTION - E Create ASM Enable Database Step 1 Set your ORACLE_SID

export ORACLE_SID=INDIAN

Step 2 Create a minimal init.ora ( In Default Location -$ORACLE_HOME/dbs/init<sid>.ora) control_files = +DB_DATA undo_management = AUTO db_name = test db_block_size = 8192 sga_max_size = 1073741824 sga_target = 1073741824 db_create_file_dest = +DB_DATA db_create_online_log_dest_1 = +DB_DATA

Step 3 Create a password file

$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/pwd<sid>.ora password=oracle entries=5

Step 4 Start the instance

sqlplus / as sysdba startup nomount

Step 5 Create the database

create database indian

character set WE8ISO8859P1 national character set utf8 undo tablespace undotbs1

default temporary tablespace temp;

Step 6 Run catalog and catproc @?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql

(33)

(Implement ASM Enable Database on Solaris)

Now we are ready to implement ASM Instance on Solaris. We divided all task in following Section:

Section A: Install Oracle binaries

Section B: Prepare Disk for ASM (Read Adding Disk/ Create Partition in Solaris section) Section C: Set ownership of Disk

Section D: Create ASM Instance – Manually Section E: Create ASM Enable Database

SECTION-A Install Oracle binaries Go to page 20.

SECTION - B Prepare Disk for ASM Take help of System Administrator

SECTION - C Set ownership of Disk

Default owner is root:sys needs to be changed to oracle:dba .We need to set oracle:dba ( here oracle is a Oracle owner and dba is a group) ownership of the disk. As root we have take partition s0 of disk (c0d1s0 and c1d1s0)

Check ownership of Disk. Execute following command as a root user. bash-3.00# ls -lhL /dev/rdsk/c0d1s0

crw-r--- 1 root sys 118, 64 Feb 16 02:10 /dev/rdsk/c0d1s0 bash-3.00# ls -lhL /dev/rdsk/c1d1s0

crw-r--- 1 root sys 118, 64 Feb 16 02:10 /dev/rdsk/c1d1s0 bash-3.00# chown oracle:dba /dev/rdsk/c0d1s0

bash-3.00# chown oracle:dba /dev/rdsk/c1d1s0

SECTION - D Create ASM Instance (Manually) Step 1 If CSS service is not there; create it by executing the following batch file: $<ORACLE_HOME/bin/localconfig add

Important: Cluster Synchronization Services (CSS) is required to enable synchronization

between an Automatic Storage Management (ASM) instance and the database instances. Step 2 Create Admin Directories

$mkdir /oracle/ASM/bdump $mkdir /oracle/ASM/cdump $mkdir /oracle/ASM/udump

(34)

$mkdir /oracle/ASM/pfile

Step 3 Create ASM Instance Parameter file. In /oracle/ASM/pfile directory INSTANCE_TYPE=ASM DB_UNIQUE_NAME=+ASM LARGE_POOL_SIZE=16M BACKGROUND_DUMP_DEST = '/oracle/ASM/bdump' USER_DUMP_DEST=‘/oracle/ASM/udump‘ CORE_DUMP_DEST = '/oracle/ASM/cdump' ASM_DISKGROUPS='DB_DATA' ASM_DISKSTRING =‘/dev/rdsk/*‘ Important:

If you do not want to use above parameter just set only one parameter INSTANCE_TYPE=ASM. ASM instance will start with default values for other parameters.

Bellow I am giving you 5 key parameter that you must configure for ASM instance. INSTANCE_TYPE

DB_UNIQUE_NAME

ASM_POWER_LIMIT (Indicate the maximum speed to be used by this ASM instance during a disk rebalancing operation. Default is 1 and the range 1 to 11)

ASM_DISKSTRING (set the disk location for oracle to consider during a disk-discovery process)

ASM_DISKGROUP (specify the name of any disk group that you want the ASM instance to automatically mount at instance startup)

ASM instance uses the LARGE_POOL_SIZE memory buffer. We should allocate at least 8MB .

Step 4 Creating ASM Instance $export ORACLE_SID=+ASM $sqlplus /nolog

SQL> connect / as sysdba

SQL> startup nomount pfile='/oracle/ASm/pfile/init+ASM.ora'

IMPORTANT: We can find error "ORA-29701: unable to connect to Cluster Manager" at the time of ASM instance startup. The Cause of error is Connect to CM failed or timed out. Just delete the CM local configuration and add local configuration by using. /localconfig delete and. /localconfig add command. This shall script is reside in $ORACLE_HOME/bin directory.

(35)

Let's start by determining if Oracle can find these four new disks: The view V$ASM_DISK can be queried from the ASM instance to determine which disks are being used or may potentially be used as ASM disks.

$export oracle_sid=+ASM $sqlplus "/ as sysdba"

SQL> SELECT group_number, disk_number, mount_status, header_status, state, path FROM v$asm_disk

Note:

The value of zero in the GROUP_NUMBER column for all four disks. This indicates that a disk is available but hasn't yet been assigned to a disk group.

Using SQL*Plus, the following will create a disk group with normal redundancy and two failure groups:

SQL> CREATE DISKGROUP DB_DATA NORMAL REDUNDANCY FAILGROUP controller1 DISK ' c0d1s0'

FAILGROUP controller2 DISK ' c1d1s0'; Diskgroup created.

Step 6 ALTER DISKGROUP ALL MOUNT;

Now your ASM Instance has been created. Restart the ASM Instance. SECTION - E Create (OMF) Database Step 1 Set your ORACLE_SID

export ORACLE_SID=INDIAN

Step 2 Create a minimal init.ora ( In Default Location -$ORACLE_HOME/dbs/init<sid>.ora) control_files = +DB_DATA undo_management = AUTO db_name = test db_block_size = 8192 sga_max_size = 1073741824 sga_target = 1073741824 db_create_file_dest = +DB_DATA db_create_online_log_dest_1 = +DB_DATA

Step 3 Create a password file

$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/pwd<sid>.ora password=oracle entries=5

Step 4 Start the instance

(36)

sqlplus / as sysdba startup nomount

Step 5 Create the database

create database indian

character set WE8ISO8859P1 national character set utf8 undo tablespace undotbs1

default temporary tablespace temp;

Step 6 Run catalog and catproc @?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql

(37)

(Implement Database on Linux RAW Device) Now we will implement database on Linux RAW Device.

How we will achieve this:

 We will use the entire /dev/sdb hard drive for the Oracle database.

 Next, we will create an LVM Physical Volume called /dev/pv1 for the entire /dev/sdb hard drive.

 Next, we will create an LVM Volume Group.

 After creating the LVM Volume Group, then we will create an LVM Logical Volume for each datafile, controlfile, and online redo log file for our new database.

 Next , we bind the RAW devices to LVM Logical Volume Step 1 Removing Any Partitions on Hard Drive

# dd if=/dev/zero of=/dev/sdb bs=1K count=1 1+0 records in

1+0 records out

# blockdev --rereadpt /dev/sdb

At this point, you should have a hard drive recognized as /dev/sdb with no partitions Step 2 Create the LVM Physical Volume

We will create an LVM Physical Volume called /dev/pv1 for the entire hard disk /dev/sdb. pvcreate /dev/sdb

pvcreate -- physical volume "/dev/sdb" successfully created Step 3 Create the LVM Volume Group

We will create an LVM Volume Group that will contain the LVM Physical Volume /dev/pv1. # vgcreate -l 256 -p 256 -s 128k /dev/vg1 /dev/sdb

vgcreate -- volume group "vg1" successfully created and activated Step 4 Create Logical Volumes for database

Now we create all of the Logical Volumes that will be used to house all of the Oracle database files.

# lvcreate –L 15m /dev/vg1 #Control File 1 lvcreate -- logical volume "lvol0" successfully created

# lvcreate –L 15m /dev/vg1 #Control File 2 lvcreate -- logical volume "lvol1" successfully created

# lvcreate –L 15m /dev/vg1 #Control file 3 lvcreate -- logical volume "lvol2" successfully created

(38)

# lvcreate –L 20m /dev/vg1 # Redo group 1 lvcreate -- logical volume "lvol3" successfully created

# lvcreate –L 20m /dev/vg1 # redo group 2 lvcreate -- logical volume "lvol4" successfully created

# lvcreate –L 20m /dev/vg1 #Redo group 3 lvcreate -- logical volume "lvol5" successfully created

# lvcreate –L 500m /dev/vg1 # System tablesapce lvcreate -- logical volume "lvol6" successfully created

# lvcreate –L 500m /dev/vg1 #SysAux Tablesapce lvcreate -- logical volume "lvol7" successfully created

# lvcreate –L 1024m /dev/vg1 #UNDO lvcreate -- logical volume "lvol8" successfully created

# lvcreate –L 1024m /dev/vg1 #TEMP lvcreate -- logical volume "lvol9" successfully created Step 5 Create RAW Bindings

# vgchange -a y /dev/vg1

vgchange -- volume group "vg1" successfully activated # /usr/bin/raw /dev/raw/raw1 /dev/vg1/lvol0 # /usr/bin/raw /dev/raw/raw2 /dev/vg1/lvol1 # /usr/bin/raw /dev/raw/raw3 /dev/vg1/lvol2 # /usr/bin/raw /dev/raw/raw4 /dev/vg1/lvol3 # /usr/bin/raw /dev/raw/raw5 /dev/vg1/lvol4 # /usr/bin/raw /dev/raw/raw6 /dev/vg1/lvol5 # /usr/bin/raw /dev/raw/raw7 /dev/vg1/lvol6 # /usr/bin/raw /dev/raw/raw8 /dev/vg1/lvol7 # /usr/bin/raw /dev/raw/raw9 /dev/vg1/lvol8

(39)

# /usr/bin/raw /dev/raw/raw10 /dev/vg1/lvol9

Step 6 modify ownership on RAW Devices # /bin/chmod 600 /dev/raw/raw1 # /bin/chmod 600 /dev/raw/raw2 # /bin/chmod 600 /dev/raw/raw3 # /bin/chmod 600 /dev/raw/raw4 # /bin/chmod 600 /dev/raw/raw5 # /bin/chmod 600 /dev/raw/raw6 # /bin/chmod 600 /dev/raw/raw7 # /bin/chmod 600 /dev/raw/raw8 # /bin/chmod 600 /dev/raw/raw9 # /bin/chmod 600 /dev/raw/raw10 # /bin/chown oracle:dba /dev/raw/raw1 # /bin/chown oracle:dba /dev/raw/raw2 # /bin/chown oracle:dba /dev/raw/raw3 # /bin/chown oracle:dba /dev/raw/raw4 # /bin/chown oracle:dba /dev/raw/raw5 # /bin/chown oracle:dba /dev/raw/raw6 # /bin/chown oracle:dba /dev/raw/raw7 # /bin/chown oracle:dba /dev/raw/raw8 # /bin/chown oracle:dba /dev/raw/raw9 # /bin/chown oracle:dba /dev/raw/raw10 Step 7 creates Database.

Now we are ready to create RAW Enable database.

7.1 Create initSID.ora file and put in default location. Put control_file parameter as RAW. 7.2 Set bellow mention ENV.

Export ORACLE_HOME=<Oracle_Home Destination> Export ORCALE_SID=PROD

Export PATH=$PATH:$ORACLE_HOME/bin

Export LD_LIBRARY_PATH=$ORACLE_HOME/lib

7.2 Invoke SQLPLUS, startup nomount database and create database. $sqlplus /nolog

SQL> conn / as sysdba SQL>startup nomount SQL> Create database prod logfile group 1 (‗/dev/raw/raw4‘), group 2 (‗/dev/raw/raw5‘),

group 3 (‗/dev/raw/raw6‘) datafile ‗/dev/raw/raw7‘

(40)

undo Tablespace undotbs1 datafile ‗/dev/raw/raw9‘

default temporary Tablespace temp tempfile ‗/dev/raw/raw10‘; 7.3 Run catalog and catproc

@?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql

(41)

(Implement Database on Solaris RAW Device) Now we will implement database on Solaris RAW Device.

How we will achieve this:

 We will use the entire c0d1 hard drive for the Oracle database.  Next, we will create an RAW Partitions

 We will create bellow mention raw partition:

Disk Slice Size Use for

c0d1 s0 50MB Control file c0d1 s1 10MB Redo group1 c0d1 s3 10MB Redo group 2 c0d1 s4 500MB System c0d1 s5 500MB Sysaux c0d1 s7 1024MB Undo c1d1 s0 1024MB Temp

Step 1 Change owner ship:

Default owner is root:sys needs to be changed to oracle:dba .We need to set oracle:dba ( here oracle is a Oracle owner and dba is a group) ownership of the disk. As root we have take partition s0 of disk (c0d1s0 and c1d1s0)

Check ownership of Disk. Execute following command as a root user. bash-3.00# ls -lhL /dev/rdsk/c0d1s0

crw-r--- 1 root sys 118, 64 Feb 16 02:10 /dev/rdsk/c0d1s0 bash-3.00# ls -lhL /dev/rdsk/c1d1s0

crw-r--- 1 root sys 118, 64 Feb 16 02:10 /dev/rdsk/c1d1s0 bash-3.00# chown oracle:dba /dev/rdsk/c0d1s0

bash-3.00# chown oracle:dba /dev/rdsk/c1d1s0 Note: Execute one by one for all slices

Step 2 creates Database.

Now we are ready to create RAW Enable database.

2.1 Create initSID.ora file and put in default location. Put control_file parameter as RAW. 2.2 Set bellow mention ENV.

Export ORACLE_HOME=<Oracle_Home Destination> Export ORCALE_SID=PROD

Export PATH=$PATH:$ORACLE_HOME/bin

Export LD_LIBRARY_PATH=$ORACLE_HOME/lib

2.3 Invoke SQLPLUS, startup nomount database and create database. $sqlplus /nolog

SQL> conn / as sysdba SQL>startup nomount

(42)

SQL> Create database prod logfile group 1 ‗/dev/rdsk/raw1‘, group 2 ‗/dev/rdsk/raw3‘

datafile ‗/dev/rdsk/raw4‘

sysaux datafile ‗/dev/rdsk/raw5‘; 2.4 Create Undo Tablespace

CREATE UNDO TABLESPACE UNDOTBS

DATAFILE '/dev/rdsk/c0d1s7' REUSE AUTOEXTEND ON; 2.4 Create Temp Tablespace

CREATE TEMPORARY TABLESPACE temp TEMPFILE '/dev/rdsk/c1d1s0'

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp; 2.5 Run catalog and catproc

@?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql

(Implement ASM Enable Database on Windows) Step 1 Create New Partation for Device Files

G:\ H:\

Step 2 If CSS service is not there; create it by executing the following batch file: <orahome>\bin\localconfig add

Step 3 Building the ASM Candidate "disks". ASMTOOL -create G:\DISK1 1024

ASMTOOL -create H:\DISK2 1024 ASMTOOL –create G:\DISK3 1024 ASMTOOL –create H:\DISK4 1024 Step 4 Create Admin Directories D:\DATABASE\admin\+ASM\bdump D:\DATABASE\admin\+ASM\cdump D:\DATABASE\admin\+ASM\hdump D:\DATABASE\admin\+ASM\pfile D:\DATABASE\admin\+ASM\udump

(43)

Step 5 Create ASM Instance Parameter File INSTANCE_TYPE=ASM _ASM_ALLOW_ONLY_RAW_DISKS = FALSE DB_UNIQUE_NAME = +ASM ASM_DISKSTRING ='G:\DISK*','H:\DISK*' LARGE_POOL_SIZE = 16M BACKGROUND_DUMP_DEST = 'D:\DATABASE\admin\+ASM\bdump' USER_DUMP_DEST = 'D:\DATABASE\admin\+ASM\udump' CORE_DUMP_DEST = 'D:\DATABASE\admin\+ASM\cdump' ASM_DISKGROUPS='DB_DATA'

Step 6 Creating ASM Instance

C:\> oradim -new -asmsid +ASM -syspwd asm123 –pfile d:\database\admin\+ASM\pfile\init.ora -startmode a

Step 7 Starting the ASM Instance

SQL> startup nomount pfile=' d:\database\admin\+ASM\pfile\init.ora'; ASM instance started

Total System Global Area 125829120 bytes Fixed Size 769268 bytes

Variable Size 125059852 bytes Database Buffers 0 bytes Redo Buffers 0 bytes Step 8 Create ASM Disk Groups

Let's start by determining if Oracle can find these four new disks:

The view V$ASM_DISK can be queried from the ASM instance to determine which disks are being used or may potentially be used as ASM disks.

set oracle_sid=+ASM C:>sqlplus "/ as sysdba"

SQL> SELECT group_number, disk_number, mount_status, header_status, state, path FROM v$asm_disk

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU STATE PATH --- --- --- --- ---

---

0 0 CLOSED CANDIDATE NORMAL C:\ASMDISKS\_FILE_DISK1 0 1 CLOSED CANDIDATE NORMAL C:\ASMDISKS\_FILE_DISK2 0 2 CLOSED CANDIDATE NORMAL C:\ASMDISKS\_FILE_DISK3 0 3 CLOSED CANDIDATE NORMAL C:\ASMDISKS\_FILE_DISK4 Note:

(44)

is available but hasn't yet been assigned to a disk group. Using SQL*Plus, the following will create a disk group with normal redundancy and two failure groups:

set oracle_sid=+ASM sqlplus "/ as sysdba"

SQL> CREATE DISKGROUP DB_DATA NORMAL REDUNDANCY FAILGROUP controller1

DISK 'G:\DISK1', 'H:\DISK2'

FAILGROUP controller2 DISK 'G:\DISK3', 'H:\DISK4'; Diskgroup created.

Step 9 ALTER DISKGROUP ALL MOUNT;

Now your ASM Instance has been created. Restart the ASM Instance.

Step 10 Create a initSID.ora(Example: initTEST.ora) file in $ORACLE_HOME/database/ directory.

Example: $ORACLE_HOME/dbs/initTEST.ora Put following entry in initTEST.ora file

background_dump_dest=<put BDUMP log destination> core_dump_dest=<put CDUMP log destination>

user_dump_dest=<put UDUMP log destination> control_files = +DB_DATA undo_management = AUTO undo_tablespace = UNDOTBS1 db_name = test db_block_size = 8192 sga_max_size = 1073741824 sga_target = 1073741824

db_create_file_dest = +DB_DATA #OMF

db_create_online_log_dest_1 = +DB_DATA #OMF db_create_online_log_dest_2 = +DB_DATA #OMF #db_recovery_file_dest = +DB_DATA

Step 11 Creating Database TEST Instance

C :\> oradim -new -sid TEST -syspwd test123 -startmode a Step 12 Starting the Database Instance

SQL> startup nomount Step 13 Create the database create database prod

(45)

character set WE8ISO8859P1 national character set utf8 undo tablespace undotbs1

default temporary tablespace temp; Step 14 Run catalog and catproc @?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql

(46)

Managing Tablespace How to Manage Tablespace

Tablespace is a logical storage unit. Why we are say logical because a tablespace is not visible in the file system. Oracle store data physically is datafiles. A tablespace consist of one or more datafile.

Type of Tablespace System Tablespace

 Created with the database  Required in all database  Contain the data dictionary Non System Tablespace:

 Separate undo, temporary, application data and application index segments Control the amount of space allocation to the user‘s objects

 Enable more flexibility in database administration How to Create Tablespace?

CREATE TABLESPACE "tablespace name"

DATAFILE <DATAFILE LOCATION> SIZE <Size of Datafile> REUSE

MENIMUM EXTENT (This ensure that every used extent size in the tablespace is a multiple of the integer)

BLOCKSIZE

LOGGING | NOLOGGING (Logging: By default tablespace have all changes written to redo, Nologging: tablespace do not have all changes written to redo)

ONLIN | OFFLINE (OFFLINE: tablespace unavailable immediately after creation)

PERMANENT | TEMPORARY (Permanent: tablespace can used to hold permanent object, temporary: tablespace can used to hold temp object)

EXTENT MANAGEMENT clause Example:

CREATE TABLESPACE "USER1"

DATAFILE 'C: \LOCAL\ORADATA\USER_DATA.DBF' SIZE 10m REUSE BLOCKSIZE 8192

LOGGING ONLINE PERMANENT

EXTENT MANAGEMENT LOCAL

How to manage space in Tablespace? Note: Tablespace allocate space in extent.

(47)

The extents are managed with in the tablespace via bitmaps. In locally managed tablespace, all tablespace information store in datafile header and don‘t use data dictionary table for store information. Advantage of locally managed tablespace is that no DML generate and reduce contention on data dictionary tables and no undo generated when space allocation or deallocation occurs.

Extent Management [Local | Dictionary]

The storage parameters NEXT, PCTINCREASE, MINEXTENTS, MAXEXTENTS, and DEFAULT STORAGE are not valid for segments stored in locally managed tablespaces.

To create a locally managed tablespace, you specify LOCAL in the extent management clause of the CREATE TABLESPACE statement. You then have two options. You can have Oracle manage extents for you automatically with the AUTOALLOCATE option, or you can specify that the tablespace is managed with uniform extents of a specific size (UNIFORM SIZE).

If the tablespace is expected to contain objects of varying sizes requiring different extent sizes and having many extents, then AUTOALLOCATE is the best choice.

If you do not specify either AUTOALLOCATE or UNIFORM with the LOCAL parameter, then AUTOALLOCATE is the default.

Dictionary Managed tablespace

When we declaring a tablespace as a Dictionary Managed, the data dictionary manages the extents. The Oracle server updates the appropriate tables (sys.fet$ and sys.uet$) in the data dictionary whenever an extent is allocated or deallocated.

How to Create a Locally Managed Tablespace?

The following statement creates a locally managed tablespace named USERS, where AUTOALLOCATE causes Oracle to automatically manage extent size.

CREATE TABLESPACE users

DATAFILE 'C:\LOCAL\ORADATA\USER_DATA.DBF' SIZE 50M EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

Alternatively, this tablespace could be created specifying the UNIFORM clause. In this example, a 512K extent size is specified. Each 512K extent (which is equivalent to 64 Oracle blocks of 8K) is represented by a bit in the bitmap for this file.

CREATE TABLESPACE users

DATAFILE 'C:\LOCAL\ORADATA\USER_DATA.DBF' SIZE 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K;

How to Create a Dictionary Managed Tablespace?

The following is an example of creating a DICTIONARY managed tablespace in Oracle9i: CREATE TABLESPACE users

(48)

DATAFILE 'C:\LOCAL\ORADATA\USER_DATA.DBF' SIZE 50M EXTENT MANAGEMENT DICTIONARY

DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 2 MAXEXTENTS 121 PCTINCREASE 0);

What is Segment Space Management Options?

Two choices for segment-space management, one is manual (the default) and another auto. Manual: This is default option. This option use free lists for managing free space within segments. What are free lists: Free lists are lists of data blocks that have space available for inserting new rows.

Auto: This option use bitmaps for managing free space within segments. This is typically called automatic segment-space management

Example:

CREATE TABLESPACE users

DATAFILE 'C:\LOCAL\ORADATA\USER_DATA.DBF' SIZE 10M REUSE EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K

SEGMENT SPACE MANAGEMENT AUTO PERMANENT

ONLINE;

How to Convert between LMT and DMT Tablespace?

The DBMS_SPACE_ADMIN package allows DBAs to quickly and easily convert between LMT and DMT mode. Look at these examples:

SQL> exec dbms_space_admin.Tablespace_Migrate_TO_Local('ts1'); PL/SQL procedure successfully completed.

SQL> exec dbms_space_admin.Tablespace_Migrate_FROM_Local('ts2'); PL/SQL procedure successfully completed.

Important Query How to retrieve tablespace default storage Parameters? SELECT TABLESPACE_NAME "TABLESPACE", INITIAL_EXTENT "INITIAL_EXT",

NEXT_EXTENT "NEXT_EXT", MIN_EXTENTS "MIN_EXT", MAX_EXTENTS "MAX_EXT",

(49)

PCT_INCREASE

FROM DBA_TABLESPACES;

How to retrieve information tablesapce and associated datafile? SELECT FILE_NAME, BLOCKS, TABLESPACE_NAME

FROM DBA_DATA_FILES;

How to retrieve Statistics for Free Space (Extents) of Each Tablespace? SELECT TABLESPACE_NAME "TABLESPACE", FILE_ID,

COUNT(*) "PIECES", MAX(blocks) "MAXIMUM", MIN(blocks) "MINIMUM", AVG(blocks) "AVERAGE", SUM(blocks) "TOTAL" FROM DBA_FREE_SPACE

GROUP BY TABLESPACE_NAME, FILE_ID;

PIECES shows the number of free space extents in the tablespace file, MAXIMUM and MINIMUM show the largest and smallest contiguous area of space in database blocks, AVERAGE shows the average size in blocks of a free space extent, and TOTAL shows the amount of free space in each tablespace file in blocks. This query is useful when you are going to create a new object or you know that a segment is about to extend, and you want to make sure that there is enough space in the containing tablespace.

References

Related documents

and &#34;Performing an In-place Oracle Database Client Upgrade Using the Response File&#34; sections in Oracle Database Client Installation Guide for Microsoft Windows. 8

As indicated in section 1, Culpeper and Archer (2008) found no evidence for ability-CIRs involving can you or could you (or their variant forms) in their detailed study of requests

Oracle Cloud Platform Services Oracle Cloud Social Services. Infrastructure as a Service Oracle Database, MySQL, Exadata

createDatabaseTables command to create the database tables for the Web Infrastructure Platform and Shared Services (for example, C:\DbImporter92m3&gt; ant -f

Chapter 1 Planning for the Installation of Windows 7 1 Chapter 2 Automating the Deployment of Windows 7 57 Chapter 3 Using the Command Prompt and PowerShell 121 Chapter 4

Due to the unavailability of commercial standards of flavonoids glycosides, these compounds were characterized by the interpretation of their UV absorbance band, the

In Windows 7, click Start and type Command Prompt in the Search programs and files field.. Click Command Prompt

Only the specified set of tables, I will describe the Data Pump command to export schemas from an Oracle Database using the command line.. Banking, and website in this browser for