Dba_ind_columns
hi,
When I queried for column_name by using dba_ind_columns it dispalys like SYS_NC00039$ .This is happened after i drop and recreate the index as DESC.Before that it shows correctly.I would like to know the reason.
Thanks in advance.............
you can get it from [USER_IND_EXPRESSIONS|http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/statviews_4330.htm#sthref2196]
[oracle@dell ~]$ sqlplus fas_admin
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Jul 8 13:32:36 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, Data Mining and Real Application Testing options
SQL>
SQL>
SQL>
SQL> drop table a;
Table dropped.
SQL> create table a (b varchar2(100));
Table created.
SQL> create index one on a(b desc);
Index created.
SQL> SELECT column_name
2 FROM user_ind_columns
3 WHERE index_name = 'ONE';
COLUMN_NAME
SYS_NC00002$
SQL> SELECT column_expression AS column_name
2 FROM user_ind_expressions
3 WHERE index_name = 'ONE';
COLUMN_NAME
"B"
SQL>
Similar Messages
-
Dba_index_name and dba_ind_columns showing different results
Hi All,
I am confused why it is showing different results:
[email protected]#>select index_name from dba_indexes where table_name='CRBTPROV_FINAL';
INDEX_NAME
CRBTPROV_INDX1
[email protected]#>select index_name from dba_IND_COLUMNS where table_name='CRBTPROV_FINAL';
INDEX_NAME
CRBTPROV_INDX1
MSISDN_IDX
When trying to drop index MSISDN_IDX it gives error:
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified
But when trying to check where all the index is used using v$access:
select * from v$access where object='MSISDN_IDX';
no rows selected
Regards,
KirtiIf I run the following query on a 9.2.0.6 database, no index is listed:
select type, count(*) from v$access group by type;CURSOR
FUNCTION
NON-EXISTENT
PACKAGE
SEQUENCE
SYNONYM
TABLE
TRIGGER
VIEW
It seems that index is not taken into account by v$access ? -
Not able select SYS.DBA_IND_COLUMNS table.
Dear all,
I am not able to select the records from the table SYS.DBA_IND_COLUMNS in my procedure, it shows table or view does not exists. but i am able to select the same as a separate query (not in procedure).
Please help me out in this.
Thanks,
Anand.This is a standard oracle security functionality. You can select in a standalone query because you have been granted the privilege through a role, but roles are not active within procedures.
You need to have the privilege (probably select any dictionary) granted directly. -
Performance Degradation - High fetches and Prses
Hello,
My analysis on a particular job trace file drew my attention towards:
1) High rate of Parses instead of Bind variables usage.
2) High fetches and poor number/ low number of rows being processed
Please let me kno as to how the performance degradation can be minimised, Perhaps the high number of SQL* Net Client wait events may be due to multiple fetches and transactions with the client.
EXPLAIN PLAN FOR SELECT /*+ FIRST_ROWS (1) */ * FROM SAPNXP.INOB
WHERE MANDT = :A0
AND KLART = :A1
AND OBTAB = :A2
AND OBJEK LIKE :A3 AND ROWNUM <= :A4;
call count cpu elapsed disk query current rows
Parse 119 0.00 0.00 0 0 0 0
Execute 239 0.16 0.13 0 0 0 0
Fetch 239 2069.31 2127.88 0 13738804 0 0
total 597 2069.47 2128.01 0 13738804 0 0
PLAN_TABLE_OUTPUT
Plan hash value: 1235313998
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 2 | 268 | 1 (0)| 00:00:01 |
|* 1 | COUNT STOPKEY | | | | | |
|* 2 | TABLE ACCESS BY INDEX ROWID| INOB | 2 | 268 | 1 (0)| 00:00:01 |
|* 3 | INDEX SKIP SCAN | INOB~2 | 7514 | | 1 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter(ROWNUM<=TO_NUMBER(:A4))
2 - filter("OBJEK" LIKE :A3 AND "KLART"=:A1)
3 - access("MANDT"=:A0 AND "OBTAB"=:A2)
filter("OBTAB"=:A2)
18 rows selected.
SQL> SELECT INDEX_NAME,TABLE_NAME,COLUMN_NAME FROM DBA_IND_COLUMNS WHERE INDEX_OWNER='SAPNXP' AND INDEX_NAME='INOB~2';
INDEX_NAME TABLE_NAME COLUMN_NAME
INOB~2 INOB MANDT
INOB~2 INOB CLINT
INOB~2 INOB OBTAB
Is it possible to Maximise the rows/fetch
call count cpu elapsed disk query current rows
Parse 163 0.03 0.00 0 0 0 0
Execute 163 0.01 0.03 0 0 0 0
Fetch 174899 55.26 59.14 0 1387649 0 4718932
total 175225 55.30 59.19 0 1387649 0 4718932
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 27
Rows Row Source Operation
28952 TABLE ACCESS BY INDEX ROWID EDIDC (cr=8505 pr=0 pw=0 time=202797 us)
28952 INDEX RANGE SCAN EDIDC~1 (cr=1457 pr=0 pw=0 time=29112 us)(object id 202995)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message to client 174899 0.00 0.16
SQL*Net more data to client 155767 0.01 5.69
SQL*Net message from client 174899 0.11 208.21
latch: cache buffers chains 2 0.00 0.00
latch free 4 0.00 0.00
********************************************************************************user4566776 wrote:
My analysis on a particular job trace file drew my attention towards:
1) High rate of Parses instead of Bind variables usage.
But if you look at the text you are using bind variables.
The first query is executed 239 times - which matches the 239 fetches. You cut off some of the useful information from the tkprof output, but the figures show that you're executing more than once per parse call. The time is CPU time spent using a bad execution plan to find no data -- this looks like a bad choice of index, possibly a side effect of the first_rows(1) hint.
2) High fetches and poor number/ low number of rows being processedThe second query is doing a lot of fetches because in 163 executions it is fetching 4.7 million rows at roughly 25 rows per fetch. You might improve performance a little by increasing the array fetch size - but probably not by more than a factor of 2.
You'll notice that even though you record 163 parse calls for the second statement the number of " Misses in library cache during parse" is zero - so the parse calls are pretty irrelevant, the cursor is being re-used.
Regards
Jonathan Lewis
http://jonathanlewis.wordpress.com
http://www.jlcomp.demon.co.uk
To post code, statspack/AWR report, execution plans or trace files, start and end the section with the tag {noformat}{noformat} (lowercase, curly brackets, no spaces) so that the text appears in fixed format.
"Science is more than a body of knowledge; it is a way of thinking"
Carl Sagan -
How to get constraint name and table and column names
Hi Team,
I am a junior DBA. I want to check how many columns are under PRIMARY KEY constraint.
I used dba_constraints view. Please find below details.
SQL> select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME from dba_constraints
2 where TABLE_NAME='DSET_PRODUCT_S';
OWNER CONSTRAINT_NAME C TABLE_NAME
SCOTT SYS_C10202456 C EMPLOYEE
SCOTT SYS_C234576 C DEPT
Please suggest any one.
Regards,Do you want to list the columns under a primary key?
This is listing index and columns:
SELECT cn.owner, cn.constraint_name, cn.constraint_type, cn.table_name
, cn.index_owner, cn.index_name, ix.column_position, ix.column_name
FROM dba_constraints cn, dba_ind_columns ix
WHERE cn.table_name = 'DSET_PRODUCT_S'
AND cn.constraint_type = 'P'
AND cn.index_owner = ix.index_owner
AND cn.index_name = ix.index_name
ORDER BY cn.owner, cn.table_name, cn.index_owner, cn.index_name
, ix.column_position;
{code}
Regards.
Al -
Free Oracle Tool to Simplify Commonly Run Dictionary Queries
(orastat has a very good 'Hot Blocks' query)
Hi,
My co-workers and I at Agilent Technologies have developed a
useful tool to simplify running common dictionary queries. It
runs on UX and requires that you be the "oracle" user. You can
download it from
http://dbamon.com/orastat
For example, if you wanted info about a certain table, you could
query DBA_TABLE, DBA_INDEXES. With our tool "orastat", you would
just run 'orastat -ti <OWNER>.<TABLE>. Example:
2002/01/13-09:09:17 orastat | oraver=8.1.6 oraver3=8.1 sqlcmd=sv
2002/01/13-09:09:17 orastat | ORACLE_SID=DBA ORACLE_HOME=/opt/oracle/product/8.1.6
2002/01/13-09:09:17 orastat | Version=2.23 Host=bigdog Company=agilent
2002/01/13-09:09:17 orastat | Table Info for DBAMON.EVENTS
Table Data (from dba_tables)
Tablespace: DBAMON
RowCount: (Null) (From ANALYZE)
LastAnalyzed: (Null) (From ANALYZE)
Blocks: (Null) (From ANALYZE)
InitialExtents: 20971520
NextExtents: 8146944
MinExtents: 1
MaxExtents: 2147483645
PercentIncr: 1
BufferPool: DEFAULT
Index Data (from dba_indexes and dba_ind_columns)
Index: DBAMON.EVENTS_X1
Tablespace: DBAMON
LastAnalyzed: (Null) (From ANALYZE)
LeafBlocks: (Null) (From ANALYZE)
InitialExtents: 10485760
NextExtents: 2764800
MinExtents: 1
MaxExtents: 2147483645
PercentIncr: 1
BufferPool: DEFAULT
Index Column - Number: 1 Name: INSTANCE Length: 32 Descending: ASC
Index: DBAMON.EVENTS_X2
Tablespace: USERS
LastAnalyzed: (Null) (From ANALYZE)
LeafBlocks: (Null) (From ANALYZE)
InitialExtents: 131072
NextExtents: 983040
MinExtents: 2
MaxExtents: 2147483645
PercentIncr: 1
BufferPool: DEFAULT
Index Column - Number: 1 Name: TS Length: 7 Descending: ASC
Here is a list of all available orastat commands:
2002/01/13-09:07:48 orastat | oraver=8.1.6 oraver3=8.1 sqlcmd=sv
2002/01/13-09:07:48 orastat | ORACLE_SID=DBA ORACLE_HOME=/opt/oracle/product/8.1.6
2002/01/13-09:07:48 orastat | Version=2.23 Host=bigdog Company=agilent
orastat | Usage:
-- View This Help File
- Check for PMON Running, Show Oracle Version, Instance Status
-ad List Archive Destinations (v)
-al Show All Archived Logs
-an Analyze Table COMPUTE STATISTICS - 'orastat -an TABLE-OWNER.TABLE-NAME'
-ar Show Current DB Activity Rate
-au Show DB Audit Status
-az Show Current DB Activity Rate - Log to /opt/oracle/adm/cronlog/db_activity_rate_<SID>.txt
-ba List Contents of dbamon.backup_age Table
-bi List RMAN backup inventory -- ALL
-bp List running RMAN backup sessions (if any)
-br Backups: List all media written to since the last RMAN LVL0 backup
-c Configuration: View init.ora File
-ce Configuration: Edit 'vi' init.ora File
-cf List Control Files
-ck List Time of Last Checkpoint (from v$datafile_headers)
-cp Configuration: View Contents of v$parameter
-ct Coalesce TEMP tablespace
-de List All Datafiles, Online Redo Logs and Control Files (For Destroying a DB)
-df List Datafiles - Optional NOFSCHECK 2nd parm to prevent bdf'ing filesystem
-dc List Datafiles in 'cp' commands to copy all datafiles elsewhere
-ec Configuration: Edit 'vi' config.ora File
-er Display contents of DBA_ERRORS
-ex Select from plan_table
-fs Free Space in Each Datafile
-in List Indexes
-iv List INVALID Objects
-l List Archive Log Status
-lf List Redo Log Files
-li List Resource Limits (v$resource_limit)
-lk Locks - Current TX (Non-Row) Locks
-lh Lock Holders/Waiter
-lo List Current Table Locks
-ls Listener Status
-lv List LVOL's / Usage
-m View Last 20 Lines Of Alert Log
-ma Cat entire Alert Log
-mv 'vi' (read-only mode) Of Alert Log
-op OPS: View V$PING - Lock Conversions
-pi Performance: View Histogram of Datafile I/O
-pd Performance: View Data Block Buffer Hit Ratio
-pf Performance: View Total Cumulative Free List Waits
-ph Performance: Hot Blocks - Block With Latch Sleeps
-ps OPS (Parallel Server) Status
-pw Performance: Show segment names for tables with buffer waits
-ra List Rollback Segment Activity
-rb List Rollback Segments
-rc List And SHRINK All Rollback Segments
-rd List And ALTER MAXEXTENTS UNLIMITED All Rollback Segments
-ro List Roles
-rh List REDO Logs - History
-rl List REDO Logs - Files
-rp RMAN Long Operation Progress
-rs List REDO Logs - Status
-sb Standby DB - Show log gaps
-sc Sessions - By Session CPU Time
-sd Sessions - Details - Sessions, Running SQL and Waits
-se Sessions
-sg List SGA Usage
-sl SELECT * from table - name supplied as 2nd parameter
-sn SNAPSHOT - Run systemstate trace 3 times (for Oracle diagnostics)
-so List sorts by user
-sp List StatsPack Snapshot Data
-sq Run SQL - Pass SQL as argument in single quotes
-sr View Running SQL - 'orastat -sr SESSION_NUMBER'
-ss List default storage clause for all TABLESPACES
-st System Statistics
-su List Active Sessions - From Users Table (Under Construction)
-sw Session Wait Statistics
-ta List All Tables - From DBA_SEGMENTS (Name, TS, Size, Extents, Maxextents)
-tb Count Tables - By Schema
-tc Create Backup Schedule Template from List Of Tablespaces
-td describe table - name of table supplied as 2nd parameter
-ti Table Info - 'orastat -ti TABLE-OWNER.TABLE-NAME'
-ts List Tablespaces
-tt List 8i+ TEMPORARY Locally Managed Tablespaces
-tu Temp space usage by user
-tz List Tables - From DBA_TABLES
-ub List the byte count of data, by User
-ud List Users With ORADBA
-ug List Users Table Grants (Much Output) - 2nd Parm is optional grantee name
-us List All Users
-ut List the byte count of data, by User and Tablespace
-v List Oracle version and whether it is 32-bit or 64-bit
-vs List All Views
-vw Count Views - By Schema
-ws Wait stats - from v
2002/01/13-09:09:18 orastat | Found 2 Indexes
2002/01/13-09:10:45 orastat | oraver=8.1.6 oraver3=8.1 sqlcmd=sv
2002/01/13-09:10:45 orastat | ORACLE_SID=DBA ORACLE_HOME=/opt/oracle/product/8.1.6
2002/01/13-09:10:45 orastat | Version=2.23 Host=bigdog Company=agilent
orastat | Rollback Segments Statistics
RSSize : Current rollback segment size in bytes
A Xn's : Number of current transactions using the rollback segment
HWMSize : High Water Mark size in bytes
Wraps : Cumulative # of times a X'n continues writing from one
extents to another existing extent
Avg Actv: Avg # of bytes in active extents in the rbs measured over time
Name Extents Extends RSSize A Xn's Gets HWMSize Wraps Avg Actv Status Waits
SYSTEM 2 0 118784 0 2093 118784 0 0 ONLINE 0
R01 19 0 2719744 1 261027 2719744 505 143362 ONLINE 122
R02 20 0 2863104 1 263385 2863104 517 144526 ONLINE 164
R03 19 0 2719744 1 264369 2719744 517 143207 ONLINE 155
R04 19 0 2719744 0 267518 2719744 530 156265 ONLINE 139If the application uses a single database session, you can also generate a SQLTrace file to analyse with tkprof by using either Oracle Enterprise Manager to turn on SQL Trace for the session, or use DBMS_MONITOR SESSION_TRACE_ENABLE(session_id, serial_num) - you then have to find the trace file on the datbaas eserver USER_DUMP_DEST and either read manually (the queries are easily visible) or use tkprof to analyze it Using Application Tracing Tools Among other things tkprof can tell you the top resource consuming SQL statements.
-
Need query to find out whether exactly 2 columns are used in any index ?
Suppose i have two columns ID and Status (or any number of columns ) belongs to table customer...
Now I want to create below index
Ex. create index test1 on customer (ID , Status )
But before creating this index i want to check that whether there is already index on these 2 columns ? May be by other name ?
Need query for this.
Plz help.Hi Shubhangi,
Your requirement is very difficult to fulfill , i have made an attempt to replicate your reqrmnt & write a query wherein you need to compromise on few things , let us see if it works for you
Supply table_name/owner & Number of column on which you want to find indexes
e.g.
select distinct INDEX_NAME,column_name
from dba_ind_columns
where index_name in (select distinct index_name
from dba_ind_columns
where table_name='&table_name'
and table_owner='&owner'
having count(column_name)=&column_count group by index_name);
Enter value for table_name: ADDRESS
Enter value for owner: ASAP
Enter value for column_count: 2
INDEX_NAME COLUMN_NAME
FKIDX_AD__SF_ST_FO SF_STRUC_FORMAT_NM
FKIDX_AD__SF_ST_FO SF_TYPE_NM
SQL> /
Enter value for table_name: ADDRESS
Enter value for owner: ASAP
Enter value for column_count: 3
INDEX_NAME COLUMN_NAME
FKIDX_AD__SF_ST_FO_1 POSTAL_CD
FKIDX_AD__SF_ST_FO_1 SF_STRUC_FORMAT_NM
FKIDX_AD__SF_ST_FO_1 SF_TYPE_NM
Thanks,
Ajay More
http://moreajays.blogspot.com -
Non-Partitioned Global Index on Range-Partitioned Table.
Hi All,
Is it possible to create Non-Partitioned Global Index on Range-Partitioned Table?
We have 4 indexes on CS_BILLING range-partitioned table, in which one is CBS_CLIENT_CODE(*local partitioned index*) and others are unknown types of index to me??
Means other 3 indexes are what type indexes ...either non-partitioned global index OR non-partitioned normal index??
Also if we create index as :(create index i_name on t_name(c_name)) By default it will create Global index. Please correct me......
Please help me in identifying other 3 indexes types by referring below ouputs!!!
select INDEX_NAME,TABLE_NAME,PARTITIONING_TYPE,LOCALITY from dba_part_indexes where TABLE_NAME='CS_BILLING';
INDEX_NAME TABLE_NAME PARTITI LOCALI
CSB_CLIENT_CODE CS_BILLING RANGE LOCAL
select index_name,index_type,table_name,table_type,PARTITIONED from dba_indexes where table_name='CS_BILLING';
INDEX_NAME INDEX_TYPE TABLE_NAME TABLE_TYPE PAR
CSB_CREATE_DATE NORMAL CS_BILLING TABLE NO
CSB_SUBMIT_ORDER NORMAL CS_BILLING TABLE NO
CSB_CLIENT_CODE NORMAL CS_BILLING TABLE YES
CSB_ORDER_NBR NORMAL CS_BILLING TABLE NO
select INDEX_OWNER,INDEX_NAME,TABLE_NAME,COLUMN_NAME from dba_ind_columns where TABLE_NAME='CS_BILLING';
INDEX_OWNER INDEX_NAME TABLE_NAME COLUMN_NAME
RPADMIN CSB_CREATE_DATE CS_BILLING CREATE_DATE
RPADMIN CSB_SUBMIT_ORDER CS_BILLING SUBMIT_TO_INVOICE
RPADMIN CSB_SUBMIT_ORDER CS_BILLING ORDER_NBR
RPADMIN CSB_CLIENT_CODE CS_BILLING CLIENT_CODE
RPADMIN CSB_ORDER_NBR CS_BILLING ORDER_NBR
select dip.index_name, dpi.locality, dip.partition_name, dip.status
from dba_part_indexes dpi, dba_ind_partitions dip
where dpi.table_name ='CS_BILLING'
and dpi.index_name = dip.index_name;
INDEX_NAME LOCALI PARTITION_NAME STATUS
CSB_CLIENT_CODE LOCAL CSB_2006_4Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2006_3Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2007_1Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2007_2Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2007_3Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2007_4Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2008_1Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2008_2Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2008_3Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2008_4Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2009_1Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2009_2Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2009_3Q USABLE
CSB_CLIENT_CODE LOCAL CSB_2009_4Q USABLE
select * from dba_part_indexes
where table_name ='CS_BILLING'
and locality = 'GLOBAL';
no rows selected
-Yasser
Edited by: YasserRACDBA on Mar 5, 2009 11:45 PMYaseer,
Is it possible to create Non-Partitioned and Global Index on Range-Partitioned Table?
Yes
We have 4 indexes on CS_BILLING range-partitioned table, in which one is CBS_CLIENT_CODE(*local partitioned index*) and others are unknown types of index to me??
Means other 3 indexes are what type indexes ...either non-partitioned global index OR non-partitioned normal index??
You got local index and 3 non-partitioned "NORMAL" b-tree tyep indexes
Also if we create index as :(create index i_name on t_name(c_name)) By default it will create Global index. Please correct me......
Above staement will create non-partitioned index
Here is an example of creating global partitioned indexes
CREATE INDEX month_ix ON sales(sales_month)
GLOBAL PARTITION BY RANGE(sales_month)
(PARTITION pm1_ix VALUES LESS THAN (2)
PARTITION pm2_ix VALUES LESS THAN (3)
PARTITION pm3_ix VALUES LESS THAN (4)
PARTITION pm12_ix VALUES LESS THAN (MAXVALUE));Regards -
After posting something here a few days back about the myriad views needing to be digested for the Fund.I Exam, I have just gleaned this lot from the Couchman book. No doubt some of the pros out there may well correct me, but this is simple what I have collected from the book, in the last 3 hours. Cheers.
Dictionary Views
Data Dictionary
Which users are in the database password file:
V$PWFILE_USERS
Where values set in the init.ora file can be viewed – all parameters:
V$PARAMETER
Script used to create the objects that comprise the data dictionary:
catalog.sql
To grant a special role to users so they can look at DBA views:
SELECT_CATALOG_ROLE
Information about all database objects in the database:
DBA_OBJECTS
Information about all tables in the database:
DBA_TABLES
Information about all indexes in the database:
DBA_INDEXES
Information about all views (including dictionary views) in the database:
DBA_VIEWS
Information about all sequences in the database:
DBA_SEQUENCES
Information about all users in the database:
DBA_USERS
Information about all constraints in the database:
DBA_CONSTRAINTS
Information about all table columns that have constraints on them:
DBA_CONS_COLUMNS
Information about all columns that have indexes on them in the database:
DBA_IND_COLUMNS
Information about all columns in all the tables in the database:
DBA_TAB_COLUMNS
Information about all the roles in the database:
DBA_ROLES
Information about all object privileges in the database:
DBA_TAB_PRIVS
Information about all system privileges granted to all users in the database:
DBA_SYS_PRIVS
Displays all PL/SQL source code in the database:
DBA_SOURCE
Information about all triggers in the database:
DBA_TRIGGERS
Information about object privileges granted to roles
ROLE_TAB_PRIVS
Information about system privileges granted to roles
ROLE_SYS_PRIVS
Information about roles granted to roles
ROLE_ROLE_PRIVS
Information about all tablespaces in the database:
DBA_TABLESPACES
Information about all profiles in the database:
DBA_PROFILES
For all parameters?
V$PARAMETER
General information about the database mounted to your instance:
V$DATABASE
Most information about the performance of the database is kept here:
V$SYSSTAT
Most information about the performance for individual user sessions is stored here:
V$SESSION , V$SESSTAT
Information about online redo logs (2)
V$LOG, V$LOGFILE
Information about datafiles
V$DATAFILE
Basic information about control files, and the two columns it has:
V$CONTROLFILE. STATUS / NAME
An object you can query to obtain a listing of all data dictionary objects (4)
CATALOG, CAT, DICTIONARY, DICT.
When the control file was created, Sequence Number, most recent SCN:
V$DATABASE
Information stored in different sections of the control file, Sequence Number:
V$CONTROLFILE_RECORD_SECTION
To see the names and locations of all control files in the db? (2)
V$PARAMETER. V$CONTROLFILE
Tablespace and Datafiles
Temporary Segments:
Name, tablespace location, and owner of temporary segments:
DBA_SEGMENTS
Size of temporary tablespaces, current number of extents allocated to sort segments, and sort segment high-water mark information. Space usage allocation for temporary segments:
V$SORT_SEGMENT
Types of sorts that are happening currently on the database
V$SORT_USAGE
To see the username corresponding with the session:
V$SESSION
Information about every datafile in the database associated with a temporary tablespace:
DBA_TEMP_FILES
Similar to DBA_TEMP_FILES, this performance view gives Information about every datafile in the database associated with a temporary tablespace:
V$TEMPFILE
Storage Structures
A summary view, contains all types of segments and their storage parameters, space utilization settings:
DBA_SEGMENTS
Tablespace quotas assigned to users:
DBA_TS_QUOTAS
Segment name, type, owner, total bytes of extent, name of tablespace storing the extent:
DBA_EXTENTS
The location and amount of free space by tablespace name:
DBA_FREE_SPACE
The location of free space in the tablespace that has been coalesced:
DBA_FREE_SPACE_COALESCED
Information about datafiles for every tablespace
DBA_DATAFILES
Performance view for information for datafiles for every tablespace
V$DATAFILE
To see the total amount of space allocated to a table?
DBA_EXTENTS
Table creation timestamp, information about the object ID:
DBA_OBJECTS
High water mark, all storage settings for a table, and statistics collected as part of the analyze (for row migration) operation on that table
DBA_TABLES
Information about every column in every table:
DBA_TAB_COLUMNS
To determine how many columns are marked unused for later removal?
DBA_UNUSED_COL_TABS
To find the number of deleted index entries ?
INDEX_STATS
To determine the columns on a table that have been indexed:
DBA_ID_COLUMNS
The dynamic view to show whether the index is being used in a meaningful way?
V$OBJECT_USAGE
To see whether a constraint exists on a particular column?
DBA_CONS_COLUMNS
To see the constraints associated with a particular table:
DBA_CONSTRAINTS
To find the username, ID number, (encrypted) password, default and temporary tablespace information, user profile of a user, password expiry date:
DBA_USERS
To all objects, which objects belong to which users, how many objects a user has created?
DBA_OBJECTS
Resource-usage parameters for a particular profile:
DBA_PROFILES
Identifies all resources in the database and their corresponding cost:
RESOURCE_COST
Identifies system resource limits for individual users:
USER_RESOURCE_LIMITS
Shows all system privileges:
DBA_SYS_PRIVS
Show all object privileges:
DBA_TAB_PRIVS
Shows all privileges in this session available to you as the current user:
SESSION_PRIVS
Views for audits currently taking place are created by this script:
cataudit.sql
a list of audit entries generated by the exists option of the audit command:
DBA_AUDIT_EXISTS
A list of audit entries generated for object audits:
DBA_AUDIT_OBJECT
A list of audit entries generated by session connects and disconnects:
DBA_AUDIT_SESSION
A list of audit entries generated by statement options of the audit command:
DBA_AUDIT_STATEMENT
A list of all entries in the AUD$ table collected by the audit command:
DBA_AUDIT_TRAIL
To determine the roles available in the database, the names of all the roles on the database and if a password is required to use each role:
DBA_ROLES
Names of all users and the roles granted to them:
DBA_ROLE_PRIVS
All the roles and the roles that are granted to them:
ROLE_ROLE_PRIVS
Which system privileges have been granted to a role:
DBA_SYS_PRIVS
All the system privileges granted only to roles:
ROLE_SYS_PRIVS
All the object privileges granted only to roles:
ROLE_TAB_PRIVS
All the roles available in the current session:
SESSION_ROLES
Which object privilege has been granted to a role:
DBA_TAB_PRIVS
To display the value of the NLS_CHARACTERSET parameter:
NLS_DATABASE_PARAMETERS
DAYou can also find a lot of stuff by doing:
SELECT *
FROM dictionary; -
Hi,
We run a heavy batch load in many of our tables. Prior to the load we need to drop the indexes and then re create the indexes.
I worte a dynamic sql like
SELECT 'create index '||owner||'.'||a.index_name||' on '||owner||'.'||a.table_name||'('||column_name||');'
from dba_indexes a, dba_ind_columns b
where a.owner=b.index_owner
and a.table_name=b.table_name
and a.index_name=b.index_name
and a.owner='owner_name'
and a.table_name='table_name';
The problem with this query is that it is giving wrong result for composite indexes.
How to write a query that would pick up composite indexes as well.
Any help will be highly appreciated.
ThanksSID3 wrote:
Are you referring to making the indexes unusable. In this case we have to rebuild them and index rebuilding is a big performance issue especially when millions of rows are involved.
Our DB is 10g R2.And recreating the indexes isn't rebuilding them? ?:| -
How to get information from Oracle's views
Hi,
I need to get information from Oracle's views about:
* in which table's column is set index
* what type of index is on this column
* name of a trigger which exist on a table
* type of trigger (before, after etc)
* trigger status (enable, disable)
Thanks for help.Hi..
One of the best way to know which views to use is doing select * from dict where table_name like 'xxx';
For example in your case you needed to know about the indexes and triggers so
SQL> select * from dictionary where table_name like 'DBA_IND%';
TABLE_NAME COMMENTS
DBA_INDEXES Description for all indexes in the database
*DBA_IND_COLUMNS COLUMNs comprising INDEXes on all TABLEs and CLUSTERs*
DBA_IND_EXPRESSIONS FUNCTIONAL INDEX EXPRESSIONs on all TABLES and CLUSTERS
DBA_INDEXTYPES All indextypes
DBA_INDEXTYPE_COMMENTS Comments for user-defined indextypes
DBA_INDEXTYPE_ARRAYTYPES All array types specified by the indextype
DBA_INDEXTYPE_OPERATORS All indextype operators
DBA_IND_PARTITIONS
DBA_IND_SUBPARTITIONS
DBA_IND_STATISTICS Optimizer statistics for all indexes in the database
10 rows selected.
SQL> select * from dictionary where table_name like 'DBA_TRI%';
TABLE_NAME COMMENTS
DBA_TRIGGERS All triggers in the database
DBA_TRIGGER_COLS Column usage in all triggers
Reading the comments you can know which view to use, then describe the view and use what you need -
SGA Size for 8.1.7.4 32 bit? , some Interview Questions
Hi buddies,
I got some interview questions, might be simple for geeks in DBA. I am in need of answers. Could anyone help me.
Thanks,
Raaj
1) Does windows NT support direct I/O?
Answer: Choose one of the answers that apply
A: No, only AIO
B: Yes, depending on hardware.
C: Yes.
D: No.
2) Can you take a coldbackup from solaris and use it on windows NT?
Answer: Choose one of the answers that apply
A: Yes.
B: Yes if RMAN backup performed from NT server.
C: Yes, after running RMAN convert.
D: No.
3) All of the following will alter the number of checkpoints that occur in one hour on the database, except one. Which is it?
Answer: Choose one of the answers that apply
A: Decreasing tablespace size
B: Decreasing size of redo log members
C: Setting LOG_CHECKPOINT_INTERVAL greater than the size of the redo log file
D: Setting LOG_CHECKPOINT_TIMEOUT to zero
4) The DBA is attempting to back up the Oracle database control file. After
issuing the ALTER DATABASE BACKUP CONTROLFILE TO TRACE command, where can the DBA find the backup control file creation materials Oracle created for him or her ?
Answer: Choose one of the answers that apply
A: USER_DUMP_DEST
B: LOG_ARCHIVE_DEST
C: CORE_DUMP_DEST
D: BACKGROUND_DUMP_DEST
5) What is the most important action a DBA must perform after changing the database from NOARCHIVELOG TO ARCHIVELOG?
Answer: Choose one of the answers that apply
A: Shutdown normal and restart the database
B: Perform a full logical database backup
C: Perform a full offline database backup
D: Manually switch the log files
6) Which of the following choices lists an ALTER USER option that can be executed by the user herself or himself?
Answer: Choose one of the answers that apply
A: DEFAULT TABLESPACE
B: IDENTIFIED BY
C: TEMPORARY TABLESPACE
D: PROFILE
7) You need to view the initialization parameter settings for your Oracle
database. Which of the following choices does not identify a method
you can use to obtain values set for your initialization parameters?
Answer: Choose one of the answers that apply
A: Issue SELECT * FROM DBA_PARAMETERS; from SQL*Plus
B: Issue SELECT * FROM V$PARAMETER; from SQL*Plus
C: Issue SHOW PARAMETERS from Server Manager
D: Use OEM Instance Manager
8) As a result of a media failure, the current online redo log group is corrupted, the database crashes, as the current online group is inaccessible. Which type of incomplete recovery are you most likely to perform ?
Answer: Choose one of the answers that apply
A: Change-based
B: Time-based
C: Recovery using a backup control file
D: Cancel-based
9) User SNOW executes the following statement: SELECT * FROM EMP. This
statement executes successfully, and SNOW can see the output. Table
EMP is owned by user REED. What object would be required in order for
this scenario to happen ?
Answer: Choose one of the answers that apply
A: User SNOW would need the role to view table EMP.
B: User SNOW would need the privileges to view table EMP.
C: User SNOW would need a synonym for table EMP.
D: User SNOW would need the password for table EMP.
10) Which one of the following statements is true?
Answer: Choose one of the answers that apply
A: The request queue is common, and the response queue is different for all the dispatchers.
B: The request queue and response queue are different for all the dispatchers.
C: The request queue is different, and response queue is common for all the dispatchers.
D: The request queue and response queue are common for all the dispatchers.
11) What is the largest SGA size for 8.1.7.4 32 bit?
Answer: Choose one of the answers that apply
A: approximately 2GB
B: approximately 3.5GB
C: approximately 4GB
D: approximately 8GB
E: approximately 16GB
12) The DBA is about to perform some administrative tasks. Specifying the
OPTIMAL parameter has which of the following appropriate uses?
Answer: Choose one of the answers that apply
A: Limiting concurrent users
B: Limiting concurrent transactions
C: Limiting growth of rollback segments
D: Limiting growth of tables
13) If the DBA wants to find information about how often transactions are
wrapping transaction information between multiple rollback segment
extents, where would the DBA look to find that information?
Answer: Choose one of the answers that apply
A: DBA_ROLLBACK_SEGS
B: V$ROLLSTAT
C: V$ROLLNAME
D: DBA_SEGMENTS
14) You have 30 rollback segments in your database, for which
TRANSACTIONS_PER_ ROLLBACK_SEGMENT is set to 49 and
TRANSACTIONS is set to 1000. During periods of heavy usage, about how many rollback segments will be actively used by Oracle?
Answer: Choose one of the answers that apply
A: 50
B: 60
C: 20
D: 30
15) The DBA has a table created with the following statement:
CREATE TABLE EMPL
(EMPID NUMBER(10),
LASTNAME VARCHAR2(40),
RESUME LONG RAW);
The DBA attempts to issue the following statement:
ALTER TABLE EMPL
ADD ( PERF_APPRAISE LONG);
What happens?
Answer: Choose one of the answers that apply
A: The statement succeeds.
B: The statement succeeds, but column is added as VARCHAR2.
C: The statement fails.
D: The statement adds a disabled constraint.
16) The primary key of the EMP table has three columns, EMPID, LASTNAME,
and FIRSTNAME. You issue the following SELECT statement:
SELECT * FROM EMP WHERE LASTNAME = 'HARRIS' AND FIRSTNAME = 'BILLI'
AND EMPID = '5069493';
Where would you look to see if this query will use the index associated
with the primary key?
Answer: Choose one of the answers that apply
A: DBA_IND_COLUMNS
B: DBA_TAB_COLUMNS
C: DBA_INDEXES
D: DBA_CLU_COLUMNS
17) You are configuring your index to be stored in a tablespace. Which of the
following storage parameters are not appropriate for indexes?
Answer: Choose one of the answers that apply
A: OPTIMAL
B: INITIAL
C: PCTINCREASE
D: NEXT
18) You need to set up auditing in an order entry and product shipment
application so that when the ORDER_STATUS column in the ORDERS
table changes to SHIPPED, a record is placed in a special table associated
with a part of the application that gives sales representatives a daily list
of customers to call on a follow-up to make sure the customer is satisfied
with the order. Which of the following choices represents the best way
to perform this auditing?
Answer: Choose one of the answers that apply
A: Statement auditing
B: Object auditing
C: Audit by access
D: Value-based auditing
19) Information in the buffer cache is saved back to disk in each of the
following situations except one. In which situation does this not occur?
Answer: Choose one of the answers that apply
A: When a time-out occurs
B: When a log switch occurs
C: When the shared pool is flushed
D: When a checkpoint occurs
20) In order to allow remote administration of users and tablespaces on an Oracle database, which of the following types of files must exist in the database?
Answer: Choose one of the answers that apply
A: Password file
B: Initialization file
C: Datafile
D: Control file
E: Nothing, SYSDBA privileges are not required for these actions.
21) You are planning the storage requirements for your database. Which of the following is an effect of maintaining a high PCTFREE for a table?
Answer: Choose one of the answers that apply
A: Oracle will manage filling data blocks with new records more actively.
B: Oracle will manage filling data blocks with new records less actively.
C: Oracle will leave more space free in data blocks for existing records.
D: Oracle will leave less space free in data blocks for existing records.
22) You manage database access privileges with roles where possible.
You have granted the SELECT_MY_TABLE role to another role, called
EMP_DEVELOPER. To view information about other roles that may be
granted to EMP_DEVELOPER, which of the following dictionary views
are appropriate?
Answer: Choose one of the answers that apply
A: DBA_ROLE_PRIVS
B: DBA_TAB_PRIVS
C: USER_SYS_PRIVS
D: ROLE_ROLE_PRIVS
23) In order to set your SQL*Plus session so that your NLS_DATE_FORMAT
information is altered in a specific way every time you log into Oracle,
what method would be used?
Answer: Choose one of the answers that apply
A: Setting preferences in the appropriate menu option
B: Creating an appropriate LOGIN.SQL file
C: Issuing the ALTER USER statement
D: Issuing the ALTER TABLE statement
24) You create a sequence with the following statement:
CREATE SEQUENCE MY_SEQ
START WITH 394
INCREMENT BY 12
NOMINVALUE
NOMAXVALUE
NOCACHE
NOCYCLE;
Two users have already issued SQL statements to obtain NEXTVAL, and
four more have issued SQL statements to obtain CURRVAL. If you issue a
SQL statement to obtain the NEXTVAL, what will Oracle return?
Answer: Choose one of the answers that apply
A: 406
B: 418
C: 430
D: 4421.-
2.c
3.a
4.a
5.c
6.b
7.a
8.d
9.b
10.a -
11.a
12.c
13.b
14.d
15.c
16.a -
17.a
18.d
19.c
20.a
21. -
22.d
23.b
24.?
hope it helps u.
Thanks
Kuljeet -
Dear Gurus/Masters/All,
I request your valuble assistance in tuning one of my SQL.
We are using oracle 10.2.04 version and OS is HP-UX 11.23(ia64) version
In my production environment one SQL is taking more time to complete the task. According to EXPLAIN PLAN, i observed that one of it's WHERE condition execution is causing the issue.
I took the explain plan of the WHERE condition which is causing the issue. It is going for full table scan to satisfy the criteria. But a normal index exists on this column.
Main Query WHERE condition and Explain Plan.
SELECT column list ....
FROM
SIEBEL.S_ADDR_PER T1,
SIEBEL.S_PTY_PAY_PRFL T2,
SIEBEL.S_INVLOC T3,
SIEBEL.S_ORDER T4,
SIEBEL.S_ORG_EXT T5,
SIEBEL.S_POSTN T6,
SIEBEL.S_PARTY T7,
SIEBEL.S_PROJ T8,
SIEBEL.S_CON_ADDR T9,
SIEBEL.S_ORG_EXT T10,
SIEBEL.S_USER T11,
SIEBEL.S_DOC_QUOTE T12,
SIEBEL.S_ACCNT_POSTN T13,
SIEBEL.S_INS_CLAIM T14,
SIEBEL.S_USER T15,
SIEBEL.S_ORG_EXT T16,
SIEBEL.S_ASSET T17,
SIEBEL.S_ORDER_TNTX T18,
SIEBEL.S_ORG_EXT_TNTX T19,
SIEBEL.S_PERIOD T20,
SIEBEL.S_DEPOSIT_TNT T21,
SIEBEL.S_ADDR_PER T22,
SIEBEL.S_PAYMENT_TERM T23,
SIEBEL.S_ORG_EXT_X T24,
SIEBEL.S_ORG_EXT T25,
SIEBEL.S_INSCLM_ELMNT T26,
SIEBEL.S_INVOICE T27
WHERE
T25.BU_ID = T10.PAR_ROW_ID (+) AND
T26.INSCLM_ID = T14.ROW_ID (+) AND
T27.ELEMENT_ID = T26.ROW_ID (+) AND
T27.LAST_UPD_BY = T15.PAR_ROW_ID (+) AND
T4.QUOTE_ID = T12.ROW_ID (+) AND
T3.CG_ASSSET_ID = T17.ROW_ID (+) AND
T27.BL_ADDR_ID = T22.ROW_ID (+) AND
T8.BU_ID = T5.PAR_ROW_ID (+) AND
T27.PER_PAY_PRFL_ID = T2.ROW_ID (+) AND
T27.REMIT_ORG_EXT_ID = T16.PAR_ROW_ID (+) AND
T27.PROJ_ID = T8.ROW_ID (+) AND
T27.BL_PERIOD_ID = T20.ROW_ID (+) AND
T27.PAYMENT_TERM_ID = T23.ROW_ID (+) AND
T12.BU_ID = T19.PAR_ROW_ID (+) AND
T27.ACCNT_ID = T25.PAR_ROW_ID (+) AND
T27.ORDER_ID = T18.ROW_ID (+) AND
T4.SRC_INVLOC_ID = T3.ROW_ID (+) AND
T27.ORDER_ID = T4.ROW_ID (+) AND
T27.ACCNT_ID = T24.PAR_ROW_ID (+) AND
T18.PR_DEPOSIT_ID = T21.ROW_ID (+) AND
T27.BL_ADDR_ID = T9.ADDR_PER_ID (+) AND T27.ACCNT_ID = T9.ACCNT_ID (+) AND
T27.BL_ADDR_ID = T1.ROW_ID (+) AND
T25.PR_POSTN_ID = T13.POSITION_ID (+) AND T25.ROW_ID = T13.OU_EXT_ID (+) AND
T13.POSITION_ID = T7.ROW_ID (+) AND
T13.POSITION_ID = T6.PAR_ROW_ID (+) AND
T6.PR_EMP_ID = T11.PAR_ROW_ID (+) AND
(T27.INVC_TYPE_CD = :1)
ORDER BY
T27.INVC_DT;
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 2576210427
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 39M| 71G| | 624M (1)|278:42:59 |
| 1 | SORT ORDER BY | | 39M| 71G| 150G| 624M (1)|278:42:59 |
| 2 | NESTED LOOPS OUTER | | 39M| 71G| | 610M (1)|272:11:24 |
| 3 | NESTED LOOPS OUTER | | 39M| 70G| | 515M (1)|229:48:41 |
| 4 | NESTED LOOPS OUTER | | 39M| 69G| | 483M (1)|215:41:04 |
| 5 | NESTED LOOPS OUTER | | 39M| 68G| | 483M (1)|215:41:04 |
| 6 | NESTED LOOPS OUTER | | 39M| 67G| | 483M (1)|215:41:04 |
| 7 | NESTED LOOPS OUTER | | 39M| 66G| | 406M (1)|181:17:50 |
| 8 | NESTED LOOPS OUTER | | 39M| 65G| | 343M (1)|153:12:57 |
| 9 | NESTED LOOPS OUTER | | 39M| 64G| | 311M (1)|139:04:56 |
| 10 | NESTED LOOPS OUTER | | 39M| 63G| | 185M (1)| 82:37:56 |
| 11 | NESTED LOOPS OUTER | | 39M| 54G| | 108M (1)| 48:11:29 |
| 12 | NESTED LOOPS OUTER | | 39M| 53G| | 108M (1)| 48:11:29 |
| 13 | NESTED LOOPS OUTER | | 39M| 51G| | 76M (1)| 34:03:51 |
| 14 | NESTED LOOPS OUTER | | 39M| 49G| | 76M (1)| 34:03:51 |
| 15 | NESTED LOOPS OUTER | | 39M| 46G| | 76M (1)| 34:03:51 |
| 16 | NESTED LOOPS OUTER | | 39M| 44G| | 76M (1)| 34:03:51 |
| 17 | NESTED LOOPS OUTER | | 39M| 40G| | 65M (1)| 29:25:49 |
| 18 | NESTED LOOPS OUTER | | 39M| 39G| | 65M (1)| 29:25:49 |
| 19 | NESTED LOOPS OUTER | | 39M| 38G| | 65M (1)| 29:25:49 |
| 20 | NESTED LOOPS OUTER | | 39M| 34G| | 65M (1)| 29:17:44 |
| 21 | NESTED LOOPS OUTER | | 39M| 32G| | 65M (1)| 29:17:08 |
| 22 | NESTED LOOPS OUTER | | 39M| 31G| | 65M (1)| 29:09:04 |
| 23 | NESTED LOOPS OUTER | | 39M| 30G| | 2043K (9)| 00:54:42 |
| 24 | NESTED LOOPS OUTER | | 39M| 30G| | 2043K (9)| 00:54:42 |
| 25 | NESTED LOOPS OUTER | | 39M| 25G| | 2015K (7)| 00:53:57 |
| 26 | NESTED LOOPS OUTER | | 39M| 22G| | 2015K (7)| 00:53:57 |
| 27 | NESTED LOOPS OUTER | | 39M| 16G| | 2015K (7)| 00:53:57 |
|* 28 | TABLE ACCESS FULL | S_INVOICE | 39M| 9G| | 2015K (7)| 00:53:57 |
| 29 | TABLE ACCESS BY INDEX ROWID| S_PROJ | 1 | 188 | | 1 (0)| 00:00:01 |
|* 30 | INDEX UNIQUE SCAN | S_PROJ_P1 | 1 | | | 1 (0)| 00:00:01 |
| 31 | TABLE ACCESS BY INDEX ROWID | S_PAYMENT_TERM | 1 | 156 | | 1 (0)| 00:00:01 |
|* 32 | INDEX UNIQUE SCAN | S_PAYMENT_TERM_P1 | 1 | | | 1 (0)| 00:00:01 |
| 33 | TABLE ACCESS BY INDEX ROWID | S_INSCLM_ELMNT | 1 | 77 | | 1 (0)| 00:00:01 |
|* 34 | INDEX UNIQUE SCAN | S_INSCLM_ELMNT_P1 | 1 | | | 1 (0)| 00:00:01 |
| 35 | TABLE ACCESS BY INDEX ROWID | S_INS_CLAIM | 1 | 134 | | 1 (0)| 00:00:01 |
|* 36 | INDEX UNIQUE SCAN | S_INS_CLAIM_P1 | 1 | | | 1 (0)| 00:00:01 |
| 37 | TABLE ACCESS BY INDEX ROWID | S_PERIOD | 1 | 19 | | 1 (0)| 00:00:01 |
|* 38 | INDEX UNIQUE SCAN | S_PERIOD_P1 | 1 | | | 1 (0)| 00:00:01 |
| 39 | TABLE ACCESS BY INDEX ROWID | S_USER | 1 | 25 | | 2 (0)| 00:00:01 |
|* 40 | INDEX UNIQUE SCAN | S_USER_U2 | 1 | | | 1 (0)| 00:00:01 |
| 41 | TABLE ACCESS BY INDEX ROWID | S_ORDER_TNTX | 1 | 26 | | 2 (0)| 00:00:01 |
|* 42 | INDEX UNIQUE SCAN | S_ORDER_TNTX_P1 | 1 | | | 1 (0)| 00:00:01 |
| 43 | TABLE ACCESS BY INDEX ROWID | S_DEPOSIT_TNT | 1 | 45 | | 1 (0)| 00:00:01 |
|* 44 | INDEX UNIQUE SCAN | S_DEPOSIT_TNT_P1 | 1 | | | 1 (0)| 00:00:01 |
| 45 | TABLE ACCESS BY INDEX ROWID | S_ORDER | 1 | 101 | | 2 (0)| 00:00:01 |
|* 46 | INDEX UNIQUE SCAN | S_ORDER_P1 | 1 | | | 1 (0)| 00:00:01 |
| 47 | TABLE ACCESS BY INDEX ROWID | S_INVLOC | 1 | 47 | | 1 (0)| 00:00:01 |
|* 48 | INDEX UNIQUE SCAN | S_INVLOC_P1 | 1 | | | 1 (0)| 00:00:01 |
| 49 | TABLE ACCESS BY INDEX ROWID | S_DOC_QUOTE | 1 | 21 | | 1 (0)| 00:00:01 |
|* 50 | INDEX UNIQUE SCAN | S_DOC_QUOTE_P1 | 1 | | | 1 (0)| 00:00:01 |
|* 51 | TABLE ACCESS FULL | S_ORG_EXT_TNTX | 1 | 94 | | 0 (0)| 00:00:01 |
| 52 | TABLE ACCESS BY INDEX ROWID | S_PTY_PAY_PRFL | 1 | 74 | | 1 (0)| 00:00:01 |
|* 53 | INDEX UNIQUE SCAN | S_PTY_PAY_PRFL_P1 | 1 | | | 1 (0)| 00:00:01 |
| 54 | TABLE ACCESS BY INDEX ROWID | S_ADDR_PER | 1 | 84 | | 2 (0)| 00:00:01 |
|* 55 | INDEX UNIQUE SCAN | S_ADDR_PER_P1 | 1 | | | 1 (0)| 00:00:01 |
| 56 | TABLE ACCESS BY INDEX ROWID | S_ADDR_PER | 1 | 57 | | 1 (0)| 00:00:01 |
|* 57 | INDEX UNIQUE SCAN | S_ADDR_PER_P1 | 1 | | | 1 (0)| 00:00:01 |
| 58 | TABLE ACCESS BY INDEX ROWID | S_ORG_EXT | 1 | 32 | | 1 (0)| 00:00:01 |
|* 59 | INDEX UNIQUE SCAN | S_ORG_EXT_U3 | 1 | | | 1 (0)| 00:00:01 |
| 60 | TABLE ACCESS BY INDEX ROWID | S_ORG_EXT | 1 | 32 | | 1 (0)| 00:00:01 |
|* 61 | INDEX UNIQUE SCAN | S_ORG_EXT_U3 | 1 | | | 1 (0)| 00:00:01 |
| 62 | TABLE ACCESS BY INDEX ROWID | S_ORG_EXT | 1 | 256 | | 2 (0)| 00:00:01 |
|* 63 | INDEX UNIQUE SCAN | S_ORG_EXT_U3 | 1 | | | 1 (0)| 00:00:01 |
| 64 | TABLE ACCESS BY INDEX ROWID | S_ACCNT_POSTN | 1 | 32 | | 3 (0)| 00:00:01 |
|* 65 | INDEX RANGE SCAN | S_ACCNT_POSTN_U1 | 1 | | | 2 (0)| 00:00:01 |
| 66 | TABLE ACCESS BY INDEX ROWID | S_POSTN | 1 | 21 | | 1 (0)| 00:00:01 |
|* 67 | INDEX UNIQUE SCAN | S_POSTN_U2 | 1 | | | 1 (0)| 00:00:01 |
| 68 | TABLE ACCESS BY INDEX ROWID | S_USER | 1 | 25 | | 2 (0)| 00:00:01 |
|* 69 | INDEX UNIQUE SCAN | S_USER_U2 | 1 | | | 1 (0)| 00:00:01 |
| 70 | TABLE ACCESS BY INDEX ROWID | S_ORG_EXT | 1 | 32 | | 2 (0)| 00:00:01 |
|* 71 | INDEX UNIQUE SCAN | S_ORG_EXT_U3 | 1 | | | 1 (0)| 00:00:01 |
| 72 | TABLE ACCESS BY INDEX ROWID | S_ASSET | 1 | 24 | | 2 (0)| 00:00:01 |
|* 73 | INDEX UNIQUE SCAN | S_ASSET_P1 | 1 | | | 2 (0)| 00:00:01 |
| 74 | TABLE ACCESS BY INDEX ROWID | S_CON_ADDR | 1 | 36 | | 3 (0)| 00:00:01 |
|* 75 | INDEX RANGE SCAN | S_CON_ADDR_U1 | 1 | | | 2 (0)| 00:00:01 |
|* 76 | INDEX UNIQUE SCAN | S_PARTY_P1 | 1 | 12 | | 1 (0)| 00:00:01 |
| 77 | TABLE ACCESS BY INDEX ROWID | S_ORG_EXT_X | 1 | 37 | | 2 (0)| 00:00:01 |
|* 78 | INDEX RANGE SCAN | S_ORG_EXT_X_U1 | 1 | | | 2 (0)| 00:00:01 |
Predicate Information (identified by operation id):
28 - filter("T27"."INVC_TYPE_CD"=:1)
30 - access("T27"."PROJ_ID"="T8"."ROW_ID"(+))
32 - access("T27"."PAYMENT_TERM_ID"="T23"."ROW_ID"(+))
34 - access("T27"."ELEMENT_ID"="T26"."ROW_ID"(+))
36 - access("T26"."INSCLM_ID"="T14"."ROW_ID"(+))
38 - access("T27"."BL_PERIOD_ID"="T20"."ROW_ID"(+))
40 - access("T27"."LAST_UPD_BY"="T15"."PAR_ROW_ID"(+))
42 - access("T27"."ORDER_ID"="T18"."ROW_ID"(+))
44 - access("T18"."PR_DEPOSIT_ID"="T21"."ROW_ID"(+))
46 - access("T27"."ORDER_ID"="T4"."ROW_ID"(+))
48 - access("T4"."SRC_INVLOC_ID"="T3"."ROW_ID"(+))
50 - access("T4"."QUOTE_ID"="T12"."ROW_ID"(+))
51 - filter("T12"."BU_ID"="T19"."PAR_ROW_ID"(+))
53 - access("T27"."PER_PAY_PRFL_ID"="T2"."ROW_ID"(+))
55 - access("T27"."BL_ADDR_ID"="T1"."ROW_ID"(+))
57 - access("T27"."BL_ADDR_ID"="T22"."ROW_ID"(+))
59 - access("T8"."BU_ID"="T5"."PAR_ROW_ID"(+))
61 - access("T27"."REMIT_ORG_EXT_ID"="T16"."PAR_ROW_ID"(+))
63 - access("T27"."ACCNT_ID"="T25"."PAR_ROW_ID"(+))
65 - access("T25"."ROW_ID"="T13"."OU_EXT_ID"(+) AND "T25"."PR_POSTN_ID"="T13"."POSITION_ID"(+))
67 - access("T13"."POSITION_ID"="T6"."PAR_ROW_ID"(+))
69 - access("T6"."PR_EMP_ID"="T11"."PAR_ROW_ID"(+))
71 - access("T25"."BU_ID"="T10"."PAR_ROW_ID"(+))
73 - access("T3"."CG_ASSSET_ID"="T17"."ROW_ID"(+))
75 - access("T27"."BL_ADDR_ID"="T9"."ADDR_PER_ID"(+) AND "T27"."ACCNT_ID"="T9"."ACCNT_ID"(+))
filter("T27"."ACCNT_ID"="T9"."ACCNT_ID"(+))
76 - access("T13"."POSITION_ID"="T7"."ROW_ID"(+))
78 - access("T27"."ACCNT_ID"="T24"."PAR_ROW_ID"(+))
117 rows selected.SQL> EXPLAIN PLAN FOR
2 SELECT * FROM SIEBEL.S_INVOICE T27 WHERE T27.INVC_TYPE_CD=:1;
Explained.
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
PLAN_TABLE_OUTPUT
Plan hash value: 1810797629
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 39M| 9G| 2016K (8)| 00:53:59 |
|* 1 | TABLE ACCESS FULL| S_INVOICE | 39M| 9G| 2016K (8)| 00:53:59 |
Predicate Information (identified by operation id):
1 - filter("T27"."INVC_TYPE_CD"=:1)
13 rows selected.Edited by: KODS on Feb 13, 2013 1:08 PMDear Ivan,
Please find the details below.
select * from dba_indexes where index_name = 'S_INVOICE_U1';
OWNER INDEX_NAME INDEX_TYPE TABLE_OWNER TABLE_NAME TABLE_TYPE UNIQUENESS COMPRESSION PREFIX_LENGTH TABLESPACE_NAME INI_TRANS MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE PCT_THRESHOLD INCLUDE_COLUMN FREELISTS FREELIST_GROUPS PCT_FREE LOGGING BLEVEL LEAF_BLOCKS DISTINCT_KEYS AVG_LEAF_BLOCKS_PER_KEY AVG_DATA_BLOCKS_PER_KEY CLUSTERING_FACTOR STATUS NUM_ROWS SAMPLE_SIZE LAST_ANALYZED DEGREE INSTANCES PARTITIONED TEMPORARY GENERATED SECONDARY BUFFER_POOL USER_STATS DURATION PCT_DIRECT_ACCESS ITYP_OWNER ITYP_NAME PARAMETERS GLOBAL_STATS DOMIDX_STATUS DOMIDX_OPSTATUS FUNCIDX_STATUS JOIN_INDEX IOT_REDUNDANT_PKEY_ELIM DROPPED
SIEBEL S_INVOICE_U1 NORMAL SIEBEL S_INVOICE TABLE UNIQUE DISABLED CRMSBL_AEM_INDEX 2 255 65536 1 2147483645 10 NO 3 902796 196739390 1 1 125598294 VALID 196739390 196739390 10-02-13 1 1 NO N N N DEFAULT NO YES NO NO NO
select * from dba_ind_columns where index_name = 'S_INVOICE_U1' order by column_position;
INDEX_OWNER INDEX_NAME TABLE_OWNER TABLE_NAME COLUMN_NAME COLUMN_POSITION COLUMN_LENGTH CHAR_LENGTH DESCEND
SIEBEL S_INVOICE_U1 SIEBEL S_INVOICE INVC_NUM 1 200 50 ASC
SIEBEL S_INVOICE_U1 SIEBEL S_INVOICE INVC_TYPE_CD 2 120 30 ASC
SIEBEL S_INVOICE_U1 SIEBEL S_INVOICE CONFLICT_ID 3 60 15 ASC -
Query taking long time for EXTRACTING the data more than 24 hours
Hi ,
Query taking long time for EXTRACTING the data more than 24 hours please find the query and explain plan details below even indexes avilable on table's goe's to FULL TABLE SCAN. please suggest me.......
SQL> explain plan for select a.account_id,round(a.account_balance,2) account_balance,
2 nvl(ah.invoice_id,ah.adjustment_id) transaction_id,
to_char(ah.effective_start_date,'DD-MON-YYYY') transaction_date,
to_char(nvl(i.payment_due_date,
to_date('30-12-9999','dd-mm-yyyy')),'DD-MON-YYYY')
due_date, ah.current_balance-ah.previous_balance amount,
decode(ah.invoice_id,null,'A','I') transaction_type
3 4 5 6 7 8 from account a,account_history ah,invoice i_+
where a.account_id=ah.account_id
and a.account_type_id=1000002
and round(a.account_balance,2) > 0
and (ah.invoice_id is not null or ah.adjustment_id is not null)
and ah.CURRENT_BALANCE > ah.previous_balance
and ah.invoice_id=i.invoice_id(+)
AND a.account_balance > 0
order by a.account_id,ah.effective_start_date desc; 9 10 11 12 13 14 15 16
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)|
| 0 | SELECT STATEMENT | | 544K| 30M| | 693K (20)|
| 1 | SORT ORDER BY | | 544K| 30M| 75M| 693K (20)|
|* 2 | HASH JOIN | | 544K| 30M| | 689K (20)|
|* 3 | TABLE ACCESS FULL | ACCOUNT | 20080 | 294K| | 6220 (18)|
|* 4 | HASH JOIN OUTER | | 131M| 5532M| 5155M| 678K (20)|
|* 5 | TABLE ACCESS FULL| ACCOUNT_HISTORY | 131M| 3646M| | 197K (25)|
| 6 | TABLE ACCESS FULL| INVOICE | 262M| 3758M| | 306K (18)|
Predicate Information (identified by operation id):
2 - access("A"."ACCOUNT_ID"="AH"."ACCOUNT_ID")
3 - filter("A"."ACCOUNT_TYPE_ID"=1000002 AND "A"."ACCOUNT_BALANCE">0 AND
ROUND("A"."ACCOUNT_BALANCE",2)>0)
4 - access("AH"."INVOICE_ID"="I"."INVOICE_ID"(+))
5 - filter("AH"."CURRENT_BALANCE">"AH"."PREVIOUS_BALANCE" AND ("AH"."INVOICE_ID"
IS NOT NULL OR "AH"."ADJUSTMENT_ID" IS NOT NULL))
22 rows selected.
Index Details:+_
SQL> select INDEX_OWNER,INDEX_NAME,COLUMN_NAME,TABLE_NAME from dba_ind_columns where
2 table_name in ('INVOICE','ACCOUNT','ACCOUNT_HISTORY') order by 4;
INDEX_OWNER INDEX_NAME COLUMN_NAME TABLE_NAME
OPS$SVM_SRV4 P_ACCOUNT ACCOUNT_ID ACCOUNT
OPS$SVM_SRV4 U_ACCOUNT_NAME ACCOUNT_NAME ACCOUNT
OPS$SVM_SRV4 U_ACCOUNT CUSTOMER_NODE_ID ACCOUNT
OPS$SVM_SRV4 U_ACCOUNT ACCOUNT_TYPE_ID ACCOUNT
OPS$SVM_SRV4 I_ACCOUNT_ACCOUNT_TYPE ACCOUNT_TYPE_ID ACCOUNT
OPS$SVM_SRV4 I_ACCOUNT_INVOICE INVOICE_ID ACCOUNT
OPS$SVM_SRV4 I_ACCOUNT_PREVIOUS_INVOICE PREVIOUS_INVOICE_ID ACCOUNT
OPS$SVM_SRV4 U_ACCOUNT_NAME_ID ACCOUNT_NAME ACCOUNT
OPS$SVM_SRV4 U_ACCOUNT_NAME_ID ACCOUNT_ID ACCOUNT
OPS$SVM_SRV4 I_LAST_MODIFIED_ACCOUNT LAST_MODIFIED ACCOUNT
OPS$SVM_SRV4 I_ACCOUNT_INVOICE_ACCOUNT INVOICE_ACCOUNT_ID ACCOUNT
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_ACCOUNT ACCOUNT_ID ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_ACCOUNT SEQNR ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_INVOICE INVOICE_ID ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_ADINV INVOICE_ID ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_CIA CURRENT_BALANCE ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_CIA INVOICE_ID ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_CIA ADJUSTMENT_ID ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_CIA ACCOUNT_ID ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_LMOD LAST_MODIFIED ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_ADINV ADJUSTMENT_ID ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_PAYMENT PAYMENT_ID ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_ADJUSTMENT ADJUSTMENT_ID ACCOUNT_HISTORY
OPS$SVM_SRV4 I_ACCOUNT_HISTORY_APPLIED_DT APPLIED_DATE ACCOUNT_HISTORY
OPS$SVM_SRV4 P_INVOICE INVOICE_ID INVOICE
OPS$SVM_SRV4 U_INVOICE CUSTOMER_INVOICE_STR INVOICE
OPS$SVM_SRV4 I_LAST_MODIFIED_INVOICE LAST_MODIFIED INVOICE
OPS$SVM_SRV4 U_INVOICE_ACCOUNT ACCOUNT_ID INVOICE
OPS$SVM_SRV4 U_INVOICE_ACCOUNT BILL_RUN_ID INVOICE
OPS$SVM_SRV4 I_INVOICE_BILL_RUN BILL_RUN_ID INVOICE
OPS$SVM_SRV4 I_INVOICE_INVOICE_TYPE INVOICE_TYPE_ID INVOICE
OPS$SVM_SRV4 I_INVOICE_CUSTOMER_NODE CUSTOMER_NODE_ID INVOICE
32 rows selected.
Regards,
Bathula
Oracle-DBAI have some suggestions. But first, you realize that you have some redundant indexes, right? You have an index on account(account_name) and also account(account_name, account_id), and also account_history(invoice_id) and account_history(invoice_id, adjustment_id). No matter, I will suggest some new composite indexes.
Also, you do not need two lines for these conditions:
and round(a.account_balance, 2) > 0
AND a.account_balance > 0
You can just use: and a.account_balance >= 0.005
So the formatted query isselect a.account_id,
round(a.account_balance, 2) account_balance,
nvl(ah.invoice_id, ah.adjustment_id) transaction_id,
to_char(ah.effective_start_date, 'DD-MON-YYYY') transaction_date,
to_char(nvl(i.payment_due_date, to_date('30-12-9999', 'dd-mm-yyyy')),
'DD-MON-YYYY') due_date,
ah.current_balance - ah.previous_balance amount,
decode(ah.invoice_id, null, 'A', 'I') transaction_type
from account a, account_history ah, invoice i
where a.account_id = ah.account_id
and a.account_type_id = 1000002
and (ah.invoice_id is not null or ah.adjustment_id is not null)
and ah.CURRENT_BALANCE > ah.previous_balance
and ah.invoice_id = i.invoice_id(+)
AND a.account_balance >= .005
order by a.account_id, ah.effective_start_date desc;You will probably want to select:
1. From ACCOUNT first (your smaller table), for which you supply a literal on account_type_id. That should limit the accounts retrieved from ACCOUNT_HISTORY
2. From ACCOUNT_HISTORY. We want to limit the records as much as possible on this table because of the outer join.
3. INVOICE we want to access last because it seems to be least restricted, it is the biggest, and it has the outer join condition so it will manufacture rows to match as many rows as come back from account_history.
Try the query above after creating the following composite indexes. The order of the columns is important:create index account_composite_i on account(account_type_id, account_balance, account_id);
create index acct_history_comp_i on account_history(account_id, invoice_id, adjustment_id, current_balance, previous_balance, effective_start_date);
create index invoice_composite_i on invoice(invoice_id, payment_due_date);All the columns used in the where clause will be indexed, in a logical order suited to the needs of the query. Plus each selected column is indexed as well so that we should not need to touch the tables at all to satisfy the query.
Try the query after creating these indexes.
A final suggestion is to try larger sort and hash area sizes and a manual workarea policy.alter session set workarea_size_policy = manual;
alter session set sort_area_size = 2147483647;
alter session set hash_area_size = 2147483647; -
How to find out index from table?
Hi all,
I've tried to create indexes to some columns from some tables to use for Oracle Text.
I ve got a error message saying that I can not create an index:
"cannot create multiple domain indexes on a column list using same indextype".
I was wondering if an index already exists for that column, how do I find out the name of the index that points to that paticular colum?
Thanks a lot
E.Check the view dba_ind_columns
That will tell you.
something like;
select index_name, column_position, column_name from dba_ind_columns
where table_name = '<table name>'
order by 1,2
Maybe you are looking for
-
I want to connect to a bluetooth enabled device but don't know how
I don't know how to connect to my bluetooth enabled device. Please help.
-
SUN Cluster 3.2, Solaris 10, Corrupted IPMP group on one node.
Hello folks, I recently made a network change on nodename2 to add some resilience to IPMP (adding a second interface but still using a single IP address). After a reboot, I cannot keep this host from rebooting. For the one minute that it stays up, I
-
No option to create a .Mac account type
I've noticed that I no longer have the option available to create a .Mac account type. Only IMAP, POP and Exchange are available. This used to work ok, but since I had some mail problems a while ago and I was deleting the plist files, etc, and re-ins
-
Iа somebody can instruct me how to install "old" airport express 5.6.1 on Lion 10.7.4 ?
-
How can i see the error message?
hi, i have written a procedure in the database 10g, with my own error, and it works. but, when my exception occurs, i want to see my ora-20000-message in the footer of the isql-screen in the same way like normal ora-errors do it. because, now the cod