คำถามติดแท็ก oracle-10g

Oracle Database 10g (ไม่ใช่ 10g R2) โปรดติดแท็ก oracle เพื่อวัตถุประสงค์ในการค้นหา

7
Oracle - วิธีดูการเปลี่ยนแปลงที่ไม่ได้ตั้งใจบนตารางใด ๆ
ฉันกำลังดีบักผ่านกระบวนการแบทช์ในขณะนี้ที่ทำงบ DML จำนวนมาก แต่ไม่ได้กระทำทันที จะเป็นการดีหากคุณสามารถดูการเปลี่ยนแปลง "รอดำเนินการ" จากเซสชันอื่นในขณะที่การทำธุรกรรมไม่ได้เกิดขึ้น เป็นไปได้ไหม ตัวอย่าง: Insert into table myTable (col1, col2) values ("col1", "col2"); --Somehow view the pending transaction maybe by system view?.... ...other DML statements.... commit;

2
ฉันจะประกาศและใช้ตัวแปรใน Oracle ได้อย่างไร
ทักษะหลักของฉันอยู่กับ SQL Server แต่ฉันถูกขอให้ทำการปรับแต่งแบบสอบถามของ Oracle ฉันได้เขียน SQL ต่อไปนี้: declare @startDate int select @startDate = 20110501 และฉันได้รับข้อผิดพลาดนี้: declare @startDate int select @startDate = 20110501 Error at line 1 ORA-06550: line 1, column 9: PLS-00103: Encountered the symbol "@" when expecting one of the following: begin function package pragma procedure subtype type …

7
ดัชนีคอมโพสิต: คอลัมน์เลือกมากที่สุดก่อน?
ฉันกำลังอ่านเกี่ยวกับcomposite indexesและฉันสับสนเล็กน้อยเกี่ยวกับการสั่งซื้อ เอกสารนี้ (น้อยกว่าครึ่งทางเล็กน้อย) พูดว่า โดยทั่วไปคุณควรใส่คอลัมน์ที่คาดว่าจะใช้บ่อยที่สุดเป็นอันดับแรกในดัชนี อย่างไรก็ตามหลังจากนั้นไม่นานมันก็บอกว่า สร้างดัชนีคอมโพสิตวางคอลัมน์ที่เลือกมากที่สุดก่อน นั่นคือคอลัมน์ที่มีค่ามากที่สุด ออราเคิลยังกล่าวว่าที่นี่ในคำอื่น ๆ หากคีย์ทั้งหมดถูกใช้ใน WHERE clauses บ่อยเท่ากันดังนั้นการสั่งซื้อคีย์เหล่านี้จากการเลือกส่วนใหญ่ไปจนถึงการเลือกอย่างน้อยที่สุดในคำสั่ง CREATE INDEX จะช่วยปรับปรุงประสิทธิภาพการสืบค้นได้ดีที่สุด อย่างไรก็ตามฉันพบคำตอบ SOที่บอกว่าต่างออกไป มันบอกว่า จัดเรียงคอลัมน์ด้วยคอลัมน์ที่เลือกน้อยที่สุดก่อนและคอลัมน์ที่เลือกมากที่สุดเป็นลำดับสุดท้าย ในกรณีของการผูกเน็คไทกับคอลัมน์ซึ่งมีแนวโน้มที่จะใช้ด้วยตนเอง เอกสารแรกที่ฉันอ้างถึงบอกว่าคุณควรใช้งานบ่อยที่สุดในขณะที่คำตอบ SO บอกว่าควรจะใช้สำหรับการผูกไทเท่านั้น จากนั้นพวกเขายังแตกต่างกันในการสั่งซื้อ นี้เอกสารยังพูดถึงเกี่ยวกับskip scanningและบอกว่า การสแกนข้ามมีประโยชน์ถ้ามีค่าที่แตกต่างกันเล็กน้อยในคอลัมน์นำของดัชนีคอมโพสิตและค่าที่แตกต่างจำนวนมากในคีย์ที่ไม่เรียงลำดับชั้นของดัชนี บทความอื่นพูดว่า คอลัมน์คำนำหน้าควรเป็นการเลือกปฏิบัติมากที่สุดและใช้กันอย่างแพร่หลายในการสืบค้น ซึ่งฉันเชื่อว่าการเลือกปฏิบัติส่วนใหญ่จะมีความโดดเด่นที่สุด งานวิจัยทั้งหมดนี้ยังนำฉันไปสู่คำถามเดียวกัน คอลัมน์ที่เลือกมากที่สุดควรเป็นคอลัมน์แรกหรือสุดท้าย ควรเลือกคอลัมน์แรกที่มีการใช้งานมากที่สุดและมีเฉพาะคอลัมน์ที่เลือกมากที่สุดเท่านั้น? บทความเหล่านี้ดูเหมือนจะขัดแย้งกัน แต่เสนอตัวอย่างบางส่วน จากสิ่งที่ผมได้รวบรวมดูเหมือนว่าจะมีประสิทธิภาพมากขึ้นสำหรับผู้least selective columnที่จะเป็นครั้งแรกIndex Skip Scansในการสั่งซื้อถ้าคุณกำลังที่คาดการณ์ไว้ แต่ฉันไม่แน่ใจว่าถูกต้องหรือไม่

