zVlad wrote:Привет sp123. Ну как там Оракл Мир конференция? Ларика видел?
Не видел, но почему-то от этого не расстроился
. Выставка у меня вышла галопом по европам, было очень мало времени, часа три, но какое-то впечатление сложилось. 10g революционной явно не является, просто множество фич тут и там, довольно приятных, но не из разряда качественных скачков 6, 7 и 8 версий. В-основном в плане DBA-ства. Вот, говорит, у меня 100 баз в разных местах, и если мне надо upgrade версии, то я это могу делать теперь одним движением руки. Продвинули Enterprise Manager, теперь он весь из себя web-образный, явно много диагностики и тюнинга. Понравилась фича, когда не просто выдается репорт о наиболее "дорогих" запросах, но и предлагаются советы, как его улучшить - типа, вот тут создайте индекс, вот тут перепишите подзапрос вот так, и будет вам щастье и вот такой execution plan, а вот здесь есть кнопка "implement", и мы вам щас кое-что на лету улучшим. Уходит хинт "rule", это уже серьезно. Слово self-manageable внушает оптимизм, но насколько оно self - это только на практике. Похоже, неплохо поработали над Application Server, но мне это не интересно. IMHO, выпуск новых версий каждый год - это маленько перебор, тут народ еще насчет перехода на 9.2 в основной своей массе не определился, а ему уже предлагают купить слово "grid". Конечно, выводы делать рано, информации много, надо копать.
Ты пишешь:
"Насчет хакеров проблема решается просто - все общение с базой можно организовать через хранимые процедуры, которые будут писать толковые люди, а живые таблицы никому не показывать. А вообще-то интересно - как поведут себя те же DB2 или SQL Server в случае непонятно откуда взявшеейся атаки, представляющей собой кучу тяжелых запросов?"
Sp123, надо ли понимать, что кто-то может не иметь полномочий на операции с таблицами, но иметь полномочия на вызов хр. процедуры, которая имеет полномочия эти полномочия? И таким образом мы отменяем прямой доступ к таблице. Правильно?
Именно так. Конечно, если уже есть приложение, явно использующее sql стейтменты, то никуда не деться. Но если есть возможность, то подход очень неплох.
Не очень понятно что имеется в виду под "...кучей тяжелых запросов". Наверное тяжелых в смысле ресурсов, нужных для их выполнения? Не знаю что есть на это в MS SQL, в DB2 есть governor, типа надсмотрщика, которому можно, например, сказать: убивай все запросы, которые потребляют больше 10 секунд CPU, и естествено фиксируй информацию об этом в журнале. К слову сказать есть еще один парень, который может присматривать за выполнением DDL операторов, и на основании правил, заданых нами, будет либо выполнять DDL, либо отвергать, либо оставлять этот вопрос на усмотрение так называемых "closed applications".
Интересуюсь спросить, а в Оракл что-нибудь вроде приведенного выше имеется?
Тяжелый запрос - это когда, к примеру, идет full scan огромной таблицы, по каждой выбранной записи вызывается функция, внутри которой находится еще какой-нибудь select, и все это запускается с интервалом в несколько секунд. Убивать дорогостоящий запрос автоматом - не проблема, тут даже чего-то особенного не надо, но тогда начальсто прибьет тебя самого из соображений бизнес-логики
. Имелось в виду что-то навроде вот этого:
------------------------------------------------
The Database Resource Manager solves many resource allocation problems that an operating system does not manage so well:
Excessive overhead. This results from operating system context switching between Oracle server processes when the number of server processes is high.
Inefficient scheduling. The operating system deschedules Oracle database servers while they hold latches, which is inefficient.
Inappropriate allocation of resources. The operating system distributes resources equally among all active processes and is unable to prioritize one task over another.
Inability to manage database-specific resources
With Oracle's Database Resource Manager, a database administrator can:
Guarantee certain users a minimum amount of processing resources regardless of the load on the system and the number of users
Distribute available processing resources by allocating percentages of CPU time to different users and applications. In a data warehouse, a higher percentage may be given to ROLAP (relational on-line analytical processing) applications than to batch jobs.
Limit the degree of parallelism of any operation performed by members of a group of users
Create an active session pool. This pool consists of a specified maximum number of user sessions allowed to be concurrently active within a group of users. Additional sessions beyond the maximum are queued for execution, but you can specify a timeout period, after which queued jobs terminate.
Allow automatic switching of users from one group to another group based on administrator-defined criteria. If a member of a particular group of users creates a session that runs for longer than a specified amount of time, that session can be automatically switched to another group of users with different resource requirements.
Prevent the execution of operations that are estimated to run for a longer time than a predefined limit
Create an undo pool. This pool consists of the amount of undo space that can be consumed in by a group of users.
Configure an instance to use a particular method of allocating resources. You can dynamically change the method, for example, from a daytime setup to a nighttime setup, without having to shut down and restart the instance.
------------------------------------------------
К сожалению, я далеко не DBA, поэтому в детали ударяться не буду, чтобы не сесть в лужу. На самом деле "решать" проблему методом priority downgrade - в корне неправильная вещь, разве что в каком-нибудь пожарном случае. Но именно для пожарного случая иногда иметь такое необходимо.