6 июня 2019 г.

Доступ к PostgreSQL из Oracle

Краткая инструкция по настройке ДБ-линка из базы Oracle к PostgreSQL 


Описание серверов:

  • Oracle DB. Медстатистика: 10.2.XX.XX   srv-ms-ora01
  • PostgreSQL DB. Больничные: 10.1.XX.XX  srv-elnp1-pg01

Для создания линка необходимо открыть доступ между серверами по порту 5432

Настройка PostgreSQL DB

  • Создайте пользователя
create user dblinkuser encrypted password 'пароль' CONNECTION LIMIT 50;
GRANT CONNECT ON DATABASE eln TO dblinkuser;
\c eln
grant usage on schema eln to dblinkuser;
GRANT SELECT ON ALL TABLES IN SCHEMA eln TO dblinkuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA eln GRANT SELECT ON TABLES TO dblinkuser;
GRANT USAGE ON SCHEMA public TO dblinkuser;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO dblinkuser;
  • Проверка
psql -U dblinkuser -d eln
select * from eln.df;

Должны получить данные

update eln.df set moid=200001003712 where id=1;
Должны получить ошибку: must be: ERROR:  permission denied for relation df
  • pg_hba
Добавьте в  pg_hba.conf строку



host    eln             dblinkuser     10.2.XX.XX/32            md5

Примените
pg_ctl reload -D xxxxxx

Установка ODBC драйвера

Устанавливаем на хост с базой Oracle. Есть несколько вариантов установки. У нас нет пакетов, поэтому в нашем случае:
  • Вариант 1. Из исходников
Скачайте с : https://odbc.postgresql.org/
и по инструкции :
./configure
make
make install

  • Вариант 2. С помощью дистрибутива от EDB Postgres
В опциях снимите установку базы, и включите установку ODBC

  • Проверка после установки
odbcinst -j
unixODBC 2.3.6
DRIVERS............: /etc/unixODBC/odbcinst.ini
SYSTEM DATA SOURCES: /etc/unixODBC/odbc.ini
FILE DATA SOURCES..: /etc/unixODBC/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8


SQLSETPOSIROW Size.: 8


Создание подключения, настройки HS Oracle

  • odbc.ini



[ODBC Data Sources]
  PG_LINK = PostgreSQL
[PG_LINK]
  Debug = 1
  CommLog = 1
  ReadOnly = yes
  Driver = /opt/PostgreSQL/psqlODBC/lib/psqlodbcw.so
  Servername = 10.1.XX.XX
  FetchBufferSize = 99
  Username = dblinkuser
  Password = пароль
  Port = 5432
  Database = eln
[Default]
  Driver = /usr/lib64/unixODBC/liboplodbcS.so

Создайте копии


cd /root/
chmod a+rw .odbc.ini
ln .odbc.ini odbc.ini
ln .odbc.ini /etc/odbc.ini
ln .odbc.ini /home/oracle/odbc.ini
ln .odbc.ini /home/oracle/.odbc.ini


ln .odbc.ini /etc/unixODBC/odbc.ini


Проверки

  • Получить список подключенных драйверов (тех, для которых созданы записи в odbcinst.ini):
odbcinst -q -d

  • Получить список подключенных источников данных (DSN):
odbcinst -q -s

  • Полную информацию можно получить:
cat /etc/unixODBC/odbcinst.ini

  • Запрос данных из PostgreSql
Выполняем под пользователем root и oracle
isql -v PG_LINK

select * from eln.df;
Должны получить данные из таблиц БД PostgreSql


Настройка Oracle 


  • Создаем config

cd /u01/oracle/app/product/12.1.0/dbhome_1/hs/admin/
vi initPG_LINK.ora



HS_FDS_CONNECT_INFO=PG_LINK
HS_FDS_TRACE_LEVEL=255
HS_FDS_SHAREABLE_NAME=/opt/PostgreSQL/psqlODBC/lib/psqlodbcw.so
set ODBCINI=/home/oracle/.odbc.ini
set ODBCINSTINI=/etc/unixODBC/odbcinst.ini
HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8
HS_NLS_NCHAR = UCS2


  • tnsnames.ora

cd /u01/oracle/app/product/12.1.0/dbhome_1/network/admin
vi tnsnames.ora
  PG_LINK =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1523))
    (CONNECT_DATA=(SID=PG_LINK))
    (HS=OK)
  )


  • listener.ora


cd /u01/oracle/app/product/12.1.0/dbhome_1/network/admin
vi listener.ora
LISTENER_dg4odbc =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1523))
    )
  )
SID_LIST_LISTENER_dg4odbc =
  (SID_LIST =
  (SID_DESC =
      (SID_NAME=PG_LINK)
      (ORACLE_HOME=/u01/oracle/app/product/12.1.0/dbhome_1)
      (ENVS="LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/usr/lib:/u01/oracle/product/11.2.0.4/lib:/u01/oracle/app/product/12.1.0/dbhome_1/dg4msql/driver/lib:/u01/oracle/app/product/12.1.0/dbhome_1/lib")
      (PROGRAM=dg4odbc)
    )
  )

lsnrctl stop LISTENER_dg4odbc
lsnrctl start LISTENER_dg4odbc
lsnrctl status LISTENER_dg4odbc



  • Проверка
tnsping pg_link


  • database link
Создаем database link:
create public database link PG_LINK connect to "dblinkuser" identified by "пароль" using 'PG_LINK';

Проверка:
select * from "eln"."df"@PG_LINK;


Возможные ошибки

  • ORA-28545

ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from PG_ELN_LINK

Tue Jun 04 14:58:02 2019
HS:  Unable to establish RPC connection to HS Agent...
HS:  ... Agent SID = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=srv-ms-ora01)(PORT=1521))(CONNECT_DATA=(SID=PG))), 
NCR error = 65535 Unable to retrieve text of NETWORK/NCR message 65535

Решение - создать отдельный listener

  • ORA-28546
ORA-28546: connection initialization failed, probable Net8 admin error
ORA-28511: lost RPC connection to heterogeneous remote agent using 
SID=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1523))(CONNECT_DATA=(SID=PG_LINK)))
ORA-02063: preceding 2 lines from PG_LINK


Решение -  добавьте переменные окружения:
     (ENVS="LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/usr/lib:/u01/oracle/product/11.2.0.4/lib:/u01/oracle/app/product/12.1.0/dbhome_1/dg4msql/driver/lib:/u01/oracle/app/product/12.1.0/dbhome_1/lib")

  • ORA-28500
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
c

Решение - Добавьте параметр 
HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P1

  • Русские буквы испорчены

Решение - Решаем согласно ноте:
Select from PostgreSQL Using DG4ODBC Gives Error ORA-28500 : Error Invalid Byte Sequence For Encoding UTF8 [ID 1369633.1]

HS_NLS_NCHAR = UCS2


31 мая 2018 г.

Отправка отчетов для пользователей в формате Excel из базы Oracle

Простые отчеты в формате Excel из базы данных Oracle

Эта статья может быть полезна тем, кто должен автоматически создавать множество отчетов из БД в формате Excel-файлов.

Возможные способы формирования

Иногда возникает задача автоматически отправлять произвольные выгрузки из базы данных обычным пользователям, которые привыкли работать с Excel и Word

Есть несколько вариантов реализации создание отчетов:
  1. Можно сформировать текстовый файл в формате csv c помощью sqlplus, например так:

  2.   
    set linesize 9999
    set pagesize 50000
    spool myfile.csv
    select x
    from
    (
    select col1||';'||col2||';'||col3||';'||col4||';'||col5||';'||col6||';'||col7||';'||col8||';'||col9||';'||col10||';'||col11||';'||col12||';'||col13||';'||col14||';'||col15||';'||col16||';'||col17||';'||col18||';'||col19||';'||col20||';'||col21||';'||col22||';'||col23||';'||col24||';'||col25||';'||col26||';'||col27||';'||col28||';'||col29||';'||col30 as x
    from (  
          
         )
    );
    spool off
    

    При форматировании файлов на Unix-сервере возможны проблемы с русскими буквами, также иногда не корректно открываются файлы из-за разных настроек разделителей в excel у пользователя.
    При формировании файлов на Windows-сервере можно сразу конвертировать созданные csv-файлы в excel-формат с помощью VB-скриптов, наподобие такого:
    
    Private Sub ap_WorkbookOpen(ByVal Wb As Workbook)
        With Wb
        If InStrRev(.Name, ".csv") = Len(.Name) - 3 Then
        .SaveAs Filename:=Left(.FullName, Len(.FullName) - 4) + ".xls", _
            FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
        .Close
        End If
        End With
    End Sub      
    


  3. Сформировать текстовый файл в формате html c помощью sqlplus

  4.   
    SET PAGESIZE 50000
    SET FEED OFF MARKUP HTML ON SPOOL ON
    SET NUM 24
    SPOOL DATA_2.xls
    
    SELECT * FROM xxx;
    
    SPOOL OFF
    SET MARKUP HTML OFF SPOOL OFF
           
     

    В этом случае проблем с кодировками нет, но пользователь при открытии файла получит сообщение:
    Просмотрев предупреждение пользователь должен подтвердить открытие файла. Что-бы пользователь не пугался, добавляем в письмо успокаивающий текст: "При открытии файла xls в программе Excel нажмите ДА"

  5. Сформировать реальный Excel-файл. Плюсом является возможность расширенного форматирования и отсутствие проблем с кодировками. Файл можно сформировать с помощью PL/SQL или perl/python - скриптов. 

  • C помощью PL/SQL создание excel-файлов выглядит примерно так:
      
    
        UTL_FILE.PUT_LINE(v_fh,'');
        FOR j in 1..col_cnt
        LOOP
          UTL_FILE.PUT_LINE(v_fh,'');
          UTL_FILE.PUT_LINE(v_fh,''||rec_tab(j).col_name||'');
          UTL_FILE.PUT_LINE(v_fh,'');
        END LOOP;
        UTL_FILE.PUT_LINE(v_fh,'');
           
     

    Также есть множество специализированных PL/SQL-пакетов, которые немного упрощают создание excel-файлов. К сожалению мне не удалось найти подходящую для меня библиотеку.

Формирование отчетов с помощью Python

   В Python доступно несколько модулей по работе с Excel: xlrd, xlwt, xlutils, XlsxWriter или openpyxl . Модуль XlsxWriter  идеален для тех кто создает отчеты с нуля, openpyxl удобен тем, что можно открыть существующий файл и добавить в него данные.
 
   Вариант работы с openpyxl  выглядит так:
  • в Excel предварительно создаем шаблон отчета, выбираем оформление, заполняем шапку, названия колонок и т.д.;
  • создаем конфигурационный файл, с параметрами подключения к базе, с ссылкой на sql-файл, названием отчета  и т.д.
  • запускаем Python-скрипт, на вход подаем название конфигурационного файла и название excel-файла, скрипт считывает кофигурационный файл, подключается к указанной БД, выполняет указанный SQL-запрос, и заполняет excel данными из БД
  • внутри python-скрипт выполняет запрос к базе данных, открывает существующий  excel-файл и заполняет excel-файл данными;
В коде Python- скрипта это выглядит примерно так:
  
    wb = openpyxl.load_workbook(filename=excel_file)
    try:
        ws = wb[excel_page]  
    except Exception as e:
        logger.error( ... )

    row = first_row
    for tupple_row in cur_sor:
        col = first_col
        for list_item in tupple_row:
            ws.cell(row=row, column=col, value=list_item)
            col = col + 1
        row = row + 1
    wb.save(excel_file)
       
 


Полный вариант скрипта можно скачать в моем репозитории на GitHub:

https://github.com/sbrazgin/SBReporter

Обновление Python

В случае установки последней версии Python и необходимые модули на Linux-сервер, на котором нет доступа к интернету придется вручную скопировать. После установке  необходимо будет дополнительно установить модули cx_Oracle и openpyxl.

Инструкция по установке:
  1. Создаем каталог для установки

  2. mkdir /opt/Python
    cd /opt/Python


  3. Копируем в него и распаковываем дистрибутив Python

  4. gunzip Python-3.6.5.tgz
    tar xf Python-3.6.5.tar


  5. Компилируем Python

  6. cd Python-3.6.5
    ./configure
    make
    make install

  7. Устанавливаем расширения

    • Копируем пакеты на сервер:
    • et-xmlfile jdcal openpyxl

    • Распаковываем:

    tar -xvzf jdcal-1.4.tar.gz
    tar -xvzf et_xmlfile-1.0.1.tar.gz
    tar -xvzf openpyxl-2.5.3.tar.gz

    • Устанавливаем:

    cd jdcal-1.4
    python setup.py install

    cd et_xmlfile-1.0.1
    python setup.py install

    cd openpyxl-2.5.3
    python setup.py install



1 марта 2018 г.

Вопросы на собеседовании oracle DBA, часть 2

Несколько вопросов начального уровня к претенденту на должность администратора БД Oracle (DBA), позволяющих дать быструю оценку кандидата на предмет - стоит ли вести с ним дальнейший разговор или нет. Вопросы может задать кадровик или менеджер.


  • С помощью каких приложений можно стартовать инстанс базы данных:

1) SQL*Plus
2) Oracle Enterprise Manager
3) RMAN


  • Какие стадии проходит инстанс во время запуска:

1) nomount
2) mount
3) open


  • Какие типы остановки инстанса с помощью команды shutdown возможны:

1) normal
2) immediate
3) transactional
4) abort


  • Вы хотите что-бы одиночный инстанс oracle стартовал автоматически при старте операционной системы, какие способы настроить автостарт возможны:

1) Использовать Oracle Restart
2) Написать свои скрипты


  • Для чего используется файл с паролями (password file):

Когда база остановлена, то нет доступа к словарю данных и нельзя проверить пароль обычным способом. Поэтому необходим механизм для администратора подключиться к  базе данных, даже если база остановлена. Файл с паролями хранится на диске отдельно от базы, содержит имена и пароли всех учетных записей с правами администрирования (учетки имеющие привилегии sysdba и sysoper)


  • Из каких обязательных файлов состоит базы данных:

1) Дата-файлы
2) онлайн-редо лог файлы
3) контрольный файл


  • Какая связь между табличным пространством и дата-файлами:

1) Каждое табличное пространство состоит из одного или более дата-файлов.
2) Дата-файл может входить только в одно табличное пространство


  • Какая разница между представлением и материализованным представлением:

1) обычное представление - это SQL запрос в словаре (логический объект)
2) материализованное представление - это таблица (физический объект базы данных)


  • Событие "log file sync" из-за чего возникает

Ожидание завершения команд commit и rollback, или: ожидание записи на диск в онлайн редо-лог

18 декабря 2017 г.

Вопросы на собеседовании oracle DBA, часть 1

Проведение собеседований

   Иногда приходится проводить собеседования кандидатов на должность администратора базы данных Oracle. Бывают случаи, когда непросто выбрать лучшего кандидата из нескольких, если задавать каждому разные вопросы.  Обычно администраторы хорошо знают несколько направлений работы, которым занимались на предыдущем месте работы. В последний год остановился на типовом стандартном наборе вопросов, которые должны знать все администраторы. Каждый ответ оцениваю по 5 бальной системе, в итоге вывожу итоговые оценки по 7 направлениям. Время ответа ограничиваю, если остается время задаю уточняющие вопросы.

   В этой статье приведу типовые вопросы, которые задаю на должность дежурного и ведущего администратора (начальный и средний уровни администрирования).  Всего стараюсь оценить 7 направлений (хотелось бы больше, но 45 минут обычно не хватает):
  1. Архитектура
  2. Бэкап / Рекавери
  3. Резервирование (STANDBY)
  4. Performance
  5. SQL – PL SQL
  6. OS
  7. Не технические аспекты

По каждой теме стараюсь задать хотя-бы 3-4 вопроса. Обычно вопросы идут по повышению сложности и времени ответа. Что обычно спрашиваю:

Архитектура

Различия PFILE and SPFILE
Обычно все знают, далее спрашиваю:
  • Как узнать с какого файла параметров стартовал инстанс?
  • show parameter spfile показывает пустую строку - что это значит?
Как администратор настраивает управление памятью для инстанса Oracle.
В ответе хотелось бы услышать об особенностях Automatic Memory Management (AMM), ASMM, назначении, особенности настройки OS, больших страницах.

Какая информация хранится в контрольном файле.
Я знаю о 12 типах, при ответе считаю кол-во тем, которое сообщит кандидат, если более 6 - то ставим 5

