(V7.3) PARTITION VIEWS IN RELEASE 7.3

제품 : ORACLE SERVER
작성날짜 : 2004-08-13
SCOPE
8~10g Standard Edition 에서는 Partitioning Option 은 지원하지 않는다.
1. 소개
Partition view 는 Oracle Release 7.3 에서 대용량 테이블(예를 들면, data
warehousing에서 주로 사용함)을 지원하기 위해서 추가된 새로운 방법이다.
Partition View는 대용량 테이블에 대한 관리성 및 가용성을 향상시키고, 이들
테이블에 대한 질의 속도를 향상시킬 수 있다.
Partition view 의 예를 보면,
create view SALES as
          select * from jan_sales
     union all
          select * from feb_sales
     union all
          select * from dec_sales;
1월에서 12월까지의 sales table 들을 합한 뷰가 'SALES' 이다. 이들 월별
테이블들은 column name, data type, index가 모두 같아야 한다. 또한 이들
월별 테이블들은 partition column 에 check constraint 가 반드시 존재해야
하는데, 위의 예를 통해서 보면 jan_sales 의 date column 의 값들은 1월
1일에서 31일 사이의 date 만이 가능하도록 check constraint 가 있어야
한다.
Base table, indexes, constraints 뿐 만 아니라 UNION-ALL view 의 정의는
DBA에 의해 생성된다.
2. 관리성 및 가용성에 대한 장점
Partition view 는 대용량 테이블의 관리를 매우 쉽게 해 준다. 예를 들면,
위에서 정의한 'SALES' 라는 대용량 테이블을 살펴보자. 매월마다 DBA 는 새로운
달의 sales data 를 'SALES' 에 추가해야 한다. 따라서, DBA 는 'SALES' 에 대한
모든 index 들을 drop 하고, 새로운 데이타를 추가한 후에 index 를 재생성해야
할 것이다. 더구나, 'SALES'가 큰 테이블이므로 이 작업 시간도 상당히 오래 걸릴
것이다. 또한, 이 작업 동안 'SALES' 테이블은 사용할 수 없게 된다.
그러나, Partition view 를 사용한다면, 새로운 달의 테이타를 새로운
Partition을 만들어 추가하고, 이 새로운 Partition 에 index 를 생성하는 동안
현재 사용 중인 Partition 을 계속 사용할 수 있다. 따라서, 새로운 Partition 과
index 가 완성되었을 때, DBA 는 이 새로운 Partition 을 포함하는 UNION-All
view 를 재생성하면 된다. 이 UNION-ALL view 를 재생성하는 짧은 시간 동안만
'SALES' 가 사용 불가능하게 된다.
3. Partition view 의 성능 향상
Release 7.3 부터 제공하는 UNION-ALL view 를 사용하면, 단일 테이블 접근보다
적어도 같거나 대부분의 경우 더 좋은 성능 향상을 얻을 수 있다.
단, 모든 Partition들은 반드시 같은 column에 check constraint가 있어야 하고,
column 정의와 index가 같아야 성능 향상의 효과를 얻을 수 있다.
Partition view 에는 다음 두 가지의 성능이 향상되었다.
① Partition 제거
② UNION-ALL view 의 Parallel 수행
먼저, Partition 제거란 다음과 같다. 위에서 생성된 'SALES' partition view
에 대한 임의의 질의들은 일부의 Partition들로부터 데이타를 가져온다.
예를 들어,
select sum(revenues) from SALES
where sales_date between '15-JAN-96' and '15-FEB-96';
와 같은 질의는 Partition view 로 처리될 경우, JAN partition view와 FEB
partition view 만으로 산출된다. 즉, 나머지 10개의 Partition은 접근하지
않는다. 이것을 Partition 제거라고 한다. Partition 제거는 Partition column
에 대한 질의에서만 사용될 수 있다. 위의 예에서는 sales_date column 이
partition column 이다.이러한 제약 사항은 있지만, 속도 향상은 주목할 만
한다. 위의 예에서 보듯이 12개 중 10개의 Partition 을 제외하여 6배의
성능 향상을 얻었다.
Partition view 를 사용 했을 때, 또 다른 장점은 UNION-ALL view 를 parallel
수행한다는 것이다. Parallel Query Option 이 설치된 경우, 모든 UNION-ALL
view 에 대한 질의는 parallel 로 수행된다. 이점은 다른 경쟁 회사들의
parallel query 구조(이들 제품들은 데이타 partition의 물리적 구조가
parallelism 을 결정한다)와는 다르게 parallelism degree 와는 독립적으로
수행된다는 점은 매우 특이하다. 오라클은 UNION-ALL view 의 데이타를
모든 parallel query processes에게 동적으로 균등하게 배분하고, 위에서
언급한 partition 제거 또한 parallelism degree에 영향을 주지 않는다.
* Partition view 의 제약 사항
Partition view 는 DML 연산을 제공하지 않는다. 따라서, READ-ONLY
application (data warehousing 등등) 에 적합하다.

