Oracle режим совместимости со старыми версиями
Заключение
Переход на современную версию SQL Server (т.е. SQL Server 2016 или старше) существенно более сложный процесс, чем это было со старыми версиями SQL Server. Поскольку изменения связаны с различными уровнями совместимости базы данных и различными версиями оценщика кардинального числа, действительно очень важно обдумать, спланировать и протестировать тот уровень совместимости, который вы хотите использовать на новой версии SQL Server, на которую вы переносите ваши базы данных.
Майкрософт рекомендует процесс апгрейда на новейшую версию SQL Server с сохранением уровня совместимости переносимых баз данных. Затем включить Query Store на каждой базе данных и собрать показательные данные при рабочей нагрузке. Потом установить уровень совместимости последней версии и использовать Query Store, чтобы зафиксировать падение производительности, принудительно используя последний заведомо хороший план.
Если вы хотите избежать бессистемной "слепой" миграции, когда вы находитесь в блаженном неведении того, как ваша рабочая нагрузка будет реагировать на эти изменения. Изменение уровня совместимости базы данных на подходящую версию и использование подходящих конфигурационных параметров уровня базы данных, наряду с абсолютно необходимыми соответствующими хинтами запросов, исключительно важно для современных версий SQL Server.
Другим вопросом, заслуживающим внимания, является то, что Майкрософт начинает продвигать идею, что вы должны думать о тестировании ваших баз данных и приложений на конкретном уровне совместимости базы данных, а не на конкретной версии SQL Server. Майкрософт обеспечивает защиту формы плана запроса, когда новая версия SQL Server запускается на железе, которое совместимо с железом, на котором была запущена предыдущая версия (исходная) SQL Server, и один и тот же поддерживаемый уровень совместимости базы данных используется на обеих версиях.
Основная идея заключается в том, что если вы протестировали ваши приложения на конкретном уровне совместимости, например, 130, вы получите то же самое поведение и производительность, если переместите базу данных на новую версию SQL Server (например, SQL Server 2017 или SQL Server 2019), пока вы используете тот же уровень совместимости базы данных и эквивалентное железо.
Before you upgrade, review compatibility between your earlier release Oracle Database and the new Oracle Database release as part of your upgrade plan.
If new features are incompatible with your earlier release, then Database compatibility can cause issues.
Oracle recommends increasing the COMPATIBLE parameter only after you have completed testing the upgraded database.
Review to understand how to set the COMPATIBLE initialization parameter for non-CDB and multitenant architecture containers.
Review to find the default, minimum, and maximum values for the COMPATIBLE initialization parameter for Oracle Database 19c.
Before upgrading to Oracle Database 19c, you must set the COMPATIBLE initialization parameter to at least 11.2.0 .
The COMPATIBLE initialization parameter enables or disables Oracle Database features based on release compatibility
Use this SQL query to find the COMPATIBLE initialization parameter value set for your database.
When to Set the COMPATIBLE Initialization Parameter in Oracle Database
Oracle recommends increasing the COMPATIBLE parameter only after you have completed testing the upgraded database.
After the upgrade is complete, you can increase the setting of the COMPATIBLE initialization parameter to the maximum level for the new Oracle Database release. However, after you increase the COMPATIBLE parameter, you cannot subsequently downgrade the database.
Уровень совместимости базы данных 140
Если у вас установлен SQL Server 2017 или новее, использование уровня совместимости базы данных 140 будет применять СЕ140 по умолчанию. Вы также получаете все другие связанные с производительностью изменения от 130 плюс новые. SQL Server 2017 ввел новые возможности адаптивной обработки запросов, и они доступны по умолчанию, когда уровень совместимости базы данных установлен в 140. Они включают обратную связь по выделению памяти в пакетном режиме (batch mode memory grant feedback), адаптивные соединения в пакетном режиме (batch mode adaptive joins) и чередующееся выполнение (interleaved execution).
Understanding Oracle Database Compatibility
If new features are incompatible with your earlier release, then Database compatibility can cause issues.
Databases from different releases of Oracle Database software are compatible if they support the same features, and if those features perform the same way. When you upgrade to a new release of Oracle Database, certain new features can make your database incompatible with your earlier release.
Your upgraded database becomes incompatible with your earlier release under the following conditions:
A new feature stores any data on disk (including data dictionary changes) that cannot be processed with your earlier release.
An existing feature behaves differently in the new environment as compared to the old environment.
3 ответы
Нам пришлось вернуться к клиенту Oracle 10 (я полагаю, 10.1), чтобы подключиться к базе данных Oracle 8. Если есть способ сделать это с помощью 11.2, я бы хотел получить образование.
EDIT: 10.2 будет работать. Вот официальное слово:
И с 11.1 вам не повезло:
Oracle даже не перечисляет версию 8 ни в одной таблице совместимости на своем веб-сайте. Мы проверили, что текущие (11g R2) драйверы JDBC от Oracle не работают с источниками базы данных Oracle 8. Это означает, что невозможно получить доступ к базам данных Oracle 8 из последней версии Oracle SQL Developer, поскольку она использует драйвер JDBC.
Хотя есть небольшой шанс получить доступ к Oracle 8 из другого клиента Oracle 11g, я бы не стал на это ставить свой бизнес.
Тема: Клиент / Сервер / Поддержка взаимодействия между различными версиями Oracle Идентификатор документа: 207303.1
Прямо не пойдет.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками oracle oracle11g backwards-compatibility or задайте свой вопрос.
COMPATIBLE.RDBMS
Значение атрибута COMPATIBLE.RDBMS группы дисков определяет минимальное значение параметра инициализации базы данных COMPATIBLE для любого экземпляра базы данных, которому разрешено использовать группу дисков. Перед продвижением атрибута COMPATIBLE.RDBMS убедитесь, что значения параметра инициализации COMPATIBLE для всех баз данных, которые обращаются к группе дисков, равны по крайней мере значению нового параметра COMPATIBLE.RDBMS .
Например, если для параметров инициализации COMPATIBLE баз данных установлено значение 11.2 или 12.1, то для COMPATIBLE.RDBMS можно задать любое значение от 10.1 до 11.2 включительно.
Для Oracle ASM 12c значение 10.1 является настройкой по умолчанию для атрибута COMPATIBLE.RDBMS при использовании оператора SQL CREATE DISKGROUP , команды ASMCMD mkdg и ASMCA .
На заметку!
Параметр инициализации базы данных COMPATIBLE позволяет использовать новую версию Oracle Database, в то же время гарантируя обратную совместимость с более ранней версией.
The COMPATIBLE Initialization Parameter in Oracle Database
Review to understand how to set the COMPATIBLE initialization parameter for non-CDB and multitenant architecture containers.
Oracle Database enables you to control the compatibility of your database with the COMPATIBLE initialization parameter.
Understanding the COMPATIBLE Initialization Parameter
In Oracle Database 19c, when the COMPATIBLE initialization parameter is not set in your parameter file, the COMPATIBLE parameter value defaults to 19.0.0 If you do not set the COMPATIBLE initialization parameter to 19.0.0 , then you cannot use the new Oracle Database 19c features, because your upgraded database is not running in the required COMPATIBILITY setting for Oracle Database 19c features.
When the Oracle Database COMPATIBLE parameter is increased to 19.0.0 , the first Java call to the database initiates a "name translation" operation. This operation can require a few minutes to complete. You should expect this delay the first time a Java call is made to the database after you increase the compatibility parameter. This initial delay to carry out the name translation occurs only during the initial Java call.
Before upgrading to Oracle Database 19c, you must set the COMPATIBLE initialization parameter to at least 11.2.0 , which is the minimum setting for Oracle Database 19c.
The compatible parameter must be at least 3 decimal numbers, separated by periods. For example:
Oracle recommends that you only raise the COMPATIBLE parameter after you have thoroughly tested the upgraded database.
After you increase the COMPATIBLE parameter, you cannot downgrade the database.
If you are upgrading from Oracle Database release 11.2, then you must set the compatible value to at least 11.2.0. You must do this at the time of the upgrade. Do not make this change until you are ready to upgrade, because a downgrade back to an earlier compatibility level is not possible after you raise the COMPATIBLE initialization parameter value.
Oracle Database Administrator’s Guide for information about managing initialization parameters
Rules for COMPATIBLE Parameter Settings in Multitenant Architecture
The COMPATIBLE parameter of the container database (CDB) affects the COMPATIBLE parameter settings of pluggable databases (PDBs) plugged into that container database. Review the following scenarios that occur when you plug in a PDB to a CDB:
PDB COMPATIBLE equal to CDB$ROOT COMPATIBLE parameter setting.
Result: No change to the PDB COMPATIBLE parameter setting.
PDB COMPATIBLE is lower than CDB$ROOT COMPATIBLE parameter setting.
Result: The PDB COMPATIBLE parameter is increased automatically to the same COMPATIBLE parameter setting as CDB$ROOT . After you plug in the PDB, you cannot downgrade the PDB to an earlier release.
PDB COMPATIBLE is higher than CDB$ROOT COMPATIBLE parameter setting.
Result: The PDB cannot be plugged in. Only PDBs with a COMPATIBLE parameter setting equal to or lower than CDB$ROOT can be plugged in to the CDB.
У меня есть некоторые старые экспорты базы данных (mdf + ldf) с 2006 года. Я не могу присоединить их к SQL Server 2016, но к SQL Server 2008R2, затем сделать резервную копию и восстановить ее на SQL Server 2016. При таком подходе файлы базы данных конвертируется .
msgstr "sql . не может быть обновлен, потому что его не выпускаемая версия не поддерживается . "
Поэтому, если я правильно понимаю, это означает, что SQL Server 2016 с уровнем совместимости 2008 НЕ совпадает с самой установкой SQL Server 2008. Это правильно?
Какая тогда разница? Влияет ли уровень совместимости только на запросы SQL или на поведение базы данных в целом (резервное копирование, восстановление и т. Д.)?
COMPATIBLE.ASM
Значение атрибута группы дисков COMPATIBLE.ASM определяет минимальную версию программного обеспечения для экземпляра Oracle ASM, который может использовать группу дисков. Этот параметр также влияет на формат структур данных для метаданных Oracle ASM на диске. Формат другого содержимого файла определяется Oracle ASM Dynamic Volume Manager (Oracle ADVM) и экземпляром базы данных.
Для Oracle ASM 12c значение 12.1 является настройкой по умолчанию для атрибута COMPATIBLE.ASM при использовании ASMCA. Значение по умолчанию - 10.1 при использовании оператора SQL CREATE DISKGROUP и команды ASMCMD mkdg .
Уровень совместимости 120
Здесь был введен новый оценщик кардинального числа (CE), т.е. изменилась оценка числа строк. Во многих случаях большинство ваших запросов стало выполняться быстрей при использовании нового оценщика, но зачастую имелось небольшое число запросов, которые демонстрировали существенное падение производительности с новым оценщиком кардинального числа. Использование уровня совместимости базы данных 120 означает, что вы будете использовать "новый" CE до тех пор, пока не установите флажок трассировки уровня экземпляра или не будете использовать хинт в запросе, чтобы отменить его действие.
Joe Sack еще в апреле 2014 года написал классическую работу “Optimizing Your Query Plans with the SQL Server 2014 Cardinality Estimator” (Оптимизация ваших планов запросов с оценщиком кардинального числа SQL Server 2014), которая объясняет основание и поведение сделанных изменений. Если вы наблюдаете падение производительности некоторых запросов с новым СЕ, SQL Server имел немного вариантов, чтобы устранить проблемы с производительностью, вызванные новым СЕ. Joe подробно описал эти возможности, которые, по существу, сводились к флажкам трассировки или хинтам в запросах для контроля над тем, какой оценщик кардинального числа применяется оптимизатором запросов. Или же вы решали вернуться обратно к уровню совместимости базы данных 110 и ниже.
Я использую "новый" СЕ в кавычках потому, что теперь нет единственного "нового" СЕ. Каждая следующая версия SQL Server, начиная с SQL Server 2014, имеет свой СЕ, и изменения оптимизатора запросов привязаны к уровню совместимости базы данных. Новая более точная терминология, соответствующая SQL Server 2016 и далее, использует СЕ120 для уровня совместимости 120, СЕ130 - для уровня совместимости 130, СЕ140 - для уровня совместимости 140, и СЕ150 - для уровня совместимости 150.
Последние вопросы
Уровень совместимости базы данных 150
Если вы имеете SQL Server 2019 или новее, использование уровня совместимости базы данных 150 будет применять СЕ150 по умолчанию. Вы также получаете все остальные изменения, связанные с производительностью, от 130 и 140 плюс новые, введенные в этой версии. SQL Server 2019 добавляет даже больше улучшений производительности и изменений поведения, чем доступно по умолчанию, когда база данных использует уровень совместимости 150. Главным примером является встраивание скалярных функций пользователя (scalar UDF inlining), который автоматически встраивает много скалярных UDF в ваших пользовательских базах данных. Это может быть одним из наиболее важных улучшений производительности при некоторых рабочих нагрузках.
Другим примером является интеллектуальная обработка запросов (intelligent query processing), которая является подмножеством адаптивной обработки запросов в SQL Server 2017. Новые возможности включают отложенную компиляцию табличных переменных (table variable deferred compilation), неточную обработку запросов (approximate query processing) и пакетный режим для построчного хранения (batch mode on rowstore).
Имеется также 16 новых конфигурационных параметров уровня базы данных (в CTP 2.2), которые дают вам больше возможностей управления базами данных, чем это предоставлялось флажками трассировки или уровнем совместимости базы данных. Это позволяет осуществлять более тонкий контроль высокоуровневых изменений, чем поведение по умолчанию при уровне совместимости базы данных 150.
Связанные теги
Данный сайт использует файлы cookie, чтобы предоставить Вам наилучший сервис. Продолжая использовать сайт, Вы принимаете нашу политику в отношении файлов cookie. OkПодробнее
Атрибуты совместимости дисковых групп (COMPATIBLE) определяют параметры совместимости дисковых групп для Oracle ASM и экземпляров базы данных. Мы рассмотрим в данной справочной статье настройку следующих атрибутов:
- COMPATIBLE.ASM
- COMPATIBLE.RDBMS
- COMPATIBLE.ADVM
Значение уровня совместимости базы данных в SQL Server
До SQL Server 2014 уровень совместимости базы данных ваших пользовательских баз, как правило, не являлся требующим внимания аспектом, по крайней мере, с точки зрения производительности. В отличии от уровня файлов базы данных (который автоматически апгрейдится, когда вы восстанавливаете или присоединяете базу данных более низкого уровня к экземпляру, запущенному на более новой версии SQL Server, и который никогда не опускается к более низкому уровню), уровень совместимости базы данных может быть изменен до любого поддерживаемого уровня с помощью простой команды
Вы не привязаны к какому-то конкретному поддерживаемому уровню совместимости и можете изменить его по вашему желанию на любой другой из поддерживаемых. Во многих случаях большинство пользовательских баз данных никогда не изменяют свой уровень совместимости после перехода к новой версии SQL Server. Это обычно не вызывает никаких проблем до тех пор, пока вам не понадобятся новые возможности, доступные на последнем доступном уровне совместимости базы данных.
Для SQL Server 2012 и ниже уровень совместимости базы данных, главным образом, использовался для контроля над тем, доступны или нет новые возможности, введенные в конкретной версии SQL Server, и доступны или нет не поддерживаемые уже старые возможности. Уровень совместимости базы данных также использовался как метод поддержания обратной совместимости приложений со старыми версиями SQL Server. Если у вас не было времени, чтобы выполнить полное тестирование регрессии на новейшем уровне совместимости, вы могли просто использовать прежний уровень совместимости до тех пор, пока выполните тестирование и, при необходимости, модификацию ваших приложений.
В таблице 1 показаны основные версии SQL Server и их уровни совместимости, поддерживаемые и принимаемые по умолчанию.
Версия SQL Server | Версия движка БД | Уровень совместимости по умолчанию | Поддерживаемые уровни |
---|---|---|---|
SQL Server 2019 | 15 | 150 | 150, 140, 130, 120, 110, 100 |
SQL Server 2017 | 14 | 140 | 140, 130, 120, 110, 100 |
SQL Server 2016 | 13 | 130 | 130, 120, 110, 100 |
SQL Server 2014 | 12 | 120 | 120, 110, 100 |
SQL Server 2012 | 11 | 110 | 110, 100, 90 |
SQL Server 2008 R2 | 10.5 | 100 | 100, 90, 80 |
SQL Server 2008 | 10 | 100 | 100, 90, 80 |
SQL Server 2005 | 9 | 90 | 90, 80 |
SQL Server 2000 | 8 | 80 | 80 |
Таблица 1: Версии SQL Server и поддерживаемые ими уровни совместимости
Восстановление или присоединение базы данных
Если вы восстанавливаете полный бэкап базы данных, который был сделан на более старой версии SQL Server, на экземпляре, который запущен на более новой версии SQL Server, то уровень совместимости базы данных останется прежним, каким он был на старой версии SQL Server, если уровень совместимости старой базы данных не ниже, чем минимальный поддерживаемый уровень совместимости новой версии SQL Server.
Например, если вы восстанавливаете бэкап базы данных с SQL Server 2005 на экземпляре SQL Server 2017, уровень совместимости для восстановленной базы данных будет установлен в 100. Вы получите то же самое поведение, если отсоедините базу данных с более старой версии SQL Server, а затем присоедините её к более новой версии SQL Server.
Такое поведение не ново, но кое-что новое и важное может еще произойти, когда вы переводите пользовательскую базу данных на уровень совместимости 120 или новее. Эти дополнительные изменения, которые могут оказать существенное влияние на производительность, видимо, недостаточно известны и поняты широкому сообществу пользователей SQL Server. Я по-прежнему встречаю многих профессионалов в области баз данных и организации, выполняющих то, что я называю "апгрейд вслепую". Это когда они переходят с SQL Server 2012 или более ранних версий на SQL Server 2014 или новее (особенно SQL Server 2016 и SQL Server 2017), не выполняя сколь-нибудь серьезного тестирования падения производительности, чтобы выяснить, как их рабочая нагрузка будет вести себя на новом естественном уровне совместимости, и доступны ли дополнительные конфигурационные параметры, способные оказать положительный эффект.
Связанные вопросы
2 ответа
Уровни совместимости и версия не совпадают не .
База данных, подключенная к экземпляру, использует ту же версию, что и экземпляр. Если эта база данных была восстановлена из более старого экземпляра (скажем, SQL Server 2008), то база данных будет обновлена в течение RESTORE , а затем переведена в соответствующий режим совместимости; это означает, что база данных действует так же, как и в более старом экземпляре, однако она все еще обновлена.
Вы можете только RESTORE базы данных для экземпляра, который поддерживает уровень совместимости базы данных. Если ваш файл 2006 года, то последняя версия может быть 2005 года, которая полностью потеряла поддержку в 2015 году. Последней версией для поддержки резервного копирования из SQL Server 2005 является SQL Server 2014; вы не можете восстановить резервную копию 2005 года или до SQL Server 2016.
Если ваша резервная копия еще старше, вам придется использовать еще более старую версию SQL Server. Если, например, это резервная копия SQL Server 2000, у вас будет для получения неподдерживаемой базы данных SQL Server 2008, RESTORE , повышения уровня совместимости до 90 (2008), BACKUP базы данных, а затем RESTORE в поддерживаемой версии.
Поэтому, если я правильно понимаю, это означает, что SQL Server 2016 с уровнем совместимости 2008 НЕ совпадает с самой установкой SQL Server 2008. Это правильно?
Да. Режим совместимости не меняет БД - он только меняет поведение ядра базы данных в определенных аспектах, чтобы старые приложения продолжали работать, как ожидалось.
То есть старые уровни совместимости не будут принимать определенные новые конструкции SQL и будут показывать подобное поведение запросов в разы.
Вы должны установить 2008R2 - и затем выставить счет клиенту за обновление всего экспорта базы данных;)
Наша организация планирует обновить большинство серверов и клиентов Oracle до версии 11 2g.
Но одна из наших клиентских систем все еще использует установку oracle 8i.
Можем ли мы получить доступ к объектам Oracle 8i из клиента oracle 11g?
В некоторых блогах говорится, что это должно работать, а в других - нет.
Может ли кто-нибудь сталкивался с какой-либо проблемой с такой конфигурацией.
Один из старших сотрудников dba сказал нам, что oracle поддерживает обратную совместимость только двух предыдущих версий с текущей версией. Предполагая этот факт, мы не могли получить доступ к объектам базы данных, работающим в Oracle версии 2.
задан 01 июн '11, 08:06
Я рекомендую вам усердно поработать, чтобы избавиться от экземпляра Oracle 8i или, по крайней мере, изолировать его таким образом, чтобы ваша организация не помешала какой-либо полностью устаревшей системе использовать современные технологии. - Codo
Создание новой базы данных
Когда вы создаете новую пользовательскую базу данных в SQL Server, уровень совместимости базы данных будет установлен в уровень совместимости по умолчанию для этой версии SQL Server. Так, например, новая пользовательская база данных, которая создается в SQL Server 2017 получит уровень совместимости базы данных 140. Исключение возникает, если вы измените уровень совместимости системной базы данных model на другой поддерживаемый уровень, тогда новая пользовательская база данных будет наследовать этот уровень совместимости от базы данных model.
COMPATIBLE.ADVM
Значение атрибута COMPATIBLE.ADVM группы дисков определяет, может ли группа дисков содержать тома Oracle ADVM. Значение должно быть установлено в 11.2 или выше. Перед установкой этого атрибута значение COMPATIBLE.ASM должно быть 11.2 или выше. Кроме того, драйверы тома Oracle ADVM должны быть загружены в поддерживаемой среде.
По умолчанию значение атрибута COMPATIBLE.ADVM пусто, пока не будет установлено.
Уровень совместимости базы данных 130
Если вы имеете SQL Server 2016 или новее, использование уровня совместимости базы данных 130 будет применять СЕ130 по умолчанию, и будут доступны и все другие изменения, касающиеся производительности. Эффекты глобальных флажков трассировки 1117, 1118 и 2371 будут действовать при уровне совместимости базы данных 130. Вы также получите эффект глобального флажка трассировки 4199 для всех заплаток (hotfix), которые были поставлены до SQL Server 2016 RTM.
SQL Server 2016 также ввел конфигурационные опции уровня базы данных, которые дают вам возможность контролировать некоторое поведение и которые ранее конфигурировались на уровне экземпляра сервера, с помощью команды ALTER DATABASE SCOPED CONFIGURATION. Двумя наиболее уместными для темы настоящей статьи конфигурационными опциями уровня базы данных являются ESTIMATION и QUERY_OPTIMIZER_HOTFIXES.
LEGACY_CARDINALITY ESTIMATION включает унаследованный СЕ (СЕ70) вне зависимости от установки уровня совместимости базы данных. Это эквивалентно флажку трассировки 9481, но влияет только на соответствующую базу данных, а не на весь экземпляр. Это позволяет вам установить уровень совместимости базы данных в 130 для того, чтобы получить другие функциональные возможности и выгоды с точки зрения производительности, и при этом использовать унаследованный СЕ уровня базы данных (если он не переписывается хинтом в запросе).
Опция QUERY_OPTIMIZER_HOTFIXES эквивалентна флажку трассировки 4199 на уровне базы данных. SQL Server 2016 делает доступными все заплатки оптимизатора запросов, поставленные до SQL Server 2016 RTM, когда вы используете уровень совместимости базы данных 130 (без установки флажка трассировки 4199). Если вы устанавливаете флажок 4199 или включаете QUERY_OPTIMIZER_HOTFIXES, вы также получите все заплатки оптимизатора запросов, которые были выпущены после SQL Server 2016 RTM.
SQL Server 2016 SP1 также ввел хинты запроса USE HINT, которые легче использовать и понять, чем устаревшие хинты запроса QUERYTRACEON, которые могли использоваться в SQL Server 2014 и ранее. Это дает вам даже более тонкое управление поведением оптимизатора, чем связанное с используемыми уровнем совместимости и версией оценщика кардинального числа. Вы можете выполнить запрос к sys.dm_exec_valid_use_hints, чтобы получить список доступных названий в USE HINT.
Читайте также: