Oracle-club: FAQ - Server


Новости | FAQ | Ссылки | Темы | Утилиты | Documentation | Семинары

Вопрос:

> как узнать определен ли Objects Option на продукте > Oracle 8.04 Enterprase Edition for NT? > И, если он определен, то как его активизировать? Попробуй select * from v$version; Посмотри, какие опции установлены. Если нет объектной, то переставь оракл сервер, инсталлятор при установке сервера спрашивает, какие опции ставить.

Вопрос:

Что означает ошибка ORA-01034 ? Ответ: На сервере не запущена БД с указанными именем Действия: Запустите БД или проверьте строку подключения
Размер блока базы (db_block_size) Размер блока базы должен быть КРАТЕН размеру блока при форматировании диска, а не СОВПАДАТЬ с ним. Т.е. db_block_size=n*os_block_size, n>=1. Так что требование более слабое. И нужно оно только для того, чтобы не падала производительность. При некратных блоках дб блок может читаться/писаться или за несколько обращений к системе, или за одно, но будет передаваться больше информации, чем нужно.

Вопрос:

Имеется сервер Oracle 7.3 Workgroup не могу сделать так что бы работали одновременно две базы. Если работает одна и пытаешся стартануть вторую, то выходит сообщение что база уже запущена и предлагается сделать Shutdown а потом только стартовать. Что делать? Как от этого избавится? Ответ: Перед созданием новой база задать переменую окружения ORACLE_SID=<новый SID>
> Объясните, пожалуйста, в чем отличия и преимущество соединения с > через выделенный и многопотоковый сервера. 1. Многопоточный - более оптимальное использование памяти при работе с интерфейсными клиентами.
2. Выделенный сервер отдается сеансу полностью и монопольно. Он съедает память и никому ее не отдает пока не закроется. Такой вариант выгоден когда у тебя напряжно работает какой нибудь бэтч-процесс (например создается отчет за год). Выделенный сервер не выгоден когда подключается много _людей_. Такие соединения малоактивны и большую часть времени простаивают, ждут пока юзер соизволит выдать запрос. А ресурсы системы в это время заняты. Многопоточный сервер лишен _этих_ недостатков. Он разделяется между многими юзерами. Он динамичен, может подгружать МТС сервера по ходу при надобности. > > Как при использовании многопотокового сервера можно посмотреть > какой диспетчерский и серверный процессы использует сессия Oracle? через соединение v$circuit, v$dispatcher, v$session, V$MTS, V$REQDIST, V$QUEUE

Вопрос:

>Имеется ли возможность в Oracle хранить часть данных на ReadOnly носителях >(к примеру на CD)? Да. 1. Убедиться что ряд условий соблюден: - ТП и все его файлы должны быть оперативными - В БД не должно быть никакой информации отката, относящейся к этому ТП - ТП не должно содержать активные сегменты отката - ТП не должно находиться в режиме горячего резервирования 2. Табличное пространство нужно перевести в режим Read Only SQL>alter tablespace MY_OLD_TS read only; 3. Затем надо скопировать все его файлы на WORM носитель. 4. Перевести в автономный режим SQL> alter tablespace MY_OLD_TS offline; 5. Потом переименовать его SQL> alter tablespace MY_OLD_TS rename datafile '/DB/MY_OLD_TS_1', '/DB/MY_OLD_TS_2' to '/CDROM/MY_OLD_TS_1', '/CDROM/MY_OLD_TS_2'; 6. Перевести в оперативный режим SQL> alter tablespace MY_OLD_TS online; Марк Малаканов (markm@pelitec.kts.ru)

Вопрос:

В семерке можно ли располагать таблеспейсы на ReadOnly носителях, или это прерогатива только восьмерки? Ответ: Можно и в семерке. ALTER TABLESPACE my_ts READ ONLY; При этом есть ряд понятных ограничений. Это не должно быть SYSTEM :), в ТС не должно быть активных роллбэк/тэмпорари сегментов... Есть небольшие сложности с восстановлением при сбоях... Ронять Оракл я думаю вам не придется. :) Устойчивый он :) Но если уж упадет. не дай бог. То надо перед восстановлением перевести все ридонли табспэйсы в оффлайн. Дабы Оракл не пытался прописывать в их заголовках номер изменений. После восстановления можно перевести обратно в онлайн, убедившись, что это было табспэйс именно ридонли и он остался ридонли. И главное, после перевода ТС в ридонли или наоборот надо сделать полное резервирование БД (NOARCHIVELOG), либо в случае режима ARCHIVELOG только kонтрол-файла.

Вопрос:

подскажите что этому вражине надо! Пишет > Error 1575, Timeout waiting for space managment resource > Это вообще о чем? Диск у него здоровенный, памяти навалом, OS правильный > (SCO)! Если коротко, то: Сессия получает 1575 в случае, когда smon занимается coalescing'ом свободного пространства. Это результат наличия большого количества свободных кусочков в tablespace. Смотри dba_free_space, на предмет, сколько в каком tablespace этих кусочков. Если окажется, что в temporary, то видимо было много сортировок. Тут либо дождаться, пока smon закончит работу, либо сделать другой temporary, а этот - убить.

Вопрос:

Интересная проблемка: используем Oracle on Linux 8.0.5 и он ни при каких параметрах не хочет вести archive-log-и :-( кусочек из настроек: -- initLSTR.ora log_archive_start = true log_archive_dest = /var/oracle/oradata/arch/arch.log Ответ: STATRTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;

Вопрос:

> Не могу увеличить количество процессов > в init.ora больше 50 (нужно увеличить количество соединений до ~200). > Oracle WG 7.3.3 для SCO 5.0.2, лицензия SCO на 5 пользователей. > Увеличение числа процессов на пользователя > и количества семафоров в системе не помогает > (увеличивал в два раза). Значение остальных > параметров S... по умолчанию при установке Oracle. > Подскажите, пожалуйста, что тут можно сделать. > Или это предел (лицензионный) SCO? Ответ: Проблема в том, что /etc/conf/cf.d/configure не показывает все параметры настройки ядра. Приаттачиваю файл stune, в котором ручками эти параметры настроены и позволяют (после пересборки ядра конечно) запускать даже 2 RDBMS одновременно Dmitry Bezgodov (dima@profit.maginfo.net)

Вопрос:

>Если коннектится к ораклу через серверменеджер или sqlplus >не указывая элиаса - то вс_ замечательно работает >-------> >Но при попытке законектится через sqlnet - типа "sqlplus >sys/my_password@my_alias" >выдается сообщение "TNS -no listener" > >(хотя элиас my_alias я создал - Listener запустил , >lsnrctl start & lsnrctl stsus никаких ошибок не выда_т - пишет "all services ok") > >И еш_ : если коннечтюсь через beq - типа "sqlplus sys/my_password@BEQ_my_sid" >то выда_тся сообщение "TNS - permission denied" > >Кто-нибудь знает, что это вс_ означает? Кривой tnsnames.ora не дает соединений по BEQ. После его правки ситуация нормализуется. beq = (DESCRIPTION = (ADDRESS = (PROTOCOL = BEQ)(PROGRAM = oracle) (argv0 = oraclelnx1ora) (args = '(DESCRIPTION = (LOCAL=YES)(ADDRESS=(PROTOCOL=BEQ)))') ) (CONNECT_DATA = (SID = lnx1ora)) )

Вопрос:

Можно ли подключить к Personal Oracle внешнего (сетевого) пользователя? Если да, то как и сколько? Ответ: Да; как обычный(WG & EE); без извращений - 1 user + консоль

Вопрос:

При создании БД Instance Manager все время предупреждает, что нужно установить параметр REMOTE_LOGIN_PASSWORFILE (за точность не ручаюсь), иначе гром и молнии. Что эт такое и где надо его установить? Что я потеряю, если не установлю? (Вроде я ничего такого не делал, а все работает...) Ответ: Лучше всего прописать =EXCLUSIVE что предполагает использование файла паролей только одним экземпляром(instance). Это позволяет раздавать роли SYSOPER/SYSDBA любому юзеру (страшная сила!). По умолчанию этими ролями владеют SYS и INTERNAL (причем если входишь как SYS AS SYSDBA то пароль надо писать почемуто интерналовский. это для НТ) Если прописать REMOTE_LOGIN_PASSWORFILE = SHARED то файлом паролей смогут пользоваться несколько экземпляров. Но тогда нельзя давать роли SYSOPER/SYSDBA юзерам, только SYS & INTERNAL смогут стартовать экземпляр(ы). Если прописать REMOTE_LOGIN_PASSWORFILE = NONE то файл паролей вообще не будет использоваться. Оракл будет смотреть есть ли у пользователя роль OSOPER/OSDBA в операционке. Это просто общие названия ролей в документации, в каждой ОС они могут быть разные. В юниксе эти роли обзываются по умолчанию dba. (в НТ/95 не пробовал). При этом можно коннектится (с консоли или по телнету) CONNECT / AS SYSDBA. Т.е. юзер юникса с группой dba может коннектится в svrmgrl без указания имени и пароля как СИСДБА. Оракл ставит это дело по умолчанию на юниксах, однако не рекомендует это использовать на незащищенных протоколах (TCP, IPX, DECNet, NP).

Вопрос:

> А можно ли при выполнении хранимой процедуры узнать имя пользователя, ее > запустившего? select USER from dual или просто USER > И еще хочется очень узнать список ролей этого пользователя. Смотри таблицу системную SYS.DBA_ROLE_PRIVS

Вопрос:

как получить номер своей oracle-сессии ?

Ответ:

select serial#, sid from v$session where audsid = userenv( 'SESSIONID' ); SERIAL# SID ---------- ---------- 87 29

Вопрос:

Подскажите ДОБРЫ ЛЮДИ как избавиться от бяки: Thread 1 cannot allocate new log и Checkpoint not complete А в Alertе вот что пишут: Thu Mar 11 11:43:05 1999 Thread 1 cannot allocate new log, sequence 59060 Checkpoint not complete Current log# 1 seq# 59059 mem# 0: /u20/.../log1BD1.dbf Current log# 1 seq# 59059 mem# 1: /u30/.../log1BD1.dbf

Ответ:

1.Добавь побольше реду-лог групп, штуки 4-5, и добавляй пока эти сообщения не пропадут. 2.Скорее всего, нужно просто пересоздать redo log'и с бОльшими размерами: например, 2M или 4M, зависит от активности пользователей. Родионов Андрей

Вопрос:

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

Ответ:

В этом случае необходимо предоставить объектную привилегию REFERENCES на таблицу, причем она не может быть предоставлена через роль, т.е.: GRANT REFERENCES ON My_Table TO Schema_Name

Вопрос:

>не получается войти как sysoper или sysdba >может что-нибудь посоветуете?

Ответ:

Чтобы войти as sysdba надо: 1) параметр remote_login_passwordfile = exclusive в initXXX.ora 2) создать файл паролей: orapwd(Unix) orapwdХХ.exe (NT) file=.... password=.... entries=32 в $ORACLE_HOME/dbs (Unix) $ORACLE_HOME/database (NT) 3) войти internal-ом в svrmgrХХ (svrmgrl for Unix) и сделать grant sysdba,sysoper to .....; 4) проверить select * from v$pwfile_users; connect XXX/XXX@XXX as sysdba Yury Evdokimov jevdokimov@fors.ru

Вопрос:

Где можно достать полный список недокументированных и документированных параметров ?

Ответ:

полный список недокументированных и документированных параметров можно достать из Fixed Table X$KSPPI ( или X$KSPII - не помню точно ), но для этого надо залогиниться SYSом. Все это для O7 - для восьмерки - не уверен. Правда там список почти без описания.

Вопрос:

как можно ПОПРОЩЕ в схеме ВСЕ индексы пересоздать в другом табличном пространстве (разнести таблички - индексы) ? Их много , база рабочая - каждый убивать - скриптом создавать хлопотно... А индексов много, да и схема не одна...

Ответ:

SQL*Plus : set heading off set pages 0 spool mv_idx.sql select 'alter index '||owner||'.'||index_name||' rebuild tablespace idx;' from all_indexes; spool off @mv_idx.sql

Вопрос:

Как создать новую DATABASE

Ответ:

У меня уже давно наработан такой скриптик : # Create Oracle database for Unix # CHARACTER SET CL8ISO8859P5 - for Unix # CHARACTER SET CL8MSWIN1251 - For Windows cd /export/home/oracle7/dbs запускаем sqldba или svrmgrl: spool cre connect internal / shutdown / # файл параметров инициализации initNew_DB.ora уже должен существовать # создать его можно на примере поставляемого в дистрибутиве init.ora startup pfile=initNew_DB.ora nomount / CREATE DATABASE New_DB LOGFILE ('/export/home/oracle7/dbs/log1New_DB.dbf') SIZE 500K, ('/export/home/oracle7/dbs/log2New_DB.dbf') SIZE 500K, ('/export/home/oracle7/dbs/log3New_DB.dbf') SIZE 500K MAXLOGFILES 5 MAXLOGHISTORY 100 DATAFILE '/export/home/oracle7/dbs/sysNew_DB.dbf' SIZE 100M MAXDATAFILES 100 MAXINSTANCES 2 NOARCHIVELOG EXCLUSIVE CHARACTER SET CL8ISO8859P5 / CREATE PUBLIC ROLLBACK SEGMENT SYSRB storage ( initial 10K next 10K minextents 10 ) / commit / shutdown / startup / @cat # - create standart database objects, install procedural and other options / commit / shutdown / startup / spool off exit / содержание cat.sql : @/opt/oracle7/rdbms/admin/catalog.sql / @/opt/oracle7/rdbms/admin/catproc.sql / @/opt/oracle7/rdbms/admin/catexp.sql / @/opt/oracle7/rdbms/admin/catexp7.sql / @/opt/oracle7/rdbms/admin/utlfile.sql / @/opt/oracle7/rdbms/admin/prvtfile.plb / @/opt/oracle7/rdbms/admin/utlraw.sql / @/opt/oracle7/rdbms/admin/prvtrawb.plb / @/opt/oracle7/rdbms/admin/dbmspool.sql / @/opt/oracle7/rdbms/admin/prvtpool.plb / @/opt/oracle7/rdbms/admin/dbmspipe.sql / @/opt/oracle7/rdbms/admin/prvtpipe.plb / P.S. Как показывет практика работает практически без изменений на версиях от 7.1.5 до 8.1.5 Omelchenko Michael (mikeom@trecom.tomsk.su)

Тема :

ВНИМАНИЕ! Формат архивлога О734/ НТ

Вопрос:

Обнаружен досадный глюк в Оракле7.3.4 Воркгруп под ВинНТ При указании LOG_ARCHIVE_FORMAT = orcl%S.arc большой буквы S имена архивных логов включают в себя SCN урезанный до 5 первых цифр. Это ведет к перетиранию архивных логов при переключениях журнала. Т.е архивы с изменениями 123450..123459 сводятся в файл orcl12345.arc. И если делать насильственные переключения журнала то файл перетирается! По умолчанию используется тоже большая буква S. Метод борьбы - поставить маленькую s в строке формата. Но тогда все имена будут разной длины. :(

Ответ:

Это известный баг #381394, он есть только на NT, и кажется даже в 8.* Описаны методы борьбы в "Exploring Oracle" Vol. 4 Num. 5 (ZD journal May 1999) Статья большая, но решение именно такое! Т.е в init.ora log_archive_format = 'ARC%s.%T' Вариант log_archive_format = '%S.%T' можно не рассматривать... OKukartsev@hotmail.com

Вопрос:

Как реализуется обновление данных на стороне клиента? То бишь имею я вью и работаю с ним. В один прекрасный момент другие юзвери подправили данные что я имею перед глазами. Есть ли в Оракле механизм, который оповестит мою клиентскую программу о том что надо сделать обновление данных? Или это все зависит только от моего желания и желания клиента?

Ответ:

Можно это сделать. Например через DBMS_ALERT. В триггере вызываешь алерт. А в программе, во другом tread открываешь еще одну сессию Оракла и ждешь алерта. Как он приходит, обновляешь форму. DBMS_PIPE не подходит - нужен commit , чтобы юзера увидели изменения

Тема :

Multiple Instances in Oracle 7.3

Вопрос:

Как в Oracle 7.3 создать несколько различных (>1) экземпляров и заставить их работать? Не могу понять вот какую вещь: если в Instance Manager создать два экземпляра и поставить галочку автоматически стартовать экземпляр и сервис, то при последующей перезагрузке Windows NT неизбежно валился на ошибку совместного доступа (Dr. Watson). Если указать ручной старт, то из-под SVRMRG23.EXE можно было запустить только один экземпляр. Если для старта экземпляра использовть Enterprise Instance Manager, то экземпляры он стартует (оба), но после обращения к одному из них (SELECT), второй сразу становится недоступным. Помогите, пожалуйста, что я делаю неправильно и возможна ли такая ситуация в принципе - что бы заставить несколько экземпляров работать одновременно.

Ответ:

В сессии нужно ставить SET ORACLE_SID='твой текущий инстанс' после этого все работает и через svrmgr Как сделать старт двух инстансов автоматом в NT, не знаю Разве только писать батник с oradim и там ставить SID Igor Trush (trush@elcat.kg)

Тема :

Перенос данных из Oracle 7.1 на Oracle 8

Вопрос:

Вот предстоит перенос данных с Oracle 7.1.3 на Oracle 8.0.3 для Netware. Может кто уже выполнял подобную процедуру, поделитесь опытом: что нужно делать, чего не нужно делать, какие подводные камни есть. Вопрос: для экспорта данных из 7.1 нужно использовать утилиту экспорта версии 7 или 8?

Ответ:

Можно и без экспорта-импорта мигрировать. Недавно тренировался на пробной базе. Коротко это делается так. Восьмерошным инсталятором ставишь в существующую семерку утилиту миграции. Останавливаешь семерку NORMAL. Пускаешь утилиту миграции. Она сама стартует семерку и по существующей базе делает файлик convSID.dbf и останавливает семерку. Далее надо сменить ORACLE_HOME - куда ставить восьмерку. И ставить восьмерку - только программное обеспечение. далее копируешь в новую /dbs старый initSID.ora и convSID.dbf . А далее работает восьмерка - startup nomount alter database convert alter database open resetlogs @...rdbms/admin/cat8000.sql Значительно быстрее чем экспорт-импорт. Все файлы данных остаются на своих местах. Ничего не надо копировать.

Тема :

HELP : end-of-file on communication channel

Вопрос:

> Возникла неожиданная проблема с созданием новой БД. > > Исходные данные : > Windows NT Server 4.0 SP5, Oracle 7.3.2.1.0 workgroup, > два инстанса (каждый на свою БД) прекрасно работали 6 мес. > > Проблема : > создаю новый инстанс : > 1)set ORACLE_SID=RAN7 > > 2)C:\ORANT\bin\oradim73 -new -sid RAN7 -intpwd 96321 -startmode auto > -pfile C:\ORANT\database\initRAN7.ora > > 3)C:\ORANT\bin\oradim73 -startup -sid RAN7 -starttype srvc,inst -usrpwd > 96321 -pfile C:\ORANT\database\initRAN7.ora > > Всё OK. > Теперь > connect INTERNAL/96321 > startup nomount pfile=C:\ORANT\database\initRAN7.ora > > и получаю ORA-03113: end-of-file on communication channel !!! > > Файл параметров взял с рабочего инстанса (подправил, конечно), места на > диске хватает, > уже Oracle server переустановил - ничего не помогает

Ответ:

Проблема решена. Никаких патчей не понадобилось. Поставил базу в другие каталоги и написал заново init. Хотя permissions на каталоги те-же, да и init получился такой-же. Alexey Ivanov

Вопрос:

Работает Oracle7.3 под NetWare Периодически возникает ORA-00600: internal error code, arguments: [15598], [], [], [], [], [],[],[] Значение в скобках имеет несколько вариантов [17302], [17182] (Интересно чтобы значило это значение, может это указание на подпорченный блок? Причем иногда эту ошибку сопровождает другая ORA-00602: internal programming exception и это обыно приводит к полной перезагрузки Новеловского сервера. Вот такая печальная история.

Ответ:

сперва надо посмотреть что это за ошибка первая цифра - код внутренней ошибки Вот что выдает если код ошибки 12820 oerr ora 12820 12820, 00000, "invalid value for DEGREE" // *Cause: invalid value for DEGREE was specified within a PARALLEL // clause. // *Action: specify a positive integer or DEFAULT for the DEGREE // option within a PARALLEL clause. Но вообще это не всегда соответствует истине Иногда при подобной проблеме может оказаться плохой блок хотя сообщение было не о нем, это выяснилось при просмотре системных ошибок А вот что говориться в документации : ORA-00600 internal error code, arguments: [num], [?], [?], [?], [?], [?] This is a catchall internal error message for Oracle program exceptions. It indicates that a process has met a low-level, unexpected condition. Various causes of this message include:  time-outs  file corruption  failed data checks in memory  hardware, memory, or I/O errors  incorrectly restored files The first argument is the internal message number. Other arguments are various numbers, names, and character strings. See "Calling Customer Support" on page 1 - 10 for more information. The numbers may change meanings between different versions of the Oracle Server.

Вопрос:

>Is there the method/tool to perform a single Oracle database file >reorg/defragmentation within a "multifile" tablespace?

Ответ:

export full=y drop TS create TS (datafile DF1, datafile DF2...) import rows=N alter table allocate extent datafile DFn ... import rows=Y Mark Malakanov DBA Sapience, Toronto

Вопрос:

установил Personel Oracle 7.3 под Win98ru, все > прекрасно стартует, > и т.д. Вопрос - как запустить subj? При вызове из проводника ServerManager запускается в Line Mode.

Ответ:

Чтобы Server Manager запучкался в графике - 2 варианта 1. В качестве параметра задавать lmode=N; 2. В реестре задать параметр ORA_SQLDBA_MODE=SCREEN (для Line Mode соответственно =LINE)

Вопрос:

Ответ:


Новости | FAQ | Ссылки | Темы | Утилиты | Documentation | Семинары