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

Oracle Database 11g รีลีส 2 โปรดติดแท็ก oracle เพื่อวัตถุประสงค์ในการค้นหา

14
กำจัดรายการที่ซ้ำกันใน ListAgg (Oracle)
ก่อนหน้า Oracle 11.2 ฉันใช้ฟังก์ชันการรวมแบบกำหนดเองเพื่อต่อคอลัมน์เข้ากับแถว 11.2 เพิ่มLISTAGGฟังก์ชั่นดังนั้นฉันพยายามจะใช้มันแทน ปัญหาของฉันคือฉันต้องกำจัดรายการที่ซ้ำกันในผลลัพธ์และดูเหมือนจะไม่สามารถทำได้ นี่คือตัวอย่าง CREATE TABLE ListAggTest AS ( SELECT rownum Num1, DECODE(rownum,1,'2',to_char(rownum)) Num2 FROM dual CONNECT BY rownum<=6 ); SELECT * FROM ListAggTest; NUM1 NUM2 ---------- --------------------- 1 2 2 2 << Duplicate 2 3 3 4 4 5 5 6 6 สิ่งที่ฉันต้องการเห็นคือ: NUM1 NUM2S …

4
ความแตกต่างระหว่าง sys และบัญชีระบบในฐานข้อมูล Oracle คืออะไร?
มีสองวิธีในการเชื่อมต่อกับ Oracle ในฐานะผู้ดูแลระบบโดยใช้ sqlplus: sqlplus sys as sysdba sqlplus system/manager ฉันควรใช้บัญชีเหล่านี้เพื่อจุดประสงค์ที่แตกต่างกัน งานใดที่เป็นแบบแผนสองอย่างนี้มีไว้เพื่ออะไร? เมื่อใดที่ฉันควรใช้อันใดอันหนึ่งในหมู่พวกเขา?

9
คุณเปลี่ยนแปลงเวอร์ชันฐานข้อมูล Oracle ของคุณอย่างไร
ฉันสนใจที่จะทราบว่าคนอื่นกำลังใช้วิธีการใดในการติดตามการเปลี่ยนแปลงที่เกิดขึ้นกับฐานข้อมูลรวมถึงการเปลี่ยนแปลงคำนิยามตารางวัตถุใหม่การเปลี่ยนแปลงแพ็คเกจ ฯลฯ คุณใช้ไฟล์แฟลตด้วยระบบควบคุมเวอร์ชันภายนอกหรือไม่? ทริกเกอร์? ซอฟต์แวร์อื่น ๆ ?

4
เหตุใดการรับรองความถูกต้องของ OS จึงถือว่าความปลอดภัยต่ำสำหรับฐานข้อมูล Oracle
Oracle กำลังลดการรับรองความถูกต้องของระบบปฏิบัติการตามคำแนะนำของOracle Database Securityซึ่งระบุว่า โปรดทราบว่าพารามิเตอร์ REMOTE_OS_AUTHENT นั้นเลิกใช้แล้วใน Oracle Database 11g รีลีส 1 (11.1) และจะถูกเก็บไว้สำหรับความเข้ากันได้แบบย้อนหลังเท่านั้น นอกจากนี้ข้อมูลและเครื่องมือความปลอดภัยส่วนใหญ่พิจารณาว่าการ รับรองความถูกต้องของ OS (ภายนอก)เป็นปัญหาด้านความปลอดภัย ฉันพยายามที่จะเข้าใจว่าทำไมถึงเป็นเช่นนี้ นี่คือข้อดีบางอย่างที่ฉันเห็นของการตรวจสอบ OS: หากไม่มีแอพพลิเคชั่นรับรองความถูกต้องของ OS จะต้องจัดเก็บรหัสผ่านไว้ในแอปพลิเคชันที่หลากหลายแต่ละแบบมีรูปแบบความปลอดภัยและช่องโหว่ของตนเอง การรับรองความถูกต้องของโดเมนนั้นจะต้องมีความปลอดภัยเพราะหากไม่ใช่ความปลอดภัยของฐานข้อมูลก็จะทำให้การเข้าถึงฐานข้อมูลช้าลง แต่ไม่สามารถป้องกันได้ ผู้ใช้ที่ต้องจำรหัสผ่านโดเมนเพียงรหัสเดียวสามารถสร้างรหัสผ่านโดเมนที่ปลอดภัยได้ง่ายกว่าที่พวกเขาสามารถสร้างรหัสผ่านฐานข้อมูลที่มีความปลอดภัยน้อยลงได้เนื่องจากจำนวนฐานข้อมูลที่แตกต่างกันที่พวกเขาต้องเชื่อมต่อเพื่อเพิ่ม

6
จะทราบได้อย่างไรว่าตาราง Oracle ถูกล็อคหรือไม่?
เราใช้ซอฟต์แวร์ BI และฐานข้อมูลพื้นที่เก็บข้อมูลที่ติดตั้งใน Oracle Enterprise 11gR2 รายงานแบทช์บางส่วนจะพยายามเข้าถึงตารางฐานข้อมูลซึ่งอาจยังถูกล็อค ฉันจะทราบได้อย่างไรว่าตาราง Oracle ถูกล็อคหรือไม่ มีคำสั่ง SQL ที่แสดงเหมือนรายละเอียดประวัติเพื่อการวิเคราะห์หรือไม่?

3
Oracle ไม่ได้ใช้ดัชนีที่ไม่ซ้ำสำหรับคีย์แบบยาว
ฉันมีตารางที่มีแถว 250K ในฐานข้อมูลการทดสอบของฉัน (มีการผลิตอยู่สองสามร้อยล้านล้านเราสามารถสังเกตปัญหาเดียวกันได้) ตารางมีตัวระบุสตริง nvarchar2 (50) ไม่ใช่ null โดยมีดัชนีที่ไม่ซ้ำกัน (ไม่ใช่ PK) ตัวระบุประกอบด้วยส่วนแรกที่มี 8 ค่าที่แตกต่างกันในฐานข้อมูลการทดสอบของฉัน (และประมาณหนึ่งพันครั้งในการผลิต) จากนั้นเครื่องหมาย @ และในที่สุดก็มีตัวเลขยาว 1 ถึง 6 หลัก ตัวอย่างเช่นอาจมี 50,000 แถวที่ขึ้นต้นด้วย 'ABCD_BGX1741F_2006_13_20110808.xml @' และตามด้วยตัวเลขที่แตกต่างกัน 50,000 ตัวเลข เมื่อฉันสอบถามแถวเดียวโดยใช้ตัวระบุความเป็นหัวใจนั้นประมาณเป็น 1 ค่าใช้จ่ายต่ำมากมันใช้งานได้ดี เมื่อฉันค้นหามากกว่าหนึ่งแถวที่มีตัวระบุหลายตัวในนิพจน์ IN หรือนิพจน์ OR การประมาณค่าของดัชนีนั้นผิดอย่างสมบูรณ์ดังนั้นจึงใช้การสแกนตารางแบบเต็ม หากฉันบังคับดัชนีด้วยคำใบ้มันเร็วมากการสแกนตารางแบบเต็มจะดำเนินการตามลำดับความสำคัญช้ากว่าจริง ๆ (และผลิตได้ช้ากว่ามาก) ดังนั้นจึงเป็นปัญหาของเครื่องมือเพิ่มประสิทธิภาพ เป็นการทดสอบฉันทำซ้ำตาราง (ใน schema + tablespace เดียวกัน) กับ …

3
วิธีแยกความแตกต่างระหว่าง SQL และ PL / SQL
ฉันรู้ว่าคำถามอาจฟังดูโง่เกินไป แต่ฉันไม่เคยเข้าใจส่วนนี้ SQL * Plus ทำงานได้กับทั้ง SQL และ PL / SQL ฉันจะรู้ได้อย่างไรว่าบางรหัสเป็น SQL หรือ PL / SQL หากรหัสของฉันมี for for loop จะไม่ใช้ SQL อีกต่อไปหรือไม่ PL / SQL เป็นส่วนเสริมสำหรับ SQL ที่จะมีลูปเงื่อนไข ฯลฯ จากนั้นรหัส SQL ใด ๆ คือรหัส PL / SQL เริ่มต้น? ไม่เป็นอย่างนั้นเหรอ? มีการแบ่งเขตระหว่าง SQL และ PL / SQL หรือไม่ ตัวอย่างที่สองของการแบ่งแยก b …

4
เครื่องหมายอัฒภาคในตอนท้ายของคำสั่ง SQL * Plus มีความสำคัญอย่างไร
คำสั่งบางอย่างเช่นสร้างตาราง, แทรกลงใน ฯลฯ ใช้เซมิโคลอนที่ท้าย: CREATE TABLE employees_demo ( employee_id NUMBER(6) , first_name VARCHAR2(20) , last_name VARCHAR2(25) CONSTRAINT emp_last_name_nn_demo NOT NULL ) ; ในขณะที่คนอื่นชอบ set echo on connect system/manager ผ่านไปโดยไม่มีเครื่องหมายอัฒภาคเช่นกัน อะไรคือเหตุผลเบื้องหลังสิ่งนี้ ฉันจะตัดสินใจเองได้อย่างไรว่าจะวางเซมิโคลอนไว้ที่ใด?

2
“ ORA-01950: ไม่มีสิทธิ์บน tablespace 'SYSTEM'”: เกิดข้อผิดพลาดอะไร?
ก่อนหน้านี้ฉันสร้างผู้ใช้: SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded. แต่เมื่อฉันเข้าสู่ระบบเป็นsuhailและพยายามที่จะสร้างที่ฉันได้รับข้อผิดพลาดว่าtable ORA-01950: no privileges on tablespace 'SYSTEM'มันเกิดข้อผิดพลาดอะไร? ทำไมมันเกิดขึ้น? SQL> connect suhail Enter password: Connected. SQL> create table suhail_table(name char(10)); create table suhail_table(name char(10)) * ERROR at line 1: ORA-01950: no privileges on tablespace …

4
เรียกใช้งานสคริปต์ด้วย SQLPlus ที่มีช่องว่างเซมิโคลอนและเครื่องหมายสแลช
ในบางครั้งฉันจะได้รับสคริปต์ที่จะทำงานได้ดีใน SQL Developer หรือ Toad แต่ต้องการการปรับเปลี่ยนเพื่อให้สามารถเรียกใช้จาก SQL * Plus ได้สำเร็จ นี่เป็นตัวอย่างกรณีที่เลวร้ายที่สุดที่มีหลายประโยคคำสั่งที่มีบรรทัดว่างเซมิโคลอนและเครื่องหมายสแลช: INSERT INTO t1 VALUES ('a ; / '); INSERT INTO t1 VALUES ('b ; / '); DELETE FROM t1 WHERE c1 = 'c ; / '; ด้วยเหตุผลต่างๆคำสั่งเหล่านี้จำเป็นต้องเรียกใช้จาก SQL * Plus บรรทัดว่างจะแก้ไขได้ง่ายด้วย ... set sqlblanklines on ฉันทราบว่าsqlterminatorสามารถเปลี่ยนแปลงและ / หรือปิดการใช้งาน แต่ทั้งคู่จะต้องมีการปรับเปลี่ยนรหัสก่อนหน้านี้จะย้ายปัญหาโดยไม่ต้องแก้ไขและไม่สามารถแก้ไขปัญหาที่ฝังอยู่ในสแลชได้ …

2
วิธีเพิ่มพื้นที่ว่างในดิสก์ บันทึก / ไดเรกทอรีใดบ้างที่ควรทำความสะอาด
ฉันต้องการเพิ่มพื้นที่ว่างในเครื่อง Linux ของฉัน ฉันเจาะลึกการใช้พื้นที่และพบว่าไดเรกทอรีต่อไปนี้มีขนาดใหญ่ /u01/app/11.2.0/grid/cv/log /u01/app/11.2.0/grid/log/diag/tnslsnr/r1n1/listener_scan2/alert (Contains xml files) /u01/app/11.2.0/grid/rdbms/audit(Contains .aud files) /home/oracle/oradiag_oracle/diag/clients/user_oracle/host_XXXXXXXXXX/alert(Contains xml files) /u01/app/oracle/diag/rdbms/crimesys/crimesys1/alert (Contains xml files) ฉันสามารถลบเนื้อหาจากไดเรกทอรีเหล่านี้ได้หรือไม่ หมายเหตุ: ฉันหมายถึงเนื้อหาไม่ใช่ไดเรกทอรี

2
การนำเข้าสกีมาไปยังพื้นที่ตารางใหม่หรือที่แตกต่างกัน
มีวิธีที่สะดวกในการนำเข้าสคีมาใน Oracle 11gR2 โดยใช้สเปซใหม่หรือที่แตกต่างจากที่มาของข้อมูลหรือไม่? ตัวอย่างเช่นฉันได้ส่งออก BLOG_DATA จาก OLDDB ซึ่งข้อมูลผู้ใช้ทั้งหมดถูกเก็บไว้ในพื้นที่ตาราง USERS บน NEWDB ฉันต้องการนำเข้า BLOG_DATA schema แต่เก็บวัตถุผู้ใช้ในพื้นที่ตาราง BLOG_DATA สร้างขึ้นเฉพาะสำหรับผู้ใช้นี้ ฉันสร้างผู้ใช้ BLOG_DATA สร้างพื้นที่ตาราง BLOG_DATA และตั้งเป็นพื้นที่เริ่มต้นสำหรับผู้ใช้นั้นและเพิ่มโควต้าไม่ จำกัด ที่เหมาะสม CREATE TABLESPACE blog_data DATAFILE SIZE 1G; CREATE USER blog_data IDENTIFIED BY secretpassword DEFAULT TABLESPACE blog_data QUOTA UNLIMITED ON blog_data; GRANT connect,resource TO blog_data สคีมาถูกส่งออกจาก OLDDB …

2
ความปลอดภัยสำหรับ Application Developers ที่ทำงานกับ PL / SQL ใน Oracle
คุณจะจัดการกับการขาดสิทธิ์ระดับ Schema ใน Oracle ได้อย่างไร สถาปัตยกรรมความปลอดภัยของออราเคิลทำงานได้ดีสำหรับแอปพลิเคชันที่ต้องการเฉพาะสิทธิ์ระดับวัตถุและทำงานได้ดีสำหรับ DBA ที่ต้องการข้อ จำกัด เล็กน้อย อย่างไรก็ตามดูเหมือนว่าจะมีช่องโหว่ขนาดใหญ่ในสถาปัตยกรรมสำหรับโปรแกรมเมอร์ที่ทำการพัฒนาด้วยแอพพลิเคชั่นส่วนหน้าและ PL / SQL ในหลายสคีมา นี่คือตัวเลือกของฉันบางส่วนที่มีข้อเสีย: ทำให้แต่ละโปรแกรมเมอร์ทำการพัฒนาในสคีมาของตนเอง DBA จะให้สิทธิพิเศษระดับวัตถุแก่โปรแกรมเมอร์ที่ต้องการ การพัฒนาบรรจุภัณฑ์ใด ๆ จะต้องทำโดย DBA ข้อเสียที่สำคัญคือโปรแกรมเมอร์จะใช้ฐานข้อมูลเช่น bit bucket เพื่อลดความเสียหายของประสิทธิภาพของฐานข้อมูล ฉันต้องการโปรแกรมเมอร์ที่จะพัฒนาในฐานข้อมูล แต่วิธีนี้จะทำให้หมดกำลังใจอย่างมาก ให้ชื่อผู้ใช้ / รหัสผ่านของโปรแกรมเมอร์แก่ schema ที่ต้องการพัฒนามากกว่าสิบตัวอนุญาตให้สคีมาของแอปพลิเคชันเหล่านี้เพื่อสร้างโพรซีเดอร์ตารางและอื่น ๆ ข้อเสียของวิธีการนี้คือโปรแกรมเมอร์ต้องดูแลการเข้าสู่ระบบหลายครั้ง ไม่ค่อยเข้าสู่ระบบในฐานะตัวเอง การพัฒนาข้ามสคีก็ยากเช่นกัน ให้สิทธิการพิสูจน์ตัวตนพร็อกซีโปรแกรมเมอร์แก่แต่ละสคีมาที่ต้องพัฒนา สิ่งนี้ทำให้พวกเขาล็อกอินด้วยตนเองโดยไม่ต้องให้สิทธิพิเศษนอกเหนือจากสิทธิ์พร็อกซี ข้อเสียรวมถึงโปรแกรมเมอร์ที่ต้องรักษาการเชื่อมต่อแยกกันสำหรับแต่ละสคีมาที่พร็อกซีสำหรับการพัฒนาข้ามสคีมานั้นยุ่งยากกว่าเนื่องจากการเชื่อมต่อจะต้องมีการเปลี่ยนแปลงอยู่ตลอดเวลาและแพ็คเกจที่ใช้การเชื่อมโยงฐานข้อมูลสาธารณะ ให้สิทธิ์ DBA สำหรับโปรแกรมเมอร์แต่ละคน - ข้อเสียนี่คือความปลอดภัย ไม่มีโปรแกรมเมอร์สคีมาสามารถถูกเก็บออกจากสคีมาใด ๆ และโปรแกรมเมอร์ใด ๆ …

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; …

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