0% found this document useful (0 votes)
718 views6 pages

Oracle Cheat Sheet

This document provides an Oracle cheat sheet with summaries of common Oracle tasks in 3 sentences or less: Getting a list of indexes can be done with the query SELECT INDEX_NAME FROM DBA_INDEXES. A cross-reference of tables and indexes can be found with SELECT table_name, index_name FROM dba_indexes WHERE table_name = 'TABLENAME'. The indexes on a table can be determined with SELECT INDEX_NAME name FROM USER_INDEXES WHERE TABLE_NAME = 'table_name' AND GENERATED = 'N'.

Uploaded by

Aneek Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
718 views6 pages

Oracle Cheat Sheet

This document provides an Oracle cheat sheet with summaries of common Oracle tasks in 3 sentences or less: Getting a list of indexes can be done with the query SELECT INDEX_NAME FROM DBA_INDEXES. A cross-reference of tables and indexes can be found with SELECT table_name, index_name FROM dba_indexes WHERE table_name = 'TABLENAME'. The indexes on a table can be determined with SELECT INDEX_NAME name FROM USER_INDEXES WHERE TABLE_NAME = 'table_name' AND GENERATED = 'N'.

Uploaded by

Aneek Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Oracle Cheat Sheet

1 of 6

http://software.clapper.org/cheat-sheets/oracle.html#if-database-is-hung-...

Oracle Cheat Sheet


Getting a list of indexes
The query

SELECT INDEX_NAME FROM DBA_INDEXES

will list the names of all non-system indexes. Also, from


http://technet.oracle.com/docs/products/oracle8i/doc_index.htm
System index views USER_INDEXES, ALL_INDEXES, and
DBA_INDEXES indicate
bitmap indexes by the word BITMAP appearing in the TYPE
column. A bitmap
index cannot be declared as UNIQUE.
Must have system privileges to issue the query.

Getting a cross-reference of tables and


their indexes

Table of Contents
Getting a list of indexes
Getting a cross-reference of
tables and their indexes
Determining the indexes on a
table
Getting the names of indexes
for a table
Determining the columns on
which an index is based:
Other useful metadata queries
Creating a user
Changing users password
Sharing tables between two users
Creating a public synonym for a
table
Granting DBA privileges to a user
Creating a rollback segment:
If database is hung shutting down
or starting up
Dumping and Restoring an Oracle
Database
Dump:
Restore
Oracle 9.2.0 Intermedia
Problems:
CTX_DDL must be declared
Error during stored procedure
definition
Insufficient privilege error
EXPLAIN PLAN and Autotrace
Managing statistics for the
cost-based optimizer
After bringing up database, cant
connect via SQL*Plus.

SELECT table_name, index_name FROM dba_indexes WHERE table_name = 'TABLENAME'

Must have system privileges to issue the query.

Determining the indexes on a table


Getting the names of indexes for a table
SELECT INDEX_NAME name FROM USER_INDEXES
WHERE TABLE_NAME = 'table_name' AND GENERATED = 'N';

Determining the columns on which an index is based:

5/14/2015 9:20 PM

Oracle Cheat Sheet

2 of 6

http://software.clapper.org/cheat-sheets/oracle.html#if-database-is-hung-...

SELECT aic.index_name,
aic.column_name,
aic.column_position,
aic.descend,
aic.table_owner,
CASE alc.constraint_type
WHEN 'U' THEN 'UNIQUE'
WHEN 'P' THEN 'PRIMARY KEY'
ELSE ''
END AS index_type
FROM all_ind_columns aic
LEFT JOIN all_constraints alc
ON aic.index_name = alc.constraint_name
AND aic.table_name = alc.table_name
AND aic.table_owner = alc.owner
WHERE aic.table_name = 'TEST2'
-- table name
--AND aic.table_owner = 'HR'
-- table owner
--AND aic.index_name = 'TEST2_FIELD5_IDX' -- index name
ORDER BY column_position;

Other useful metadata queries


See http://www.alberton.info/oracle_meta_info.html

Creating a user
In SQL*Plus, connect as SYSTEM/MANAGER@dbname. Then, issue the following
SQL:

CREATE USER user IDENTIFIED BY password


DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;

For example:

CREATE USER user1 IDENTIFIED BY mypassword


DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;

Next, grant appropriate privileges to the new user:

GRANT connect, resource TO user1;

In SQL*Plus, connect as user1/mypassword@dbname. Create tables, indexes,


etc Theyll be owned by the new user.

Changing users password


ALTER USER user IDENTIFIED BY password

Sharing tables between two users

5/14/2015 9:20 PM

Oracle Cheat Sheet

http://software.clapper.org/cheat-sheets/oracle.html#if-database-is-hung-...

