Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 32 DB under 64 soft  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
А удавалось ли кому-нибудь поднять и эксплуатировать 32-битовую базу под 64-битовым софтом?
Т.е. интересует именно однозначность зависимости
"64-битовый софт" <=> ""64-битовая БД"
"32-битовый софт" <=> ""32-битовая БД".
В настоящий момент есть уже три платформы, под которыми это теоретически возможно:
SUN SPARC,
AMD64
х86-64.
Судя по металинку это невозможно, но не устарела ли эта информация?
2 сен 07, 21:39    [4610536]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
Scott Tiger
Member

Откуда: вмваре
Сообщений: 6884
Не ясен вопрос - что имеется в виду под "софтом"? $ORACLE_HOME/bin, $ORACLE_HOME/lib или что?
2 сен 07, 21:51    [4610542]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10105
Same database can be run under 32 or 64 bit Oracle. Check Changing between 32-bit and 64-bit Word Sizes

SY.

Сообщение было отредактировано: 2 сен 07, 22:38
2 сен 07, 22:35    [4610578]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
Scott Tiger
Не ясен вопрос - что имеется в виду под "софтом"? $ORACLE_HOME/bin, $ORACLE_HOME/lib или что?


Имеются в виду бинарники Оракла, т.е. то, что мы инсталлируем инсталлятором не создавая БД.
Иными словами вопрос такой: возможно ли на какой-либо платформе проинсталлировать в один каталог 32-битовый Оракл и создать под ним БД. А затем проинсталлировать в другой каталог 64-битовый Оракл, поднять базу и чтобы она работала после этого.

Вот кое-что проясняющее ситуацию из рекомендованной Note:62290.1:
"The on-disk format for database data, redo, and undo is identical for the
32-bit and 64-bit installations of Oracle. The only internal structural
differences between the 32-bit and 64-bit Oracle installations are the
following: The compiled format of PL/SQL is different."

Получается, что поднять БД можно, но работать она в принципе не сможет из-за "PL/SQL is different".

И что, даже native compilation не поможет?
3 сен 07, 12:23    [4612041]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
А причина вопроса в том, что в ноте 119707.1 "How to Tell if the Oracle Software is 32-Bit or 64-Bit"
смешаны несколько, на мой взгляд, разных способов определения битности:

1. Путем обращения к бинарникам, т.е. к софту:
$ file $ORACLE_HOME/bin/oracle

2. Путем опроса представлений БД: v$version .

Отсюда и непонятки:
32-битовой БД соответствует только 32-битовый софт?
64-битовой БД соответствует только 64-битовый софт?

Без явного упоминания о взаимно-однозначном соответствии нота является неполной.
3 сен 07, 12:34    [4612112]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
KoTTT
Member

Откуда: Екб
Сообщений: 1511
Yuri Pudovchenko
Получается, что поднять БД можно, но работать она в принципе не сможет из-за "PL/SQL is different".

И что, даже native compilation не поможет?


Поможет \RDBMS\ADMIN\utlirp.sql.

Проверено. Холодный бэкап базы 64-бит поднимается и нормально работает на 32-битном оракле. В обратную сторону, думаю, будет так же.
4 сен 07, 07:56    [4615575]     Ответить | Цитировать Сообщить модератору
 Re: почему экспорт нельзя делать как sys  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
KoTTT

Холодный бэкап базы 64-бит поднимается и нормально работает на 32-битном оракле. В обратную сторону, думаю, будет так же.


Спасибо, интересная информация.
4 сен 07, 12:23    [4616998]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
olegoz
Member

Откуда:
Сообщений: 90
9.2.0.7 32b без особого труда поднялся на 9.2.0.7 64b
4 сен 07, 14:34    [4618118]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
Alex Roudnev
Member

Откуда: Валнут Крик, Калифорния
Сообщений: 5547
Yuri Pudovchenko
А удавалось ли кому-нибудь поднять и эксплуатировать 32-битовую базу под 64-битовым софтом?
Т.е. интересует именно однозначность зависимости
"64-битовый софт" <=> ""64-битовая БД"
"32-битовый софт" <=> ""32-битовая БД".
В настоящий момент есть уже три платформы, под которыми это теоретически возможно:
SUN SPARC,
AMD64
х86-64.
Судя по металинку это невозможно, но не устарела ли эта информация?


