![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Hi, I'm in charge of a datawarehouse which we update every weekend. That means loading lots of tables with TRUNCATE INSERT /*+ APPEND PARALLEL */ ... SELECT ... FROM ... COMMIT for every table. The volume of the total load is about half to one TB. Afterwards, when the tables are queried, every now and again an ORA-01555 happens, sometimes even after days. In my opinion this can only be because of delayed block cleanout, because loading and then querying a table is *always* done serially. If I would load the tables with DROP TABLE CREATE TABLE ... AS SELECT ... FROM ... would the blocks be written pre-cleaned out, thus preventing the ORA-01555 from happening? Regards, Jaap. |
#3
| |||
| |||
|
|
Hi, I'm in charge of a datawarehouse which we update every weekend. That means loading lots of tables with TRUNCATE INSERT /*+ APPEND PARALLEL */ ... SELECT ... FROM ... COMMIT for every table. The volume of the total load is about half to one TB. Afterwards, when the tables are queried, every now and again an ORA-01555 happens, sometimes even after days. In my opinion this can only be because of delayed block cleanout, because loading and then querying a table is *always* done serially. If I would load the tables with DROP TABLE CREATE TABLE ... AS SELECT ... FROM ... would the blocks be written pre-cleaned out, thus preventing the ORA-01555 from happening? Regards, Jaap. |
11_question_id:1441804355350>
#4
| |||
| |||
|
|
Hi, I'm in charge of a datawarehouse which we update every weekend. That means loading lots of tables with TRUNCATE INSERT /*+ APPEND PARALLEL */ ... SELECT ... FROM ... COMMIT for every table. The volume of the total load is about half to one TB. Afterwards, when the tables are queried, every now and again an ORA-01555 happens, sometimes even after days. In my opinion this can only be because of delayed block cleanout, because loading and then querying a table is *always* done serially. If I would load the tables with DROP TABLE CREATE TABLE ... AS SELECT ... FROM ... would the blocks be written pre-cleaned out, thus preventing the ORA-01555 from happening? Regards, Jaap. |
#5
| |||
| |||
|
|
If I would load the tables with DROP TABLE CREATE TABLE ... AS SELECT ... FROM ... would the blocks be written pre-cleaned out, thus preventing the ORA-01555 from happening? |
#6
| |||
| |||
|
#7
| |||
| |||
|
|
A table created with insert / * + append * /, has the blocks of the table with the "ITL clean" but if there are indexes, the indexes will have the "dirty ITL, will be therefore necessary (delayed) block cleanout select / * + index (.....) * / from table; |
#8
| |||
| |||
|
|
On Apr 12, 11:05*am, Donatello Settembrino donatello.settembr... (AT) gmail (DOT) com> wrote: Note however that there is a subtle point about the blocks generated by the direct-path insert: Although the lock bytes on the rows are not set and do not need to be cleaned out, the commit SCN of the ITL entry is not known at insert time therefore the database has to look up the commit SCN (obviously by cleaning out a single block) when encountering such blocks and therefore I think you can still get a ORA-01555 error even with table blocks loaded via direct-path insert if the transaction table slot in the undo segment header has been overridden in the meantime and Oracle can not determine the commit SCN otherwise. Regards, Randolf Oracle related stuff blog:http://oracle-randolf.blogspot.com/ Co-author of the "OakTable Expert Oracle Practices" book:http://www.apress.com/book/view/1430...Administration... |
|
Id | Operation | Name | Rows | Cost (%CPU)| -------------------------------------------------------- 0 | SELECT STATEMENT | | 1 | 42 (0)| 1 | SORT AGGREGATE | | 1 | | 2 | TABLE ACCESS FULL| T | 113 | 42 (0)| -------------------------------------------------------- |
#9
| |||
| |||
|
|
Hi Randolf, I do not think that this happens |
#10
| |||
| |||
|
|
Hi, I'm in charge of a datawarehouse which we update every weekend. That means loading lots of tables with TRUNCATE INSERT /*+ APPEND PARALLEL */ ... SELECT ... FROM ... COMMIT for every table. The volume of the total load is about half to one TB. Afterwards, when the tables are queried, every now and again an ORA-01555 happens, sometimes even after days. In my opinion this can only be because of delayed block cleanout, because loading and then querying a table is *always* done serially. If I would load the tables with DROP TABLE CREATE TABLE ... AS SELECT ... FROM ... would the blocks be written pre-cleaned out, thus preventing the ORA-01555 from happening? Regards, Jaap. |
![]() |
| Thread Tools | |
| Display Modes | |
| |