Create a second user, user2. (See above) Then, connect as user1, and
issue this command:

GRANT insert, update, delete, select on user1.table1 TO user2;

Do this for all appropriate tables/indexes.


Now, if user2 logs in, he can access user1.table1, but he must
refer to it as user1.table1. You can create a public synonym for
the table to make this easier. See below.

Creating a public synonym for a table


Log in as the tables owner (user1, in this example), and issue this SQL:

CREATE PUBLIC SYNONYM table1 FOR user1.table1

Granting DBA privileges to a user


In a word: Dont. Instead, grant the appropriate privileges on the
appropriate tables to an unprivileged user.

Creating a rollback segment:


Connect as SYSTEM/MANAGER, then:

CREATE ROLLBACK SEGMENT segname TABLESPACE USERS;

Then, add the rollback segment name to the initXXX.ora file for the
instance.

If database is hung shutting down or starting up


As Oracle user:

$ svrmgrl
Oracle8i Enterprise Edition Release 8.1.5.0.2 - Production
With the Partitioning and Java options
PL/SQL Release 8.1.5.0.0 - Production
SVRMGR>
SVRMGR>
SVRMGR>
SVRMGR>

connect internal
shutdown
startup force
^D

If that fails, try killing the Oracle processes. Then, since Oracle uses
two of the three evil sisters, semaphores and shared memory, ipcrm the
Oracle-owned one after the kill -9 and it should restart.

Dumping and Restoring an Oracle Database


Dump:

3 of 6

5/14/2015 9:20 PM

Oracle Cheat Sheet

4 of 6

http://software.clapper.org/cheat-sheets/oracle.html#if-database-is-hung-...

sqlplus system/manager <<EOF


grant dba to user1;
EOF
exp user1/password@instance # accept defaults, except for "Export entire
# database". Choose "1" for that.

When prompted with

(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U >

accept the default (U), and enter the appropriate user name (i.e., the
owner of the tables) when prompted.

sqlplus system/manager <<EOF


revoke dba from user1;
EOF

Restore
Drop all existing tables and indexes in same db first.

sqlplus system/manager <<EOF


grant dba to user1;
EOF
imp user1/password@instance
sqlplus system/manager <<EOF
revoke dba from user1;
EOF

May have to restore SYSTEM accounts password afterwards.

Oracle 9.2.0 Intermedia Problems:


CTX_DDL must be declared
If this error occurs:

PLS-00201: identifier 'CTX_DDL' must be declared

then the user doesnt have appropriate privileges. This seems to cure the
problem:

sqlplus system/manager@instance <<EOF


grant ctxapp to user1
EOF

5/14/2015 9:20 PM

Oracle Cheat Sheet

5 of 6

http://software.clapper.org/cheat-sheets/oracle.html#if-database-is-hung-...

Error during stored procedure definition


If the above error occurs during definition of a stored procedure, then:

sqlplus system/manager@instance <<EOF


grant create any procedure to user1
EOF

Insufficient privilege error


If you THEN get:

PLS-00904: insufficient privilege to access object CTXSYS.CTX_DDL

try:

sqlplus system/manager@instance <<EOF


grant execute on CTXSYS.CTX_DDL to user1;
EOF

EXPLAIN PLAN and Autotrace


Create the relevant tables in the schema, e.g.:

sqlplus user1/password@instance @$ORACLE_HOME/rdbms/admin/utlxplan.sql

Create the PLUSTRACE role, etc.:

sqlplus /nolog <<EOF


connect / as sysdba
@$ORACLE_HOME/sqlplus/admin/plustrce.sql
EOF

Grant the PLUSTRACE role to the user who owns the DB:

sqlplus system/manager@instance <<EOF


grant plustrace to user1;
EOF

Can now run EXPLAIN PLAN (see Oracle docs) or autotrace.

sqlplus user1/password@instance
SQL> set autotrace trace|on|off
SQL> <statement(s)>

5/14/2015 9:20 PM

Oracle Cheat Sheet

http://software.clapper.org/cheat-sheets/oracle.html#if-database-is-hung-...

trace says to run the statement(s) and print the plan(s), but avoid
displaying any results.
on prints the plan(s) and the results.

Managing statistics for the cost-based optimizer


Creating statistics for the cost-based optimizer

sqlplus system/manager@instance <<EOF


EXEC DBMS_UTILITY.analyze_schema('IACCEL', 'COMPUTE')
EOF

Deleting those statistics:

sqlplus system/manager@instance <<EOF


EXEC DBMS_UTILITY.analyze_schema('IACCEL', 'DELETE')
EOF

After bringing up database, cant connect via SQL*Plus.


Try waiting a minute or two.
Generated by Jekyll.

6 of 6

5/14/2015 9:20 PM

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy