(более общий вариант Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет resource, boolean given )
Ресурсы - это тип в PHP (например, строки, целые числа или объекты). Ресурс является непрозрачным блобом без собственной значимой ценности. Ресурс специфичен и определен определенным набором функций или расширений PHP. Например, расширение Mysql определяет два типа ресурсов :
В модуле MySQL есть два типа ресурсов. Первый - идентификатор ссылки для подключения к базе данных, второй - ресурс, который содержит результат запроса.
Расширение cURL определяет другой два типа ресурсов :
... дескриптор cURL и мультирум cURL.
Когда
var_dump
ed значения выглядят так:$resource = curl_init(); var_dump($resource); resource(1) of type (curl)
Это все большинство ресурсов - это числовой идентификатор (
(1)
) определенного типа ((curl)
).Вы переносите эти ресурсы и передаете их различным функциям, для которых такой ресурс что-то значит. Обычно эти функции выделяют определенные данные в фоновом режиме, а ресурс - это просто ссылка, которую они используют для отслеживания этих данных внутри.
«... ожидает, что параметр 1 будет ресурсом, логическим данная "ошибка, как правило, является результатом непроверенной операции, которая должна была создать ресурс, но вместо этого вернула
false
. Например, функцияfopen
имеет это описание:Возвращаемые значения
Возвращает ресурс указателя файла при успешном выполнении или
FALSE
Таким образом, в этом коде
$fp
будет либоresource(x) of type (stream)
, либоfalse
:$fp = fopen(...);
Если вы не операция
fopen
будет успешной или неудачной и, следовательно, будет ли$fp
действительным ресурсом илиfalse
и передать$fp
другой функции, которая ожидает ресурс, вы можете получить вышеуказанную ошибку:$fp = fopen(...); $data = fread($fp, 1024); Warning: fread() expects parameter 1 to be resource, boolean given
Вам всегда нужно проверять возвращаемое значение функций, которые пытаются выделить ресурс , и может выйти из строя :
$fp = fopen(...); if (!$fp) { trigger_error('Failed to allocate resource'); exit; } $data = fread($fp, 1024);
Связанные ошибки:
Так как Вершина является теперь частью каждой базы данных Oracle, эти функции утилиты Apex полезны, даже если Вы не используете Вершину:
SQL> declare
2 v_array apex_application_global.vc_arr2;
3 v_string varchar2(2000);
4 begin
5
6 -- Convert delimited string to array
7 v_array := apex_util.string_to_table('alpha,beta,gamma,delta', ',');
8 for i in 1..v_array.count
9 loop
10 dbms_output.put_line(v_array(i));
11 end loop;
12
13 -- Convert array to delimited string
14 v_string := apex_util.table_to_string(v_array,'|');
15 dbms_output.put_line(v_string);
16 end;
17 /
alpha
beta
gamma
delta
alpha|beta|gamma|delta
PL/SQL procedure successfully completed.
Q: Как назвать снабженный курсором от ЖАБЫ?
А: Пример, изменение в Вашем курсоре, packagename и сохраненном имени proc
declare cursor PCK_UTILS.typ_cursor;
begin
PCK_UTILS.spc_get_encodedstring(
'U',
10000002,
null,
'none',
cursor);
end;
можно на самом деле связать переменную типа "Курсор" у ЖАБЫ, затем использовать его в операторе, и это отобразит результаты в сетке результата.
exec open :cur for select * from dual;
таблицы Snapshot . Также найденный в Облегченной Oracle, и чрезвычайно полезной для прокрутки Вашего собственного механизма репликации.
Больше недокументированного материала в http://awads.net/wp/tag/undocumented/
Предупреждение: Используйте на Ваш собственный риск.
Если Вы получаете значение PASSWORD
столбец на DBA_USERS
, можно копировать/восстанавливать пароли, не зная их:
ALTER USER xxx IDENTIFIED BY VALUES 'xxxx';
Я просто узнал о псевдостолбце Ora_rowSCN. Если Вы не накрываете на свой стол для этого, этот pcolumn дает Вам блок SCN. Это могло быть действительно полезно для чрезвычайной ситуации, "О, гадьте, я не имею никакого аудита на этой таблице и задаюсь вопросом, изменил ли кто-то данные с тех пор вчера".
, Но еще лучше то, если Вы составляете таблицу с Rowdependecies НА. Это помещает SCN последнего изменения на каждой строке. Это поможет Вам избежать "Потерянного Редактирования" проблема, не имея необходимость включать каждый столбец в Ваш запрос.
IOW приложение при захвате строки для пользовательской модификации также выбирают Ora_rowscn. Тогда, когда Вы отправляете редактирования пользователя, включаете Ora_rowscn = v_rscn в дополнение к уникальному ключу в где пункт. Если кто-то коснулся строки, так как Вы захватили ее, иначе потерял редактирование, обновление будет соответствовать нулевым строкам, так как ora_rowscn изменится.
Настолько прохладный.
Предикат ПЕРЕКРЫТИЙ не документирован.
http://oraclesponge.wordpress.com/2008/06/12/the-overlaps-predicate/
Частое восстановление индексов является почти всегда пустой тратой времени.
Можно просмотреть данные таблицы по состоянию на предыдущий раз с помощью Запроса Ретроспективного кадра с определенными ограничениями.
Select *
from my_table as of timestamp(timestamp '2008-12-01 15:21:13')
11 г имеет совершенно новый набор функций вокруг сохранения исторических изменений более надежно.
Процент совпадений Кэш-буфера фактически бессмыслен как предиктор системной эффективности
Подсказка кардинальности главным образом не документирована.
explain plan for
select /*+ cardinality(@inner 5000) */ *
from (select /*+ qb_name(inner) */ * from dual)
/
select * from table(dbms_xplan.display)
/
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 5000 | 10000 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
"Полные сканирования таблицы не всегда плохо. Индексы не всегда хороши".
основанный на индексе метод доступа менее эффективен при чтении строк, чем полное сканирование, когда Вы имеете размеры, это с точки зрения строк получило доступ на единицу работы (обычно на логическое чтение). Однако много инструментов интерпретируют полное сканирование таблицы как знак неэффективности.
Берут пример, где Вы читаете несколько сотен счетов frmo таблица счета и ищете способ оплаты в маленькой таблице поиска. Используя индекс для зондирования таблицы поиска для каждого счета, вероятно, означает три или четыре логических io's на счет. Однако полное сканирование таблицы поиска при подготовке к хэшированию от данных счета, вероятно, потребовало бы только нескольких логических чтений, и само хэширование будет cmoplete в памяти почти ни по какой стоимости вообще.
Однако много инструментов посмотрели бы на это и видели бы "полное сканирование таблицы" и сказали бы Вам пытаться использовать индекс. Если Вы делаете таким образом, Вы, возможно, просто расстроили свой код.
Случайно по уверенности в индексах, как в вышеупомянутом примере, заставляет "Процент совпадений Кэш-буфера" повышаться. Поэтому BCHR является главным образом ерундой как предиктором системной эффективности.
Обойдите кэш-буфер и читайте прямо из диска с помощью чтений прямого пути.
alter session set "_serial_direct_read"=true;
Причины табличная область (9i) или быстро возражают (10 г +) контрольной точке, настолько осторожной в занятых системах OLTP.
Я не знаю, считается ли это скрытым, но Я был очень счастлив, когда увидел этот способ быстро увидеть, что происходит с настраиваемым оператором SQL.
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM DUAL;
SELECT * FROM TABLE(dbms_xplan.display_cursor( NULL, NULL, 'RUNSTATS_LAST'))
;
PLAN_TABLE_OUTPUT
-----------------------------------------------------
SQL_ID 5z36y0tq909a8, child number 0
-------------------------------------
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM DUAL
Plan hash value: 272002086
---------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads |
---------------------------------------------------------------------------------------------
| 1 | TABLE ACCESS FULL| DUAL | 1 | 1 | 1 |00:00:00.02 | 3 | 2 |
---------------------------------------------------------------------------------------------
12 rows selected.
Где:
Если предполагаемый план отличается от фактического выполнения на несколько порядков, вы знаете, что у вас есть проблемы.
Не скрытая функция, а точный контроль доступа (FGAC) , также известный как безопасность на уровне строк, я использовал в прошлом и был впечатлен эффективностью его реализации. Если вы ищете что-то, что гарантирует, что вы можете контролировать степень детализации того, как строки отображаются для пользователей с различными разрешениями - независимо от приложения, которое используется для просмотра данных (SQL * Plus, а также ваше веб-приложение) - тогда это жемчужина .
Встроенная полнотекстовая индексация более широко документирована, но все же выделяется своей стабильностью (просто попробуйте запустить полную переиндексацию столбцов с полнотекстовой индексацией на аналогичных образцах данных в MS-SQL и Oracle, и вы увидеть разницу в скорости).
wm_concat работает как MySql group_concat, но недокументирован.
с данными:
-car- -maker-
Corvette Chevy
Taurus Ford
Impala Chevy
Aveo Chevy
select wm_concat(car) Cars, maker from cars
group by maker
дает вам:
-Cars- -maker-
Corvette, Impala, Aveo Chevy
Taurus Ford