Абсолютно без проблем. Смотри сюда:

http://ftp02.portera.com/Linux/Oracle-32-environment-on-Linux-x86_64.htm

там про грид, но если создать oracle32 так как там написано, то можно и просто базу поставить.

И при этом все команды опроса системы скажут, что система 32 битная, так что вопрос сертифицированности оракла уже мало интересен - оракл считает что ОС 32 битная, и если я пошлю все это в саппорт, то он никогда не распознает что на самом то деле ОС 64 бита.
4 сен 07, 23:47    [4620802]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
Alex Roudnev
Member

Откуда: Валнут Крик, Калифорния
Сообщений: 5547
Yuri Pudovchenko
Scott Tiger
Не ясен вопрос - что имеется в виду под "софтом"? $ORACLE_HOME/bin, $ORACLE_HOME/lib или что?


Имеются в виду бинарники Оракла, т.е. то, что мы инсталлируем инсталлятором не создавая БД.
Иными словами вопрос такой: возможно ли на какой-либо платформе проинсталлировать в один каталог 32-битовый Оракл и создать под ним БД. А затем проинсталлировать в другой каталог 64-битовый Оракл, поднять базу и чтобы она работала после этого.

Вот кое-что проясняющее ситуацию из рекомендованной Note:62290.1:
"The on-disk format for database data, redo, and undo is identical for the
32-bit and 64-bit installations of Oracle. The only internal structural
differences between the 32-bit and 64-bit Oracle installations are the
following: The compiled format of PL/SQL is different."

Получается, что поднять БД можно, но работать она в принципе не сможет из-за "PL/SQL is different".

И что, даже native compilation не поможет?


А вот так нельзя. Зачем такие извраты??
4 сен 07, 23:47    [4620803]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
KoTTT
Member

Откуда: Екб
Сообщений: 1511
Alex Roudnev
Yuri Pudovchenko
Получается, что поднять БД можно, но работать она в принципе не сможет из-за "PL/SQL is different".

И что, даже native compilation не поможет?


А вот так нельзя. Зачем такие извраты??


Ну например есть боевая база на 64 битах. Нужно периодически поднимать из ее холодных бэкапов девелоперскую, но уже на 32 битах (нет свободного сервера на 64 бит). Так оно работает.
5 сен 07, 04:18    [4620930]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
ugra
Member

Откуда:
Сообщений: 161
У меня был переход на 64 платформу. Opteron + RedHat AS + Oracle for EM64T/AMD64.
Что я делал. Пересоздавал контрольный файл и запускал utlirp + еще что-то(в документации в разделе MIGRATE это описано) в режиме STARTUP MIGRATE. Вот и все. Я думаю что, чтобы перевести обратно в 32 бит нужно будет производить те же действия.
5 сен 07, 09:02    [4621131]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
Первоначальной причиной моего вопроса была ошибка администратора,
когда на 32-разрядный Оракл был установлен 64-разрядный патч (Солярис Спарк),
и в результате база не поднялась.

Тогда возник вопрос о надежной и однозначной идентификации разрядности.
Note:119707.1 подсказала некоторые подходы, но не без проблем.

Так, в ноте предлагается такой способ:
"запустить SQLPLUS и баннер покажет наличие 64-разрядной битности:
   $ sqlplus '/ as sysdba'
...
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
Если явное указание 64-разрядности отсутствует, то версию следует считать 32-битовой."


Однако в данном методе существует вероятность ошибки. Рассмотрим еще два варианта подключения:
- при отсутствии переменной ORACLE_SID;
- c неверной указанной переменной ORACLE_SID.

Убеждаемся, что бинарники являются 64-битовыми:
ora10g@host:ora10g#file $ORACLE_HOME/bin/oracle
/oracle/db10g/bin/oracle: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped

Подключаемся с отсутствующим ORACLE_SID:

ora10g@holsten:ora10g#unset $ORACLE_SID
ora10g@holsten:ora10g#sqlplus '/ as sysdba'

SQL*Plus: Release 10.2.0.2.0 - Production on Tue Jul 17 10:35:15 2007

Copyright (c) 1982, 2005, Oracle. All Rights Reserved.

