Example #1
0
        public async Task Initialize(DatabaseSession databaseSession, CancellationToken cancellationToken)
        {
            databaseSession = databaseSession.Owner ?? databaseSession;
            var oracleSessionValues = (OracleSessionValues)databaseSession.ProviderValues;

            if (_oracleSessionValues != null && _oracleSessionValues.Instance == oracleSessionValues.Instance && _oracleSessionValues.Id == oracleSessionValues.Id && String.Equals(_oracleSessionValues.SqlId, oracleSessionValues.SqlId) && _oracleSessionValues.ExecutionId == oracleSessionValues.ExecutionId)
            {
                await Refresh(cancellationToken);

                return;
            }

            Shutdown();

            DatabaseSession = databaseSession;

            try
            {
                _oracleSessionValues = oracleSessionValues.Clone();

                if (!String.IsNullOrEmpty(_oracleSessionValues.SqlId) && _oracleSessionValues.ExecutionId.HasValue)
                {
                    var monitorDataProvider = new SqlMonitorDataProvider(_oracleSessionValues.Instance, _oracleSessionValues.Id, _oracleSessionValues.ExecutionStart.Value, _oracleSessionValues.ExecutionId.Value, _oracleSessionValues.SqlId, _oracleSessionValues.ChildNumber.Value);
                    await OracleDatabaseModel.UpdateModelAsync(OracleConnectionStringRepository.GetBackgroundConnectionString(_connectionString.ConnectionString), null, false, cancellationToken, monitorDataProvider);

                    _planItemCollection = monitorDataProvider.ItemCollection;
                    _planItemCollection.RefreshPeriod = DefaultRefreshPeriod;
                    //QueryCoordinatorLongOperations = _planItemCollection.QueryCoordinatorLongOperations;

                    if (_planItemCollection.RootItem != null)
                    {
                        ExecutionPlanTreeView.RootItem = _planItemCollection.RootItem;
                        SessionItems = _planItemCollection.SessionItems;
                        var collectionView = CollectionViewSource.GetDefaultView(SessionItems);
                        collectionView.SortDescriptions.Add(new SortDescription {
                            PropertyName = "SessionIdentifier.Instance"
                        });
                        collectionView.SortDescriptions.Add(new SortDescription {
                            PropertyName = "ParallelServerGroup"
                        });
                        collectionView.SortDescriptions.Add(new SortDescription {
                            PropertyName = "ParallelServerSet"
                        });
                        collectionView.SortDescriptions.Add(new SortDescription {
                            PropertyName = "ParallelServerNumber"
                        });

                        SummarySession.Inititalize(_planItemCollection);

                        await SafeRefresh();
                    }
                }
            }
            finally
            {
                AutoRefreshEnabled = true;
            }
        }
Example #2
0
        public void Shutdown()
        {
            if (DatabaseSession != null)
            {
                DatabaseSession      = null;
                _oracleSessionValues = null;
            }

            AutoRefreshEnabled             = false;
            _planItemCollection            = null;
            SessionItems                   = null;
            QueryCoordinatorLongOperations = null;
            SummarySession.Clear();
            IsParallel = false;
            ExecutionPlanTreeView.RootItem = null;
        }