Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

SQL सर्वर:Oracle में RowVersion समकक्ष

Oracle में SCN (सिस्टम चेंज नंबर) है:http://docs.oracle.com/cd/E11882_01/server.112/e10713/transact.htm#CNCPT039


पंक्तियों के मौजूदा SCN की जांच करने के लिए ORA_ROWSCN छद्म स्तंभ का उपयोग करें:
http://docs.oracle.com/cd/B28359_01/server.111/b28286/pseudocolumns007.htm#SQLRF51145

एक उदाहरण:

SELECT ora_rowscn, t.* From test t;

डेमो --> http://www.sqlfiddle.com/#!4/535bc /1
(SQLFiddle पर स्पष्ट रूप से काम नहीं करते - एक वास्तविक डेटाबेस पर प्रत्येक प्रतिबद्ध SCN को बढ़ाता है)।


"वास्तविक" डेटाबेस पर एक उदाहरण:

CREATE TABLE test(
  id int,
  value int
);

INSERT INTO test VALUES(1,0);
COMMIT;
SELECT ora_rowscn, t.* FROM test t;

ORA_ROWSCN         ID      VALUE
---------- ---------- ----------
   3160728          1          0

UPDATE test SET value = value + 1 WHERE id = 1;
COMMIT;
SELECT ora_rowscn, t.* FROM test t;

ORA_ROWSCN         ID      VALUE
---------- ---------- ----------
   3161657          1          1

UPDATE test SET value = value + 1 WHERE id = 1;
COMMIT;
SELECT ora_rowscn, t.* FROM test t;

ORA_ROWSCN         ID      VALUE
---------- ---------- ----------
   3161695          1          2 

यदि लेन-देन का SCN पता है, तो हम पंक्ति का पिछला मान प्राप्त करने के लिए फ्लैशबैक क्वेरी का उपयोग कर सकते हैं:
http://docs.oracle.com/cd/B28359_01/appdev.111/b28424/adfns_flashback.htm#g1026131

एक उदाहरण:

SELECT t.*,
       versions_startscn, versions_starttime,
       versions_endscn, versions_endtime,
       versions_xid, versions_operation
FROM test VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE t;

        ID      VALUE VERSIONS_STARTSCN VERSIONS_STARTTIME  VERSIONS_ENDSCN VERSIONS_ENDTIME    VERSIONS_XID     VERSIONS_OPERATION
---------- ---------- ----------------- ------------------- --------------- ------------------- ---------------- ------------------
         1          2           3161695 13/12/10 08:19:39                                       06000300EA070000 U                  
         1          1           3161657 13/12/10 08:18:39           3161695 13/12/10 08:19:39   06001200EA070000 U                  
         1          0                                               3161657 13/12/10 08:18:39                         


SELECT t.*,
       versions_startscn, versions_starttime,
       versions_endscn, versions_endtime,
       versions_xid, versions_operation
FROM test VERSIONS BETWEEN SCN 3161657 AND 3161657 t;

        ID      VALUE VERSIONS_STARTSCN VERSIONS_STARTTIME  VERSIONS_ENDSCN VERSIONS_ENDTIME    VERSIONS_XID     VERSIONS_OPERATION
---------- ---------- ----------------- ------------------- --------------- ------------------- ---------------- ------------------
         1          1           3161657 13/12/10 08:18:39                                       06001200EA070000 U                               


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL/SQL में INSERT स्टेटमेंट Oracle डेटाबेस में विफल रहता है

  2. डेटा प्रवाह कार्य के लिए फ़ोरैच लूप कंटेनर

  3. एक नियतात्मक फ़ंक्शन के साथ LIKE ऑपरेटर का उपयोग करते समय Oracle निष्पादन योजनाएँ

  4. आयताकार प्रिज्म वॉल्यूम गणना के लिए पीएल/एसक्यूएल बाइंड वैरिएबल

  5. OracleCommand का उपयोग करके oracle आउटपुट पैरामीटर प्राप्त करें