Downgrade compatibility.rdbms

Итак, допустим вы изменили compatibility.rdbms в большую сторону прежде чем успели обновить бинарники RDBMS и по какой-то причине у вас нет пока возможности их обновить. Было бы очень замечательно откатить свои зменения, потому как бинарники не смогут смонтировать дисковую группу у которой версия выше. Но, как заверяют нас уважаемые издания, различные крутые перцы и сам оракл, это НЕВОЗМОЖНО!

(http://www.dba-oracle.com/t_11g_new_asm_attributes.htm)
(http://www.pythian.com/blog/oracle-11g-asm-diskgroup-compatibility/)

Но, как нам удалось выяснить, это все же возможно.

ASM имеет специализированные файлы для хранения служебной информации, такой как PST, Allocation, Free Space, Password и так далее. В нашем случае нам нужен файл номер 9, это Attribute directory.

Нужно найти в каких AU расположены аттрибуты.

SELECT x.disk_kffxp "Disk#",x.xnum_kffxp "Extent",x.au_kffxp "AU",d.name "Disk name"
FROM x$kffxp x, v$asm_disk_stat d
WHERE x.group_kffxp=d.group_number and x.disk_kffxp=d.disk_number and d.group_number=4 and x.number_kffxp=9
ORDER BY 1, 2;

Disk# Extent AU Disk name
---------- ---------- ---------- ------------------------------
 0 0 52 TEST_DB1
 1 0 52 TEST_DB2

number_kffxp — тип файла
group_number — номер группы

Дальше нужно определить в каком блоке в пределах этого AU расположен нужный нам параметр. Информация раскидана по разным блокам. В нашем случае это был блок номер 8. Изменять необходимо для всех дисков найденых запросом выше!

/opt/oracle/product/grid/11.2.0.4/bin/kfed read /dev/oracleasm/disks/TEST_DB1 aun=52 blkn=8 > /tmp/test_db1_8blkn
/opt/oracle/product/grid/11.2.0.4/bin/kfed read /dev/oracleasm/disks/TEST_DB2 aun=52 blkn=8 > /tmp/test_db2_8blkn

Перебирая блоки из команды выше blkn=1, blkn=2 и так далее, ищем текст как показан ниже.

...
...
...
kfede[1].name: rdbms ; 0x1a8: length=5
kfede[1].value: 11.2.0.4.0 ; 0x1e8: length=10
...
...
...

После того как нашли нужный нам блок, правим информацию, в текстовом файле, на нужную нам и записываем ее обратно в блок.

/opt/oracle/product/grid/11.2.0.4/bin/kfed write /dev/oracleasm/disks/TEST_DB1 aun=52 blkn=8 text=/tmp/test_db1_8blkn
/opt/oracle/product/grid/11.2.0.4/bin/kfed write /dev/oracleasm/disks/TEST_DB2 aun=52 blkn=8 text=/tmp/test_db2_8blkn

Далее размонтируем и монтируем заново дисковую группу.

Итого у нас была версия compatible.rdbms=11.2.0.4.0

ASMCMD> lsattr -l -G test_dg
Name Value
access_control.enabled FALSE
access_control.umask 066
au_size 1048576
cell.smart_scan_capable FALSE
compatible.asm 11.2.0.4.0
compatible.rdbms 11.2.0.4.0
content.type data
disk_repair_time 3.6h
idp.boundary auto
idp.type dynamic
sector_size 512

И мы ее понизили до compatible.rdbms=11.2.0.0.0

ASMCMD> lsattr -l -G test_dg
Name Value
access_control.enabled FALSE
access_control.umask 066
au_size 1048576
cell.smart_scan_capable FALSE
compatible.asm 11.2.0.4.0
compatible.rdbms 11.2.0.0.0
content.type data
disk_repair_time 3.6h
idp.boundary auto
idp.type dynamic
sector_size 512
Реклама

2 ответ. на "Downgrade compatibility.rdbms"

  1. Не вижу смысла менять compatibility в пределах одного релиза — изменение, по идее, должно игнорироваться.
    Пробовали сделать то же самое с 11.2 -> 10.2, например?

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s