DW Partitioned View not updateable

We recently added a list enum root to a management pack that also contained Data Warehouse elements. when we imported the updated version of the MP to Service Manager the DW Load.Common job started failing.
This Job Module does not have a date value watermark so I can not reset the watermark value.
The MP is sealed and was not generating any errors before the recent edit to the MP I have done a compare of the pre and post xml and none of the DW elements were edited.
Events from the Operations Manager event log on the SM DW server
 ID 33502
ETL Module Execution failed:
 ETL process type: Load
 Batch ID: 35873
 Module name: LoadDWDataMartCITAM_AgreementHasAssetFact8
 Message: Partitioned view 'DWDataMart.dbo.CITAM_AgreementHasAssetFact8vw' is not updatable because it does not deliver all columns from its member tables.
Event ID 33503 is a warning, it is generated 3 times before the 33502 error  
 ETL process type: Load
 Batch ID: 35873
 Module name: LoadDWDataMartCITAM_AgreementHasAssetFact8
 Message: Partitioned view 'DWDataMart.dbo.CITAM_AgreementHasAssetFact8vw' is not updatable because it does not deliver all columns from its member tables.
corresponding errors from the trace log.
[5]0B10.400C::02/13/2014-13:41:05.315 [Microsoft.EnterpriseManagement.Warehouse.Server]( 0000000001FEB4CA )Exception occured during PartitionedViewInsert operation: Message = Partitioned view 'DWDataMart.dbo.CITAM_AgreementHasAssetFact8vw' is not updatable
because it does not deliver all columns from its member tables., Stacktrace =    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.SystemCenter.Warehouse.Utility.SqlBulkOperation.PartitionedViewUpdate(SqlConnection sourceConnection, String sourceQuery, String destinationTable, Dictionary`2 mapping, SqlConnection destinationConnection, Collection`1 pkColumns)
   at Microsoft.SystemCenter.Warehouse.Utility.SqlBulkOperation.PartitionedViewUpsert(String sourceConnectionString, String sourceQuery, String destinationTable, Dictionary`2 mapping, String destinationConnectionString, Collection`1 pkColumns, Int32&
insertCount, Int32& updateCount, DomainUser sourceSecureUser, DomainUser destSecureUser, SqlResourceStore targetStore)
   at Microsoft.SystemCenter.Warehouse.Etl.ADOInterface.PartitionedViewUpsert(DomainUser sourceConnectionUser, DomainUser destinationConnectionUser)
[5]0B10.400C::02/13/2014-13:41:05.318 [Microsoft.EnterpriseManagement.Warehouse.Etl]( 0000000003E2531C )SqlException occured while executing ETL Job module: etlMod = Microsoft.SystemCenter.Warehouse.Etl.LoadModule ModuleName = LoadDWDataMartCITAM_AgreementHasAssetFact8,
SourceId = 1, Guid = bd3a60b2-2edb-5667-625c-7d19862dd0b7, Instance = , WarehouseModule = LoadDWDataMartCITAM_AgreementHasAssetFact8, ModuleType = Load, ExecutableType = ADOInterface, Executable.InstanceId = ADOInterface, JobName = Load.Common, TargetEntity
= Microsoft.SystemCenter.Warehouse.Schema.BaseEntity entityName = CITAM_AgreementHasAssetFact8, entityType = Fact, entityId = 90f7120c-0a40-d4a4-8eac-a2c442f62d38, sourceId = 1, attempts = 0, Message = Partitioned view 'DWDataMart.dbo.CITAM_AgreementHasAssetFact8vw'
is not updatable because it does not deliver all columns from its member tables., StackTrace =    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.SystemCenter.Warehouse.Utility.SqlBulkOperation.PartitionedViewUpdate(SqlConnection sourceConnection, String sourceQuery, String destinationTable, Dictionary`2 mapping, SqlConnection destinationConnection, Collection`1 pkColumns)
   at Microsoft.SystemCenter.Warehouse.Utility.SqlBulkOperation.PartitionedViewUpsert(String sourceConnectionString, String sourceQuery, String destinationTable, Dictionary`2 mapping, String destinationConnectionString, Collection`1 pkColumns, Int32&
insertCount, Int32& updateCount, DomainUser sourceSecureUser, DomainUser destSecureUser, SqlResourceStore targetStore)
   at Microsoft.SystemCenter.Warehouse.Etl.ADOInterface.PartitionedViewUpsert(DomainUser sourceConnectionUser, DomainUser destinationConnectionUser)
   at Microsoft.SystemCenter.Warehouse.Etl.ADOInterface.Execute(IXPathNavigable config, Watermark wm, DomainUser sourceConnectionUser, DomainUser destinationConnectionUser)
   at Microsoft.SystemCenter.Warehouse.Etl.LoadModule.Execute(IXPathNavigable config, Watermark wm, DomainUser sourceConnectionUser, DomainUser destinationConnectionUser, Int32 loadBatchSize)
   at Microsoft.SystemCenter.Warehouse.Etl.LoadModule.Execute(IXPathNavigable config, Watermark wm, DomainUser sourceConnectionUser, DomainUser destinationConnectionUser)
   at Microsoft.SystemCenter.Etl.ETLModule.OnDataItem(DataItemBase dataItem, DataItemAcknowledgementCallback acknowledgedCallback, Object acknowledgedState, DataItemProcessingCompleteCallback completionCallback, Object completionState) 
 [5]0B10.400C::02/13/2014-13:41:09.522 [Microsoft.EnterpriseManagement.Warehouse.Etl]( 0000000003E2531C )Updating WorkItem for: etlWI =  WorkItemId = 13250945, processModuleId = 14757, isDirty = True, BatchId = 35873, status = Failed, RetryCount
= 0, ErrorCount = 174, TakenTime = 02/13/2014 19:41:04, Module = ModuleName = LoadDWDataMartCITAM_AgreementHasAssetFact8, ModuleType = System, ModuleDescription = Deployment Execution Step, ProcessCategoryName = Load, ProcessName = Load.Common, DeletedBatchId=0
[5]0B10.400C::02/13/2014-13:41:09.527 [Microsoft.EnterpriseManagement.Orchestration]( 00000000035A96C4 )Updating WorkItem for: =  WorkItemId = 13250945, processModuleId = 14757, isDirty = True, BatchId = 35873, status = Failed, RetryCount = 0, ErrorCount
= 174, TakenTime = 02/13/2014 19:41:04, Module = ModuleName = LoadDWDataMartCITAM_AgreementHasAssetFact8, ModuleType = System, ModuleDescription = Deployment Execution Step, ProcessCategoryName = Load, ProcessName = Load.Common, DeletedBatchId=0

Anybody found a solution?

Similar Messages

  • Not updateable view

    I want to create a not updateable view. I want to obtain a not editable JTable to show this view, as when
    we difine a table model with redefined function isCellEditable() returning false.
    Thanks
    Albert Portugal.

    I found another method to do that. Steps:
    1. create a view object (over the table view you will apply read only restrict) with read only checkbox checked.
    2. Then click on bc4jmodule. Take out view object from exported views.
    3. Click over the parent view object FKLink and change relation with the modifiable view for the new read only view. Add FK from destination attributes.
    4. Click bc4jmodule properties and add new view object to export.
    Finally when you display this data block it could not be modifiable.
    The solution explained before is when you need modify this view. So if you are completly sure that some table will not be modified by application the easiest solution is checking read only flag in view object. (table).
    Albert Portugal

  • EXP-00037: Export views not compatible with database version

    kindly help with this error. We have already run catexp.sql but still that is not helping, we are still getting the same error.
    we are exporting 8i db.
    Export: Release 8.1.7.0.0 - Production on Thu Feb 21 14:34:25 2008
    (c) Copyright 2000 Oracle Corporation. All rights reserved.
    Connected to: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
    With the Partitioning option
    JServer Release 8.1.7.0.0 - Production
    EXP-00037: Export views not compatible with database version
    EXP-00000: Export terminated unsuccessfully

    Does this apply to you?
    Error: EXP 37
    Text: Export views not compatible with database version
    Cause: The Export utility is at a higher version than the database version
    and is thereby incompatible.
    Action: Use the same version of Export utility as the database.

  • SQL Server Distributed Partitioning Views how to add a new node online

    We are using distributed partitioning views in SQL Server 2012 Enterprise Edition for scaling out our data across more than one servers. Now we faced to question how to add a new node (server) into the scale outed db servers system without sending the servers
    down, so our users will be able to use them during the process as well.
    For example we have 4 servers with scaled out data. When we add the new empty server, the CHECKINGs for the partitioning columns should be reorganized. But during the process the partitioning views are not working.
    The High Availability, Always On or Failover Cluster approaches seem are not resolve the problems.
    So my question is how to add new node online?
    KH

    Thank you Erland for the reply.
    Yes, it's sounds as possible solution but has some not resolvable nuance in it. Let's say we copied some data from Node5 to new added Node6. Let's assume in Node5 we had data in Table1 with partitioning column's values 100,101,102,103,104,105,106.  Now
    we want to copy part of the rows with partitioning column's values 103,104,105,106 from Node5.Table1 into Node6.Table1. With this Node5 will contain less data and will work more quickly (less IO, less CPU usage etc), and the rest data will be contained on
    Node6. But because of Node5 is already in use, the Node5.Table1 contains CHECK CONSTRAINT = ParttionColumn should be from 100 up to 106. This is check for Node5. The Distributed Partitioning Views are already using the CHECKs to identify what server should
    be used to get data from.
    Now when we copied part of the Node5.Table1 rows to Node6.Table1 the views are still using the 103-106 rows from Node5.Table1 because the CHECK points there. Then we include the newest Node6.Table1 in the distributed partitioning views. OK, but we should
    set some CHECK on new Node6.Table1 which will be used by views. We can't set intersecting checking like Node5 has CHECK 100-106 and Node6 has CHECK 103-106. We also can't edit Node5 check and set it 100-102 untill the data will be removed in it. But this means
    that the data will not be available during the execution. 
    So, any ideas ?
    KH

  • Partition view on 10g and 11g

    Hi All,
    I am on 10.2 Standard edition and 11.1 Standard edition (2 databases in the application, one on 10g, another on 11g).
    Being on standard edition, cannot use many common features e.g. partitioning, bitmap indexes etc.
    I use to think that, partitioned view are no more supported by Oracle. But I can see that it works. I created 3 tables TEMP1, TEMP2 and TEMP3, all with exact same structure (columns and indices). Then created a view TEMP_VIEW, which is like
    select col1, col2, col3 .... from temp1
    union all
    select col1, col2, col3 .... from temp2
    union all
    select col1, col2, col3 .... from temp3Here are the query execution and plans
    /* ----------------- 10g execution plan ----------------------- */
    SQL> select * from temp_view where object_id=2620 and branch_cd = 'XYZ';
    OWNER                          OBJECT_NAME                    SUBOBJECT_NAME                  OBJECT_ID DATA_OBJECT_ID
    OBJECT_TYPE         CREATED   LAST_DDL_ TIMESTAMP           STATUS  T G S BRANC
    SYS                            LOADER_TRIGGER_INFO                                                 2620
    VIEW                18-FEB-09 16-APR-09 2009-02-18:10:07:57 VALID   N N N XYZ
    Elapsed: 00:00:00.29
    Execution Plan
       0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=2 Card=1 Bytes=132)
       1    0   VIEW OF 'TEMP_VIEW' (VIEW) (Cost=2 Card=1 Bytes=132)
       2    1     UNION-ALL (PARTITION)
       3    2       TABLE ACCESS (BY INDEX ROWID) OF 'TEMP1' (TABLE) (Cost=2 Card=1 Bytes=132)
       4    3         INDEX (UNIQUE SCAN) OF 'TEMP1_PK' (INDEX (UNIQUE)) (Cost=1 Card=1)
       5    2       TABLE ACCESS (BY INDEX ROWID) OF 'TEMP2' (TABLE) (Cost=2 Card=1 Bytes=132)
       6    5         INDEX (UNIQUE SCAN) OF 'TEMP2_PK' (INDEX (UNIQUE)) (Cost=1 Card=1)
       7    2       TABLE ACCESS (BY INDEX ROWID) OF 'TEMP3' (TABLE) (Cost=2 Card=1 Bytes=132)
       8    7         INDEX (UNIQUE SCAN) OF 'TEMP3_PK' (INDEX (UNIQUE)) (Cost=1 Card=1)
    /* ----------------- 11g execution plan ----------------------- */
    SQL> select * from temp_view where object_id=2620 and branch_cd = 'XYZ';
    OWNER                          OBJECT_NAME                    SUBOBJECT_NAME                  OBJECT_ID DATA_OBJECT_ID
    OBJECT_TYPE         CREATED   LAST_DDL_ TIMESTAMP           STATUS  T G S BRANC
    PUBLIC                         GV$XML_AUDIT_TRAIL                                                  2620
    SYNONYM             16-NOV-09 16-NOV-09 2009-11-16:16:36:08 VALID   N N N XYZ
    Elapsed: 00:00:00.03
    Execution Plan
       0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=6 Card=3 Bytes=396)
       1    0   VIEW OF 'TEMP_VIEW' (VIEW) (Cost=6 Card=3 Bytes=396)
       2    1     UNION-ALL
       3    2       TABLE ACCESS (BY INDEX ROWID) OF 'TEMP1' (TABLE) (Cost=2 Card=1 Bytes=102)
       4    3         INDEX (UNIQUE SCAN) OF 'TEMP1_PK' (INDEX (UNIQUE)) (Cost=1 Card=1)
       5    2       TABLE ACCESS (BY INDEX ROWID) OF 'TEMP2' (TABLE) (Cost=2 Card=1 Bytes=102)
       6    5         INDEX (UNIQUE SCAN) OF 'TEMP2_PK' (INDEX (UNIQUE)) (Cost=1 Card=1)
       7    2       TABLE ACCESS (BY INDEX ROWID) OF 'TEMP3' (TABLE) (Cost=2 Card=1 Bytes=102)
       8    7         INDEX (UNIQUE SCAN) OF 'TEMP3_PK' (INDEX (UNIQUE)) (Cost=1 Card=1)Questions
    1) I am expecting same behaviour on Oracle enterprise edition, will that be the case ?
    2) On 10g, execution plan shows "UNION-ALL (PARTITION)", but on 11g it says, "UNION-ALL". What does that imply?
    3) Which Oracle parameter can affect this behaviour? the old partition_view_enable parameter does not exist
    4) If I go ahead and use this partitioned view, in which cases this can cause problems? At this point, it looks all good if I access the view using indexed columns (of the tables and all tables involved have exactly same indexes).
    Thanks in advance

    Billy Verreynne is an expert in this area and has been introducing people for years to 'partition views' and you can find many of his previous posts about how and when to use them (including example code) right here in these forums (most of them will be in the SQL and PL/SQL forum).
    This feature has been around since Oracle 7 and the 7.3 document that details the info is still at
    http://docs.oracle.com/cd/A57673_01/DOC/server/doc/A48506/partview.htm
    Here is just one of his many other threads with more example code using five tables.
    Table name in from clause

  • (V7.3) PARTITION VIEWS IN ORACLE7 RELEASE 7.3

    제품 : ORACLE SERVER
    작성날짜 : 2002-05-17
    PURPOSE
    Introduction
    Partition views are a new feature in Release 7.3 design to provide
    better support for very large tables that are commonly found in data
    warehousing environments.
    The partition view feature offers two primary benefits:
    - improved managability and availability of large tables
    - improved performance for table scans on certain queries of
    these large tables
    Explanation & Example
    What is a partion view?
    An example partition view is:
    create view sales as
    select * from jan_sales
    union all
    select * from feb_sales
    union all
    select * from dec_sales
    Each of the base tables (the monthly sales tables) must be identical
    in terms of column names, column datatypes, and indexes. These tables
    must also have a CHECK constraint on its partitioning column (thus,
    the jan_sales table must have a check constraint on the date column
    which constrains the date to fall between Jan 1 and Jan 31).
    All of these base tables, indexes, constraints as well as the
    UNION-ALL view definition are be created by the DBA.
    Managability and availability benefits
    A partition view greatly simplifies the administration of very large
    tables.
    Consider the example of of a data warehousing containing a large
    'sales' table. Once per month, the DBA loads all of new sales data
    into this table. Thus, the DBA would need to drop all of the indexes
    on the sales, load the new data, and rebuild the indexes. Since the
    sales table is very large, this could be a lengthy operation.
    Morever, the sales table is (for most practical DSS application) is
    not available while these load and index operations are occuring.
    Using the partition view feature, the DBA could load the new month's
    data into a separate partition and build indexes on this new partition
    without impacting the original partition view. Then, after the new
    partition is entirely built and indexed, the DBA could recreate the
    UNION-ALL view to include the new partition. The sales partition view
    is unavailable for a very short length of time ... only while the
    UNION-ALL view is being built. Moreover, because the indexes are much
    smaller, the length of time to load and index a new month's worth of
    data is dramatically decreased.
    Performance benefits of partition views
    Any UNION-ALL view (even in earlier releases of Oracle7) can reap the
    aforementioned managability benefits; however, unless the UNION-ALL
    view offers reasonable query performance, the managability benefits
    are useless.
    The enhancement in Release 7.3 is to insure that the query performance
    on UNION-ALL views will at least equivalent to (and, in many cases,
    much better than) single-table access. Note that these performance
    enhancements are only effective when all of the partitions have the
    appropriate CHECK constraints and when all of the partitions have
    identical column definitions and indexes.
    There are two basic performance enhancements for partition views:
    partition elimination
    parallel execution of UNION-ALL views
    Certain queries may not require data from all of the partitions of a
    view partition. For example, consider the following query:
    select sum(revenues) from sales
    where sales_date between '15-JAN-96' and '15-FEB-96';
    With 7.3's new support for partition views, Oracle will evaluate the
    above query using only the January partition and the February
    partition; the remaining ten partitions will not be accessed. This
    feature is commonly called 'partition elimination'.
    Partition elimination is only effective when querying based on the
    partitioning column; in this example, the partitioning column is the
    sales_date column. But the performance savings can be significant. In
    the previous example, the partition view feature results in ten of the
    twelve partitions being eliminated from query processing. This could
    represent six-fold performance gain.
    An additional enhancement in 7.3 is the parallel execution of
    UNION-ALL views. All queries on UNION-ALL views can be executed in
    parallel (when using the Parallel Query Option). It is very
    important to note that the partitioning scheme is absolutely
    independent of the degree of parallelism (this starkly contrasts with
    many of our competitior's parallel query architecture, in which the
    physical data partitioning determines the degree of parallelism).
    Oracle will dynamically distribute the data of a UNION ALL view across
    all parallel query processes, and partition elimintation will not
    impact the degree of parallelism.
    Limitations of Partition Views
    Partition views do not support DML operations. For this reason,
    partition views are most appropriate for read-only applications (such
    as data warehouses).
    Conclusion
    Partition views can be very effective for handling very large tables
    in data warehousing environments. The managability of these large
    tables is vastly improved, with significant performance improvements
    for many queries.
    Reference Ducumment
    ---------------------

    The installer might not be year 2000 compliant. Download a newer version or set your system date back into 1999 ;-)

  • Partitioned views in SQL 2014 have incorrect execution plans

    I've been using partitioned views in the past
    and used the check constraint in the source tables to make sure the only the table with the condition in the where clause on the view was used. In SQL Server 2012 this was working just fine (I had to do some tricks to suppress parameter sniffing, but it was
    working correct after doing that). Now I've been installing SQL Server 2014 Developer and used exactly the same logic and in the actual query plan it is still using the other tables. I've tried the following things to avoid this:
    - OPTION (RECOMPILE)
    - Using dynamic SQL to pass the parameter values as a static string.
    - Set the lazy schema validation option to true on the linked servers
    To explain wat I'm doing is this:
    1. I have 3 servers with the same source tables, the only difference in the tables is one column with the server name.
    2. I've created a CHECK CONSTRAINT on the server name column on each server.
    3. On one of the three server (in my case server 3) I've setup linked server connections to Server 1 and 2.
    4. On Server 3 I've created a partioned view that is build up like this:
    SELECT * FROM [server1].[database].[dbo].[table]
    UNION ALL SELECT * FROM [server2].[database].[dbo].[table]
    UNION ALL SELECT * FROM [server3].[database].[dbo].[table]
    5. To query the partioned view I use a query like this:
    SELECT *
    FROM [database].[dbo].[partioned_view_name]
    WHERE [server_name] = 'Server2'
    Now when I look at the execution plan on the 2014 environment it is still using all the servers instead of just Server2 like it should be. The strange thing is that SQL 2008 and 2012 are working just fine but 2014 seems not to use the correct plan. Maybe I
    forgot something, or something is changed in 2014 and a new approach is needed but I'm a little stuck here. 
    Did someone experience the same thing and if so, how did you fix this? 

    Hi Jos,
    Glad to hear that you have found a solution for your problem. Thank you for your sharing which will help other forum members who have the similar issue.
    Regards,
    Charlie Liao
    TechNet Community Support

  • Recordset is not updateable in Access 2010 but works in previous versions

    I have a database that writes data from SQL tables to unbound controls on an unbound form. This database has been in place for years and has worked great. We recently just upgraded to 2010 and now I' m receiving an error message saying that the recordset
    is not updateable. This is the same exact code and settings and everything else that has worked in 2007.
    I know there are other posts on here that addressed this but none of the recommendations have solved my problem. I've tried changing the forms to dynaset(inconsistent updates), etc. and nothing.
    The actual SQL is all in VBA where it's running the SQL commands against SQL Server and writing the data to the unbound fields and then also writing it back to the tables. As I said, this has been in place for a number of years and has always worked great
    but I just can't put any rhyme to reason why it's not working in 2010.

    Hi,
    Based on my research, here’s the information about this error message:
    A recordset is never updateable when:
    It is based on a Crosstab query.
    It is based on a Union Query.
    It is an Aggregate Query that calculates a sum, average, count or other type of total on the values in a field.
    It is an Update Query that references a field in the Update To row from either a crosstab query, select query, or subquery that contains totals or aggregate functions
         Note: By using a domain aggregate function in the Update To row of an update query, you can reference fields from either a crosstab query, select query, or subquery that contains totals or aggregate functions.
    It is based on a Query that includes a linked ODBC table with no unique index.
    The database was opened as read-only or is located on a read-only drive.
    It is a SQL pass-through query.
    It is a query whose UniqueValues property is set to Yes. (That is, it is a query with a DISTINCT predicate.)
    Cartesian Joins(that is, a query that includes more than one table or query, and the tables or queries aren't joined by a join line in Design view.)
    Query based on three or more tables in which there is a many-to-one-to-many relationship.
         Note: Though you can't update the data in the query directly, you can update the data in a form or data access page based on the query if the form's RecordsetType property is set to Dynaset (Inconsistent Updates).
    Calculated fields. Even if the query itself is updateable, if a column in a query is based on a formula, the field cannot be updated. However, if the other fields in the formula are updated, the calculated field
    will automatically update.
    Recordsets Are Updateable Under Certain Conditions
    1. Query based on a Join of tables with no Relationship.
    Problem: If a query is based on two or more tables that DO NOT have a relationship established (with Referential Integrity enabled), the query will be non-updateable.
    Solution: Create a Primary Key or Unique Index on ALL of the fields used in the Join on the "one-side" table. To be clear, this means ONE primary key or unique index based on all of the fields, not separate indexes
    on each field.
    In a query based on a Join of tables with a one-to-many relationship (1:M), you might not be able to edit the data in one or more fields. As the following examples show :
    2. Join field from the "one" side.
    Problem: If you have a 1:M relationship created between two tables, you cannot change the primary key field (used in the Join) of the table on the "one" side of the relationship.
    Solution: Enable cascading updates between the two tables.
    3. New records, if the "many" side join field doesn't appear in the datasheet
    Problem: In a query based on a 1:M relationship, you can create a new record and fill in the fields that come from the "one" side table, but if the join field from the "many" side table is not visible in the
    query (that is, the foreign key), you cannot add data to the "many" side fields.
    Solution: Add the join field from the "many" side table (ie, foreign key) to your query to allow adding new records.
    4. New records on the "one" side that are duplicates of other "one" side records.
    Problem: When adding a new record, if you try to type into the "one" side fields, you will be attempting to create a new record. Even if you use the same primary key values, it will give you an error.
    Solution: Add a value to the "many" side join field (foreign key) that matches the "one" side join field (primary      key) of an already existing record. The "one" side values will simply
    appear.
    5. Join field from the "many" side, after you've updated data on the "one" side
    Problem: If you are currently editing fields from the  "one" side of the relationship, you cannot change the "many" side join field (foreign key).
    Solution: Save the record; then you'll be able to make changes to the "many" side join field.
    6. New records, if entire unique key of ODBC table isn't output
    Problem: This is different than #5 under Never Updateable. In this case, the primary key of the linked ODBC table exists, but is not added to the query.
    Solution: Select all primary key fields of ODBC tables to allow inserts into them.
    7. Query does not have Update Data permissions
    Problem: Query (or underlying table) for which Update Data permission isn't granted.
    Solution: To modify data, permissions must be assigned.
    8. Query does not have Delete Data Permissions
    Problem: Query (or underlying table) for which Delete Data permission isn't granted
    Solution: To delete data, permissions must be assigned.
    Jaynet Zhang
    TechNet Community Support

  • Partitioned views in Standard Edition

    We have are SQL 2014 Standard edition, I have a situation where-in I plan to partition a table now since table partition is not supported in standard version I thought about Partitioned views however now I am stuck where I cant make the view writable because
    of the identity column in the base table.
    Do I have any other option in this case ?
    Let me know your thoughts
    Regards
    Vishal
    VG

    Identity columns are problematic for a partitioned view. If any of the tables include an identity column, you can delete but not insert or update via the view.  You could instead use a sequence to generate the surrogate key values, but that may require
    significant application changes.
    The real question is why you want to partition.  There are specialized use cases where partitioning may improve performance (e.g. parallel scans) but you will generally get more benefit from index and query tuning.  Partitioning (view
    or table) can actually degrade performance depending on the queries and workload.  That being said, partitioning always improves manageability.
    Be aware that there is additional overhead of partitioned views compared to partitioned tables.  Each table within the view may be indexed differently so there is considerable more work for the optimizer to do to generate an efficient plan. 
    This increases compilation time and can result in suboptimal plans, particularly if the view contains many tables.  If your table is so large that partitioning is compelling, you might start making the business case for Enterprise Edition in order
    to meet performance and availability SLAs.
    I think the Database Engine forum is a better fit for this question so I'll move this thread there.
    Dan Guzman, SQL Server MVP, http://www.dbdelta.com

  • EXP-00024: Export views not installed, please notify your DBA - Please help

    Sir,
    I am trying to export from a client machine.
    exp system/manager@dbcon full=y file=db.dmp log=exp.logBut I am getting error,
    Connected to: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    Export done in US7ASCII character set and AL16UTF16 NCHAR character set
    About to export the entire database ...
    . exporting tablespace definitions
    . exporting profiles
    . exporting user definitions
    . exporting roles
    . exporting resource costs
    . exporting rollback segment definitions
    . exporting database links
    . exporting sequence numbers
    . exporting directory aliases
    . exporting context namespaces
    . exporting foreign function library names
    . exporting object type definitions
    EXP-00008: ORACLE error 942 encountered
    ORA-00942: table or view does not exist
    EXP-00024: Export views not installed, please notify your DBA
    EXP-00000: Export terminated unsuccessfully
    This happens while exporting from a remote client machine. When I export from The machine where database resides, there is no problem at all. Why tis happens?
    regards,
    Mathew

    May we know the database version of your exported and imported database ? I believe that , you trying to import into lower version of database. If yes, then loging as a sys and run the script $ORACLE_HOME/rdbms/admin/catexp.sql .
    hare krishna
    Alok

  • (V7.3) PARTITION VIEW 테스트 REPORT

    제품 : ORACLE SERVER
    작성날짜 : 2004-08-13
    SCOPE
    8~10g Standard Edition 에서는 Partitioning Option 은 지원하지 않습니다.
    1. 개요
    대용량 Database를 구축하고 관리하는 데 있어서 필연적으로 나타날 수 있는
    문제는 시간적 증가 또는 지역적으로 확대됨에 따라 어느 TABLE의 SIZE가
    증가함에 따라 이에 따른 관리 방법의 효율화일 것이다.
    이는 주기적인 재편성(Re-Organization) 뿐만 아니라 Backup, Index의 비대화
    등에 따른 Query의 효율 저하 등 여러가지 문제를 야기시킬 수 있다.
    이에 대한 해결책인 Partition View(Ver.7.3 이상)를 실무적용 사례를 통해서
    구축방법, Partition View의 효율적 사용방법, 주의할 점 등을 알아보고자 한다.
    2. 구축과정
    1) Partition View를 위한 Parameter
    init$ORACLE_SID.ora 화일에 다음의 Parameter를 Setting
    partition_view_enabled=TRUE
    2) Partition View 대상 Table 및 Partition Column을 선정
    이는 물리적 설계 시 결정
    Partition Column의 주요 후보는 일시, 지역 등 명확히 구분되는
    Column이어야 함
    3) Table Create --> Partition Column에 반드시 해당 범위의 Check
    Constraint를 반드시 주어야 함.
    ( 주의 사항 )
    Partition Column의 DATATYPE을 CHAR로 하지 말 것
    (BUG) --> VARCHAR2 사용 ( BUG로 등록되어 있음 )
    Partition View를 구성하는 모든 Table Scheme는 완전히 동일해야 함
    (Column의 갯수, Datatype, Null허용 여부 등)
    실제로 비씨카드에서 TYPE의 불일치로 문제가 발생했었음.
    1996.01월 Table(TBCARDUSE_199601)의 한 Column의 Type이 다른
    Table은 모두 VARCHAR(9)였는데 이 Table만 VARCHAR2(10)로
    되어 있어서 Partition View를 JOIN하면 VIEW 내의 모든 TABLE이
    FULL TABLE SCAN을 함. DATATYPE을 동일하게 해준 후 정상적으로
    동작
    4) Index Create --> 모든 Table이 반드시 동일한 Index를 가져야 함.
    Partition Column에 Index가 반드시 필요한 것은 아님.
    5) 각 Table에 ANALYZE TABLE을 수행(가능한 한 COMPUTE STATISTICS로)
    6) Partition 내의 모든 Table을 UNION ALL 한 Partition View를 생성
    3. 구축 사례
    TBCARDUSE_199507 - TBCARDUSE_199609 ( 15개 Table )
    각 Table의 예상 Row 수는 최소 1,200 만 이상으로 15개월을 보관함을
    원칙으로 하여 총 Row는 2억건 정도이다.
    CREATE TABLE TBCARDUSE_199507
    (USE_NO varchar2(8) not null,
    CARD_NO varchar2(16) not null,
    REQ_REJ_CLSS char(1) not null,
    LO_AB_CLSS char(1) not null,
    MER_MGMT_NO varchar2(9) not null,
    AUTH_CLSS char(2) not null,
    AUTH_DATE varchar2(8) not null,->Partition Column
    AUTH_TIME char(6) not null,
    AUTH_AMT number(13,2) not null,
    EN_MODE char(2) not null,
    AUTH_REQ_MTHD char(2) not null,
    AUTH_REQ_CLSS char(1) not null,
    SALE_REF_PL char(2) ,
    REQ_MER_MGMT_NO varchar2(9) ,
    SALE_PL_NO varchar2(12) ,
    REQ_VALD_LIM char(6) ,
    USE_AMT number(11) ,
    RCP_AMT number(11) ,
    MER_RCP_FEE number(11) ,
    RCP_DATE char(8) ,
    POS_CODE char(2) ,
    CONSTRAINT C_AUTH_DATE_199507
    CHECK (AUTH_DATE BETWEEN '19950701' AND '19950731'))
    ---> Partition Column Constraint
    TABLESPACE TS_TUNING01
    PCTFREE 10
    STORAGE(INITIAL 100M NEXT 100M PCTINCREASE 0
    MAXEXTENTS UNLIMITED FREELISTS 10);
    * Index 정보
    Index 1 : CARD_NO
    CREATE INDEX TBCARDUSE_199507_IDX1
    ON TBCARDUSE_199507(CARD_NO)
    TABLESPACE TS_TUNING_I01
    STORAGE(INITIAL 50M NEXT 50M PCTINCREASE 0
    MAXEXTENTS UNLIMITED)
    PARALLEL (DEGREE 4);
    Index 2 : USE_NO
    CREATE INDEX TBCARDUSE_199507_IDX2
    ON TBCARDUSE_199507(USE_NO)
    TABLESPACE TS_TUNING_I01
    STORAGE(INITIAL 50M NEXT 50M PCTINCREASE 0
    MAXEXTENTS UNLIMITED)
    PARALLEL (DEGREE 4);
    Index 3 : AUTH_DATE + MER_MGMT_NO
    CREATE INDEX TBCARDUSE_199507_IDX3
    ON TBCARDUSE_199507(AUTH_DATE,MER_MGMT_NO)
    TABLESPACE TS_TUNING_I01
    STORAGE(INITIAL 50M NEXT 50M PCTINCREASE 0
    MAXEXTENTS UNLIMITED)
    PARALLEL (DEGREE 4);
    Index 4 : MER_MGMT_NO + AUTH_DATE
    CREATE INDEX TBCARDUSE_199507_IDX4
    ON TBCARDUSE_199507(MER_MGMT_NO, AUTH_DATE)
    TABLESPACE TS_TUNING_I01
    STORAGE(INITIAL 50M NEXT 50M PCTINCREASE 0
    MAXEXTENTS UNLIMITED)
    PARALLEL (DEGREE 4);
    * Table Analyzing
    analyze table TBCARDUSE_199507 compute statistics;
    * Partition View Creation
    CREATE OR REPLACE VIEW PV_TBCARDUSE
    AS
    SELECT * FROM TBCARDUSE_199507
    UNION ALL
    SELECT * FROM TBCARDUSE_199508
    UNION ALL
    SELECT * FROM TBCARDUSE_199509
    UNION ALL
    SELECT * FROM TBCARDUSE_199510
    UNION ALL
    SELECT * FROM TBCARDUSE_199511
    UNION ALL
    SELECT * FROM TBCARDUSE_199512
    UNION ALL
    SELECT * FROM TBCARDUSE_199601
    UNION ALL
    SELECT * FROM TBCARDUSE_199602
    UNION ALL
    SELECT * FROM TBCARDUSE_199603
    UNION ALL
    SELECT * FROM TBCARDUSE_199604
    UNION ALL
    SELECT * FROM TBCARDUSE_199605
    UNION ALL
    SELECT * FROM TBCARDUSE_199606
    UNION ALL
    SELECT * FROM TBCARDUSE_199607
    UNION ALL
    SELECT * FROM TBCARDUSE_199608
    UNION ALL
    SELECT * FROM TBCARDUSE_199609
    4. Test Procedure
    1) Partition View의 동작 여부 확인
    (1) Partition Column이 '='로 비교 되었을 때
    SELECT CARD_NO,USE_NO,AUTH_DATE,AUTH_AMT
    FROM PV_TBCARDUSE
    WHERE USE_NO = '00002037'
    AND AUTH_DATE = '19960723';
    Rows Execution Plan
    0 SELECT STATEMENT GOAL: CHOOSE
    1 VIEW OF 'PV_TBCARDUSE'
    1 UNION-ALL (PARTITION)
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199507'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199507_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199508'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199508_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199509'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199509_IDX2'
    0 FILTER ---> Access 불 필요 Skip Operation
    0 TABLE ACCESS OF 'TBCARDUSE_199510'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199510_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199511'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199511_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199512'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199512_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199601'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199601_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199602'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199602_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199603'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199603_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199604'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199604_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199605'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199605_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199606'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199606_IDX2'
    1 TABLE ACCESS OF 'TBCARDUSE_199607'
    2 INDEX (RANGE SCAN) OF 'TBCARDUSE_199607_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199608'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199608_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199609'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199609_IDX2'
    ( 설명 ) Partition View의 가장 일반적인 사용 Case로 Partition
    Column이 *=*로 비교 되었을 때는 Access 불 필요
    Table은 Skip하는 Operation (FILTER)이 동작 함.
    (2) Partition Column이 " BETWEEN ~ AND ~ "로 비교 될 때
    SELECT CARD_NO,USE_NO,AUTH_DATE,AUTH_AMT
    FROM PV_TBCARDUSE
    WHERE USE_NO = '00002037'
    AND AUTH_DATE BETWEEN '19960701' AND '19960731'
    Rows Execution Plan
    0 SELECT STATEMENT GOAL: CHOOSE
    1 VIEW OF 'PV_TBCARDUSE'
    1 UNION-ALL (PARTITION)
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199507'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199507_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199508'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199508_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199509'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199509_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199510'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199510_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199511'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199511_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199512'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199512_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199601'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199601_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199602'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199602_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199603'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199603_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199604'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199604_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199605'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199605_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199606'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199606_IDX2'
    1 TABLE ACCESS OF 'TBCARDUSE_199607'
    2 INDEX (RANGE SCAN) OF 'TBCARDUSE_199607_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199608'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199608_IDX2'
    0 FILTER
    0 TABLE ACCESS OF 'TBCARDUSE_199609'
    0 INDEX (RANGE SCAN) OF 'TBCARDUSE_199609_IDX2'
    ( 설명 ) Partition Column이 BETWEEN~AND~ 로 비교 되었을 때는
    Access 불 필요 Table은 Skip하는 Operation(FILTER)이
    동작 함
    (3) Partition Column이 " LIKE "로 비교 될 때
    SELECT CARD_NO,USE_NO,AUTH_DATE,AUTH_AMT
    FROM PV_TBCARDUSE
    WHERE USE_NO = '00002037'
    AND AUTH_DATE LIKE '199607%'
    Rows Execution Plan
    0 SELECT STATEMENT GOAL: CHOOSE
    1 VIEW OF 'PV_TBCARDUSE'
    1 UNION-ALL (PARTITION)
    0 TABLE ACCESS OF 'TBCARDUSE_199507'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199510_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199508'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199510_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199509'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199510_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199510'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199510_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199511'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199511_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199512'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199512_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199601'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199601_IDX2'
    1 TABLE ACCESS OF 'TBCARDUSE_199602'
    2 INDEX (RANGE SCAN) OF 'TBCARDUSE_199602_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199603'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199603_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199604'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199604_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199605'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199605_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199606'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199606_IDX2'
    1 TABLE ACCESS OF 'TBCARDUSE_199607'
    2 INDEX (RANGE SCAN) OF 'TBCARDUSE_199607_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199608'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199608_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199609'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199609_IDX2'
    ( 설명 ) Partition Column이 LIKE로 비교 되었을 때는
    FILTER가 동작하지 않음. (주의 요망)
    (4) Partition Column이 " OR "로 비교 될 때
    SELECT CARD_NO,USE_NO,AUTH_DATE,AUTH_AMT
    FROM PV_TBCARDUSE
    WHERE USE_NO = '00002037'
    AND ( AUTH_DATE BETWEEN '19960601' AND '19960630'
    OR AUTH_DATE BETWEEN '19960701' AND '19960730')
    Rows Execution Plan
    0 SELECT STATEMENT GOAL: CHOOSE
    1 VIEW OF 'PV_TBCARDUSE'
    1 UNION-ALL (PARTITION)
    0 TABLE ACCESS OF 'TBCARDUSE_199507'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199510_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199508'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199510_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199509'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199510_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199510'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199510_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199511'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199511_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199512'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199512_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199601'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199601_IDX2'
    1 TABLE ACCESS OF 'TBCARDUSE_199602'
    2 INDEX (RANGE SCAN) OF 'TBCARDUSE_199602_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199603'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199603_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199604'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199604_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199605'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199605_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199606'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199606_IDX2'
    1 TABLE ACCESS OF 'TBCARDUSE_199607'
    2 INDEX (RANGE SCAN) OF 'TBCARDUSE_199607_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199608'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199608_IDX2'
    0 TABLE ACCESS OF 'TBCARDUSE_199609'
    1 INDEX (RANGE SCAN) OF 'TBCARDUSE_199609_IDX2'
    ( 설명 ) Partition Column이 OR로 비교 되었을 때는
    FILTER가 동작하지 않음. ( BUG로 등록되어 있음 )
    (5) Partition Column이 " BETWEEN "으로 비교되고 다른 비교
    Column이 없을 때
    SELECT CARD_NO,USE_NO,AUTH_DATE,AUTH_AMT
    FROM PV_TBCARDUSE
    WHERE AUTH_DATE BETWEEN '19960601' AND '19960630'
    EXECUTION PLAN
    SELECT STATEMENT
    VIEW PV_TBCARDUSE
    UNION-ALL (PARTITION)
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199507
    INDEX (RANGE SCAN) TBCARDUSE_199510_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199508
    INDEX (RANGE SCAN) TBCARDUSE_199510_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199509
    INDEX (RANGE SCAN) TBCARDUSE_199510_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199510
    INDEX (RANGE SCAN) TBCARDUSE_199510_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199511
    INDEX (RANGE SCAN) TBCARDUSE_199511_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199512
    INDEX (RANGE SCAN) TBCARDUSE_199512_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199601
    INDEX (RANGE SCAN) TBCARDUSE_199601_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199602
    INDEX (RANGE SCAN) TBCARDUSE_199602_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199603
    INDEX (RANGE SCAN) TBCARDUSE_199603_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199604
    INDEX (RANGE SCAN) TBCARDUSE_199604_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199605
    INDEX (RANGE SCAN) TBCARDUSE_199605_IDX3
    TABLE ACCESS FULL TBCARDUSE_199606
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199607
    INDEX (RANGE SCAN) TBCARDUSE_199607_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199608
    INDEX (RANGE SCAN) TBCARDUSE_199608_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199609
    INDEX (RANGE SCAN) TBCARDUSE_199609_IDX3
    (6) Partition Column이 " OR "로 비교되고 다른 비교 Column이
    없을 때.
    SELECT CARD_NO,USE_NO,AUTH_DATE,AUTH_AMT
    FROM PV_TBCARDUSE
    WHERE AUTH_DATE BETWEEN '19960501' AND '19960531'
    OR AUTH_DATE BETWEEN '19960601' AND '19960630'
    OR AUTH_DATE BETWEEN '19960701' AND '19960731'
    EXECUTION PLAN
    SELECT STATEMENT
    VIEW PV_TBCARDUSE
    UNION-ALL (PARTITION)
    TABLE ACCESS FULL TBCARDUSE_199507
    TABLE ACCESS FULL TBCARDUSE_199508
    TABLE ACCESS FULL TBCARDUSE_199509
    TABLE ACCESS FULL TBCARDUSE_199510
    TABLE ACCESS FULL TBCARDUSE_199511
    TABLE ACCESS FULL TBCARDUSE_199512
    TABLE ACCESS FULL TBCARDUSE_199601
    TABLE ACCESS FULL TBCARDUSE_199602
    TABLE ACCESS FULL TBCARDUSE_199603
    TABLE ACCESS FULL TBCARDUSE_199604
    TABLE ACCESS FULL TBCARDUSE_199605
    TABLE ACCESS FULL TBCARDUSE_199606
    TABLE ACCESS FULL TBCARDUSE_199607
    TABLE ACCESS FULL TBCARDUSE_199608
    TABLE ACCESS FULL TBCARDUSE_199609
    # 최악의 경우
    (7) 위 (6)의 Query를 " BETWEEN "으로 변환 경우
    SELECT /*+ FULL(PV_TBCARDUSE) */
    CARD_NO,USE_NO,AUTH_DATE,AUTH_AMT
    FROM PV_TBCARDUSE
    WHERE AUTH_DATE BETWEEN '19960501' AND '19960731'
    EXECUTION PLAN
    SELECT STATEMENT
    VIEW PV_TBCARDUSE
    UNION-ALL (PARTITION)
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199507
    INDEX (RANGE SCAN) TBCARDUSE_199510_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199508
    INDEX (RANGE SCAN) TBCARDUSE_199510_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199509
    INDEX (RANGE SCAN) TBCARDUSE_199510_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199510
    INDEX (RANGE SCAN) TBCARDUSE_199510_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199511
    INDEX (RANGE SCAN) TBCARDUSE_199511_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199512
    INDEX (RANGE SCAN) TBCARDUSE_199512_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199601
    INDEX (RANGE SCAN) TBCARDUSE_199601_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199602
    INDEX (RANGE SCAN) TBCARDUSE_199602_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199603
    INDEX (RANGE SCAN) TBCARDUSE_199603_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199604
    INDEX (RANGE SCAN) TBCARDUSE_199604_IDX3
    TABLE ACCESS FULL TBCARDUSE_199605
    TABLE ACCESS FULL TBCARDUSE_199606
    TABLE ACCESS FULL TBCARDUSE_199607
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199608
    INDEX (RANGE SCAN) TBCARDUSE_199608_IDX3
    FILTER
    TABLE ACCESS (BY ROWID) OF TBCARDUSE_199609
    INDEX (RANGE SCAN) TBCARDUSE_199609_IDX3
    2) Insert, Delete, Update의 사용
    현재까지는 Partition View에 직접적으로 Insert/Delete/Update를
    할 수 없다.
    (이는 8.0 Version에 가능] 따라서 현재는 2 가지 방법으로 가능.
    (1) DYNAMIC SQL을 이용하는 방법
    (2) LOGIC적으로 IF-ELSE 방법을사용하여 가능한 일어 날 수 있는 모든
    경우를 기술하는 방법
    (비교) (1)의 방법은 Application 작성이 간단하기는 하나 LOOP안에서
    수행되거나 빈번히 수행되는 경우에는 Parsing Overhead가
    심각해 질 정도로 증가 됨.
    (2)의 방법은 (1)의 단점을 해소 할 수 있으나 Partition
    Table이 추가, 변경됨 따라 주기적으로 APPLICATION이 같이
    변경해 주어야 한다.
    3) Partition View의 효율적인 사용 방법
    (1) Parsing Time의 감소
    Partition View는 많은 수의 Table을 UNION ALL View로 만든
    것이므로 Query 수행 시 Parsing Time의 Overhead로 인해 성능
    저하를 가져 올 수 있다.
    이에 대해서 물리적인 방법(HOLD_CURSOR,
    CURSOR_SPACE_FOR_TIME=true 등)으로 Re-Parsing Time을 줄일
    수 있으나 Partion View를 효율적으로 생성하므로써 Overhead를
    줄일 수 있다.
    (가) 수직적 분할
    (사례)에서는 약 100개 정도의 Column에 대해서 "Select * "의
    형태로 되어 있어 Data Dictionary Call이 그만큼 많아 진다.
    그러나 Table의 속성을 보면 필수 NOT NULL Column(10ro)을
    제외한 90개의 Column이 실제적으로는 '신용판매','현금서비스',
    '해외이용'의 3가지로 GROUPING 되는 것으로 PARTITION VIEW
    자체를 3개 정도로 분할(수직적인 분할)하고 사용하여 Overhead
    를 줄인다.
    (나) 수평적 분할
    가장 ACTIVE한 범위를 정하여 수평적으로 분할하여 Partition
    View를 생성한다.
    (사례)에서는 3개월,6개월,9개월 단위의 Partition View를
    만들어 사용하고 있다.
    (2) Partition Column이 비교절에 나오지 않을때
    이 때는 어쩔 수 없이 Partition Column이 사용 될 수 없으므로
    일반적인 UNION-ALL View형태로 Access 될 수 밖에 없다. 그러나
    SELECT 결과가 1건일 경우에는 ROWNUM 제한을 시켜 될 수 있는 한
    TABLE ACCESS를 제한시킨다.
    ( UNION ALL의 순서를 역순으로 하여 VIEW를 생성 )
    CREATE OR REPLACE VIEW PV_TBCARDUSE1
    AS
    SELECT * FROM TBCARDUSE_199609
    UNION ALL
    SELECT * FROM TBCARDUSE_199608
    UNION ALL
    SELECT * FROM TBCARDUSE_199607
    UNION ALL
    SELECT * FROM TBCARDUSE_199606
    UNION ALL
    SELECT * FROM TBCARDUSE_199605
    UNION ALL
    SELECT * FROM TBCARDUSE_199604
    UNION ALL
    SELECT * FROM TBCARDUSE_199603
    UNION ALL
    SELECT * FROM TBCARDUSE_199602
    UNION ALL
    SELECT * FROM TBCARDUSE_199601
    UNION ALL
    SELECT * FROM TBCARDUSE_199512
    UNION ALL
    SELECT * FROM TBCARDUSE_199511
    UNION ALL
    SELECT * FROM TBCARDUSE_199510
    UNION ALL
    SELECT * FROM TBCARDUSE_199509
    UNION ALL
    SELECT * FROM TBCARDUSE_199508
    UNION ALL
    SELECT * FROM TBCARDUSE_199507
    SELECT * FROM PV_TBCARDUSE1
    WHERE USE_NO = '123456' ---+
    AND CARD_NO = '45991276182212' ---+ (UNQUE)
    AND ROWNUM = 1;
    (사례)에서 시간적으로 최근의 TABLE을 먼저 UNION ALL하여
    사용하였다. 이는 원하는 정보가 최근에 있을 확률이 높기때문에
    먼저 찾게되면 더이상 TABLE의 ACCESS를 하지 않기때문이다.
    (3) HINT의 사용
    Partition View에 Hint 사용은 보통의 Query에 대해서와 같이
    사용한다.
    (1) PARALLEL HINT
    SELECT /*+ PARALLEL(PV_TBCARDUSE,2) */
    SUM(AUTH_AMT)
    FROM PV_TBCARDUSE
    WHERE AUTH_DATE BETWEEN '19960501' AND '19960731'
    TBCARDUSE_199605,TBCARDUSE_199606,TBCARDUSE_199607
    Table을 Parallel로 처리한다.
    (2) INDEX_DESC HINT
    이는 INDEX이름이 HINT내에 들어가야 하므로 원칙적으로는
    불가능하지만 사용 될 Table이 명확하게 정의된다면 사용 할
    수도 있다.
    SELECT /*+ INDEX_DESC(a TBACRDUSE_199605_IDX1) */
    FROM PV_TBCARDUSE a
    WHERE CARD_NO = '4599243141847231'
    AND AUTH_DATE BETWEEN '19960501' AND '19960531'
    AND ROWNUM = 1

    Hello,
    Incorrect Display of Tables and Frames in Firefox when DESFORMAT=HTMLCSS (Doc ID 412272.1)
    Regards

  • Partitioned view read other tables when it shouldn't? SQL Server 2008 bug?

    The query still scans all the tables where it supposes to scan only one table when the tables have more than, say, 10000 rows. 
    The details can be found here.
    http://stackoverflow.com/questions/25691738/unreliable-partitioned-view-execution-table-scan-sql-server-bug?noredirect=1#comment40155612_25691738

    I don't see why this would be a bug.
    The optimizer has no information about what is in this table variable, since table variable does not have statistics. Therefore it comes up with a plan which makes sense in the general case, that is, the table variable has data from both partitions. If that
    plan is such that a startup expression can be applied, a startup filter is added. But in the case where both tables are scanned, the optimizer has decided that the best is to run a MERGE JOIN on the two tables.
    The situation may brighten up a bit, if you instead use a temp table, since a temp table has distribution statistics.
    Erland Sommarskog, SQL Server MVP, [email protected]

  • How to get updateable and not updateable rows in a single GridControl

    Hi,
    i am using a gridControl based on an objectView "customer" with the attributes "cust_nr, cust_name, cust_updateable".
    If customer data is updateable or not updateable set by the flag cust_updateable (true or false).
    When the cust_updateable=false the user should not be able to update customer data in this row.
    When the cust_updateable=true the user should be able to update customer data in this row.
    Anyone who can help me?
    Thanks !
    null

    Three possibilities come to mind:
    If you want to manage this at the Application GUI level: If you want to prohibit them from ENTERING into a cell or EDITING a cell in the row, that's a different issue. ( I like blocking problems as early as possible ). I can see how one would do that with their own TableModel ( isCellEditable method, set FALSE if you do a getValueAt(thisRow,editableIdx)=="Y" or somesuch ). That might be a direction you might want to research and see if it is possible to do something like that with a gridControl. ( And post what you find! )
    If you want to handle it at the DBA level: You might also look at "virtual private databases" in the Oracle dbms. Again, those rows would be trapped at commit time rather than "verb" time ( on the application screen ). The nice thing about that is that it protects the table against ALL comers, not just those that are going through a middle tier.
    Your best bet if you want to follow the BC4J framework level: go into the Entity/ View Object impl and find the setMyAttribute method, and check the appropriate cust_updateable attribute ( in the same EO/VO ) and fire an exception. That'll trap it at data entry time, as well, and if you try and set it programmatically your try/catch block will fire up.
    Good Luck
    null

  • Ok to format SYSTEM partition if not booting from original drive anymore?

    I bought a SSD for my HP Pavilion dv7 and installed it as the primary boot drive, upgrading with a new copy of Windows at the same time. I use the original drive in the second slot for data, and have formatted the original C: partition, but not touched the other 3 partitions. I would like to be able to use at least one primary partition for another OS or as a backup partition. If I want to leave the recovery partition alone, and be able to run diagnostics, that means SYSTEM....Can the recovery tools work if they are not on the boot drive? If so, I can take the SYSTEM partition (the SSD has the active boot partition).
    This question was solved.
    View Solution.

    Hi,
    Unless the Bios can access the HP_TOOLS partition at boot ( which it will not be able to from the drive in the second bay ), you will lose the ability to run the extended diagnostics and the ability to have the bios flash execute on reboot.  The bios will still be able to be updated, but the flash will run in the Windows environment which has more potential to cause problems.
    However, the HP_TOOLS partition can be created on a flash drive or you could simply create it on your SSD - see the document on the link below regarding this - this is just as an example and the download included may not be correct for your particular notebook, so you would need to get this from your own Product page.
    http://h10025.www1.hp.com/ewfrf/wc/softwareDownloadIndex?softwareitem=ob-101396-1&cc=uk&dlc=en&lc=en...
    Regards,
    DP-K
    ****Click the White thumb to say thanks****
    ****Please mark Accept As Solution if it solves your problem****
    ****I don't work for HP****
    Microsoft MVP - Windows Experience

  • How can I change the background of a running webpage on my own. Example Facebook I want to change its backround color from white to black just in my view not for all

    How can I change the background of a running webpage on my own. Example Facebook I want to change its background color from white to black just in my view, not for all. Cause I really hate some site with white background because as I read for an hour it aches my eyes but not on those with darker background color.

    You can use the NoSquint extension to set font sizes (text/page zoom) and text colors on web pages.
    *NoSquint: https://addons.mozilla.org/firefox/addon/nosquint/