1
เหตุใดเซสชันของ Oracle ยังคงมีชีวิตอยู่หลังจากสองสัปดาห์ที่ไม่ได้ใช้งาน
ฐานข้อมูล: Oracle 10g O / S: Windows Server 2003 64 บิต ฉันค้นหารายการเซสชันของ Oracle ที่สร้างขึ้นโดยเว็บแอปพลิเคชัน (กรองโดย program = w3wp.exe) select * from V$session where UPPER(program) LIKE '%W3%' order by logon_time ตาม Logon_Time เหตุใดจึงยังคงมีเซสชันอยู่ตั้งแต่ 31/07/2012 หรือ 01/08/2012 หรือเซสชันใด ๆ ก่อนวันนี้ (21/8/2555) ฉันได้กำหนดค่าใน sqlnet.ora: SQLNET.EXPIRE_TIME = 20 ดังนั้นหมายความว่า Oracle ทุก ๆ 20 นาทีกำลังตรวจสอบว่าการเชื่อมต่อยังคงทำงานอยู่หรือไม่ …

5
ไม่สามารถวางข้อ จำกัด ที่ไม่มีอยู่และไม่สามารถสร้างได้
ในขณะที่ทดสอบสคริปต์การย้ายข้อมูลบางส่วนด้วยสำเนาข้อมูลการผลิต (สคริปต์ทำงานได้ดีกับข้อมูลการพัฒนา) ฉันพบสถานการณ์ที่น่าสงสัย ข้อ จำกัด มีการเปลี่ยนแปลงดังนั้นฉันจึงออกคำสั่ง DROP + เพิ่ม: ALTER TABLE A_DUP_CALLE DROP CONSTRAINT A_DUP_CALLE_UK1; ALTER TABLE A_DUP_CALLE ADD CONSTRAINT A_DUP_CALLE_UK1 UNIQUE ( CONTROL_ID, CALLE_AYTO_DUPL ) ENABLE; คำสั่ง DROP ทำงานได้ดี แต่ ADD ล้มเหลว ตอนนี้ฉันเข้าสู่วงจรอุบาทว์ ฉันไม่สามารถวางข้อ จำกัด ได้เนื่องจากไม่มีอยู่ (การดรอปเริ่มต้นทำงานตามที่คาดไว้): ORA-02443: ไม่สามารถวางข้อ จำกัด - ข้อ จำกัด ที่ไม่มีอยู่ และฉันไม่สามารถสร้างได้เพราะมีชื่ออยู่แล้ว: ORA-00955: ชื่อนี้ถูกใช้โดยวัตถุที่มีอยู่แล้ว ฉันพิมพ์A_DUP_CALLE_UK1ลงในช่องค้นหาของนักพัฒนา SQL …

6
สร้างจำนวนที่เพิ่มขึ้นในแบบสอบถาม Oracle oracle
วิธีการสร้างจำนวนที่เพิ่มขึ้นในแบบสอบถาม Oracle oracle โดยไม่ต้องสร้างตารางใด ๆ ? ฉันได้ลองใช้ประโยค "with" แต่ฉันไม่สามารถได้ผลลัพธ์ตามที่คาดหวัง ฉันใช้ oracle 10g นี่คือรหัสที่ฉันลองใช้ดูเหมือนว่าจะไม่ทำงาน: WITH TABLE3 AS ( SELECT 2008 YEARS FROM dual WHERE 1=1 union all select t3.YEARS+1 from TABLE3 t3 WHERE 1=1 AND t3.YEARS < 2011 ) select YEARS from TABLE3 ผลลัพธ์ที่ฉันต้องการคือ: 2008 2009 2010 2011
13 oracle-10g 

1
Commit vs Fast Commit vs Commit Cleanout ในฐานข้อมูล Oracle
ฉันสงสัยว่ามีบางคนสามารถตรวจสอบความเข้าใจของฉันเกี่ยวกับความแตกต่างระหว่าง 3 คำเหล่านั้นเกี่ยวกับฐานข้อมูล Oracle หรือไม่ แหล่งข้อมูลหลายแห่งทำให้คำเหล่านี้สับสนและไม่อธิบายรายละเอียดดังนั้นจึงเป็นเรื่องยากที่จะค้นหาข้อมูล จากสิ่งที่ฉันรวบรวม: ความมุ่งมั่นและความมุ่งมั่นอย่างรวดเร็วเป็นสิ่งเดียวกันแน่นอนการกระทำทั้งหมดนั้นเป็นการกระทำที่รวดเร็ว การยอมรับอย่างรวดเร็วเป็นหลักเท่านั้นที่ปรับปรุงการตั้งค่าสถานะในตารางธุรกรรมของส่วนหัวของการเลิกทำ / ย้อนกลับเพื่อระบุว่าการทำธุรกรรมได้กระทำ อย่างไรก็ตามบล็อกที่เกิดขึ้นจริงจะไม่ได้รับการตรวจสอบอีกต่อไปซึ่งหมายความว่าที่อยู่การยกเลิกไบต์ (UBA) ในรายการธุรกรรมที่สนใจ (ITL) ซึ่งอยู่ในส่วนหัวของบล็อกข้อมูลยังคงชี้ไปที่ตารางธุรกรรมของกลุ่มการเลิกทำที่สอดคล้องกัน นอกจากนี้ไบต์ล็อคของแถวที่เกี่ยวข้องจะไม่ถูกปล่อยออกมาและจำนวนการล็อคใน ITL จะไม่เปลี่ยนแปลง (แถวยังคงล็อคอยู่) ในการคอมมิทการล้างข้อมูลบล็อกจะถูกตรวจทานอีกครั้งและ ITL ได้รับการอัพเดตด้วย commit SCN อย่างไรก็ตามจำนวนการล็อคใน ITL และล็อคไบต์ที่เก็บไว้ในแต่ละแถวยังคงไม่ได้รับการปรับปรุง (แถวยังคงล็อคเหมือนการกระทำที่รวดเร็ว) สิ่งนี้จะไม่สร้างการทำซ้ำแม้ว่าบล็อกจะเปลี่ยนไป บล็อกที่มีความมุ่งมั่นตามปกติ (== มุ่งมั่นอย่างรวดเร็ว) จะได้รับการล้างข้อมูลบล็อกล่าช้าเมื่อพวกเขาถูกแตะครั้งต่อไป (และสร้างการทำซ้ำ) บล็อกที่มีการกระทำการล้างข้อมูลจะได้รับการล้างข้อมูลบล็อกล่าช้าเมื่อมีการแตะครั้งถัดไป (และสร้างการทำซ้ำ) หวังว่าใครบางคนสามารถตรวจสอบคะแนนเหล่านี้! ขอบคุณ!

2
ใช้กรณีเดียวกันเมื่อเงื่อนไขสำหรับคอลัมน์แบบสอบถามจำนวนมาก
มีวิธี "ดีกว่า" ในการเขียนSELECTประโยคใหม่ที่มีคอลัมน์จำนวนมากใช้CASE WHENเงื่อนไขเดียวกันเพื่อให้มีการตรวจสอบเงื่อนไขเพียงครั้งเดียวหรือไม่ ดูตัวอย่างด้านล่าง SELECT CASE testStatus WHEN 'A' THEN 'Authorized' WHEN 'C' THEN 'Completed' WHEN 'P' THEN 'In Progress' WHEN 'X' THEN 'Cancelled' END AS Status, CASE testStatus WHEN 'A' THEN authTime WHEN 'C' THEN cmplTime WHEN 'P' THEN strtTime WHEN 'X' THEN cancTime END AS lastEventTime, CASE …

