Я изучаю PostGreSQL, и я видел пример таблицы с разметкой. Есть ли аналогичный ресурс в Oracle? У меня есть небольшой экстрактор в Oracle, этот дневник заполняет таблицу, затем создает текстовый файл. После этого эта таблица очищается, но не отбрасывается. Я понимаю, что эта «временная таблица» может быть разблокирована, потому что это вовсе не бизнес-стол.Unlogged table в Oracle
ответ
Таблицы Oracle могут быть созданы как NOLOGGING
. Это похоже на параметр PostgreSQL UNLOGGED, но я уверен, что существует множество различий в реализации.
Даже если таблица создана как NOLOGGING
, только конкретные операции будут использовать вставку прямого пути (то есть INSERT
, которая непосредственно записывается в файл данных и не генерирует много REDO или UNDO). И DML обычно должен использовать подсказку APPEND
, как показано ниже. Вы можете указать, используются ли записи прямого пути, если вы видите LOAD AS SELECT
.
SQL> create table test1(a number) nologging;
Table created.
SQL> explain plan for insert /*+ append */ into test1 select 1 from dual;
Explained.
SQL> select * from table(dbms_xplan.display);
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------
Plan hash value: 2781518217
----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
----------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 1 | 2 (0)| 00:00:01 |
| 1 | LOAD AS SELECT | TEST1 | | | |
| 2 | OPTIMIZER STATISTICS GATHERING | | 1 | 2 (0)| 00:00:01 |
| 3 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
----------------------------------------------------------------------------------
Существует множество странных ограничений на запись прямого пути. Обычно делается небольшая ошибка и заканчиваются обычными вставками. В приведенном ниже примере подсказка не имеет правильного синтаксиса. Нет ошибки или предупреждения, только план объяснения показывает LOAD TABLE CONVENTIONAL
.
SQL> explain plan for insert /* append */ into test1 select 1 from dual;
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 1388734953
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 1 | 2 (0)| 00:00:01 |
| 1 | LOAD TABLE CONVENTIONAL | TEST1 | | | |
| 2 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
9 rows selected.
- 1. Как проверить таблицу UNLOGGED с помощью postgresql?
- 2. Oracle Table Logging
- 3. C# Oracle table issue
- 4. Oracle backback table reset
- 5. Oracle Inner Table Query
- 6. Oracle Pivot Multi Table
- 7. Oracle adf table
- 8. Oracle - Zombie Table
- 9. Deep Clone Oracle Table
- 10. Oracle table partition
- 11. Oracle Create TABLE
- 12. Oracle SQL Alter Table
- 13. Oracle table grant
- 14. Oracle Table to XSD
- 15. Oracle - ALTER TABLE ENABLE TABLE LOCK
- 16. Обновление нескольких столбцов в TABLE из другого TABLE (Oracle)
- 17. Синтаксис Oracle Multi-Table Insert?
- 18. Cake php auth и acl unlogged usergroup
- 19. Oracle Gobal Temp table issue
- 20. Ошибка Oracle 11g External Table
- 21. Oracle SQL - Table Create Issue
- 22. oracle XML to Database table
- 23. Oracle Join Table from SubQuery
- 24. Parse varchar2 to table (Oracle)
- 25. Oracle SQL-ALTER TABLE Ошибка
- 26. Oracle Table to SAS Dataset
- 27. Oracle Gather Table Время статистики
- 28. Oracle SQL ALTER TABLE ошибка
- 29. Oracle multi table SQL-запрос
- 30. Alter table в Oracle 10G - виртуальный столбец