Контрольная точка
Для получения 4 нужно что-то сказать об: CKPT, FAST_START_MTTR_TARGET. Для 5 баллов спрашиваю о полной и инкрементальной, почему несколько групп редо-логов находятся в состоянии active.

Бэкап и восстановление

Прошу рассказать о средствах резервирования данных.
Хотелось бы услышать о холодных бэкапах, горячих через RMAN и user managed, выгрузке данных export/import, DataPump. Об особенностях функционирования, плюсы и минусы.



Как оценить предполагаемый размер бэкапа

Что происходит при Begin Backup

Этапы полного восстановления базы из бэкапа

Дублирование (dublicate)
Что такое,  что происходит если указано FROM ACTIVE DATABASE и нет.

Резервирование (STANDBY)

Data Guard Protection Modes 
Стандартный вопрос, обычно все отвечают. Оцениваю точность формулировок.

AFFIRM SYNC / NOAFFIRM NOSYNC

Действия при установке точки восстановления и откате (flashback database) 
Очередность действий на основной базе и резервной.

dgmgrl
Что такое, какие команды в dgmgrl знакомы

Performance

Диагностика
Что делает при жалобах пользователей, куда смотрит

Типовые события ожидания
db file sequential reads
db file scattered reads
log file sync
buffer busy waits

Причины и способы лечения

Параметры таблиц
PCTFREE and PCTUSED

Планы запросов
Index Full Scan и Index Fast Full 

Методы фиксации плана запросов
Что знает о «профиле» (profile) запроса

SQL plan management (SPM). 

SQL – PL SQL

Основы
Прошу привести пример DML,  DCL, DDL команд
Разница между delete и truncate
Типы constraints

Какие варианты реорганизовать таблицу

Ora-01555 snapshot too old

Мутирующие таблицы

Отличие View и materialized view


OS

Load average 
Что означает, как посмотреть

LVM
Для чего, какие команды помнит

limits
Как посмотреть лимиты 

Не технические аспекты

Работал ли с сайтом техподдержки.
Обычно все отвечают да, далее прошу уточнить: Отличия ORA-600 от ORA-7445

Что читает  
блоги, книги ?

Характер  
оценить психологические характеристики кандидата на предмет встраивания в команду и комфорта общения

не профессиональные параметры кандидата  
возраст, жизненные взгляды, допустимость переработок, стремление к развитию в профессии, мобильность и частоту смены работы, семейное положение, кругозор и опыт работы в смежных областях

1 декабря 2017 г.

Grid Infrastructure 12.2 для одиночного инстанса

Grid Infrastructure 12.2 для одиночного инстанса

Небольшая шпаргалка по включению автоматического рестарта БД Oracle 12 (Oracle Restart). В статье будет продемонстрирована установка Grid Infrastructure 12.2 без ASM для целей включения автоматического старта и рестарта различных компонент БД Oracle 12 (Oracle Restart).

Причиной для установки Oracle Restart обычно является желание увеличить доступность одиночного инстанса БД. В этом случае можно использовать компоненты Grid Infrastructure для мониторинга ресурсов листенера и инстанса БД, также для автоматического рестарта этих компонент в случае различных проблем.

Используя стандартный инсталятор (программу автоматической установки и старта Grid Infrastructure) создание компоненты Automatic Storage Management (ASM) обязательно, этот шаг нельзя пропустить. Поэтому установку будем выполнять в два шага, частично в программе-установщике, частично скриптом.

Подготовка

  • Настраиваем операционную систему, согласно требований в документации
  • Скачиваем дистрибутивы linuxx64_12201_grid_home.zip и linuxx64_12201_database.zip с сайта Oracle Technology Network
  • На сервере БД создаем рабочий каталог:
mkdir -p /u01/app/grid/product/12.2.0.1
  • Копируем в него дистрибутив
mv linuxx64_12201_grid_home.zip /u01/app/grid/product/12.2.0.1/
  • Распаковываем. Начиная с версии 12.2 (Oracle 12c Release 2) zip-файл требуется распаковывать в конечном рабочем каталоге.
cd /u01/app/grid/product/12.2.0.1/
unzip linuxx64_12201_grid_home.zip
  • Проверка. Запускаем Cluster Verification Utility (CVU)
cd /u01/app/grid/product/12.2.0.1
chmod u+x *.sh
./runсluvfy.sh stage -pre hacfg –verbose

Установка

  • Запускаем инсталятор
cd /u01/app/grid/product/12.2.0.1
./gridSetup.sh
  • Выбираем установку только ПО, без конфигурации сервисов:

  • Далее все шаги по умолчанию, в конце выполняем root-скрипты.
  • Выполняем конфигурирование Grid Infrastructure, для этого запускаем под пользователем root:

/u01/app/grid/product/12.2.0.1/perl/bin/perl -I/u01/app/grid/product/12.2.0.1/perl/lib -I/u01/app/grid/product/12.2.0.1/crs/install /u01/app/grid/product/12.2.0.1/crs/install/roothas.pl

В результате выполнения должны получить:

CRS-4133: Oracle High Availability Services has been stopped.
CRS-4123: Oracle High Availability Services has been started.

centos     2017/12/21 11:27:35     /u01/app/grid/product/12.2.0.1/cdata/centos/backup_20171221_112735.olr     
2017/12/21 11:27:36 CLSRSC-327: Successfully configured Oracle Restart for a standalone server

Проверка

Для проверки статуса компонент выполним запрос crsctl
cd /u01/app/grid/product/12.2.0.1/bin
./crsctl stat res –t

./crsctl enable has

Создание листенера

В качестве завершающего шага рекомендуется запустить хотя-бы один листенер. Для этого запускаем мастер netca:

cd /u01/app/grid/product/12.2.0.1/bin/
./netca

В открывшемся мастере создаем новый листенер, все параметры можно оставить по умолчанию. После выполнения проверяем что запустился:

Установка ПО Oracle

  • Копируем и распаковываем дистрибутив ПО Oracle. В нашем случае это будет версия 12c Enterprise Edition Release 12.2.0.1.0

unzip linuxx64_12201_database.zip

  • Запускаем установщик:
cd database/
./runInstaller

  • Установка ПО Oracle не отличается от обычной установки. Каталог для установки выбираем: /u01/app/oracle/product/12.2.0/dbhome_1

Создание и запуск инстанса БД

  • Запускаем мастер создания инстанса БД:
cd /u01/app/oracle/product/12.2.0/dbhome_1/bin
./dbca
  • Все параметры для нового инстанса стандартные, и не отличаются от обычной установки. Кроме настройки листенера. На странице выбора листенера, выбираем созданный нами листенер в каталоге Grid Infrastructure:
  • После создания инстанса проверяем статус компонент:


  • Для исправления ошибки "ORA-28040: Нет соответствующего протокола аутентификации" добавляем в конфигурационный файл sqlnet.ora следующие строки: 
    • SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
    • SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
    • SQLNET.ALLOWED_LOGON_VERSION=8

Проверка

Уже сейчас можно проверить автостарт сервисов. Для этого перезагружаем хост, проверяем статус базы данных.
srvctl status listener
srvctl status database -database EMDB



7 августа 2015 г.

Исправлена ошибка при установке Oracle RAC

  Некоторое время назад пытался установить кластерную БД 12-й версии. Но не удалось, во время выполнения root.sh получал странную ошибку:
ROOT.SH FAILED: PRIF-15: INVALID FORMAT FOR SUBNET
Исправления в то время не нашел, пришлось установить кластерное ПО предыдущей (11-й) версии.

  Недавно получил новую заявку на установку кластерной базы. При установке опять получил подобную ошибку. Как выяснилось, такой сбой происходит при установке кластерного ПО версии 12.1.0.2 на некоторых валидных IP адресах. В моем случае, если IP адрес содержит число 255 в любом октете, то установка не проходила (адрес вроде: 10.255.255.ххх). Oracle недавно признал баг: 
"ROOT.SH FAILED: PRIF-15: INVALID FORMAT FOR SUBNET", и выпустил патч: 19777496

Я составил инструкцию, как можно устанавливать кластерное ПО с такими патчами:

1) Запускаем установку кластерного ПО и перед выполнением root.sh устанавливаем нужный патч на всех узлах кластера:
  • копируем патч в to /u01/patch 
  • chown -R oracle:dba /u01/patch/ 
  • копируем и распаковываем новый OPatch 
  • с правами пользователя oracle запускаем установку патча: /u01/crs/12.1.0/grid/OPatch/opatch napply -oh /u01/crs/12.1.0/grid -local /u01/patch/19777496/19777496
Затем запускаем root.sh на всех узлах и как обычно заканчиваем установку кластерного ПО.

2) Если нужно будет позже установить PSU, то удалите этот патч, в дальнейшем он мешает установке некоторых обновлений, для этого выполните команды:
  • srvctl stop home -o /u01/crs/12.1.0/grid -s /u01/patch/111 -n emias-db-rac01 
  • /u01/crs/12.1.0/grid/crs/install/rootcrs.pl -prepatch 
  • opatch rollback -local -id 19777496 -oh /u01/crs/12.1.0/grid 
  • /u01/crs/12.1.0/grid/rdbms/install/rootadd_rdbms.sh /u01/crs/12.1.0/grid/crs/install/rootcrs.pl -postpatch 
3) Установите последний PSU на всех узлах кластера:
  • create rsp file /u01/crs/12.1.0/grid/OPatch/ocm/bin/emocmrsp -no_banner -output /u01/patch/grid_config.rsp 
  • opatchauto apply /u01/patch/20996835 -oh /u01/crs/12.1.0/grid -ocmrf /u01/patch/grid_config.rsp
4) После этого можно копировать базы данных.

31 марта 2015 г.

Экзамен 1Z0-060 Upgrade to Oracle Database 12c

Наконец нашел время сдать тест 1Z0-060. Я готовился к нему полгода, изучил множество документов и книг. Это не самый быстрый способ.

Для желающих сэкономить время, могу предложить самый эффективный способ сдачи этого экзамена, не требующий много времени:

1) идем на сайт:  http://www.aiotestking.com/oracle/category/exam-1z0-060-upgrade-to-oracle-database-12c-update-january-30th-2014/ 
и просматриваем там все 150 возможных вопроса. Читаем все комментарии, они помогают понять суть.  Если тема вопроса незнакома, то изучаем в официальной документации Oracle 12 или на специализированных ресурсах, например:  http://oracle-base.com/articles/12c/articles-12c.php 

2) Для желающих я собрал все вопросы в один файл, можете скачать по ссылке:
https://www.dropbox.com/s/0zcks9e3irxffjl/QUESTION%201Z0-060.docx?dl=0
Зеленым я отметил ответы, на которые я уверен на 100 %. Желтым не корректные вопросы, или я не уверен в ответе.

3) На этом сайте совпадает по охвату 100% вопросов с реальным экзаменом. По содержимому вопросы могут отличаться, но незначительно. Например из того, что запомнил, в вопросе:
------------------------
You are about to plug a multi-terabyte non-CDB into an existing multitenant container database (CDB) as a pluggable database (PDB).
The characteristics of the non-CDB are as follows:
– Version:Oracle Database 12c Releases 1 64-bit
– Character set: WE8ISO8859P15
– National character set: AL16UTF16
– O/S: Oracle Linux6 64-bit

The characteristics of the CDB are as follows:
– Version: Oracle Database 12c Release 1 64-bit
– Character set: AL32UTF8
– O/S:OracleLinux 6 64-bit
Which technique should you use to minimize down time while plugging this non-CDB into the CDB?
A.    Transportable database
B.    Transportable tablespace
C.    Data Pump full export / import
D.    The DBMS_PDB package
E.    RMAN


------------------------

Список возможных ответов сократили до :
------------------------
A.    Transportable database
B.    Transportable tablespace
С.    The DBMS_PDB package
D.    RMAN

------------------------

4) Также учтите, что на www.aiotestking.com часть вопросов неправильные, много опечаток. Также часть ответов указана неправильно, это особенность сайта: совместная коллективная работа без модерации ответов. Из-за этого есть вандалы, реклама и т.д. Но большинство вопросов и ответов правильные.

В итоге вы должны самостоятельно правильно отвечать без подсказки на все 150 вопросов с этого сайта. На экзамене вам нужно будет ответить только на 86 вопросов (из 150 представленных на www.aiotestking.com)

Удачи !