3
การติดตามการดีบักและการแก้ไขข้อขัดแย้งของ Row Lock
ดึกฉันได้รับการโต้เถียงกันมากเกี่ยวกับการล็อกแถว ดูเหมือนว่าตารางในการช่วงชิงจะเป็นตารางเฉพาะ นี่คือสิ่งที่เกิดขึ้นโดยทั่วไป - นักพัฒนา 1 เริ่มทำธุรกรรมจากหน้าจอส่วนหน้าของ Oracle Forms นักพัฒนา 2 เริ่มทำธุรกรรมอื่นจากเซสชันที่ต่างกันโดยใช้หน้าจอเดียวกัน ~ 5 นาทีในส่วนหน้าดูเหมือนว่าไม่ตอบสนอง การตรวจสอบเซสชันแสดงการช่วงชิงล็อกแถว "ทางออก" ที่ทุกคนขว้างไปรอบ ๆ คือฆ่าช่วง: / เป็นผู้พัฒนาฐานข้อมูล สิ่งใดที่สามารถทำได้เพื่อกำจัดข้อขัดแย้งในการล็อกแถว เป็นไปได้ไหมที่จะพบว่าบรรทัดของโพรซีเดอร์ที่เก็บไว้ก่อให้เกิดข้อขัดแย้งในการล็อกแถวเหล่านี้หรือไม่ อะไรคือแนวทางทั่วไปในการลด / หลีกเลี่ยง / กำจัดปัญหาดังกล่าวซึ่งเป็นรหัส? หากคำถามนี้รู้สึกว่าข้อมูลปลายเปิด / ไม่เพียงพอโปรดแก้ไข / แจ้งให้เราทราบ - ฉันจะพยายามอย่างดีที่สุดเพื่อเพิ่มข้อมูลเพิ่มเติม ตารางที่มีปัญหาอยู่ในส่วนแทรกและอัปเดตจำนวนมากฉันขอบอกว่าเป็นหนึ่งในตารางที่ยุ่งที่สุด SP ค่อนข้างซับซ้อน - เพื่อทำให้ง่ายขึ้น - มันดึงข้อมูลจากตารางต่าง ๆ ใส่เข้าไปในตารางงานการดำเนินการทางคณิตศาสตร์จำนวนมากเกิดขึ้นบนโต๊ะทำงานและผลลัพธ์ของตารางงานถูกแทรก / อัปเดตลงในตารางที่เป็นปัญหา เวอร์ชันฐานข้อมูลคือ Oracle Database …

2
มีการหมดเวลาสำหรับการค้นหาผ่านลิงก์ฐานข้อมูลหรือไม่
แก้ไข / คำนำ: คำถามนี้ถูกย้ายมาจาก SO เนื่องจากฉันสนใจเป็นพิเศษกับคำถามเกี่ยวกับการหมดเวลาของการสืบค้นลิงก์ DB วิธีแก้ปัญหาที่ให้ไว้จาก SO ค่อนข้างโอเค แต่ฉันสนใจคำถามจริงๆ แรงจูงใจ: ฉันมีข้อความค้นหาหนึ่งคำที่เรียกใช้ "ถาวร" (มากกว่า 2 วันจนกระทั่งฉันฆ่าเซสชัน) ซึ่งใช้ลิงค์ฐานข้อมูล ปัญหาดูเหมือนว่าฐานข้อมูลระยะไกลไม่พร้อมใช้งานและด้วยเหตุผลบางอย่างที่ยังไม่ทราบว่าไม่มีORA-02068การยกระดับ (ไม่ต้องพูดถึงที่นี่) และแบบสอบถามเพิ่งรอและรอ (เคียวรีออกโดยงาน dbms_scheduler ซึ่งดำเนินการโพรซีเดอร์ในแพ็คเกจ PL / SQL ดังนั้นงานก็ยังติดอยู่ แต่นั่นไม่ใช่สิ่งที่น่าสนใจเป็นพิเศษสำหรับแกนหลักของคำถามนี้) ฉันจำลองสถานการณ์นี้โดยใส่หนึ่งในฐานข้อมูลทดสอบของฉันในโหมด quiesce และสอบถามผ่านลิงก์ฐานข้อมูล ตามที่คาดไว้แบบสอบถามกำลังรอจนกว่าจะถูกยกเลิกด้วยตนเองหรือฐานข้อมูลระยะไกลไม่ได้ถูกสอบถาม คำถาม: ฉันไม่สามารถควบคุมพฤติกรรมของฐานข้อมูลระยะไกลและเวลาปัจจุบันดังนั้นฉันจึงค้นหาความเป็นไปได้ในการตั้งค่าการหมดเวลาในแบบสอบถามซึ่งใช้ลิงค์ฐานข้อมูล เราได้ตรวจสอบแล้วเป็นโปรไฟล์ ( CPU_PER_CALLฯลฯ ) sqlnet.oraพารามิเตอร์เพิ่มพารามิเตอร์การตั้งชื่อในท้องถิ่นโดยตรงในสตริงการเชื่อมต่อ (เช่นการเพิ่ม(connect_timeout=10)คำนิยามการเชื่อมโยงฐานข้อมูล), เรียกใช้คำสั่งที่มี... for update wait 1แต่พวกเขาทำงานอย่างใดอย่างหนึ่งสำหรับการประชุมไม่ว่างหรือไม่ได้ใช้งาน แต่ไม่ได้ สำหรับช่วงเวลาที่รอ ดังนั้นฉันอยู่ในการค้นหาตัวเลือกในด้าน "ท้องถิ่น" …

