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

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

3
Pivot แถวในหลายคอลัมน์
ฉันมีอินสแตนซ์ SQL Server ที่มีเซิร์ฟเวอร์ที่เชื่อมโยงกับเซิร์ฟเวอร์ Oracle มีตารางบนเซิร์ฟเวอร์ Oracle ที่เรียกว่าPersonOptionsซึ่งมีข้อมูลต่อไปนี้: ╔══════════╦══════════╗ ║ PersonID ║ OptionID ║ ╠══════════╬══════════╣ ║ 1 ║ A ║ ║ 1 ║ B ║ ║ 2 ║ C ║ ║ 3 ║ B ║ ║ 4 ║ A ║ ║ 4 ║ C ║ ╚══════════╩══════════╝ ฉันต้องหมุนข้อมูลนั้นเพื่อผลลัพธ์คือ: ╔══════════╦═════════╦══════════╦══════════╗ ║ PersonID …

4
ฉันจะยกเลิกการโหลดตารางฐานข้อมูล Oracle เป็นไฟล์ csv ได้อย่างไร
ฉันต้องการดึงข้อมูลบางอย่างจากฐานข้อมูล Oracle 11g รีลีส 1 และจัดให้เป็นไฟล์ CSV ตั้งแต่หนึ่งไฟล์ขึ้นไป ข้อมูลอยู่ในหลายตารางและ / หรือมุมมอง ทั้งหมดนี้ควรทำงานผ่านบรรทัดคำสั่ง อะไรจะเป็นวิธีที่ดีที่สุดในการทำสิ่งนี้?

6
วิธีที่ดีที่สุดในการลบชุดระเบียนที่มีขนาดใหญ่มากใน Oracle
ฉันจัดการแอปพลิเคชันที่มีข้อมูลขนาดใหญ่มาก (เกือบ 1TB ของข้อมูลมีมากกว่า 500 ล้านแถวในหนึ่งตาราง) ฐานข้อมูล Oracle ส่วนหลัง ฐานข้อมูลไม่ได้ทำอะไรเลย (ไม่มี SProcs, ไม่มีทริกเกอร์หรืออะไรเลย) เป็นเพียงแหล่งข้อมูล ทุกเดือนเราจะต้องล้างเร็กคอร์ดจากตารางหลักสองตาราง เกณฑ์สำหรับการกำจัดแตกต่างกันไปและเป็นการรวมกันของอายุแถวและฟิลด์สถานะสองสาม โดยทั่วไปแล้วเราจะกวาดล้างระหว่าง 10 ถึง 50 ล้านแถวต่อเดือน (เราเพิ่มประมาณ 3-5 ล้านแถวต่อสัปดาห์ผ่านการนำเข้า) ขณะนี้เราต้องทำการลบแบบกลุ่มประมาณ 50,000 แถว (เช่นลบ 50000, comit, ลบ 50000, กระทำ, ทำซ้ำ) การพยายามลบชุดข้อมูลทั้งหมดในครั้งเดียวทำให้ฐานข้อมูลไม่ตอบสนองประมาณหนึ่งชั่วโมง (ขึ้นอยู่กับจำนวนแถว) การลบแถวในแบทช์เช่นนี้จะหยาบมากในระบบและโดยทั่วไปเราจะต้องทำมัน "ตามเวลาที่อนุญาต" ในช่วงเวลาหนึ่งสัปดาห์ การอนุญาตให้สคริปต์รันอย่างต่อเนื่องอาจส่งผลให้ประสิทธิภาพการทำงานลดลงซึ่งผู้ใช้ไม่สามารถยอมรับได้ ฉันเชื่อว่าการลบแบทช์ประเภทนี้จะลดประสิทธิภาพของดัชนีและมีผลกระทบอื่น ๆ ซึ่งในที่สุดจะทำให้ประสิทธิภาพของฐานข้อมูลลดลง มี 34 ดัชนีในตารางเดียวและขนาดข้อมูลดัชนีใหญ่กว่าข้อมูลจริง นี่คือสคริปต์ที่หนึ่งในพนักงานไอทีของเราใช้ในการล้างข้อมูลนี้: BEGIN LOOP delete …

3
ฉันสามารถเปลี่ยน SID ของฐานข้อมูล Oracle ได้หรือไม่
เซิร์ฟเวอร์คือ Oracle Database 11g Enterprise Edition รีลีส 11.1.0.7.0 - 64 บิต มีวิธีที่ง่ายและรวดเร็วในการเปลี่ยน SID ของฐานข้อมูลทดสอบบนเซิร์ฟเวอร์หรือไม่ การปล่อย & สร้างฐานข้อมูลใหม่เป็นตัวเลือกสำหรับฉัน แต่ฉันกำลังมองหาบางสิ่งที่ต้องใช้เวลาน้อยลง ตัวเลือกอื่น ๆ ในการกำหนดชื่อในไคลเอนต์ tnsnames.ora มีแนวโน้มที่จะเกิดข้อผิดพลาดเนื่องจากไม่ได้รับการดูแลจากส่วนกลาง เมื่อเทียบกับเวลาที่จะวางและสร้างฐานข้อมูลบน SQL-Server ระยะเวลาที่ต้องใช้ในการสร้างฐานข้อมูล Oracle ใหม่นั้นมากเกินความจำเป็น เพิ่มเติมเกี่ยวกับ SQL-Server คุณสามารถเปลี่ยนชื่ออินสแตนซ์ของ SQL-Server ได้ [โดยปกติคุณจะเปลี่ยนชื่อเซิร์ฟเวอร์ที่ SQL-Server กำลังทำงานและมีปัญหาบางอย่างจนกว่าคุณจะเปลี่ยนชื่อเซิร์ฟเวอร์ด้วย]

1
ผู้ฟัง Oracle 11g ล้มเหลวด้วยข้อผิดพลาด ORA-12514 และ ORA-12505
ฉันใช้งานอินสแตนซ์ของ Oracle 11g ในเครื่องของฉันและสามารถเชื่อมต่อกับอินสแตนซ์ในพื้นที่ได้โดยตรงผ่าน SqlPlus: c:\>sqlplus ace SQL*Plus: Release 11.2.0.2.0 Production on Mon Mar 11 11:50:20 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - Beta SQL> select count(*) from my_table ; COUNT(*) ---------- 5297 แต่ฉันไม่สามารถเชื่อมต่อผ่านฟัง: c:\>sqlplus -L …

2
วิธีกำหนดค่า Oracle Listener โดยไม่มี SID_LIST_LISTENER ใน listener.ora
ฉันสามารถเข้าถึงเซิร์ฟเวอร์ ORACLE 11g โดยใช้ listener.ora ต่อไปนี้ # listener.ora Network Configuration File: D:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN\listener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.111)(PORT = 1521)) ) ) และทำหน้าที่อินสแตนซ์ทั้งหมดบนเซิร์ฟเวอร์นั้นตามที่ฉันสามารถตรวจสอบโดย lsnrctl status ปัญหาของฉันคือเมื่อฉันทำการติดตั้ง Oracle …

5
ใน Oracle ฉันจะบันทึกซีเควนซ์ต่อไปได้อย่างไรในตัวแปรที่จะใช้ซ้ำในส่วนแทรกหลาย ๆ
ฉันกำลังเขียนสคริปต์เพื่อเติมตารางด้วยข้อมูลสำหรับการทดสอบ ฉันต้องการเขียนสิ่งต่อไปนี้ แต่ฉันไม่รู้วิธีการ (ฉัน Oracle 11g) SET ENABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE SET DISABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE INSERT INTO USERS (ID, USR_NAME) VALUES (:ENABLED_USER_ID, 'ANDREW'); INSERT INTO CAR (CAR_ID, CAR_NAME, USR_ID) VALUES (CARSEQ.NEXTVAL, 'FORD', :ENABLED_USER_ID); INSERT INTO USERS (ID, USR_NAME) VALUES (:DISABLED_USER_ID, 'ANDREW'); INSERT INTO CAR (CAR_ID, CAR_NAME, USR_ID) …

3
ความคิดเห็น Rem และ - สำหรับ SQL * Plus แตกต่างกันหรือไม่?
บนพรอมต์ SQL * Plus ทั้งคู่Remและ--มีคุณสมบัติเป็นตัวบ่งชี้ความคิดเห็น: Rem this is a comment -- this is also a comment create table emp ( id number primary key, name cvarchar2(40)); มีความแตกต่างระหว่างเทคนิคการแสดงความคิดเห็นทั้งสองหรือไม่?

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

2
เหตุผล LNNVL
LNNVL เป็น oracle ที่มีอยู่แล้วภายในฟังก์ชันที่ส่งคืน TRUE สำหรับเงื่อนไขที่ประเมินเป็น FALSE หรือ UNKNOWN และส่งคืน FALSE สำหรับเงื่อนไขที่ประเมินเป็น TRUE คำถามของฉันคือสิ่งที่จะได้ประโยชน์จากการคืนตรงกันข้ามกับเงื่อนไขความจริงมากกว่าเพียงแค่จัดการค่า NULL? ตัวอย่างเช่นสมมติว่าคุณมีตาราง Emp พร้อมคอลัมน์ StartCommission และ CurrentCommission ซึ่งอาจมีค่า Null ผลตอบแทนต่อไปนี้เป็นเพียงแถวที่ไม่มีค่าเป็น null: SELECT * FROM Emp WHERE StartCommission = CurrentCommission; หากคุณต้องการรวมแถวที่ค่าคอมมิชชันเป็นโมฆะคุณสามารถทำสิ่งนี้: SELECT * FROM Emp WHERE StartCommission = CurrentCommission OR StartCommission IS NULL OR CurrentCommission IS NULL; …

1
เหตุใดฉันจึงไม่ได้รับข้อผิดพลาดของการกลายพันธุ์ของตารางในทริกเกอร์
เป็นที่ทราบกันดีว่าคุณไม่สามารถใช้คำสั่ง DML ในตารางการกลายพันธุ์ภายในทริกเกอร์ ข้อความที่ตัดตอนมาจากเอกสารของ Oracle : ตารางกลายพันธุ์เป็นตารางที่ถูกแก้ไขโดยคำสั่ง UPDATE, DELETE หรือ INSERT หรือตารางที่อาจได้รับการปรับปรุงโดยผลกระทบของข้อ จำกัด DELETE CASCADE เซสชั่นที่ออกคำสั่งเรียกไม่สามารถสอบถามหรือแก้ไขตารางการกลายพันธุ์ ข้อ จำกัด นี้ป้องกันไม่ให้ทริกเกอร์เห็นชุดข้อมูลที่ไม่สอดคล้องกัน อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมทริกเกอร์การสาธิตนี้ไม่ได้ล้มเหลวด้วยข้อผิดพลาด "การกลายพันธุ์ตาราง" เมื่อฉันทำการinsert into empใช้ SQL Developer หรือ SQL * Plus: CREATE OR REPLACE TRIGGER emp_bri BEFORE INSERT ON emp FOR EACH ROW BEGIN SELECT max(id) + 1 INTO :NEW.id FROM …