Maybe you are looking for

  • Very disappointed in Verizon's service after being a customer for over 8 years

    I bought 2 LG chocolates on the family plan. From the start the touch feature has been less than satisfactory, when you scroll it scrolls so fast you often can't get to where you want to be. Recently the touch screen has completely broken down and yo

  • BUPA_REL Filter not working

    Hello, We want  to filter  some  relationship type in  BUPA_REL created in CRM , from flowing  into R/3 system. I have set the filter on the BUPA_REL business object as follows in R3AC1 Source Site: CRM Table structure: BUT050 Field: RELTYP op: NE Lo

  • Sony a77 gps metadata

    Does any one know how to import a sony a77 raw file that has GPS data into LR5, having problems with the GPS data not being pulled through... works a treat in iPhoto and Aperture... Thanks.

  • Activating a phone

    I have a Family Share plan with unlimited data. Can I activate a pre-own Iphone 4s or Iphone 5 on this 3g network. My Lg Ally phone is acting up. I don't want to upgrade and get  a new phone and new data plan.

  • Suggestions on VESA-capable monitors?

    Hello! I will be getting a new 17" MBP soon, and I'm Iooking for suggestions on external monitors to use as a second display. I want at least a 20" widescreen monitor that is VESA compliant. The 23" Cinema Display, with VESA mount adapter is an optio