ERROR:
ORA-12162: TNS:net service name is incorrectly specified
Enter user-name:
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
Enter user-name:
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus

Самое главное в данном примере в том, что в баннере отсутствует указание на 64-битность,
и такую инсталляцию можно ошибочно признать 32-битовой.


Рассмотрим случай неверно установленного ORACLE_SID:

ora10g@holsten:ora10g#export ORACLE_SID=aaaaaa
ora10g@holsten:ora10g#sqlplus '/ as sysdba'

SQL*Plus: Release 10.2.0.2.0 - Production on Tue Jul 17 10:35:30 2007
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.

Connected to an idle instance.

SQL> Disconnected

В данном случае также отсутствует сообщение о 64-разрядности, и поэтому данную инсталляцию Оракла также можно ошибочно отнести к 32-битовой.
5 сен 07, 10:58    [4621808]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
Еще один, не описанный в ноте метод - опросить разрядность переменной ADDR
в представлениях V$.
Если размерность этой переменной 64 бита, то и Оракл и БД являются 64-битовыми.
Для 32 аналогично.

Например,

SELECT Length(addr)*4 || '-bits' word_length FROM v$process WHERE ROWNUM =1;

Это очень надежный метод.

Для определения разрядности можно использовать не только v$procees, но и еще несколько десятков представлений:

select OWNER,TABLE_NAME from dba_tab_columns where COLUMN_NAME='ADDR';

Вообще-то этими столбцами дело не ограничивается ;))))) :
set pagesize 200
select 'select Length('||COLUMN_NAME||')*4 from '||TABLE_NAME||' WHERE ROWNUM =1;' from dba_tab_columns where COLUMN_NAME like '%ADDR%' and OWNER='SYS'and DATA_TYPE='RAW';

Но не все столбцы из этой выборки подходят.
У меня получился такой список корректных столбцов:

LOCK_ELEMENT_ADDR    GV$CACHE            V$CACHE                  
LOCK_ELEMENT_ADDR    V$CACHE_LOCK             
GC_ELEMENT_ADDR      GV$CACHE_TRANSFER   V$CACHE_TRANSFER           
LOCK_ELEMENT_ADDR    GV$PING             V$PING                   

PADDR                GV_$BGPROCESS       V_$BGPROCESS                         
LOCK_ELEMENT_ADDR    GV_$BH              V_$BH                           
SADDR                GV_$CIRCUIT         V_$CIRCUIT                                              
PADDR                GV_$DISPATCHER      V_$DISPATCHER                               
PADDR                GV_$DISPATCHER_RATE V_$DISPATCHER_RATE                          
ADDR                 GV_$DLM_LATCH       V_$DLM_LATCH                                 
ADDR                 GV_$ENQUEUE_LOCK    V_$ENQUEUE_LOCK                              
KADDR                GV_$ENQUEUE_LOCK    V_$ENQUEUE_LOCK                             
GC_ELEMENT_ADDR      GV_$GC_ELEMENT      V_$GC_ELEMENT                     
ADDR                 GV_$LATCH           V_$LATCH                                     
ADDR                 GV_$LATCH_CHILDREN  V_$LATCH_CHILDREN                            
ADDR                 GV_$LATCH_PARENT    V_$LATCH_PARENT                              
ADDR                 GV_$LOCK            V_$LOCK                                      
KADDR                GV_$LOCK            V_$LOCK                                     
LADDR                GV_$_LOCK           V_$_LOCK     V_$_LOCK1
KADDR                GV_$_LOCK           V_$_LOCK     V_$_LOCK1
SADDR                GV_$_LOCK           V_$_LOCK     V_$_LOCK1                           
RADDR                GV_$_LOCK           V_$_LOCK                                
LOCK_ELEMENT_ADDR    GV_$LOCK_ELEMENT    V_$LOCK_ELEMENT                 
FROM_ADDRESS         GV_$OBJECT_DEPENDENCY V_$OBJECT_DEPENDENCY                 
TO_ADDRESS           GV_$OBJECT_DEPENDENCY V_$OBJECT_DEPENDENCY               
SADDR                GV_$OPEN_CURSOR       V_$OPEN_CURSOR                          
ADDRESS              GV_$OPEN_CURSOR       V_$OPEN_CURSOR                        
ADDR                 GV_$PROCESS           V_$PROCESS                               
PADDR                GV_$QUEUE             V_$QUEUE                                
ADDR                 GV_$RESOURCE          V_$RESOURCE                                             
ADDRESS              GV_$ROWCACHE_PARENT   V_$ROWCACHE_PARENT                                   
SADDR                GV_$ROWCACHE_PARENT           
ADDRESS              GV_$ROWCACHE_SUBORDINATE V_$ROWCACHE_SUBORDINATE                              
SADDR                GV_$SESSION           V_$SESSION                                                            
PADDR                GV_$SESSION           V_$SESSION                                             
SQL_ADDRESS          GV_$SESSION             
PREV_SQL_ADDR        GV_$SESSION           
SQL_ADDRESS          GV_$SESSION_LONGOPS   V_$SESSION_LONGOPS                                        
PADDR                GV_$SHARED_SERVER     V_$SHARED_SERVER
SESSION_ADDR         GV_$SORT_USAGE        V_$SORT_USAGE
SQLADDR              GV_$SORT_USAGE        V_$SORT_USAGE                                                         
ADDRESS              GV_$SQL               V_$SQL                                                        
CHILD_ADDRESS        GV_$SQL               V_$SQL                       
ADDRESS              GV_$SQLAREA           V_$SQLAREA                                      
ADDRESS              GV_$SQLTEXT           V_$SQLTEXT                                      
ADDRESS              GV_$SQLTEXT_WITH_NEWLINES   V_$SQLTEXT_WITH_NEWLINES                  
BUF_ADDRESS          GV_$SQL_BIND_DATA              
ADDRESS              GV_$SQL_BIND_METADATA V_$SQL_BIND_METADATA                               
ADDRESS              GV_$SQL_PLAN          V_$SQL_PLAN                                        
ADDRESS              GV_$SQL_PLAN_STATISTICS                     
ADDRESS              GV_$SQL_PLAN_STATISTICS_ALL                 
ADDRESS              GV_$SQL_SHARED_CURSOR V_$SQL_SHARED_CURSOR                                                          
WORKAREA_ADDRESS     GV_$SQL_WORKAREA      V_$SQL_WORKAREA                           
ADDRESS              GV_$SQL_WORKAREA      V_$SQL_WORKAREA                                    
WORKAREA_ADDRESS     GV_$SQL_WORKAREA_ACTIVE V_$SQL_WORKAREA_ACTIVE               
ADDRESS                                    V_$SQLXS       
SES_ADDR             GV_$TRANSACTION       V_$TRANSACTION                                    
ADDR                 GV_$TRANSACTION       V_$TRANSACTION                                        
ADDR                 GV_$TRANSACTION_ENQUEUE    V_$TRANSACTION_ENQUEUE                                
KADDR                GV_$TRANSACTION_ENQUEUE    V_$TRANSACTION_ENQUEUE                               
ADDRESS              GV_$VPD_POLICY                              
PARADDR              GV_$VPD_POLICY                              

ADDRESS    STATS$V_$SQLXS    
ADDR       STATS$X_$KCBFWAIT                              
ADDR       STATS$X_$KSPPI                                 
ADDR       STATS$X_$KSPPSV                                


ADDR    V_$KCCDI                              
ADDR    V_$KCCFE                              
SADDR    GV_$PX_SESSION                
SADDR    GV_$PX_SESSTAT                


RADDR      V_$_LOCK1                            
ADDR       X_$BH                                 
HLADDR     X_$BH                               
LE_ADDR    X_$BH                              

ADDR    X_$KCBFWAIT                           
ADDR    X_$KCBWBPD                            
ADDR    X_$KCBWDS                             
ADDR    X_$KSBDP                              
ADDR    X_$KSLED                              
ADDR    X_$KSLEI                              
ADDR    X_$KSLES                              
ADDR    X_$KSLLD                              
ADDR    X_$KSLLT                              
ADDR    X_$KSMLRU                             
ADDR    X_$KSMSP                              
ADDR    X_$KSPPCV                             
ADDR    X_$KSPPI                              
ADDR    X_$KSPPSV                             
ADDR    X_$KSQRS                              
ADDR    X_$KSQST                              
ADDR    X_$KSUSECST                           
ADDR    X_$KSUSESTA                           
ADDR    X_$KTFBFE                             
ADDR    X_$KTFBHC                             
ADDR    X_$KTFBUE                             
5 сен 07, 11:12    [4621932]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
Ну и по поводу основного вопроса дискуссииможно пдвести такой итог:

если бинарники 64-битовые, то и нормально под ними работающая БД тоже 64-битовая,
если бинарники 32-битовые, то и нормально под ними работающая БД тоже 32-битовая.
если разрядности софта и БД не совпадают, то произойдет раскомпиляция пакетов, процедур, функций.


Т.е. соответствие разрядности софта и БД однозначное.
5 сен 07, 11:17    [4621978]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
denix1
Member

Откуда: Киев
Сообщений: 4656
Yuri Pudovchenko
Ну и по поводу основного вопроса дискуссииможно пдвести такой итог:


если разрядности софта и БД не совпадают, то произойдет раскомпиляция пакетов, процедур, функций.


Т.е. соответствие разрядности софта и БД однозначное.

таки сама произойдёт ?
или таки по ноутам ручками делать ? :-)
5 сен 07, 12:55    [4622946]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
Yuri Pudovchenko
Member

Откуда: Moscow
Сообщений: 201
denix1
Yuri Pudovchenko

если разрядности софта и БД не совпадают, то произойдет раскомпиляция пакетов, процедур, функций.

таки сама произойдёт ?


Надо полагать, какая-то специфическая ошибка выскочит.
Народ, поделитесь сообщением об ошибке,
У меня нет возможности проверить эту ситуацию экспериментально.
7 сен 07, 13:30    [4635433]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
DВА
Member

Откуда:
Сообщений: 5439
https://www.sql.ru/forum/actualthread.aspx?tid=240418&pg=2�
7 сен 07, 13:39    [4635544]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
DВА
Member

Откуда:
Сообщений: 5439
сори, ссылка кривая
https://www.sql.ru/forum/actualthread.aspx?bid=3&tid=240418&pg=2#2182194
7 сен 07, 13:39    [4635553]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
KoTTT
Member

Откуда: Екб
Сообщений: 1511
Там SY ситуацию для 9-ки описал. Для 10 не надо
_SYSTEM_TRIG_ENABLED = false
а стартовать надо
STARTUP UPGRADE

Это из доки. Но я первый раз в спешке сделал STARTUP MIGRATE и вроде ничего особо плохого потом не заметил :-)
8 сен 07, 05:39    [4638870]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
0ri0n
Member

Откуда: msk
Сообщений: 628
Имею Oracle 10.2.0.2, 32-bit. Пытаюсь на нем открыть базу, взятую с сервера Oracle 10.2.0.2, 64-bit.
Скопировал горячий бэкап, открыл. При подключении и выполнении PL/SQL процедур идут ошибки
ORA-06544: PL/SQL: internal error
Сделал, как описано выше - открыл базу в режиме UPGRADE, прогнал скрипт utlirp для перекомпиляции всех программных объектов, перестартовал, прогнал utlrp для перекомпиляции инвалидных объектов.

После этого при выполнении PL/SQL процедур идут ошибки
ORA-04045: errors during recompilation/revalidation of string.string 
Как добиться нормальной работы базы?
18 мар 08, 20:42    [5426825]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
DВА
Member

Откуда:
Сообщений: 5439
c 32 на 64 - сотню раз проверенный :)
3. startup upgarde pfile='/tmp/init.ora'
4. @$ORACLE_HOME/rdbms/admin/utlirp.sql
5. @$ORACLE_HOME/rdbms/admin/catupgrd.sql
6. @$ORACLE_HOME/rdbms/admin/utlrp.sql
7. select * from dba_registry;
8.shutdown immediate
9. startup

Обрато не гарантирую, но попробуйте
19 мар 08, 00:13    [5427357]     Ответить | Цитировать Сообщить модератору
 Re: 32 DB under 64 soft  [new]
0ri0n
Member

Откуда: msk
Сообщений: 628
Да, все получилось, спасибо!
20 мар 08, 09:33    [5433820]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить