The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Установка Oracle9i на Slackware-9.1 (linux slackware oracle database)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, slackware, oracle, database,  (найти похожие документы)
From: Dmitry A. Koptev <dimez@nm.ru> Newsgroups: email Date: Mon, 3 Oct 2003 14:31:37 +0000 (UTC) Subject: Установка Oracle9i на Slackware-9.1 Оригинал: http://dimez.forexpf.ru/docs/oracle/ Есть рабочий сервер с установленным Slackware-9.1 (можно и на Slackware-9.0 - разницы практически нет) Переустанавливать linux на сервере на тот, который сертифицирован Oracle, нет ни возможности, ни желания :-) По умолчанию, та версия Oracle(9.2.0.1), которую можно утянуть с офсайта (http://www.oracle.com/) поставить не получается - при установке возникают 3 ошибки линкования и СУБД после этого нормально не работает. После вдумчивого искания на всяческих поисковиках, во всяческих группах, "курения" документации и общения с друзьями-ораклистами (и не только с друзьями - просто с ораклистами :-), примерно нащупал решение - решил проверить на рабочей машине Итак, начнём... Скачиваем с сайта Oracle (http://www.oracle.com/) собственно сам oracle (три файла солидного размера). Для скачки требуется бесплатная регистрация на сайте. Скачиваем (если есть доступ на металинк, если нет - берём у друзей) файл p3095277_9204_LINUX.zip (тоже солидного размера). Если используете OLAP - надо достать(с металинка или у друзей) файл p3084634_9204_LINUX.zip - исправляет ошибки, допущенные в 9.2.0.4 патчсете(я не пользую{пока} - не ставил) Сам процесс установки описывать не буду - он описан на множестве сайтов, к примеру http://tutorial.ru/tutorials/13.html http://www.puschitz.com/InstallingOracle9i.html Скажу лишь, что применительно для Slackware я проделал: 1) в файл /etc/sysctl.conf прописал следующее: ---cut-/etc/sysctl.conf--- kernel.sem=250 32000 100 128 kernel.shmmax=2147483648 kernel.shmmni=4096 kernel.shmall=2097152 fs.file-max=65536 net.ipv4.ip_local_port_range=1024 65000 ---end-of-cut-/etc/sysctl.conf--- 2) в стартовые скрипты(rc.local например) прописал: if [ -f /etc/sysctl.conf ]; then /sbin/sysctl -p /etc/sysctl.conf fi 3) в домашний каталог пользователя oracle положил следующие файлы .bashrc(с точкой в начале :-) ---cut-.bashrc--- ORACLE_BASE=/opt/oracle ORACLE_HOME=/opt/oracle/9.2.0 ORACLE_SID=some_sid ### поправить на нужный ORACLE_TERM=xterm NLS_LANG=AMERICAN ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data PATH=$PATH:$ORACLE_HOME/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/network/lib CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib DISPLAY=localhost:0.0 export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH ORACLE_TERM NLS_ LANG ORA_NLS33 DISPLAY ---end-of-.bashrc--- и сделал симлинки ln -s .bashrc .bash_login ln -s .bashrc .bash_profile После почти успешной - с 3-мя ошибками, которые мы игнорируем(то есть, нажимаем "Ignore" :-) выходим из инсталлера. Дополнение Одну ошибку, связанную с линкованием, можно вылечить в момент установки. "Когда появится окно с ошибкой линкования, нужно отредактировать файл $ORACLE_HOME/ctx/lib/env_ctx.mk: добавить в строке начинающийся с INSO_LINK= новое значение $(LDLIBFLAG)dl т.е. INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m $(LDLIBFLAG)dl $(LDLIBFLAG)sc_ca $(LDLIBFLAG)sc_fa $(LDLIBFLAG)sc_ex $(LDLIBFLAG)sc_da $(LDLIBFLAG)sc_ut $(LDLIBFLAG)sc_ch $(LDLIBFLAG)sc_fi $(LLIBCTXHX) $(LDLIBFLAG)c -Wl,-rpath,$(CTXHOME)lib $(CORELIBS) $(COMPEOBJS) нажать кнопку повторить в модальном окне." За дополнение большое спасибо Askhat A. Nadjibev. Разархивируем куда-нибудь первый патчсет(3095277), после чтения README.html из патчсета делаем следующие вещи root@db # su - oracle oracle@db % cd $ORACLE_BASE/oui/bin/linux oracle@db % ln -s libclntsh.so.9.0 libclntsh.so oracle@db % cd $ORACLE_HOME/bin oracle@db % ./runInstaller выбираем путь в разархивированному патчсету(конкретно к products.jar из него) Сначала патчим сам инсталлер до версии 2.2.0.18.0(что в патчсете), дожидаемся окончания установки инсталлера, выходим из него, запускаем заново, проверяем на всякий случай версию(а вдруг не обновилась :-) Затем выбираем установку самого патчсета(в меню он называется "Oracle9iR2 Patch Set 3 9.2.0.4.0") и устанавливаем его После установки по идее надо запустить Oracle Database Assistant, но мы его сначала подправим :-) Открываем в любимом редакторе файл $ORACLE_HOME/bin/dbca, и в самом конце приводим к такому виду #if [ -f /etc/rac_on ]; then # Run DBCA $JRE_DIR/bin/jre -native -DORACLE_HOME=$OH... #else # Run DBCA #$JRE_DIR/bin/jre -DORACLE_HOME=$OH... #fi То есть, комментируем "лишнее" :-) Можно и сделать проще - создать файл /etc/rac_on, т.е. # touch /etc/rac_on После этого можно смело запускать dbca и создавать базу Да, при создании базы желательно залочить пользователя SCOTT :-)) После создания базы заходим(из-под пользователя oracle) в каталог $ORACLE_HOME/dbs oracle@db % cat initdw.ora |sed s/"#db_name = MY_DB_NAME"/"db_name = _SID_"/| \ sed s/#control_files/control_files/ > init_SID_.ora ("_SID_" заменить на SID, с которым создавали базу) Теперь от рута правим файл /etc/oratab _SID_::/opt/oracle/9.2.0:Y Затем настраиваем listener oracle@db % $ORACLE_HOME/bin/netca После создания базы и настройки listener надо озаботиться написанием стартового скрипта ---cut-rc.oracle--- #!/bin/sh ORACLE_HOME=/opt/oracle/9.2.0 ORACLE_OWNER=oracle oracle_start() { echo -n "Starting Oracle:" echo -n " listener" su - $ORACLE_OWNER -c "source /home/oracle/.bashrc;$ORACLE_HOME/bin/lsnrctl start" > /dev/null 2>&1 echo " db" su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart" > /dev/null 2>&1 } oracle_stop() { echo -n "Stopping Oracle:" echo -n " db" su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut" > /dev/null 2>&1 echo " listener" su - $ORACLE_OWNER -c "source /home/oracle/.bashrc;$ORACLE_HOME/bin/lsnrctl stop" > /dev/null 2>&1 } case "$1" in 'start') oracle_start ;; 'stop') oracle_stop ;; 'restart') oracle_stop oracle_start ;; *) echo "usage $0 start|stop|restart" ;; esac ---end-of-rc.oracle--- Вот и всё Дополнение После накатывания 9.2.0.4-патчсета ломается экспорт Лечится это следующими действиями: 1) Оракл переводится в startup migrate мод 2) @?/rdbms/admin/catpatch.sql 3) Делается shutdown и startup в normal моде 4) connect / as sysdba 5) alter system set "_system_trig_enabled"=false; 6) @?/rdbms/admin/catnools.sql (если у Вас в системе нет этого скрипта, возьмите его тут (file://localhost/usr/local/home/mc/file/docs/BASE/done/0/catnools.sql) 7) @?/rdbms/admin/utlrp.sql 8) @?/rdbms/admin/prvtxdb.plb После этого экспорт будет работать. P.S. Не надо меня просить выслать вам патчи - у меня у самого нет доступа на металинк P.P.S. Замечания, дополнения, тыканья носом приветствуются :-) © 2003 Dmitry A. Koptev <dimez@nm.ru>
catnools.sql: Rem Rem $Header: catnools.sql 02-may-2001.15:36:35 srtata Exp $ Rem Rem catnools.sql Rem Rem Copyright (c) Oracle Corporation 2001. All Rights Reserved. Rem Rem NAME Rem catnools.sql - Rem Rem DESCRIPTION Rem This script drops the OLS product and all of its LBACSYS Rem objects from a database instance. All OLS policies will Rem also be dropped but user tables will not have their OLS Rem policy columns automatically dropped. Rem Rem NOTES Rem Must be run as SYSDBA. Rem Rem MODIFIED (MM/DD/YY) Rem srtata 05/02/01 - Add error handling. WHENEVER SQLERROR EXIT; BEGIN -- Check the user who is executing this script. if sys_context('userenv','session_user') != 'SYS' then RAISE_APPLICATION_ERROR(-20000, 'Execute the script as user SYS as SYSDBA'); end if; END; / WHENEVER SQLERROR CONTINUE; -- drop OLS database triggers. DROP TRIGGER LBACSYS.lbac$after_drop; DROP TRIGGER LBACSYS.lbac$startup; DROP TRIGGER LBACSYS.lbac$logon; DROP TRIGGER LBACSYS.lbac$after_create; DROP TRIGGER LBACSYS.lbac$before_alter; -- copy system.aud$ back to sys.aud$. DROP SYNONYM aud$; CREATE TABLE SYS.aud$ AS SELECT * FROM SYSTEM.aud$; CREATE INDEX SYS.i_aud1 ON SYS.aud$(sessionid, ses$tid); DROP table SYSTEM.aud$; -- cleanup OLS by removing any roles, contexts,or synonyms -- owned by LBACSYS. DECLARE CURSOR lbacroles IS SELECT granted_role FROM dba_role_privs WHERE grantee = 'LBACSYS' AND granted_role like '%_DBA' AND admin_option = 'YES'; CURSOR lbaccontexts IS SELECT namespace FROM dba_context WHERE schema = 'LBACSYS'; CURSOR lbacsynonyms IS SELECT synonym_name FROM dba_synonyms WHERE table_owner = 'LBACSYS'; rolename VARCHAR2(30); BEGIN -- drop roles FOR r IN lbacroles LOOP dbms_output.put_line('Dropping role ' || r.granted_role ); BEGIN EXECUTE IMMEDIATE 'DROP ROLE ' || r.granted_role; EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Unable to drop role ' || r.granted_role); END; END LOOP; -- drop contexts FOR c IN lbaccontexts LOOP dbms_output.put_line('Dropping context ' || c.namespace); BEGIN EXECUTE IMMEDIATE 'DROP CONTEXT ' || c.namespace; EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Unable to drop context ' || c.namespace); END; END LOOP; -- drop synonyms FOR s IN lbacsynonyms LOOP dbms_output.put_line('Dropping public synonym ' || s.synonym_name); BEGIN EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM ' || s.synonym_name; EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Unable to drop synonym ' || s.synonym_name); END; END LOOP; END; / -- now remove lbacsys account and it's content DROP USER LBACSYS CASCADE; DELETE FROM exppkgact$ WHERE PACKAGE = 'LBAC_UTL'; COMMIT; REM end of catnools.sql

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, FarID (?), 07:21, 02/03/2004 [ответить]  
  • +/
    может подскажете где взять пачсете... если не на металинке...
     
  • 2, Alex (??), 05:34, 02/07/2004 [ответить]  
  • +/
    Hmmm.
    Can you tell me who you run the intalltion process? I have myself Slackware 8.1 and Oracle 10g (600MB instllation distrib). When I try to run the ./runinstall it says that I suppose to have RedHat only. Any Ideas here?
    thanks.
     
     
  • 3, vadim (??), 12:35, 19/10/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Hello!
    You must use /etc/reghat-release file from any RH* like distrib. It contains one line. Such as:
    CentOS release 4.4 (Final)
    Good luck!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру