Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» СУБД Oracle (Оракл - для поиска:)).

Автор: lYY
Дата сообщения: 08.06.2007 15:17
Да запросто, запрос из запроса:
select1

Цитата:
|ID|CUSTOMER|PRICE|YEAR|

select2

Цитата:
|ID|CUSTOMER|SALES|UNITS|


Результат

Код: select ID|CUSTOMER|PRICE|YEAR,
(select SALES from select2 where select2.id = select1.id),
(select UNITS from select2 where select2.id = select1.id)
from select1
Автор: dene14
Дата сообщения: 08.06.2007 15:26
Хорошо, а если колонок сотни???? это же был тока пример... не думаю что нет другого варианта кроме как прописывать все уникальные колонки!
Да и как быть если названия колонок повторяются, но они должны быть выведены как 2 под разными алиасами???

Приведи плиз конечный вариант запроса по примеру плиз
Автор: lYY
Дата сообщения: 08.06.2007 15:36

Цитата:
Хорошо, а если колонок сотни????

если все так плохо, то писать прогу/функцию, а не одним запросом

Объединений (в кратце) два:
join - то,что привел я
union - объединение построчно, тебе не подходит


Цитата:
Приведи плиз конечный вариант запроса по примеру плиз

а вот тут я вообще не понял
Автор: dene14
Дата сообщения: 08.06.2007 16:00
Ладно, суть:
Есть два запроса которые по отдельности работают нормально:
SELECT 1

Код: SELECT MR.MISREP_NO, MR.MISREP_CRIT, MR.VERSIONID,
MR.ROUTEPAPER_NO, MR.ROUTEPAPER_CRIT,
RP.TRUCK1, D.NAME DRIVERNAME,
DEVEL.PKG_ROUTE.RouteOrdersCount(MR.ROUTEPAPER_NO, MR.ROUTEPAPER_CRIT) OCOUNT,
DEVEL.PKG_ROUTE.DaysInWork(MR.ROUTEPAPER_NO, MR.ROUTEPAPER_CRIT) DAYS,
DEVEL.GET_TRUCK_TOTALDISTANCE(TRUCK1, ATE1, ATE2) DIST,
SUM(ROUND(DEVEL.ANYTOANY(MRD.CUR, :NEWCUR1, MRD.COST, MR.MISDATE),2)) BRB,
SUM(ROUND(DEVEL.ANYTOANY(MRD.CUR, :NEWCUR2, MRD.COST, MR.MISDATE),2)) EUR,
SUM(ROUND(DEVEL.ANYTOANY(:NEWCUR2, :NEWCUR1, 1, MR.MISDATE),2)) EURCOURSE
FROM DEVEL.MISREP MR, DEVEL.ROUTEPAPER RP, DEVEL.DRIVERS D,
DEVEL.MISREPDOCS MRD, DEVEL.MISREPCAT MRC
WHERE MR.VERSIONID=1
AND RP.DATE2 BETWEEN ATE1 AND ATE2
AND MR.ROUTEPAPER_NO = RP.ROUTEPAPER_NO
AND MR.ROUTEPAPER_CRIT = RP.ROUTEPAPER_CRIT
AND MR.DRIVERID = RP.DRIVER1ID
AND MR.DRIVERID = D.DRIVERID
AND MR.MISREP_NO = MRD.MISREP_NO
AND MR.MISREP_CRIT = MRD.MISREP_CRIT
AND MR.VERSIONID = MRD.VERSIONID
AND MRD.MISREPCATID = MRC.MISREPCATID
AND MRC.NAME LIKE 'Суточные%'
AND MRD.COST > 0
GROUP BY MR.MISREP_NO, MR.MISREP_CRIT, MR.VERSIONID, MR.ROUTEPAPER_NO,
MR.ROUTEPAPER_CRIT, RP.TRUCK1, D.NAME
Автор: dene14
Дата сообщения: 13.06.2007 11:22
Решил сам... Может кому-то будет интересно:


Код: SELECT S1.MISREP_NO, S1.MISREP_CRIT, S1.ROUTEPAPER_NO,
S1.ROUTEPAPER_CRIT, S1.TRUCK1, S1.DRIVERNAME, S1.OCOUNT, S1.DAYS, S1.DIST,
S1.BRB, S1.EUR, S1.EURCOURSE, S2.NORMBRB, S2.NORMEUR
FROM (SELECT MR.MISREP_NO, MR.MISREP_CRIT, MR.VERSIONID,
MR.ROUTEPAPER_NO, MR.ROUTEPAPER_CRIT,
RP.TRUCK1, D.NAME DRIVERNAME,
DEVEL.PKG_ROUTE.RouteOrdersCount(MR.ROUTEPAPER_NO, MR.ROUTEPAPER_CRIT) OCOUNT,
DEVEL.PKG_ROUTE.DaysInWork(MR.ROUTEPAPER_NO, MR.ROUTEPAPER_CRIT) DAYS,
DEVEL.GET_TRUCK_TOTALDISTANCE(TRUCK1, ATE1, ATE2) DIST,
SUM(ROUND(DEVEL.ANYTOANY(MRD.CUR, :NEWCUR1, MRD.COST, MR.MISDATE),2)) BRB,
SUM(ROUND(DEVEL.ANYTOANY(MRD.CUR, :NEWCUR2, MRD.COST, MR.MISDATE),2)) EUR,
SUM(ROUND(DEVEL.ANYTOANY(:NEWCUR2, :NEWCUR1, 1, MR.MISDATE),2)) EURCOURSE
FROM DEVEL.MISREP MR, DEVEL.ROUTEPAPER RP, DEVEL.DRIVERS D,
DEVEL.MISREPDOCS MRD, DEVEL.MISREPCAT MRC
WHERE MR.VERSIONID=1
AND RP.DATE2 BETWEEN ATE1 AND ATE2
AND MR.ROUTEPAPER_NO = RP.ROUTEPAPER_NO
AND MR.ROUTEPAPER_CRIT = RP.ROUTEPAPER_CRIT
AND MR.DRIVERID = RP.DRIVER1ID
AND MR.DRIVERID = D.DRIVERID
AND MR.MISREP_NO = MRD.MISREP_NO
AND MR.MISREP_CRIT = MRD.MISREP_CRIT
AND MR.VERSIONID = MRD.VERSIONID
AND MRD.MISREPCATID = MRC.MISREPCATID
AND MRC.NAME LIKE 'Ñóòî÷íûå%'
AND MRD.COST > 0
GROUP BY MR.MISREP_NO, MR.MISREP_CRIT, MR.VERSIONID, MR.ROUTEPAPER_NO,
MR.ROUTEPAPER_CRIT, RP.TRUCK1, D.NAME) S1 LEFT OUTER JOIN
(SELECT MR.MISREP_NO, MR.MISREP_CRIT, MR.VERSIONID,
MR.ROUTEPAPER_NO, MR.ROUTEPAPER_CRIT,
RP.TRUCK1, D.NAME DRIVERNAME,
SUM(ROUND(DEVEL.ANYTOANY(MRD.CUR, :NEWCUR1, MRD.COST, MR.MISDATE),2)) NORMBRB,
SUM(ROUND(DEVEL.ANYTOANY(MRD.CUR, :NEWCUR2, MRD.COST, MR.MISDATE),2)) NORMEUR
FROM DEVEL.MISREP MR, DEVEL.ROUTEPAPER RP, DEVEL.DRIVERS D,
DEVEL.MISREPDOCS MRD, DEVEL.MISREPCAT MRC
WHERE MR.VERSIONID=2
AND RP.DATE2 BETWEEN ATE1 AND ATE2
AND MR.ROUTEPAPER_NO = RP.ROUTEPAPER_NO
AND MR.ROUTEPAPER_CRIT = RP.ROUTEPAPER_CRIT
AND MR.DRIVERID = RP.DRIVER1ID
AND MR.DRIVERID = D.DRIVERID
AND MR.MISREP_NO = MRD.MISREP_NO
AND MR.MISREP_CRIT = MRD.MISREP_CRIT
AND MR.VERSIONID = MRD.VERSIONID
AND MRD.MISREPCATID = MRC.MISREPCATID
AND MRC.NAME LIKE 'Ñóòî÷íûå%'
AND MRD.COST > 0
GROUP BY MR.MISREP_NO, MR.MISREP_CRIT, MR.VERSIONID, MR.ROUTEPAPER_NO,
MR.ROUTEPAPER_CRIT, RP.TRUCK1, D.NAME) S2 ON
((S1.MISREP_NO=S2.MISREP_NO) AND (S1.MISREP_CRIT=S2.MISREP_CRIT) AND
(S1.ROUTEPAPER_NO=S2.ROUTEPAPER_NO) AND (S1.ROUTEPAPER_CRIT=S2.ROUTEPAPER_CRIT) AND
(S1.TRUCK1=S2.TRUCK1) AND (S1.DRIVERNAME=S2.DRIVERNAME))
Автор: GrHnd
Дата сообщения: 22.06.2007 09:20
Никто не пробовал пользоваться позрачным шифрованием данных
(Transparent Data Encryption)?
Никак не получается создать бумажник (Oracle возвращает ORA-28368: cannot auto-create wallet). Oracle стоит на Red Hat Enterprise Linux 4 Update 4.
Автор: Dronton2
Дата сообщения: 27.06.2007 12:39
А кто-нибудь знает, как сделать цикл в коллекции, индексированной по varchar2?

Код: declare
TYPE variables_type IS TABLE OF NUMBER INDEX BY VARCHAR2(10);
vars variables_type;
begin
vars('M') := 1;
vars('Q') := 3;
FOR i IN vars.FIRST .. vars.LAST LOOP
dbms_output.put_line(vars(i));
END LOOP;
end;
Автор: vshersh
Дата сообщения: 27.06.2007 14:29
Dronton2
Похоже проблема в том же, что и здесь

Код:
begin
FOR i IN 'P'..'Q' LOOP
     dbms_output.put_line('Debug info: '|| i);
    END LOOP;
end;
Автор: Dronton2
Дата сообщения: 27.06.2007 14:49
vshersh
Спасибо. Заменил на обычный цикл.
Автор: tolyn77
Дата сообщения: 25.09.2007 16:02
народ подскажите как можно переставить оракле, у меня вообщем стоял 8,0,5 сейчас что тстал ругать на
"Strtdb80.exe - Ошибка приложения
Инструкция по адресу "0х00144d80" обратилась к памяти по адресу "0х007f00000". Память не может быть "read". "
ни как не запускается экземпляр
какая последовательность действий что бы данные можно было восстановить?

Добавлено:
операционнка w2k3
Автор: aljd
Дата сообщения: 25.09.2007 16:24
tolyn77
про это почитай здесь
все подробно расписано
Автор: tolyn77
Дата сообщения: 26.09.2007 05:53
а что такое
"клонирования при помощи RMAN"?
заранее благодарен
Автор: omm
Дата сообщения: 29.09.2007 11:06
tolyn77

Цитата:
а что такое
"клонирования при помощи RMAN"?

ИМХО вместо "ручного" рез. копирования/восстановления файлов табл. пространств, управляющих и т.п. используется RMAN
Автор: VovIK
Дата сообщения: 01.10.2007 10:28

Цитата:
вместо "ручного" рез. копирования/восстановления файлов табл. пространств, управляющих и т.п. используется RMAN

RMAN - штука стоящая, хотя с наскоку не разьерешся.
сам вот сижу изучаю, т.к. возможности отличные, и заморочек меньше после запуска в работу
Автор: omm
Дата сообщения: 01.10.2007 20:47
VovIK

Цитата:
с наскоку не разьерешся

бояццо не надо!

Цитата:
rman
RMAN> connect target
RMAN> backup database

.. и вперед!
Автор: sa1234567
Дата сообщения: 11.10.2007 12:32
Доброго времени суток всем!
Люди, кто сталкивался с проблемой зависания при создании стендбая (зависание на 5-м шагу) с помощью Data Guard Manager? помогите, подскажите плз, кто всётаки разобрался с этой проблемой!
Заранее спасибо!

Краткое описание реквизитов:
Сервера:
Сервер 1, на котором установлен Oracle 9.2.0.1.0 & Management Server (comp1), работает под управлением win 2003 server и находится в домене dom1. (с которого я и запускаю Data Guard Manager)

Сервер 2, на котором работает БД, для которой необходимо создать стендбай, Oracle 9.2.0.1.0 + который является контроллером домена, работает под управлением win 2003 server (comp2) и находится в домене dom2.

Сервер 3 - который дублирует 2-й сервер и на котором должна находится стендбай БД.

Автор: omm
Дата сообщения: 13.10.2007 14:24
sa1234567
а что там за 5-й шаг??
Автор: sa1234567
Дата сообщения: 14.10.2007 01:57
5-й шаг - там где даётся выбор меторасположения фалов на стендбай сервере...
Автор: omm
Дата сообщения: 15.10.2007 22:19
Была некая проблема, связанная с Perl. Ошибки возникали, если датафайлы больше 2 гигов.
Лечилось обновлением Perl'а и накатыванием фикса от Oracle.

Автор: sa1234567
Дата сообщения: 16.10.2007 11:25
Да, у меня TCL скрипты, которые пытается запустить на выполение data guard отрабатыватся не хотят... сейчас буду пробовать обновить перл...как попробую отпишусь..спасибо

Добавлено:

Цитата:
Лечилось обновлением Perl'а и накатыванием фикса от Oracle

А какой именно фикс, Вы не помните?
Автор: omm
Дата сообщения: 16.10.2007 21:32
sa1234567

Цитата:
А какой именно фикс, Вы не помните?

Неа
Автор: sa1234567
Дата сообщения: 19.10.2007 10:59
По последним данным есть пару патчей, котороые могут помочь:
Итак патчи (теоритически, т.к. ещё его не выкачивал):

Patch Number : 5372553 фиксит глюк в агенте.

Ошибка 2605503. Набор исправлений - 3409886. От платформы не зависит.

Документ: Note:204848.1