Spoke to Apple support and they basically suggest I play ping pong with Microsoft, on the basis that all works under OSX, but MS say it is up to Apple to supply the drivers for the hardware, just great. So looks like I shall continue as is for now.

Similar Messages

  • (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 ;-)

  • 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

  • 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

  • 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?

  • 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

  • (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]

  • My Apple TV only letting me view latest releases, the kids only have the option to preview the kids movies

    My Apple TV only letting me view latest releases, the kids only have the option to preview most other movies, no parental lock on,

    Checked all of the above and no apparent problem.  Last weekend I uninstalled and then reinstalled iTunes.  Seemed to have fixed the problem ( I thought) but the next time I tried to display a slideshow with music from my PC, the PC wasn't recognised.  Likewise, although my iPad shows up as a device in iTunes on my PC, I am unable to access the PC's libraries using the iPad remote app.  Via the Control Panel on my PC, I confirmed that the ATV shows as an attached device (wired) on my network.
    Totally stumped and frustrated.  The "Help" call remains.

  • Crystal Report Viewer Not Releasing Oracle Database Connections

    I have a very simple vb.net 3.5 web application that uses the Crystal Report viewer 2008 to open a report. My requirements are as follows:
    1. Reports are built by another company and provided to us and used in a web environment
    2. All reports contain parameter fields
    3. The web application must be generic enough that a report can be added to a list and the user simply selects the report and provides database login information. The Crystal report viewer with handle the request for parameter values and prompt the user for their values.
    4. All reports connect to an Oracle 10g server.
    The above requirements have been meet and we have an extremely simple web application that runs the reports. It is working very well other than the crystal report viewer is not releasing the database connections. This is bad because the credentials are on a per user basis and that same user must login to a different oracle application simultaneously. They are being denied access because the credentials are already in use. We do not have control nor influence over the policies in use on the Oracle server. Ideally we would like to control the Crystal Report viewer so that it closes connections after use.
    The web application code is:
    Private Sub viewReports_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    If Not IsPostBack Then
    ConfigureCrystalReport()
    End If
    End Sub
    Private Sub ConfigureCrystalReport()
    'Load the Crystal Report viewer with a report.
    Try
    Dim reportPath As String = Server.MapPath(Session("reportname"))
    crViewer.ReportSource = reportPath
    Catch ex As Exception
    Response.Write(Server.MapPath(Session("reportname")) & "
    " & ex.Message.ToString & "
    " & ex.StackTrace.ToString)
    End Try
    End Sub
    Can anyone shed some light on this topic? Thank you

    Hello, Timothy;
    By default, having the report in session will hold it open for 20 minutes.
    If you create the report as a ReportDocument object you can take it out of session and release it more efficiently. That will release the connection.
        Private Sub ConfigureCrystalReports()
            If (Session("hierarchicalGroupingReport") Is Nothing) Then
                hierarchicalGroupingReport = New ReportDocument()
                hierarchicalGroupingReport.Load(Server.MapPath("Hierarchical Grouping.rpt"))
                Session("hierarchicalGroupingReport") = hierarchicalGroupingReport
            Else
                hierarchicalGroupingReport = CType(Session("hierarchicalGroupingReport"), ReportDocument)
            End If
            myCrystalReportViewer.ReportSource = hierarchicalGroupingReport
        End Sub
    In the Form Unload of the Viewer:
                'Take the report out of session
                Session("hierarchicalGroupingReport")  = Nothing
                Session.Contents.Remove("hierarchicalGroupingReport")
                'Clean up the ReportDocument object
                hierarchicalGroupingReport.Close
                hierarchicalGroupingReport.Dispose()
                hierarchicalGroupingReport = Nothing
                GC.Collect()
    Elaine

  • ASA view maintenance release

    We have a Cisco ASA 5520 and I need to view the maintenance release version. When I do a show version I see 8.2(5) and when I view the file in flash I don't see details of the maintenance number.
    I'm checking our ASA due to the bulletin below where its mentioned to have 8.2(5.47) or 8.2(5.48) but I can't find the .47 or .48 on the ASA.
    Thanks for any help.
    Jeff
    http://www.cisco.com/c/en/us/support/docs/csa/cisco-sa-20140409-asa.html#@ID

    The maintenance releases (sometimes referred to as interim builds) are usually not published on the download portal. If you have a documented need for one (as is the case with this SA), the TAC can give you access to download the necessary build.
    Once you've reloaded with that version as your boot image, your "show version" will then show it as running.

  • Empty upgrade customizing view in release upgrade IMG

    At customer side we are in a releaseupgrade from R/3 4.7 to ERP 6.0.
    Now we want ro generate a project IMG with the view for upgrade customizing.
    Our problem is, that we get no entries.
    We tried to generate the view with all IMG-entries and all components.
    Release is SAP ECC 6.0 (EHP 4) SP0005
    Generating a delta IMG the system begins to generate.
    From older projects (before EHP4) I know, that we got really much entries.
    Any ideas?
    Thanks in advance!
    Gunther

    Dear Gunther,
    Kindly note that as new releases are developed, new customizing steps are added to the
    system, which in turn, adds events to the IMG model.  After an upgrade,
    the Enterprise IMG must be regenerated to include these new tasks. Since
    the Project IMGs are a subset of the Enterprise IMG, they must also be
    regenerated.
    Regarding your issue kindly try to regenerate the Enterprise IMG: transaction SPRO, menu
    path: Basic Functions -> Enterprise IMG -> Manual extension.
    Select the missing nodes and then generate.
    Please take a look at the following notes which explain how to regenerate the IMG:
      130688  -  Project IMG must be regenerated after an
      42272    -  IMG problems after upgrade
      916585  -  Missing IMG Activity Texts in IMG Display
    I hope this helps.
    Regards,
    Abhishek

  • View kernel releases of solution landscape systems

    Hi,
    the view of solution landscape in SM 3.2 (SMSY) provides information about releases and patch levels of each software component, but no information about the SAP kernel release and its patch level. Where can I find this information? I know that Early Watch Reports created by SM provide this data. It would be very useful, if I know the table where that data is stored.
    Has somebody an idea how to use SM 3.2 to manage the kernel stacks of landscape systems?
    Thanks a lot!

    I found a solution for myself. There are serveral information MTE classes which provide the necessary information.

  • How to create view with schemabinding on cross datbases(partitioned views)

    Hello Everyone,
    Please help me to sort this issue. I know it is not possible bind the scheman in below example. But is there any solution to solve this issue.
    I've tables like below
    create database D1--First database
    create table dbo.t1(
    id int
    create database D2--Second database
    create table dbo.t2(
    id int
    i want to create a view with the schema binding option on this
    create database D3
    use d3
    create view vw_v1
    with schemabinding
    as
    select id from d1.dbo.t1
    union all
    select id from d2.dbo.t2
    I'm getting this below error
    Msg 4512, Level 16, State 3, Procedure vw_v1, Line 7
    Cannot schema bind view 'vw_v1' because name 'd1.dbo.t12' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.
    Many thanks
    A-ZSQL

    CREATE VIEW
    SCHEMABINDING
    Binds the view to the schema of the underlying table or tables. When SCHEMABINDING is specified, the base table or tables cannot be modified in a way that would affect the view definition. The view definition itself must first be modified or dropped to remove
    dependencies on the table that is to be modified.
    > When you use SCHEMABINDING,
    the select_statement must include the two-part names (schema.object)
    of tables, views, or user-defined functions that are referenced.
    >
    All referenced objects must be in the same database.
    José Diz     Belo Horizonte, MG - Brasil

Maybe you are looking for

  • What is new in IWeb latest version ?

    Can someone tell me what is new in IWeb latest version ? are there new features or is it just a bug-cleaning ? Thanks MacBookPro 1,83 GHz   Mac OS X (10.4.6)  

  • Version of application Server -- OIM 9.1.0.0

    What's the version of application Server supported for OIM (v 9.1.0.0)? I was install OAS 10.1.3 and in the middle of installation appears one information about "This version of OAS is not supported for this installation". Thanks again.

  • Hyperlink in the bursted email output

    Hi All, My requirement is to burst a report and email the output. But in the email output, i want to provide users the a link ( or it could be any other word) which says "Please click on this _link_ to see the output" and that link should take users

  • Problems with migration from Windows to Mac

    I recently purchased a new Macbook Pro and proceeded to move my Lightroom program and catalog to the new computer.  I have 77,000 digital image files stored on an external hard drive, so I placed my catalog on the external drive to make the move to t

  • Ringtones for each contact in N900

    Is there any way to assign a ringtone for each contact in N900. Any tutorial or application for this is appreciable.