ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

2
SQL Server หลังจากทริกเกอร์ INSERT
ฉันต้องการให้ทริกเกอร์นี้เริ่มทำงานหลังจากมีการแทรกข้อความmarriedในmarital_statusคอลัมน์นี่คือสิ่งที่ฉันมีจนถึงตอนนี้ ALTER TRIGGER [dbo].[marriage] ON [dbo].[applicant_personal_info] AFTER INSERT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; IF (SELECT [marital_status] FROM inserted) = 'married' BEGIN INSERT INTO [dbo].[applicant_marriage_info]([dom]) VALUES('abc') END END

2
วิธีการติดตั้ง / กำหนดค่า Oracle Instant Client บน Ubuntu
การติดตั้ง Oracle Instant Client บนระบบที่ใช้ Ubuntu / Debian นั้นน่าอึดอัดใจเนื่องจาก Oracle มีค่า RPM centric เกี่ยวกับการสนับสนุน Linux วิธีที่ดีที่สุดในการติดตั้งและกำหนดค่าไคลเอ็นต์ทันใจบน Ubuntu คืออะไร
10 oracle  ubuntu 

2
Fillfactor สำหรับตารางแคชคืออะไร?
ฉันมีตารางที่มีการปรับปรุง / เข้าถึงมากซึ่งฉันเก็บวัตถุ Java ที่ทำให้เป็นอนุกรม พวกเขาอยู่ในตารางเป็นเวลา 2-3 ชั่วโมง (ยังมีการปรับปรุงในช่วงเวลานั้น) แล้วลบออก ขนาดของตารางประมาณ 300MB ฉันเคยเห็นว่ามันมาก VACUUMed บ่อยมากและสงสัยว่าการเปลี่ยนแปลงfillfactorจะช่วยได้อย่างไร

2
บันทึกการจัดส่ง - คืนค่ามาตรฐานด้วย - บน SQL Server 2012 ทำให้การแบ่ง
เราใช้บันทึกการจัดส่งและRESTORE WITH STANDBYใน SQL Server 2012 เพื่อคืนค่าฐานข้อมูลในโหมดอ่านอย่างเดียวเพื่อการรายงาน อย่างไรก็ตามการตั้งค่าการจัดส่งบันทึกยังคงทำลายหลังจากทำการคืนค่าการสำรองข้อมูลแฟ้มบันทึกหนึ่งหรือสองรายการ บันทึกการจัดส่งสินค้าจะหยุดเมื่อมันทำงานเป็นRESTORE WITH STANDBY; RESTORE WITH NORECOVERYไม่ทำให้เกิดปัญหาใด ๆ สัญชาตญาณเดียวของฉันเกี่ยวกับเรื่องนี้คือฐานข้อมูลหลักไม่ได้เป็นแบบไดนามิก ดังนั้นเมื่อไม่มีการทำธุรกรรมสิ่งนี้ทำให้เกิดปัญหากับRESTOREกระบวนการใช่ไหม ความคิดใด ๆ การแก้ไขที่รู้จักกัน? ฉันให้มันทำงานสองสามวันโดยใช้งานปกติที่อัปเดตอย่างหนักในสองตาราง เมื่องานหยุดการเรียกใช้การตั้งค่าการจัดส่งบันทึกอย่างรวดเร็วล้มเหลวไม่สามารถประมวลผลไฟล์. trn ฉันรีเซ็ตการจัดส่งบันทึกและพยายามดูว่ามันจะยังคงทำงานต่อไปโดยทำการอัปเดตเล็กน้อยโดยเปลี่ยนค่าของหนึ่งคอลัมน์ของหนึ่งระเบียนในตารางหรือใครก็ตามที่ยังคงล้มเหลวอยู่ ขอบคุณสำหรับคำตอบของคุณ PS: ข้อความที่ตัดตอนมาจากบันทึกของเรา 02/25/2013 13: 00, 00, LSRestore_DBDB01-A_BulldogDB, กำลังดำเนินการ, 1, DBREPORTS, LSRestore_DBDB01-A_BulldogDB, บันทึกการจัดส่งบันทึกขั้นตอนการทำงาน, 2013-02-25 13: 00: 12.31 *** ข้อผิดพลาด: ไม่สามารถใช้ไฟล์สำรองข้อมูลบันทึก '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB …

5
ข้อผิดพลาดในการเริ่มต้นของ Oracle (ไม่สามารถเปิดไฟล์พารามิเตอร์)
ฉันติดตั้งเซิร์ฟเวอร์ Oracle 11g บน Ubuntu 12.10 แต่ฉันไม่สามารถเริ่มเซิร์ฟเวอร์ได้ เมื่อฉันเริ่มเซิร์ฟเวอร์ข้อผิดพลาดต่อไปนี้เกิดขึ้น: SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/xe/dbs/initXE.ora' ฉันจะแก้ปัญหานี้ได้อย่างไร ฉันคิดว่าการเชื่อมต่อล้มเหลวเนื่องจากไม่มีโฮสต์หรือวัตถุเป้าหมายอยู่ โฮสต์เป้าหมายสามารถระบุได้อย่างไร วิ่ง: $ ls -latr /u01/app/oracle/product/11.2.0/xe/dbs/initXE.ora ผลตอบแทน: -rw-r--r-- 1 oracle dba 2637 Mar 13 17:07 /u01/app/oracle/product/11.2.0/xe/dbs/initxe.ora การวิ่งecho $ORACLE_SIDไม่มีอะไรแสดง - บรรทัดว่าง

1
การกำหนดค่าแพ็คเกจ SSIS 2008 ถูกละเว้น
ด้วยการเปลี่ยนแปลงการกำหนดค่าแพคเกจในปี 2008 เทียบกับปี 2005 เมื่อฉันระบุ / ConfigFile something.dtsConfig บนบรรทัดคำสั่งตัวแปรที่กำหนดในแพ็คเกจจะเก็บค่าเวลาการออกแบบแทนการใช้การตั้งค่าจากไฟล์กำหนดค่า ฉันค่อนข้างแน่ใจว่าฉันเข้าใจวิธีการใช้ไฟล์ปรับแต่งภายนอกเพื่อใช้งานได้เลย ฉันได้อ่านบทความที่บอกว่ามีเพียงการกำหนดค่าในขณะออกแบบเท่านั้นที่จะเขียนทับการโหลดไฟล์ภายนอก นี่หมายความว่าฉันสามารถเปลี่ยนตัวแปรเป็นสตริงว่างได้แล้วพวกมันจะถูกเขียนทับหรือไม่? ฉันไม่สามารถลบตัวแปรอย่างสมบูรณ์! แล้วจำนวนเต็มล่ะ? ฉันเคยเห็นบทความที่กล่าวถึงการปิดโดยใช้การกำหนดค่าแพคเกจในแพคเกจ ฉันสามารถใช้ SSIS Package Editor หรือตัวแก้ไข XML เพื่อเปลี่ยนพา ธ ของไฟล์การกำหนดค่าในแพ็คเกจและจากนั้นจะใช้การตั้งค่าของไฟล์นั้น "ครั้งสุดท้าย" (โดยไม่คำนึงถึงตัวเลือกภายนอก / ConfigFile) แต่ฉันไม่ต้องการ การเปลี่ยนแพ็คเกจ ฉันต้องการแพ็คเกจหนึ่งที่มี Test.dtsConfig และ Production.dtsConfig และสามารถสลับไปมาได้โดยไม่ต้องเปลี่ยนแพคเกจ อะไรคือวิธีที่แนะนำให้ทำตอนนี้?

1
การแปลงประเภทในการแสดงออกอาจส่งผลกระทบต่อ "CardinalityEstimate" ในตัวเลือกแผนแบบสอบถาม?
ฉันรักษาฐานข้อมูลเก็บถาวรที่เก็บข้อมูลประวัติในมุมมองที่แบ่งพาร์ติชัน คอลัมน์แบ่งเป็นวันที่และเวลา แต่ละตารางใต้มุมมองจะเก็บข้อมูลหนึ่งเดือน เรา จำกัด กิจกรรมในแต่ละตารางด้วยข้อ จำกัด การตรวจสอบในคอลัมน์วันที่และเวลา สิ่งนี้อนุญาตให้เครื่องมือเพิ่มประสิทธิภาพ จำกัด ตารางที่ค้นหาการสืบค้นที่กรองในคอลัมน์วันที่และเวลาของเหตุการณ์ ชื่อของข้อ จำกัด การตรวจสอบถูกสร้างขึ้นโดย SQL Server ดังนั้นจึงยากที่จะรู้ว่าสิ่งที่พวกเขาทำโดยดูที่ชื่อของพวกเขา ฉันต้องการชื่อข้อ จำกัด ที่จะมีรูปแบบ 'CK_TableName_Partition' ฉันสามารถสร้างสคริปต์การเปลี่ยนชื่อโดยใช้แบบสอบถามนี้และคัดลอกข้อมูลจากคอลัมน์ sql_text WHERE clause ตรงกับการตรวจสอบข้อ จำกัด ที่ชื่อดูเหมือนว่าถูกสร้างขึ้นโดย SQL Server: SELECT checks.name AS check_name, tabs.name AS table_name, skemas.name AS schema_name, cols.name AS column_name, N' EXECUTE sys.sp_rename @objname = N''' + …

2
เมื่อบันทึกถูกล็อคใน Oracle เราจะทราบได้อย่างไรว่าบันทึกใดถูกล็อค
เมื่อบันทึกถูกล็อคเราจะทราบได้อย่างไรว่ารายการใดถูกล็อก ฉันจะรับเรคคอร์ด rowid หรือข้อมูลอื่นได้อย่างไร ฉันสามารถรับข้อมูลบางอย่างจาก sql นี้ SELECT c.ROW_WAIT_OBJ#,c.ROW_WAIT_FILE#,c.ROW_WAIT_BLOCK#,c.ROW_WAIT_ROW# FROM v$locked_object a, dba_objects b, v$session c WHERE a.object_id = b.object_id AND a.SESSION_ID = c.sid(+) ฉันพบวิธีในเว็บเพื่อรับ rowid โดยใช้ฟังก์ชั่น DBMS_ROWID.ROWID_CREATE() แต่ดูเหมือนจะไม่ทำงาน
10 oracle  locking 

4
ช่องว่างและเกาะ: โซลูชันไคลเอ็นต์เทียบกับข้อความค้นหา T-SQL
โซลูชัน T-SQL สำหรับช่องว่างและหมู่เกาะสามารถทำงานได้เร็วกว่าโซลูชัน C # ที่ทำงานบนไคลเอนต์หรือไม่ หากต้องการเจาะจงให้เราให้ข้อมูลการทดสอบบางอย่าง: CREATE TABLE dbo.Numbers ( n INT NOT NULL PRIMARY KEY ) ; GO INSERT INTO dbo.Numbers ( n ) VALUES ( 1 ) ; GO DECLARE @i INT ; SET @i = 0 ; WHILE @i < 21 BEGIN INSERT INTO dbo.Numbers ( …

5
ผู้ใช้ PostgreSQL ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์หลังจากเปลี่ยนรหัสผ่าน
ฉันได้พบสิ่งนี้กับ 4 บทบาทที่ฉันสร้างขึ้น: หลังจากเปลี่ยนรหัสผ่านสำหรับผู้ใช้ใน pgAdmin III โดยใช้ GUI (1) ผู้ใช้นั้นไม่สามารถเข้าสู่ระบบได้อีก pgAdmin III แสดงข้อความข้อผิดพลาด: An error has occurred: Error connecting to the server: FATAL: password authentication failed for user "sam" FATAL: password authentication failed for user "sam" ระบบของฉัน: Postgresql 9.2 บน Ubuntu 12.04 มีวิธีแก้ไขปัญหานี้หรือไม่? (1): เข้าสู่ระบบด้วย postgres บัญชีผู้ใช้คลิกขวาในบทบาทเข้าสู่ระบบไปที่แท็บ 'ความหมาย' และป้อนรหัสผ่าน

1
มีตัวเลือกที่ดีกว่า Union All สำหรับการเลือกหลายตัวจากแถวเดียวกันหรือไม่
ตัวอย่างสคีมา: CREATE TABLE [dbo].[Base]( [ID] [int] IDENTITY(1,1) NOT NULL, [Option1ID] [int] NULL, [Option2ID] [int] NULL, [Option3ID] [int] NULL, [Option1Name] [varchar] NULL, [Option2Name] [varchar] NULL, [Option3Name] [varchar] NULL, [Option1LName] [varchar] NULL, [Option2LName] [varchar] NULL, [Option3LName] [varchar] NULL,) มีวิธีรับผลลัพธ์ที่ปรากฏเช่น: ID | OptionID | OptionName | OptionLName ฉันพยายามทำสิ่งนี้ให้สำเร็จโดยใช้ UNION ALL แต่นี่หมายถึงการข้ามแถวเดียวกัน 3 ครั้งในตัวอย่างของฉันในปัญหาจริงของฉันฉันต้องทำ …

2
การแบ่งพาร์ติชันบนกลุ่มไฟล์เดียว
ฉันมีตารางที่มีขนาดใหญ่มากในฐานข้อมูลของฉัน แต่ข้อมูลจำนวนมากนี้เป็น "เก่า" เนื่องจากสถานการณ์ที่อยู่นอกเหนือการควบคุมของฉันฉันไม่ได้รับอนุญาตให้ลบข้อมูล "เก่า" นี้ ข้อ จำกัด อื่น ๆ คือฉันไม่สามารถแก้ไขฐานข้อมูลหมายถึงเพิ่มกลุ่มไฟล์ลงในนั้น ทุกอย่างอยู่ในPRIMARYกลุ่มไฟล์ ฉันคิดว่าจะแบ่งพาร์ติชันตารางเหล่านี้ออกเป็นพาร์ติชั่นบางตัวเช่น "ใหม่", "เก่า", "เก็บถาวร" และที่คล้ายกัน ฉันมีคอลัมน์ "สถานะ" ที่ฉันต้องการใช้เพื่อจุดประสงค์นี้ จากสถานการณ์และข้อ จำกัด ที่อธิบายไว้ฉันสงสัยว่าการแบ่งพาร์ติชันเหมาะสมหรือไม่ กล่าวอีกนัยหนึ่งถ้าตารางของฉันถูกแบ่งพาร์ติชั่นด้วยวิธีนี้ แต่ทุกพาร์ติชั่นอยู่ในกลุ่มไฟล์เดียวกัน SQL Server จะฉลาดพอที่จะหาพื้นที่พิเศษในไฟล์ต้นแบบที่ข้อมูล "ใหม่" ของฉันอยู่และไม่ได้สัมผัส พื้นที่ที่มีข้อมูล "เก่า" หรือไม่ ถ้าจะให้แตกต่างกันถ้าสมมุติว่า 80% ของข้อมูลของฉันคือ "เก่า" SQL Server มีกลไกในการหลีกเลี่ยงการเข้าถึงไฟล์ต้นแบบ 100% หรือไม่และเข้าถึงได้เพียง 20% ซึ่งมีข้อมูล "ใหม่" (ซึ่งแน่นอนว่าฉันระบุคอลัมน์การแบ่งพาร์ติชันในส่วนWHEREคำสั่ง) ฉันเดาว่าจะตอบคำถามนี้ใครจะต้องเข้าใจว่าการแบ่งพาร์ติชั่นนั้นดำเนินการภายในอย่างไร ฉันขอขอบคุณพอยน์เตอร์ใด ๆ

2
การบำรุงรักษาบันทึกธุรกรรมบนฐานข้อมูลมิเรอร์
เวอร์ชันของเซิร์ฟเวอร์ SQL: 2008 R2 Enterprise SP2 ฉันพยายามจัดการกับการบำรุงรักษา SQL Server ของเราและฉันเจอสิ่งที่ฉันคิดว่าไม่ถูกต้อง เรามีอินสแตนซ์การผลิตเดียวซึ่งมี 3 ฐานข้อมูลแต่ละอันถูกมิเรอร์นอกสถานที่ไปยังอินสแตนซ์ DR ในขณะที่ดูอินสแตนซ์ DR ฉันสังเกตเห็นว่าไฟล์ LDF มีขนาดใหญ่มากเกินกว่า 35GB สำหรับฐานข้อมูลที่ใช้งานหนัก ฉันเข้าใจว่าอาจเป็นเพราะฐานข้อมูลมิเรอร์อยู่ในโหมดการกู้คืนแบบเต็มและบันทึกไม่เคยถูกสำรองไว้พวกเขาจะเติบโตต่อไปจนกว่าจะหมดพื้นที่ไดรฟ์ เรากำลังทำการสำรองข้อมูลบันทึกในฐานข้อมูลหลักและคำถามของฉันคือสิ่งที่ gotchas กับการทำสำรองข้อมูลบันทึกในกระจกหรือไม่ ต้องมีการสำรองข้อมูลเต็มรูปแบบอย่างน้อยหนึ่งรายการจากมิเรอร์ก่อนที่จะทำการสำรองข้อมูลบันทึกในกรณีนั้นมีตัวเลือกพิเศษที่จำเป็นต้องใช้เพราะเป็นมิรเรอร์หรือไม่ นี่คือคำแนะนำในการบำรุงรักษาบันทึกธุรกรรมบนฐานข้อมูลMIRROR ขอบคุณสำหรับการป้อนข้อมูลใด ๆ

1
การสุ่มตัวอย่างทำงานอย่างไรเมื่ออัปเดตสถิติ
ฉันมีโต๊ะขนาดใหญ่หลายแห่ง ฉันต้องการตรวจสอบให้แน่ใจว่าสถิติของพวกเขาเป็นข้อมูลล่าสุดผ่านแผนการบำรุงรักษารายสัปดาห์ อย่างไรก็ตามการทำเช่นนั้นใช้เวลามากเกินไป ถ้าฉันระบุ WITH SAMPLE 50 PERCENT ทำ SQL Server แล้วตัวอย่าง: 50% แรกของหน้า หน้าอื่น ๆ หรือกลยุทธ์อื่น ๆ BOLไม่ชัดเจนในเรื่องนี้

3
ฉันสามารถกู้คืนใบรับรอง TDE ได้โดยกู้คืนฐานข้อมูล MASTER หรือไม่
(เราโชคดีที่ไม่ได้อยู่ในสถานการณ์นี้เพียงวางแผนล่วงหน้าเพื่อดูว่าตัวเลือกของเราจะเป็นอย่างไรถ้าเกิดขึ้น) สำหรับฐานข้อมูลที่เข้ารหัสด้วยการเข้ารหัสวันที่โปร่งใส (TDE) สำเนาของการสำรองฐานข้อมูลจะไม่สามารถกู้คืนได้เว้นแต่คุณจะมีสำเนาสำรองของใบรับรองที่ใช้ในการเข้ารหัส ถ้าคุณไม่มีสิ่งนั้น มีตัวเลือกเพิ่มเติมหรือไม่? ในกรณีที่เซิร์ฟเวอร์ล้มเหลวทั้งหมดจะคืนค่าการสำรองข้อมูลของฐานข้อมูล MASTER บนฮาร์ดแวร์ใหม่จะคืนค่าใบรับรองหรือไม่

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