четверг, 24 января 2013 г.
DBMS_SHARED_POOL
Ознакомится, понять и применить: http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_shpool.htm
вторник, 22 января 2013 г.
Терминал: Есть приостановленные задачи.
Периодически при завершении работы в терминале, выполняя команду 'exit' вижу сообщение:
"There are suspended jobs" (русск. "Есть приостановленные задачи").
Раньше не придавал этому значения, и просто повторял выполнение команды 'exit', что приводило к тому, что терминал закрывался, а вот процесс, о котором мне и сообщала система, оставался в памяти.
Узнал, что управлять ими можно с помощью команд 'fg', 'bg'. Чуть позднее познакомлюсь с ними поближе.
"There are suspended jobs" (русск. "Есть приостановленные задачи").
Раньше не придавал этому значения, и просто повторял выполнение команды 'exit', что приводило к тому, что терминал закрывался, а вот процесс, о котором мне и сообщала система, оставался в памяти.
Узнал, что управлять ими можно с помощью команд 'fg', 'bg'. Чуть позднее познакомлюсь с ними поближе.
Команда screen
Меня долго время смущала ситуация, что рестор баз данных Oracle очень рискованно запускать в putty, потому что процесс долгий, а соединение к Linux-серверу, на котором установлена СУБД, может оборваться, в следствие чего непонятно, как вернуться к просмотру статуса процесса. Физически подключать монитор к серверу не хотелось, потому что ... ну это же Linux-сервер, я к нему подхожу не чаще чем 1 раз в 3 месяца, да и то, чтобы пыль протереть с корпуса.
Чтобы хоть как-то решить задачу я научился настраивать VNC-сервер. Т.е. я запускал процесс рестора БД в терминале, который открыт в VNC-сессии, таким образом, даже если соединение оборвется, я все равно знал, что процесс всегда будет на виду, стоит лишь подключиться VNC-клиентом и я увижу рабочий стол в том виде, в котором я его оставил, а именно на рабочем столе будет открыто окно терминала с процессом рестора. Но все же мне это решение не нравилось, потому что, putty мне нравится больше чем VNC (из-за отсутствия графической составляющей).
Сегодня, наконец-то, смог правильно сформулировать запрос к Google и получил долгожданный ответ: о команде screen.
Чтобы принудительно завершить зависший сеанс screen пригодится команда:
Горячие клавиши: http://xgu.ru/wiki/man:screen
Чтобы хоть как-то решить задачу я научился настраивать VNC-сервер. Т.е. я запускал процесс рестора БД в терминале, который открыт в VNC-сессии, таким образом, даже если соединение оборвется, я все равно знал, что процесс всегда будет на виду, стоит лишь подключиться VNC-клиентом и я увижу рабочий стол в том виде, в котором я его оставил, а именно на рабочем столе будет открыто окно терминала с процессом рестора. Но все же мне это решение не нравилось, потому что, putty мне нравится больше чем VNC (из-за отсутствия графической составляющей).
Сегодня, наконец-то, смог правильно сформулировать запрос к Google и получил долгожданный ответ: о команде screen.
Чтобы принудительно завершить зависший сеанс screen пригодится команда:
screen -X -S <sessionname> quit
Горячие клавиши: http://xgu.ru/wiki/man:screen
пятница, 18 января 2013 г.
Невалидные/инвалидные/недействительные объекты Oracle (invalid_objects.sh)
В одном из отделений столкнулся с ситуацией, когда "Oracle Enterprise Manager" не работает, а компилировать недействительные объекты вручную трудоемко, поэтому решил задачу таким образом:
(в академических целях реализовано с помощью пакета "my_package")
Компилируем:
Запускаем:
(предварительно "set serveroutput on")
(в академических целях реализовано с помощью пакета "my_package")
Компилируем:
CREATE OR REPLACE PACKAGE my_package as
PROCEDURE recompile_invalid_objects;
END my_package;
CREATE OR REPLACE PACKAGE BODY my_package as
PROCEDURE recompile_invalid_objects IS
BEGIN
FOR stmt IN (
select
case
when object_type = 'PACKAGE BODY' then 'ALTER PACKAGE ' || owner || '.' || object_name || ' COMPILE BODY'
else 'ALTER ' || object_type || ' ' || owner || '.' || object_name || ' COMPILE'
end as txt
from dba_objects where status = 'INVALID' order by object_type, owner
) LOOP
BEGIN
EXECUTE IMMEDIATE stmt.txt;
COMMIT;
EXCEPTION WHEN OTHERS THEN
/* Сообщаем о любой ошибке и пропускаем итерацию */
DBMS_OUTPUT.put_line (TO_CHAR(SYSTIMESTAMP, 'DD.MM.YYYY HH24:MI:SS.FF3') || ',ERROR,' || stmt.txt);
DBMS_OUTPUT.put_line (SQLERRM);
CONTINUE;
END;
/* Если ошибок не было, то сообщаем об успешном выполнении */
DBMS_OUTPUT.put_line (TO_CHAR(SYSTIMESTAMP, 'DD.MM.YYYY HH24:MI:SS.FF3') || ',SUCCESS,' || stmt.txt);
END LOOP;
END;
END my_package;
Запускаем:
(предварительно "set serveroutput on")
BEGIN
my_package.recompile_invalid_objects;
END;
Labels:
bash,
command-line,
dba,
invalid,
invalid_object,
invalid_objects,
linux,
oracle,
oracle package,
package,
sql,
sqlplus,
todo
понедельник, 14 января 2013 г.
Rlwrap для утилит Linux
Утилита rlwrap очень полезна в случаях, когда другие консольные утилиты, либо не имеют возможности хранить и работать с историей своих же команд, либо когда эта возможность реализована непривычно/неудобно, например, как у SQLPLUS:
Download the latest rlwrap software from the following URL.
http://utopia.knoware.nl/~hlub/uck/rlwrap/
Unzip and install the software using the following commands.
gunzip rlwrap*.gz
tar -xvf rlwrap*.tar
cd rlwrap*
./configure
make
make check
make install
Run the following commands, or better still append then to the ".bash_profile" of the oracle software owner.
alias rlsqlplus='rlwrap sqlplus'
alias rlrman='rlwrap rman'
... отсюда
Download the latest rlwrap software from the following URL.
http://utopia.knoware.nl/~hlub/uck/rlwrap/
Unzip and install the software using the following commands.
gunzip rlwrap*.gz
tar -xvf rlwrap*.tar
cd rlwrap*
./configure
make
make check
make install
Run the following commands, or better still append then to the ".bash_profile" of the oracle software owner.
alias rlsqlplus='rlwrap sqlplus'
alias rlrman='rlwrap rman'
... отсюда
Yum - незавершенные задачи
Когда yum сообщает о том, что есть незавершенные задачи, их можно "поднять" и завершить с помощью:
yum-complete-transaction
из пакета
yum-utils.
yum-complete-transaction
из пакета
yum-utils.
воскресенье, 13 января 2013 г.
Утилита "which" для Windows (как в UNIX)
Следующий текст нужно вставить в текстовый файл и сохранить под именем which.bat.
@echo off
:: check for illegal charecters
if "%1"=="" goto USAGE
echo %1 | find /v ":" | find /v "\" | find /v "*" | find /v "?" | find /v "," | find /v ";" | find /v "/" | find "%1" > nul
if errorlevel 1 goto USAGE
:: actual 'which' logic
for %%a in (.;%pathext%) do for %%b in (%1%%a) do ( echo %%~f$PATH:b | find /i "%1" )
goto END
:USAGE
:: Help screen:
echo.
echo UNIX-like which utility for Windows
echo Written by Ibrahim - www.digitalinternals.com
echo.
echo Usage: which executable_name
echo.
echo you may specify executable_name with or without
echo extension, but without a drive, path,
echo spaces or wildcards character(s).
echo.
rem from here: http://www.digitalinternals.com/147/20101105/unix-like-which-utility-for-windows/
:END
@echo off
:: check for illegal charecters
if "%1"=="" goto USAGE
echo %1 | find /v ":" | find /v "\" | find /v "*" | find /v "?" | find /v "," | find /v ";" | find /v "/" | find "%1" > nul
if errorlevel 1 goto USAGE
:: actual 'which' logic
for %%a in (.;%pathext%) do for %%b in (%1%%a) do ( echo %%~f$PATH:b | find /i "%1" )
goto END
:USAGE
:: Help screen:
echo.
echo UNIX-like which utility for Windows
echo Written by Ibrahim - www.digitalinternals.com
echo.
echo Usage: which executable_name
echo.
echo you may specify executable_name with or without
echo extension, but without a drive, path,
echo spaces or wildcards character(s).
echo.
rem from here: http://www.digitalinternals.com/147/20101105/unix-like-which-utility-for-windows/
:END
Подписаться на:
Сообщения (Atom)
Архив
-
►
2019
(44)
- декабря (2)
- октября (6)
- сентября (9)
- августа (1)
- июля (1)
- июня (2)
- мая (2)
- апреля (2)
- марта (2)
- февраля (9)
- января (8)
-
►
2018
(54)
- декабря (4)
- ноября (3)
- октября (6)
- сентября (4)
- августа (2)
- июля (2)
- мая (3)
- апреля (4)
- марта (11)
- февраля (6)
- января (9)
-
►
2017
(55)
- декабря (4)
- ноября (14)
- октября (1)
- сентября (3)
- августа (10)
- июля (2)
- июня (5)
- мая (2)
- апреля (3)
- марта (4)
- февраля (4)
- января (3)
-
►
2016
(111)
- декабря (12)
- ноября (4)
- октября (14)
- сентября (7)
- августа (7)
- июля (14)
- июня (12)
- мая (8)
- апреля (5)
- марта (16)
- февраля (10)
- января (2)
-
►
2015
(96)
- декабря (2)
- ноября (4)
- октября (3)
- сентября (6)
- августа (2)
- июля (2)
- июня (2)
- мая (11)
- апреля (14)
- марта (24)
- февраля (21)
- января (5)
-
►
2014
(72)
- декабря (18)
- ноября (16)
- октября (2)
- сентября (7)
- августа (4)
- июля (1)
- июня (4)
- мая (5)
- апреля (3)
- марта (3)
- февраля (6)
- января (3)
-
►
2013
(33)
- декабря (3)
- ноября (2)
- октября (3)
- сентября (2)
- августа (1)
- июля (1)
- июня (2)
- мая (5)
- апреля (2)
- марта (2)
- февраля (1)
- января (9)
-
►
2012
(181)
- ноября (6)
- октября (11)
- сентября (6)
- августа (5)
- июля (6)
- июня (25)
- мая (24)
- апреля (14)
- марта (20)
- февраля (38)
- января (26)
