Сообщения

Сообщения за март, 2021

dbca. Удалить базу данных Oracle

Изображение
Ситуация: Была развернута БД Oracle. (СУБД Oracle 11.2.0.4) После перекомпиляции схемы SYS, возникли проблемы и вместо 300 невалидных объектов "вывалилось" более 30 000 объектов. Вообщем, ситуация очень печальная. Повторная попытка компиляции инвалидных объектов с помощью SQLDeveloper , скриптов из rdbms/admin/utlrp.sql , а также команды  dbms_ddl.alter_compile успехом не увенчалась. Поэтому было решено снести полностью БД и создать новую. Что делаем: Переходим: mnt/u01/app/oracle/product/11.2.0/dbhome_1/bin запускаем dbca Далее, через GUI выбираем и удаляем БД После завершения, выбираем пункт "Продолжить работу" и переходим к созданию новой БД*. *может быть так, что oratab не будет удалена. В этом случае необходимо вручную удалить файла etc/oratab. **проверить что запущен Listrener.

SQL. Найти всю информацию по связанным таблицам

Задача: Проверить и найти все таблицы, где используется определенное значение из связанной таблицы. Т.е. есть документы, справочники, которые содержат конкретное значение из связанного справочника. Решение для СУБД Oracle: Узнаем все таблицы, в которых есть необходимое нам поле: select * from dba_tab_columns where column_name like '%LAWACT_ID'; Далее, пишем запрос по каждой таблице: select TABLE_NAME AS "ТАБЛИЦА",    COLUMN_NAME AS "КОЛОНКА",    'SELECT '''||TABLE_NAME||''''||' AS "Таблица",     count(1) AS "Количество" FROM '||TABLE_NAME||' WHERE '||COLUMN_NAME||' = <необходимый ID> UNION ALL' AS "СКРИПТ"   from dba_tab_columns  where column_name like 'KD_CODE' /*Укажите название поля (колонки) */  --AND OWNER like '<schema_name>'; /*Укажите схему */ Далее, копируем значение из колонки "СКРИПТ", редактируем его, убирая  UNION ALL

Создание RAID. Шаги

1. Если уже есть RAID, но из него необходимо пересобрать другой RIAD: 1.1. Размонтировать старый рейд: # umount /dev/md0 1.2. Остановть старый рейд #  mdadm —stop /dev/md0 1.3. Обнулить суперблок на носителях старого рейда # mdadm —zero-superblock /dev/sd[ab]1 1.4. Отформатировать все носители: #  mkfs.ext4 /dev/sda1 #  mkfs.ext4 /dev/sdb1 2. Создаем новый рейд* # mdadm —create —verbose /dev/md2 —level=10 —raid-devices=4 /dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2 # mdadm --create --verbose /dev/md0 -l 10 -n 4 dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2 3. Смотрим инфу по созданному RAID: # mdadm --detail /dev/md2 4. Форматируем новый рейд: # mkfs.ext4 /dev/md2 5. Добавляем инфу в mdadm.conf # mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm.conf , либо вручную вводим через редактор в файл /etc/mdadm.conf информацию из mdstat: # watch cat /proc/mdstat 6. Создаем точку монтирования: # mkdir /mnt/raid_md2 7. Добавляем информацию в в /etc/fstab**: /dev/md2 /mnt/

job_queue_processes. Ошибка при создании репозитория OEM

При создании репозитория  Oracle Enterprise Manager  возникла ошибка: SEVERE: 'job_queue_processes' must be greater than or equal to 1. Fix the error (s) and run EM Configuration Assistant again in standalone mode. 25.03.2020 23:00:23 oracle.sysman.emcp.EMConfig perform SEVERE: 'job_queue_processes' must be greater than or equal to 1. Fix the error (s) and run EM Configuration Assistant again in standalone mode. Причиной ошибки является значение параметра job_queue_processes Ранее при ошибке  ORA-02374, ORA-12899 and ORA-02372 when restore DB  я изменил значение: ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; Для исправления необходимо: alter system set job_queue_processes=1 scope=both;

SAMBA. При открытии сетевой папки ошибка "Отказано в доступе"

Имеем: сервер на Oracle Linux 6.10 клиентскую машину на Windows 7/Windows 10 После настройки samba папка отображается в сети, но при попытке открыть ее возникает ошибка - Отказано в доступе. Необходимо проверить SELinux, а именно: # cat /selinux/enforce Возможные параметры для setenforce являются: 1 (включить). 0 (отключить) Чтобы отключить: #  echo 0 > /selinux/enforce Также можно изменить файл "enforce" вручную через vi, mc, gedit или любое др. Ссылки: man SELinux   отключить SELinux

rlwrap. Установка

1. Добавляем репозиторий: # rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 2. Загружаем: # yum install rlwrap

7zip на Linux

Шаги по установке архиватора 7zip на Linux: Скачать файлы из репозитория  P7Zip repository . Распаковать архив: # tar xjpf p7zip_16.02_src_all.tar.bz2 Перейти в директорию, куда распаковался архив: # cd p8zip_16.02 Выполнить команду: # make -j4 all3 где, -j4 - 4 CPU cores Выполнить команду: # ./install.sh

ORA-39083 and ORA-01847 when restore DB

Имеем СУБД Oracle 11g + Oracle Linux 6.10 При ресторе БД возникла ошибка: ORA-39083: Object type TABLE:"*"."USERCERT" failed to create with error: ORA-01847: day of month must be between 1 and last day of month ORA-39083: Object type TABLE:"*"."NOTIFYMSG" failed to create with error: ORA-01861: literal does not match format string Причина (в моем случае) Некорректно настроенный файл ".bash_profile". Значения ORACLE_BASE, ORACLE_HOME, ORACLE_SID я почему-то прописал в файл "/etc/bashrc". Решение Переносим указанные переменные из "/etc/bashrc" в ".bash_profile". Т.о. в файле должны быть обязательно указаны: export ORACLE_BASE=/mnt/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SID=ORACL11B export ORACLE_UNQNAME=ORACL11B export NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export LIBPATH=$ORACLE_HOME/lib export PATH=$ORACL

ORA-39006 and ORA-39213 when restore DB

При ресторе БД возникла ошибка: ORA-39006: internal error ORA-39213: Metadata processing is not available Решение: sqlplus / as sysdba SQL> execute sys.dbms_metadata_util.load_stylesheets; решение отсюда

ORA-02374, ORA-12899 and ORA-02372 when restore DB

При ресторе БД возникла ошибка : ORA-02374: conversion error loading table "F_*"."FILEFOLDER" ORA-12899: value too large for column FILE_NAME (actual: 101, maximum: 100) ORA-02372: data for row: FILE_NAME : 0X'313030303039333336333838407363616E20F3E2E5E4EEECEB' Причина ошибки: Используемая кодировка кодировка не соответствует данным в дампе (схемы), с которой создается БД. В моем случае, это произошло из-за переустановки Oracle DB. Параметр сейчас выглядит так: select * from nls_database_parameters; PARAMETER |VALUE | -----------------------|----------------------------| NLS_CHARACTERSET |AL32UTF8 | ацауц Решение: Изменить значение параметра на необходимое. В моем случае, это  CL8MSWIN1251 CL8MSWIN1251 -  MS Windows Code Page 1251 8-bit Latin/Cyrillic В sqlplus выполнить: SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ALTER SYSTEM S

Linux. команда Chmod

Изображение
Chmod для пользователей и права доступа Для каждой группы пользователей определены свои права доступа: «user» (u) — владелец файла; «group» (g) — один из членов группы, к которой принадлежит и владелец; «others» (o) — все остальные пользователи. Операции с объектами : r (read) — чтение (возможность просмотра содержания); w (write) — запись, перезапись (изменение содержимого), но не удаление; x (eXutive) — исполнение (например, запуск программного файла). Права доступа к папкам (директориям, или каталогам): r — чтение (можно получить список имен объектов, входящих в каталог, но не их атрибутов, то есть, невозможен просмотр размеров файлов, прав доступа, имени владельца и т.д.); w — изменение содержимого (создание, переименование и удаление объектов в директории, причем, удалять можно даже те файлы, право на запись для которых не установлено); x — доступ в каталог (особенность здесь такая, что если даже вы имеете все необходимые права на файл, который расположен "в глубине

ORA-01034 и ORA-27101

После запуска lsnrctl и попытке подключиться к БД возникает ошибка: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Данная ошибка связана с тем, что экземпляр БД, к которому осуществляется подключение, закрыт.  Необходимо выполнить его запуск: SQL> sqlplus "/ as sysdba" SQL> startup;      Oracle instance started      ------      Database mounted.      Database opened. SQL> quit;

INS-20802: Oracle Net Configuration Assistant failed error on Oracle Linux (6.10)

Изображение
При установке Oracle database 11g, на 11 шаге возникла ошибка: INS-20802: Oracle Net Configuration Assistant failed Cause - The plug-in failed in its perform method Action - Refer to the logs or contact Oracle Support Services. Log File Location /mnt/u01/app/oraInventory/logs/installActions2021-03-13_05-08-32PM.log Аналогичная ошибка и была при установке СУБД Oracle на Windows тут . Но судя по ошибке в логе, проблема здесь возникла не из-за переменной среды. Текст из лога: INFO: Started Plugin named: Oracle Net Configuration Assistant INFO: Found associated job INFO: Starting 'Oracle Net Configuration Assistant' INFO: Starting 'Oracle Net Configuration Assistant' INFO: Parsing command line arguments: INFO:     Parameter "orahome" = /mnt/u01/app/oracle/product/11.2.0/dbhome_1 INFO:     Parameter "orahnam" = OraDb11g_home1 INFO:     Parameter "instype" = typical INFO:     Parameter "inscomp" = client,oraclenet,javavm,server,ano I

VNC на Oralce Linux. Установка и настройка

Изображение
Процесс установки VNC Server в Oracle Linux (6.10), а также его настройка и подключение через клиент на ОС Windows (7): 1. Устанавливаем VNC-сервер*: yum install tigervnc-server *для меня: использовать пользователя oracle 2. Задаем пароль для подключения: vncpasswd 3. Редактируем конфигурационный файл /etc/sysconfig/vncservers      3.1. в указанном файле раскомментируем строки:           # VNCSERVERS="2: myusername "           вместо myusername пишем имя пользователя (в моем случае oracle)     # VNCSERVERARGS[2]="-geometry 800x600 "           вмес то 800x600 указываем 1024x768 (можно указать другое разрешение) 4. Запускаем VNC-сервер и добавляем его в автозагрузку: chkconfig vncserver on service vncserver start 5. Проверяем порты: lsof -i -P | grep -i "listen"  6. Проверяем доступность портов VNC через telnet: telnet <IP сервера с VNC> <порты VNC> 7. Проверяем какие порты открыты*: iptables --list * При необходимости правим: iptables -A INPUT

Oracle linux missing iso 9660 image

Изображение
При попытке установить Oracle Linux 6.10 в середине установки возникает ошибка: missing iso 9660 image В результате, процесс инсталляции останавливается (что собственно очень печально). Решение: После того как вы создали флешку для установки (я использовал rufus), необходимо закинуть ISO файл в корень диска. После чего ошибок быть не должно. Решение взял отсюда

No match for argument: oracle-rdbms-server-11gR2-preinstall

При установке утилиты  oracle-rdbms-server-11gR2-preinstall возникла ошибка: [root@dbserver ~]# yum install oracle-rdbms-server-11gR2-preinstall Last metadata expiration check: 1:21:01 ago on Thu 11 Mar 2021 01:33:46 PM +08. No match for argument: oracle-rdbms-server-11gR2-preinstall Error: Unable to find a match: oracle-rdbms-server-11gR2-preinstall Решение взято отсюда 1. Перейти в etc/yum.repos.d [root@dbserver ~]# cd /etc/yum.repos.d 2. после чего выполнить команду: [root@dbserver yum.repos.d]# wget http://public-yum.oracle.com/public-yum-ol6.repo --2021-03-11 14:57:20-- http://public-yum.oracle.com/public-yum-ol6.repo Resolving public-yum.oracle.com (public-yum.oracle.com)... 95.101.172.175 Connecting to public-yum.oracle.com (public-yum.oracle.com)|95.101.172.175|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 12045 (12K) [text/plain] Saving to: ‘public-yum-ol6.repo’ public-yum-ol6.repo 100%[=============================================>] 11.76K --.-

Ресурсы Oracle

Для инфо ниже ссылки на ресурсы Oracle: http://public-yum.oracle.com/index.html  - Репозиторий Oracle Linux. https://edelivery.oracle.com/osdc/faces/SoftwareDelivery - Дистрибутивы (требуется авторизация).* При нажатии submit, будет скачан загрузчик (exe), который будет пытаться загрузить выбранные файлы. * - лучше нажимать на iso файл и скачивать через браузер.

There was an error trying to initialize the HPI library.

При запуске установщика runInstaller СУБД Oracle 11g r2 возникла ошибка: There was an error trying to initialize the HPI library. Please check your installation, HotSpot does not work correctly when installed in the JDK 1.2 Linux Production Release, or with any JDK 1.1.x release. Could not create the Java virtual machine. Решение: [root@dbserver u01]# sudo dnf install libnsl Installed:   libnsl-2.28-127.0.3.el8_3.2.x86_64 Complete! [root@dbserver u01]#

Данные для считывания из сокета отсутствуют

Была установлена СУБД Oracle на сервер, с ошибками (как полагается). Подробнее в  Установка СУБД Oracle на Windows . Далее при подключении к БД возникла ошибка: An error was encountered performing the requested operation: Данные для считывания из сокета отсутствуют Vendor code 17410 Решение: 1. Проверить создана ли БД. Если нет создать в конфигураторе баз. В случае с SYS/SYSTEM была такая ситуация. 2. 99% вероятность ошибки в том, что неправильно сконфигурированы listener.ora и tnsnames.ora. Поэтому, лучше всего, проверить и, если ничего не помогает, пересоздать их с помощью конфигуратора (Net Configuration Assistant) и Net Manager.

Linux, где установлена java?

 После перезапуска сервера не поднялся автоматически веб-сервер, на котором крутится DBI (DB Informer). При ручном запуске (./startup.sh) возвращается ошибка с указанием на отсутствие определения переменным среды: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program [oracle@dbserver38 bin]$  При выполнении команды: [root@dbserver38 ~]# java -version -bash: java: command not found При выводе переменных среды, JAVA отсутствует. Можно выполнить команду [root@dbserver38 ~]# ls -alFh /etc/alternatives | grep bin/java lrwxrwxrwx   1 root root   35 Nov 13  2017 java -> /usr/java/jdk1.8.0_101/jre/bin/java lrwxrwxrwx   1 root root   32 Nov 13  2017 javac -> /usr/java/jdk1.8.0_101/bin/javac lrwxrwxrwx   1 root root   34 Nov 13  2017 javadoc -> /usr/java/jdk1.8.0_101/bin/javadoc lrwxrwxrwx   1 root root   41 Nov 13  2017 javafxpackager -> /usr/java/jdk1.8.0_101/bin/javafxpackager lrwxrwxrwx   1