2
เหตุใดฉันไม่สามารถอ่านคอลัมน์ Oracles CLOB ผ่านเซิร์ฟเวอร์ที่เชื่อมโยงกับ SQL-SERVER 2008
ฉันต้องการเข้าถึงข้อมูลในฐานข้อมูล Oracle 11g จาก SQL-Server 2008 ฉันตั้งค่าเซิร์ฟเวอร์ที่เชื่อมโยงและเมื่อฉันดำเนินการ select * from [Link_server_name]..Oracle_schema.Oracle_table และ Oracle_table มีคอลัมน์ Number และ varchar2 ทั้งหมดทำงานตามที่ได้รับการยกเว้น แต่เมื่อ Oracle_table มีคอลัมน์ CLOB ฉันได้รับข้อผิดพลาดต่อไปนี้: Der OLE DB-Anbieter 'MSDAORA' für den Verbindungsserver 'L_V407SR8T' hat die Meldung 'ข้อผิดพลาดที่ไม่ระบุ' zurückgeben Der OLE DB-Anbieter 'MSDAORA' für den Verbindungsserver 'L_V407SR8T' hat die Meldung 'เกิดข้อผิดพลาดของ Oracle แต่ไม่สามารถดึงข้อความแสดงข้อผิดพลาดจาก …


2
การเปลี่ยนแปลง sqlnet.ora หรือ tnsnames.ora จำเป็นต้องรีบูตไหม
เมื่อใดก็ตามที่คุณเปลี่ยนไฟล์ sqlnet.ora หรือ tnsnames.ora ของออราเคิลระบบจะต้องรีบูตหรือไม่? ในอินสแตนซ์ของฉันฉันมีไคลเอ็นต์ Oracle เท่านั้นที่ติดตั้งบนเครื่องที่ฉันอ้างถึง แต่ด้วยความอยากรู้อยากเห็นสำหรับการติดตั้งเซิร์ฟเวอร์ Oracle หมายความว่าอย่างไร

1
การออกแบบโครงสร้างอย่างง่ายสำหรับการแยกแยะการพยากรณ์อุปสงค์
ฉันกำลังทำงานออกแบบฐานข้อมูลอย่างง่ายเป็นแบบฝึกหัดการฝึกอบรมซึ่งฉันต้องออกแบบโครงสร้างพื้นฐานสำหรับกรณีต่อไปนี้: ฉันมีลำดับชั้นของผลิตภัณฑ์หลัก (ตัวอย่างเช่นวัตถุดิบ> งานระหว่างทำ> ผลิตภัณฑ์สุดท้าย) คำสั่งซื้อจะถูกวางไว้ในแต่ละระดับ จำนวนการสั่งซื้อจะสามารถดูได้ในที่เก็บข้อมูลรายสัปดาห์ในอีก 6 เดือนข้างหน้า การคาดการณ์ความต้องการสามารถทำได้สำหรับแต่ละระดับผลิตภัณฑ์ การพยากรณ์อุปสงค์สำหรับสัปดาห์ใด ๆ ภายใน 6 เดือนข้างหน้าสามารถทำได้ในวันนี้ การพยากรณ์ความต้องการใช้สำหรับถังข้อมูลรายสัปดาห์ในอีก 6 เดือนข้างหน้า การพยากรณ์ความต้องการมักจะทำในระดับที่สูงขึ้นในลำดับชั้น (วัตถุดิบหรืองานในระดับความคืบหน้า) จะต้องมีการแยกออกเป็นระดับที่ต่ำกว่า (ผลิตภัณฑ์สุดท้าย) มี 2 ​​วิธีที่การพยากรณ์ความต้องการสามารถแยกจากระดับที่สูงขึ้นไปถึงระดับที่ต่ำกว่าได้: ผู้ใช้ระบุเปอร์เซ็นต์การกระจายสำหรับผลิตภัณฑ์สุดท้าย สมมติว่ามีการคาดการณ์ 1,000 รายการสำหรับความคืบหน้าในการทำงาน .. และผู้ใช้บอกว่าฉันต้องการ 40% สำหรับผลิตภัณฑ์ขั้นสุดท้าย 1 และ 60% สำหรับผลิตภัณฑ์ขั้นตอนที่ 2 ในที่เก็บข้อมูล 10 .. จากนั้นสำหรับสัปดาห์ที่ 10 (วันอาทิตย์ถึงวันเสาร์) นับจากนี้ สำหรับผลิตภัณฑ์สุดท้าย 1 จะเป็น 400 และสำหรับผลิตภัณฑ์สุดท้าย …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.