Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 11117|Απάντηση: 0

[Πηγή] ORACLE 11g Νέες δυνατότητες - Επιτρέπει στις κλειδαριές DDL να περιμένουν κλειδαριές DML

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 26/11/2014 3:54:15 μ.μ. | | |
Έγραψα και γι' αυτό πρινΜΑΝΤΕΊΟΆρθρο 11g για νέες δυνατότητες, τώραΜΑΝΤΕΊΟΤο 11g έχει γίνει mainstreamΜΑΝΤΕΊΟέκδοση βάσης δεδομένων, κατανοήστε και μάθετεΜΑΝΤΕΊΟΤα νέα χαρακτηριστικά του 11G είναι ζωτικής σημασίας, όπως και εγώΜΑΝΤΕΊΟΓια αρχάριους των νέων δυνατοτήτων του 11G, θα ήθελα να μοιραστώ τη διαδικασία εκμάθησης και την εμπειρία μου εδώ.
Αυτό το άρθρο καταγράφει κυρίως ότι:ΜΑΝΤΕΊΟΈνα νέο χαρακτηριστικό του 11g που επιτρέπει στις κλειδαριές DDL να περιμένουν τις κλειδαριές DML, το οποίο είναι επίσης ένα θέμα που μοιράζεται ο κ. Zhang Leyi (kamus) στην εκδήλωση ACOUG στις 30 Ιουνίου.
Σε εκδόσεις πριν από το 11g, από προεπιλογή, οι κλειδαριές DDL δεν περιμένουν κλειδαριές DML και εάν εκτελέσετε λειτουργίες DDL σε έναν πίνακα με κλειδαριές DML, θα επιστρέψει αμέσως μια αποτυχία (εκτός από την ίδια SESSION), ας κάνουμε ένα απλό πείραμα, εισάγουμε δεδομένα στον πίνακα STREAM στο SESSION1, μην υποβάλετε, αυτή τη στιγμή ο πίνακας STREAM θα έχει κλείδωμα DML και εκτελέστε τη λειτουργία STREAM του πίνακα ΠΕΡΙΚΟΠΗ στο SESSION2 και θα επιστρέψει αμέσως μια αποτυχία:
SESSION1 >Εισαγωγή στη ροή επιλέξτε * από το dbdream. Δημιουργήθηκαν 10 σειρές. SESSION2 >περικοπή ροής πίνακα. περικοπή ροής πίνακα * ΣΦΑΛΜΑ στη γραμμή 1: ORA-00054: πόρος απασχολημένος και απόκτηση με καθορισμένο NOWAIT ή λήξη χρονικού ορίου στην έκδοση 11g,ΜΑΝΤΕΊΟΕισήχθη DDL_LOCK_TIMEOUT παράμετρος, επιτρέποντας στις κλειδαριές DDL να περιμένουν κλειδαριές DML, οι οποίες ελέγχουν το χρόνο αναμονής των κλειδαριών DDL για κλειδαριές DML, σε δευτερόλεπτα, η προεπιλεγμένη τιμή είναι 0, δηλαδή, οι κλειδαριές DDL δεν περιμένουν κλειδαριές DML, η μέγιστη τιμή είναι 1 εκατομμύριο, δηλαδή 11,5 ημέρες, αυτή η παράμετρος μπορεί να οριστεί καθολικά ή σε επίπεδο SESSION.
SESSION2 >εμφάνιση παραμέτρου ddl_lock_timeout ΤΙΜΉ ΤΎΠΟΥ ΟΝΌΜΑΤΟΣ ----------------------- ----------- ------ ddl_lock_timeout ακέραιος αριθμός 0 SESSION2 >αλλαγή συνόλου συνεδρίας ddl_lock_timeout=2000000; ΣΦΑΛΜΑ: ORA-00068: μη έγκυρη τιμή 2000000 για την παράμετρο ddl_lock_timeout, πρέπει να είναι μεταξύ 0 και 1000000 Τα παρακάτω δείχνουν την επίδραση της ακόλουθης παραμέτρου DDL_LOCK_TIMEOUT και λαμβάνουν επίσης ως παράδειγμα τον παραπάνω πίνακα STREAM, ο τρέχων πίνακας STREAM εξακολουθεί να έχει κλείδωμα DML, στην SESSION2 θα είναι DDL_LOCK_ Το TIMEOUT ορίζεται στα 60 δευτερόλεπτα και, στη συνέχεια, εκτελείται η λειτουργία ΠΕΡΙΚΟΠΗ και η αποτυχία δεν θα επιστραφεί αμέσως, αλλά θα περιμένει 60 δευτερόλεπτα και εάν το κλείδωμα DL του πίνακα STREAM δεν απελευθερωθεί εντός 60 δευτερολέπτων, θα επιστρέψει αποτυχία.
SESSION2 >αλλαγή συνόλου συνεδρίας ddl_lock_timeout=60; Η συνεδρία άλλαξε. SESSION2 >ρύθμιση χρονισμού σε SESSION2 > περικομμένη ροή πίνακα. --Σε αυτό το σημείο, SESSION2 αναστέλλεται, περιμένει SESSION1 να απελευθερώσει το κλείδωμα DML εντός 60 δευτερολέπτων, επιστρέφει απέτυχε μετά από 60 δευτερόλεπτα περικοπή ροής πίνακα * ΣΦΑΛΜΑ στη γραμμή 1: ORA-00054: ο πόρος είναι απασχολημένος και αποκτά με καθορισμένο NOWAIT ή έχει λήξει το χρονικό όριο Έχει παρέλθει: 00:01:00.01 Η εμφάνιση DDL_LOCK_TIMEOUT παραμέτρων απλοποιεί σημαντικά τη λειτουργία των DBA, για παράδειγμα, θέλουμε να προσθέσουμε ένα πεδίο σε έναν πίνακα, αλλά αυτός ο πίνακας έχει πολλές λειτουργίες DML και δεν μπορούμε να χρησιμοποιήσουμε τη μέθοδο ALTER SYSTEM KILL SESSION για να τερματίσουμε αυτές τις λειτουργίες, οπότε αν θέλουμε να προσθέσουμε πεδία σε αυτόν τον πίνακα, πρέπει να εκτελέσουμε τη λειτουργία προσθήκης πεδίων αμέτρητες φορές ή να γράψουμε σενάρια για να κάνουμε αυτή τη δουλειά και τώρα έχουμε DDL_ LOCK_TIMEOUT παράμετρο, χρειάζεται μόνο να ορίσουμε την τιμή αυτής της παραμέτρου ελαφρώς μεγαλύτερη και δεν χρειάζεται να ανησυχούμε για την εκτέλεση της SQL, ας δείξουμε αυτήν τη διαδικασία παρακάτω.
SESSION2 προσθέσετε πεδία:
SESSION2 >αλλαγή ροής πίνακα προσθήκη jpg_path varchar2(255) προεπιλογή '/home/μαντείο/'; 此时挂起,等待STREAM表的DML锁释放,SESSION1提交释放DML锁后,SESSION2操作便成功了。
SESSION1 >δεσμεύομαι; Η δέσμευση ολοκληρώθηκε. SESSION2 >αλλαγή ροής πίνακα προσθήκη jpg_path varchar2(255) προεπιλογή '/home/μαντείο/'; Table altered. SESSION2 >select * from stream; ID IDENTIFIER PIC_NO JPG_PATH ---------- --------------- ------ --------------- 1 18-0220-003 1 /home/μαντείο/ 2 18-0221-003 1 /home/μαντείο/ 3 18-0221-003 2 /home/μαντείο/ 4 18-0221-003 3 /home/μαντείο/ 5 18-0223-005 1 /home/μαντείο/ 6 18-0223-005 2 /home/μαντείο/ 7 18-0223-005 3 /home/μαντείο/ 8 18-0223-005 4 /home/μαντείο/ 9 18-0223-005 5 /home/μαντείο/ 10 18-0223-005 6 /home/μαντείο/ 10 rows selected.




Προηγούμενος:Πρακτική δήλωση SQL: εκτίμηση ημερομηνίας
Επόμενος:Oracle ORA-12541: TNS:καμία λύση σφάλματος ακροατή
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com