2
ฉันจะค้นหาวัตถุที่ไม่มีอยู่ในตารางวัตถุได้อย่างไร
cot_ntn_pi_vฉันมีวัตถุที่เรียกว่า ฉันบอกว่านี่เป็นคำพ้อง จะไม่ปรากฏในตาราง all_synonyms ดูเหมือนว่าจะเป็นมุมมองหรือตาราง แต่ฉันไม่พบมันในตารางวัตถุทั้งหมด ฉันสามารถเลือกจากมันได้ แต่ฉันไม่สามารถวางได้เพราะมัน 'ไม่มีอยู่' และฉันไม่สามารถสร้างตารางใหม่ที่มีชื่อเดียวกันกับชื่อ 'วัตถุอื่นใช้แล้ว' ฉันจะโมโหหรือทำอะไรโง่ ๆ จริง ๆ ?

4
จะค้นหาพื้นที่จริงที่ดัชนีใช้อยู่บนตารางใน Oracle ได้อย่างไร
ฉันต้องการค้นหาพื้นที่จริงที่ถูกใช้โดยดัชนีบนโต๊ะใน oracle 10g ฉันไม่ต้องการรวมพื้นที่ที่สงวนไว้โดย oracle สำหรับการใช้งานในอนาคต (ไม่ควรพิจารณาค่าใช้จ่ายโดย oracle) ฉันต้องการไบต์ที่ใช้ไม่ใช่ไบต์ที่ปันส่วน คุณช่วยฉันก้าวไปข้างหน้าได้ไหม? นอกจากนี้ยังมีวิธีการหาขนาดที่แท้จริงของเขตข้อมูลยาวในตาราง PS: vsize () และ dbms_lob.getlength () ไม่ทำงาน

1
ฟีเจอร์การทดแทน SQL ใน Oracle 10g
สามหรือสี่ปีที่แล้วฉันอ่านในบล็อกของออราเคิลที่ไหนสักแห่งที่ DBA ใช้เพื่อแก้ไขเหตุการณ์ฉุกเฉินคุณลักษณะ Oracle 10g ของการทดแทน SQL แบบเรียลไทม์ โดยทั่วไปเขาได้กำหนดค่า Oracle ในแบบที่ทุกครั้งที่ได้รับการสืบค้น A ที่ดำเนินการแบบสอบถามอื่น B ​​แทน ไม่มีการเปลี่ยนแปลงรหัสแอปพลิเคชันไม่มีการเปลี่ยนแปลง schema เพียงแค่ "เรียกใช้แบบสอบถาม B แทนการกำหนดค่าประเภท" ไม่ใช่ว่าฉันกำลังวางแผนที่จะใช้คุณลักษณะนั้น (ฉันสามารถนึกถึงผลที่ไม่พึงประสงค์บางอย่าง) แต่มันมีอยู่จริงหรือไม่? ถ้าใช่คุณสมบัตินั้นเรียกว่าอะไร?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.