ฉันจะกระจาย Oracle 10g Schemas สองรายการได้อย่างไร


14

ฉันมีความรู้สึกว่ามีความแตกต่างบางอย่างระหว่างสกีมา Oracle ที่ซับซ้อนขนาดใหญ่สองอันซึ่งควรเหมือนกันดังนั้นตัดสินใจทิ้งและกระจายพวกเขาเพื่อตรวจสอบ ฉันพบบทความ ( http://www.dba-oracle.com/art_builder_get_schema_syntax.htm ) ซึ่งให้คำสั่งต่อไปนี้เพื่อดัมพ์นิยามของตารางและดัชนี

SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;

อย่างไรก็ตามเมื่อฉันทิ้งและกระจายสปูลของเอาต์พุต schemas มีความแตกต่างเล็กน้อยในเกือบทุกบรรทัดทำให้ความแตกต่างไร้ค่า ตัวอย่างเช่นชื่อสกีมารวมอยู่ในคำจำกัดความของแต่ละตาราง

มีวิธีที่ดีกว่าในการทำเช่นนี้ซึ่งจะให้ข้อมูลสคีมาที่สำคัญที่สุดในรูปแบบที่สามารถเปรียบเทียบได้อย่างง่ายดายโดยใช้เครื่องมือ diff ฉันสนใจในตารางดัชนีและทริกเกอร์

ฉันใช้ Oracle Database 10g Enterprise Edition รีลีส 10.2.0.3.0

คำตอบ:


14

เครื่องมือSchemaCrawlerฟรีและโอเพ่นซอร์สที่ฉันเขียนจะทำสิ่งที่คุณต้องการ SchemaCrawler ให้รายละเอียดเกี่ยวกับสคีมาของคุณ (ตารางมุมมองโพรซีเดอร์และอื่น ๆ ) ในรูปแบบข้อความธรรมดาที่สามารถแยกได้ (ข้อความ, CSV หรือ XHTML) SchemaCrawler ยังสามารถส่งออกข้อมูล (รวมถึง CLOBs และ BLOBs) ในรูปแบบข้อความธรรมดาเดียวกัน คุณสามารถใช้โปรแกรม diff มาตรฐานเพื่อกระจายเอาต์พุตปัจจุบันด้วยเวอร์ชันอ้างอิงของเอาต์พุต

https://www.SchemaCrawler.com

คุณจะต้องจัดเตรียมไดรเวอร์ JDBC สำหรับฐานข้อมูลของคุณ


2
ฉันรู้ในภายหลังว่าคำถามที่พบบ่อยบอกว่าคุณต้องเปิดเผยความร่วมมือของคุณกับโครงการโอเพ่นซอร์สและตอนนี้ฉันเริ่มทำเช่นนั้นแล้ว อย่างไรก็ตามฉันทำตามคำตอบของฉันและคิดว่ามันเป็นทางออกที่ควรค่าแก่การสำรวจ ฉันใช้ SchemaCrawler ในสอง บริษัท ที่ผ่านมาของฉันและทั้งสองทีมพัฒนาเห็นด้วยว่ามันเป็นเครื่องมือที่มีประโยชน์สำหรับวัตถุประสงค์นี้ (ไม่ฉันไม่ใช่เจ้านาย)
Sualeh Fatehi

6

คุณไม่ต้องการสิ่งใดเลย

otn.oracle.com

Oracle มีเครื่องมือฟรีที่เรียกว่า SQL Developer มันมีความแตกต่างคี


4

คุณสามารถใช้TOAD เป็นเครื่องมือทั่วไปที่ยอดเยี่ยมสำหรับการพัฒนา Oracle มีเวอร์ชั่นทดลองสำหรับการทดสอบ จากรายการคุณสมบัติ:

  • ข้อมูลเปรียบเทียบและตัวช่วยสร้างการซิงค์
  • ประสานข้อมูลข้ามแพลตฟอร์มฐานข้อมูล

ผลิตภัณฑ์อื่นที่คุณสามารถทดสอบได้คือOraPowerTools :

OraPowerTools คือชุดของยูทิลิตีฐานข้อมูล oracle ดั้งเดิม คอลเลกชันนี้รวมถึง OraEdit PRO, สภาพแวดล้อมการพัฒนาของออราเคิลที่สมบูรณ์, DBDiff สำหรับ Oracle, เปรียบเทียบและอัปเกรดฐานข้อมูล Oracle 2 ตัวใด ๆ และ DBScripter สำหรับ Oracle, สร้างสคริปต์ SQL จากวัตถุและ / หรือข้อมูลของฐานข้อมูล Oracle

เป็นทางเลือกฟรีคุณสามารถดูบทความ CodeProject นี้: Schema Compare Tool สำหรับ Oracle

แอปพลิเคชั่น VB.NET ขนาดเล็กนี้ช่วยให้คุณสามารถเปรียบเทียบสกีมาฐานข้อมูล Oracle กับอีกแบบหนึ่ง สิ่งนี้มีประโยชน์มากเมื่อตรวจสอบให้แน่ใจว่าอินสแตนซ์การพัฒนาของคุณเหมือนกับอินสแตนซ์การผลิตของคุณ โดยเฉพาะอย่างยิ่งเมื่อใช้การเปลี่ยนแปลงส่วนหน้า

1 : 1 : http://www.toadsoft.com/toad_oracle.htm


2

เราใช้'DBDiff for Oracle' ของ DKGASมันสามารถเปรียบเทียบ schema ทั้งหมดหรือบางส่วนของมันได้ (ตาราง, ลำดับ, ดัชนี, ข้อ จำกัด , สิทธิ์, แพ็คเกจ, วัตถุและข้อมูล) เป็นรายงานเปรียบเทียบหรือเป็นสคริปต์อัพเกรด

เราใช้เป็นพื้นฐานสำหรับสคริปต์อัพเกรดฐานข้อมูล


1

หากคุณสามารถเรียกใช้ Perl คุณสามารถดูSQLFairyซึ่งควรจะสามารถสร้างสคีมาของคุณเป็น SQL คุณสามารถใช้เครื่องมือการกระจายข้อความแบบมาตรฐานได้ นอกจากนี้ยังมีเครื่องมือที่จะใช้สอง schemas และสร้างคำสั่ง ALTER เพื่อให้เหมือนกัน


1

ถ้าคุณมีเงินที่จะใช้จ่ายพิจารณาที่จะใช้ PowerDIFF สำหรับ Oracle: http://www.orbit-db.com เครื่องมือนี้จะเปรียบเทียบตารางดัชนีและทริกเกอร์ที่ยอดเยี่ยมและมีตัวเลือกการเปรียบเทียบจำนวนมากเพื่อปรับแต่งการดำเนินงาน 'ต่าง' สคริปต์ผลต่างรวม (คำสั่ง DDL และ DML) จะถูกสร้างขึ้นหรือไม่ก็ได้ คุณต้องการไดรเวอร์ ODBC เพื่อเชื่อมต่อกับฐานข้อมูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.