Version 4.0.0.12 (EA) - functional indexes of a table are listed twice
Hello,
it seems that functional indexes are listed twice if there are two functions within the index columns.....
Example (Content from the indexes tab of the table view):
owner ....._PK UNIQUE VALID NORMAL N NO
NO ....._UUID
owner ....._UI1 UNIQUE VALID FUNCTION-BASED NORMAL N NO ENABLED NO SYS_NC00016$, SYS_NC00017$, ....._ID, ....._PLAN_ID SYS_EXTRACT_UTC("....._START")
owner ....._UI1 UNIQUE VALID FUNCTION-BASED NORMAL N NO ENABLED NO SYS_NC00016$, SYS_NC00017$, ....._ID, ....._PLAN_ID SYS_EXTRACT_UTC("....._END")
Both functions are in the same index "....._UI1".
The detail panel shows the same details.
MPf_dba&dataGmbH wrote:
Hello,
it seems that functional indexes are listed twice if there are two functions within the index columns.....
Example (Content from the indexes tab of the table view):
owner ....._PK UNIQUE VALID NORMAL N NO
NO ....._UUID
owner ....._UI1 UNIQUE VALID FUNCTION-BASED NORMAL N NO ENABLED NO SYS_NC00016$, SYS_NC00017$, ....._ID, ....._PLAN_ID SYS_EXTRACT_UTC("....._START")
owner ....._UI1 UNIQUE VALID FUNCTION-BASED NORMAL N NO ENABLED NO SYS_NC00016$, SYS_NC00017$, ....._ID, ....._PLAN_ID SYS_EXTRACT_UTC("....._END")
Both functions are in the same index "....._UI1".
The detail panel shows the same details.
What version of SQL*Developer?
I am using 3.2.20.09 and created 2 function-based indexes on a practice employee table, upper() on both first and last names. When displaying indexes through the table display using the Indexes tab and through the object navigator using indexes I only see each index once.
On a second pass I created a third composite index with upper on both first and last names and got the results similar to those you describe in both places. The column names (expression name in the table index pane) were different.
Similar Messages
-
Checking a functional index on a table and its metadata
Hi,
I have a functional based normal index (unique) defined on a table which uses a decode function and a combination of the columns of a table.
Eg : decode (status, 'A', column1 || column 2, column1 || column2 || column3)
Now my question is, how do we query these functional indexes from the database to see what exactly the function is...
On the database when I run a query :-
select from all_indexes where index_name = :index_name,*
it retrieves the code name of the index stored as ncs$00025 (don't remember the exact value).
How do I find out what exactly the function is? (from which table)
and is there any way that I can query the data that has been indexed by this unique index so that I can verify why the unique constraint is being violated in some cases?
Thanks and Regards,
Suyashhow do we query these functional indexes from the database to see what exactly the function is...
select * from user_ind_expressions -
Issue with using N'...' values in a where clause against a function index
We have a table that is defined with non Unicode columns with a UPPER(..) function index on the index column (to allow searching in any alphabetic case)
e.g.
create table my_table
index_column varchar2(20),
desc_column varchar2(40)
create index my_table_idx as on my_table(UPPER(index_column));
there is approx. > 10 million rows in this table
The issue we have is that when we do the following select
select index_column, desc_column from my_table
where upper(index_column) = 'SOME VALUE'; this statement runs in approx 0.03 seconds which is great
But we also have some statements that run as
select index_column, desc_column from my_table
where upper(index_column) = N'SOME VALUE'; notice the N'...' string (unicode) value used. This ends up doing a full table scan (> 5 seconds)
So... the question is how can i make this select statement passing in a Unicode string value hit this function based UPPER index? Is there anyway?
I have tried these extra indexes - to no avail
create index my_table_idx as on my_table(UPPER(CAST(index_column as nvarchar2(20)));
and
create index my_table_idx as on my_table(UPPER(COMPOSE(index_column)));
I assumed Oracle should have done and implicit conversion back to a non unicode string value and then passed that value into the UPPER(...) function index, but it appears as though Oracle isn't recognizing that the column is a different type (varchar2 vs nvarchar2)
Any help greatly appreciated?Horrible amount of irrelevant tags, and the only thing relevant , the four digit version, is of course not mentioned.
Also the characterset of the database is relevant.
As far as I know in 11g and higher one no longer needs the N'<string construct>'
As to implicit conversion
assume <number_column> = '9'
Oracle always converts this into
to_char(<number_column>='9'
Same applies to your case.
Try leaving out the N, check whether it works and whether your function based index is used.
Sybrand Bakker
Senior Oracle DBA -
I am trying to use a function index and am having trouble. I built the index successfully using the syntax:
CREATE INDEX COUNTRY_INDX1 ON COUNTRY(Upper(country_name));
Then, I submitted a query such as:
SELECT * FROM COUNTRY WHERE country_name = 'USA';
I computed EXPLAIN PLAN and it still does a FULL access of the table. If I do something like Upper(country_name) in the where clause, it still doesn't find the correct index.
Do I need to form my query differently to use the Function Index I created?
Thanks so much in advance!!!SQL> desc emp
Name Null? Type
EMPNO NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> create index idx_emp_ename on emp(upper(ename)) ;
Index created.
SQL> analyze table emp compute statistics for table for all indexed columns ;
Table analyzed.
SQL> exec dbms_stats.set_table_stats(user, 'EMP', numblks => 100000) ;
PL/SQL procedure successfully completed.
SQL> set autotrace traceonly
SQL> select * from emp where upper(ename) = 'A%' ;
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=60 Card=1 Bytes=40)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMP' (Cost=60 Card=1 Byt
es=40)
2 1 INDEX (RANGE SCAN) OF 'IDX_EMP_ENAME' (NON-UNIQUE) (Cost
=2 Card=1)
SQL> -
Function based indexes on object tables
Hi,
I am trying to create a function based index on an object table. I am getting the following error:
SQL> create index cell1_indx on cell1(create_cell1(id)) indextype is mdsys.spatial_index;
create index cell1_indx on cell1(create_cell1(id)) indextype is mdsys.spatial_index
ERROR at line 1:
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-13249: internal error in Spatial index: [mdidxrbd]
ORA-13249: Error in Spatial index: index build failed
ORA-13249: Stmt-Execute Failure: SELECT num_rows from all_tables where owner='ASHE' and table_name=
'CELL1'
ORA-06512: at "MDSYS.SDO_INDEX_METHOD_9I", line 7
ORA-06512: at line 1
Here cell1 is an object table.
Is the procedure for creating function based indexes on object tables different from relational tables?
ChinniOne of the many new features in Oracle 8i is the Function-Based Index (we will refrain from using FBI, but only just). This allows the DBA to create indexes on functions or expressions; these functions can be user generated pl/sql functions, standard SQL functions (non-aggregate only) or even a C callout.
A classic problem the DBA faces in SQL Tuning is how to tune those queries that use function calls in the where clause, and result in indexes created on these columns not to be used.
Example
Standard B-Tree index on SURNAME with cost based optimizer
create index non_fbi on sale_contacts (surname);
analyze index non_fbi compute statistics;
analyze table sale_contacts compute statistics;
SELECT count(*) FROM sale_contacts
WHERE UPPER(surname) = 'ELLISON';
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=1 Bytes=17)
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'SALES_CONTACTS' (Cost=3 Card=16 Bytes=272)
Now we use a function based index
create index fbi on sale_contacts (UPPER(surname));
analyze index fbi compute statistics;
analyze table sale_contacts compute statistics;
SELECT count(*) FROM sale_contacts WHERE UPPER(surname) = 'ELLISON';
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=17)
1 0 SORT (AGGREGATE)
2 1 INDEX (RANGE SCAN) OF 'FBI' (NON-UNIQUE) (Cost=2 Card=381 Bytes=6477)
The function-based index has forced the optimizer to use index range scans (retuning zero or more rowids) on the surname column rather than doing a full table scan (non-index lookup). Optimal performance does vary depending on table size, uniqueness and selectivity of columns, use of fast full table scans etc. Therefore try both methods to gain optimal performance in your database.
It is important to remember that the function-based B*Tree index does not store the expression results in the index but uses an "expression tree". The optimizer performs expression matching by parsing the expression used in the SQL statement and comparing the results against the expression-tree values in the function-based index. This comparison IS case sensitive (ignores spaces) and therefore your function-based index expressions should match expressions used in the SQL statement where clauses.
Init.ora Parameters
The following parameter must be set in your parameter file: QUERY_REWRITE_INTEGRITY = TRUSTED
QUERY_REWRITE_ENABLED = TRUE
COMPATIBLE = 8.1.0.0.0 (or higher)
Grants
Grants To create function-based indexes the user must be granted CREATE INDEX and QUERY REWRITE, or alternatively be granted CREATE ANY INDEX and GLOBAL QUERY REWRITE. The index owner must have EXECUTE access on the function used for the index. If execute access is revoked then the function-based index will be "disabled" (see dba_indexes).
Disabled Indexes
If your function-based index has a status of "disabled" the DBA can do one of the following:
a) drop and create the index (take note of its current settings)
b) alter index enable, function-based indexes only, also use disable keyword as required
c) alter index unusable.
Queries on a DISABLED index fail if the optimizer chooses to use the index.Here is an example ORA error:
ERROR at line 1: ORA-30554: function-based index MYUSER.FBI is disabled.
All DML operations on a DISABLED index also fail unless the index is also marked UNUSABLE and the initialization parameter SKIP_UNUSABLE_INDEXES is set to true.
Some more Examples
CREATE INDEX expression_ndx
ON mytable ((mycola + mycolc) * mycolb);
SELECT mycolc FROM mytable
WHERE (mycola + mycolc) * mycolb <= 256;
..or a composite index..
CREATE INDEX example_ndx
ON myexample (mycola, UPPER(mycolb), mycolc);
SELECT mycolc FROM myexample
WHERE mycola = 55 AND UPPER(mycolb) = 'JONES';
Restriction & Rule Summary
The following restrictions apply to function based indexes. You may not index:
a) LOB columns
b) REF
c) Nested table column
d) Objects types with any of the above data types.
Function-based indexes must always follow these rules:
a) Cost Based optimizer only, must generate statistics after the index is created
b) Can not store NULL values (function can not return NULL under any circumstance)
c) If a user defined pl/sql routine is used for the function-based index, and is invalidated, the index will become "disabled"
d) Functions must be deterministic (always return the same value for a known input)
e) The index owner must have "execute" access on function used in the function-based index. Revocation of the privilege will render the index "disabled"
f) May have a B-Tree and Bitmap index type only
g) Can not use expressions that are based on aggregate functions, ie. SUM, AVG etc.
h) To alter a function-based index as enabled, the function used must be valid, deterministic and the signature of the function matches the signature of the function when it was created.
Joel P�rez -
downloaded 11.0.3 (42) 64 bit to my MacBook Pro and it crashes every time I select a song a use the 'add to' function to add to a play list. It's never done this before, is it a bug with the new version?
You could just disable updates. Change these settings in about:config.
* app.update.auto - set to false
* app.update.enabled - set to false
You can still check for updates with the "Check for Updates" button in the About Firefox window, but it will download the update file anyway if there is an update available. You can also check which is the current release from here:
* http://sjc.mozilla.com/en-US/firefox/new/ -
Privilege need to create functional index
Greeting gurus?
What privilege I needed for create functional index
I am writing a definer righted procedure to create index however when creating functional index, it gives me ora-0131 insufficent but unique, bitmap and reverse index works
and I granted create any index and create any indextype already. what else is missing ?CREATE INDEX
To create a function-based index, in addition to the prerequisites for creating a conventional index, if the index is based on user-defined functions, then those functions must be marked DETERMINISTIC. Also, you must have the EXECUTE object privilege on any user-defined function(s) used in the function-based index if those functions are owned by another user. -
Export vCard is not working on Chrome; on Chrome Version 40.0.2214.93 m; function works on Mozilaa and IE; is anyone else seeing this same issue?
Update; my OS is Windows 7 Pro 64-bit v1.08.00.AF B09 SP1. Same issue reported (by 7 others) at => https://discussions.apple.com/thread/6779059
-
Does the trial version of Lightroom have the full functionality as the paid version
Does the trial version of Lightroom have the full functionality as the paid version please
Yes, it has. if you have specific issues, simply explain them.
Mylenium -
Maintaining functional index.
Hi ,
I have created a functional index on a huge table.the problem is every time
if function gets updated , index will be disabled and even the select queries will
fail giving exception.Can there be any effective way of maintaining the index??Presumably there is a person modifying the function in the (hopefully) rare case that it needs to be changed. It should be a part of your change control procedures that any modifications to this function means that the index needs to be re-built.
I may be wrong, but I do not see any way to automatically re-build an index when the function it is based on changes.
John -
9i Standard Ed has "functional index"?
According to Oracle White Paper "Oracle9i Database Product Family", 9i SE has "functional index" feature. But V$OPTION in a complete 9i SE installation tells otherwise. Anyone knows why?
Also, "Managed Standby" is not available in 9i SE either.Your posting doesn't seem to be related to how to do something in Web Dynpro. This formum isn't intended for all questions about any application that might happen to be implemented in WDA. If your question is more about how the inner functionality of a business transaction works, there are other forums where you would have a higher chance of receiving a better response.
-
Crash in evaopn2 with functional indexes
Hi,
I have a problem with 3rd party application running on oracle 10.2.0.3. When a particular statement is executed, it triggers error in evaopn2.
As far as I know, there was a bug using functional indexes, but it was supposed to be fixed in 10.2.0.3, right?
Oracle is running on ubuntu server 7.10. This is the only problem we have so far.
What should I do?
Regards
Jernej
Trace dump:
Exception signal: 11 (SIGSEGV), code: 1 (Address not mapped to object), addr: 0x0, PC: [0x9616d1a, evaopn2()+104]
Registers:
%eax: 0x0000013c %ebx: 0x00000000 %ecx: 0xb6db8f6c
%edx: 0x3afe7144 %edi: 0x00000000 %esi: 0x80000002
%esp: 0xbffd23f0 %ebp: 0xbffd25b0 %eip: 0x09616d1a
%efl: 0x00200246
evaopn2()+86 (0x9616d08) test $0x20800400,%esi
evaopn2()+92 (0x9616d0e) jnz 0x9616f21
evaopn2()+98 (0x9616d14) mov %ebx,0xfffffffc(%ebp)
evaopn2()+101 (0x9616d17) mov 0x28(%edx),%ebx
evaopn2()+104 (0x9616d1a) mov (%ebx),%esievaopn2()+106 (0x9616d1c) movzw 0x4(%ebx),%edi
evaopn2()+110 (0x9616d20) mov (%esi,%ecx),%ebx
evaopn2()+113 (0x9616d23) mov %edi,0xffffffe8(%ebp)
evaopn2()+116 (0x9616d26) mov %ebx,0xfffffff0(%ebp)
*** 2008-05-31 01:52:24.592What should I do?Contact 3rd party product vendor. An OS exception is thrown in the application, that may be a 3rd party problem, may be an Oracle problem, may be a combination of both. Only the code developers can analyze this.
Werner -
Determining Column name involve in Functional Index
I write this query to know about the existing indexes of all tables pertains to a schema. My problem is when index is functional one, column name is not descriptive, it is like SYS_NC00047$, ..... as yet i could not find the way to know exact column name in the out put of this query. your help is required..
SELECT index_owner,
index_name,
table_owner,
table_name,
column_name,
column_position,
column_length
FROM dba_ind_columns
WHERE index_owner = 'CORE_BUSINESS'
ORDER BY table_name ;Use DBA_IND_EXPRESSIONS or USER_IND_EXPRESSIONS.
See this example :
SQL> drop table X_1 purge;
Table dropped.
SQL> create table X_1 (col_1 varchar2(5), col_2 number);
Table created.
SQL> create index X_1_UPPER_COL_1 on X_1(upper(col_1));
Index created.
SQL> set long 20000
SQL> select column_expression from user_ind_expressions
2 where index_name = 'X_1_UPPER_COL_1';
COLUMN_EXPRESSION
UPPER("COL_1")
SQL>Note : COLUMN_EXPRESSION is a LONG datatype and SET LONG defaults to 80 in SQLPlus, thus it will only show the first 80 characters of the expression unless you SET LONG to a higher value.
Hemant K Chitale -
SOA Tablespace PITR - 'Domain/Functional Indexes not supported'
Hi all,
Trying to recover tablespaces from a failed 12c upgrade attempt.
I have multiple backups prior to the upgrade attempt but it seems I can't perform a point in time recovery of the specific tablespaces due to the following:
MDS & SOAINFRA > Domain/Functional Indexes not supported
ORASDPM > Object not allowed in Recovery Set
Has anyone done this? How did you get around it?I checked, this index is function_based...
thank yoiu
its DDL:
CREATE INDEX SBSECD1_MDS.MDS_PATHS_N7 ON SBSECD1_MDS.MDS_PATHS
(PATH_FULLNAME, "PATH_LOW_CN" DESC, PATH_HIGH_CN, PATH_PARTITION_ID)
LOGGING
TABLESPACE SBSECD1_MDS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
NOPARALLEL; -
Should version 11.1.0 (not the Professional version) have the Test It! functionality? Thank you.
Hi-
Welcome to Discussions!
You probably need to reinstall or update your USB drivers. Please see the following:
http://docs.info.apple.com/article.html?artnum=305136
If you still want to downgrade, you can get previous versions of iTunes here:
http://www.oldapps.com/itunes.htm
I, for one, haven't upgraded from v.7. Don't see the need......
There are some fine points to a reinstall, and the following document should lead you to answers to any issues you may encounter:
http://docs.info.apple.com/article.html?artnum=93976
G4 AGP(450)Sawtooth Mac OS X (10.4.8) 2ghzPPC,1.62gbSDRAM, ATI9800, DVR-109,(IntHD)120&160,LaCie160,23"Cinema Display
Maybe you are looking for
-
Error while updating a task - Task acquired by some other user
Hi, I have a task assigned to a Group (AdminGroup). To update the outcome of task ie to approve task i am first acquiring the task and then updating the task outcome. But while doing so i am getting following error: Invalid action on workflow task. A
-
Can i install mac osx 10.5.4 on my ibookg4
I'm trying to install a retail version of Leopard that i purchased and i get a Kernel Panic Screen every time the install is reaching about 45%, and sometimes i even get it during the DVD Check before the installation starts. the only time i finally
-
Adobe Air apk issues! Help!
Since we have developed our own application distribution channels for our Android tablets which our target audience are kids aged 2-13 years old, we have enabled parental control and do not install Google Play in our tablets. However, some apps didn
-
hi all, id like to ask if you have any known user exit that could answer my problem i have a routine here that updates message control upon changing of the field werks in the line item. however, there are instances when output message is not updated.
-
Dear Experts how we can put the limit of BOM at 5 level decimal in BOM like some of the material is put with respect of 1 bom qty is 1/100000 X material is 1/100000 Thanks & Rgds Pankaj Agarwal