Патчи: p2671349_920_WINNT.zip и p3409886_920_WINNT.zip

These following two patches are independent of each other and must both be installed on all versions of 9.2.0:

Patch Number 3409886 (supercedes patch 2670975)

Patch Number 2671349
Автор: GoldFire
Дата сообщения: 16.11.2007 09:57
И снов тот же вопрос. Какой логин, пароль и строка свзи в Oracle 10g


И как правильно подключить бд после установки
Автор: lYY
Дата сообщения: 16.11.2007 10:58
GoldFire
Да так же как и во всех других ораклах

Пароли по умолчанию:
sys/change_on_install
system/manager
dbsnmp/dbsnmp


Цитата:
И как правильно подключить бд после установки

подключить куда?

4.1 Запуск Oracle
$ORACLE_HOME/bin/sqlplus /nolog
conn as sysdba
sys
pass
startup | shutdown

4.2 Листенер
./lsnrctl
start|stop

4.3 OEM через WEB
./emctl start dbconsole
./emctl stop dbconsole

http://server:1158/em

4.4 iSQLPlus
./isqlplusctl start|stop

http://server:5560/isqlplus
Автор: sa1234567
Дата сообщения: 16.11.2007 11:00

Цитата:
И снов тот же вопрос. Какой логин, пароль и строка свзи в Oracle 10g

1)Логин sys - такой же как и задавали при создании БД
2)Строка связи завиист от того, через что конектитесь к БД, например:
RMAN:
rman>connect target sys@DB_SID
enter password:
SQL*PLUS:
sql>connect sys/password@DB_SID as sysdba

etc...

Если забыли пароль - можно воспользоватся утилитой ORAPWD:
(перед этим действием удалить файл %ora_home%\ora92\database\PWD(db_sid).ora)
orapwd file=PWD(db_sid).ora password=your_password (файл надо создать в директории, которая описана выше)


Цитата:
И как правильно подключить бд после установки

Ниасилил вопрос )
Автор: GoldFire
Дата сообщения: 17.11.2007 11:07
не правильно выразилась. Как правильно создать бд. После установки, чтобы можно было работать со скриптами
Автор: VovIK
Дата сообщения: 17.11.2007 11:21
GoldFire

Цитата:
Как правильно создать бд. После установки, чтобы можно было работать со скриптами

тут я вообще нифига не понял
Автор: GoldFire
Дата сообщения: 17.11.2007 11:42
Мы устновили программу. Нам нужно работать, то есть писать, например, запросы. Мы должны открыть SQL+ и там писать или нам для этого нужно произвести какие-то действия еще?
Автор: sa1234567
Дата сообщения: 17.11.2007 14:11
Значит давайте по порядку:
1)Запускаем установку ORACLE
2)Выбираем пункт "установить БД" (или как - то так называется, уже точно не помню)
3)Выбираем "Enterprise edition"
4)Выбираем "General purpose"
5)Дальше всё по умолчанию
6)Закончится всё тем, что визард предложит установить пароли для пользователей
7)После того, как зададите пароли - БД у вас будет уже открыта (находится в работающем состоянии)
8)Это можно проверить зайдя в окно "службы" и убедится, что службы:
-ORacleOraHome**TNSListener
-OracleServiceOra_SID
Они должны работать.
Ora_SID -то как назвали БД, когда инсталировали ORACLE.
Дальше в дириктории %ORACLE_HOME%\OraHome**\network\admin найдите файл
tnsnames.ora, откройте этот файл блокнотом, найдите такм строку, которая начинается с Ora_SID (тоесть то имя которое вы присвоили БД в начале), скопируйте название БД вместе с днс суфиксом.
9)Окройте пуск, программы, OracleOrahome**, management and integration tools, SQL*PLUS Worksheet
10)login - введите sys
password - your_password
в Service_name - вставте то, что скопировали из TNSNAMES.ora
connect as - поставте as sysdba
Автор: Zvyagel
Дата сообщения: 13.12.2007 20:43
Помогите! Такая проблема. Есть ПК который конектится к двум раздным базам данных (SQL и Oracle)при это м базы данных на раздных серверах.
Ситуация состоит в том что есть два програмы которые работают с серверами зайдя в них и просидев там не работая накое время мне в проге с SQL выкидывает Ошибка связи с сервером базы данных, а во второй проге ошибку ORA-03113. При этом все время пока не работаешь в программах можно активно работать с сетью, сидеть в инете или работать с другим модулем одной из баз данных и никаких прерываний при работе нет, но только перейти в модуль с которым не работал снова ошибка, подскажите из-за чего может быть!!!!! Уже пробовал и менял сетевую и переставлял винду, менял кабель, айпишник, сетевой порт и ничего не помогает.

Страницы: 1234567891011121314151617181920212223

Предыдущая тема: JET и Excel


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.