การออกแบบระบบ Deployment สำหรับ Oracle Database โดยใช้การเรียงลำดับตามชื่อไฟล์ ( Sequencing ) เป็นแนวทางที่เป็นมาตรฐาน ( Best Practice ) ในการทำ Database Migration เพื่อให้มั่นใจว่าโครงสร้างและข้อมูลถูกติดตั้งอย่างถูกต้องตามลำดับความสัมพันธ์ ( Dependencies )
นี่คือโครงสร้างการตั้งชื่อไฟล์และการแบ่งโฟลเดอร์ที่ครอบคลุมทุก Function ครับ
Prefix 2 ตัว
การใช้ Prefix หลักแรก ( 000 ถึง 999 ) ให้เป็นประโยชน์สูงสุดจะช่วยให้ระบบ Deployment “ยืดหยุ่น” และ “รองรับอนาคต” ได้ดีมาก โดยไม่จำเป็นต้องแก้ชื่อไฟล์เดิมเวลาจะมีฟังก์ชันใหม่แทรกเข้ามา โดยเรียงลำดับตามความสัมพันธ์ของ Object ( Dependency ) และเผื่อช่องว่าง ( Gaps ) ไว้สำหรับขยายตัวในอนาคต
การใช้ Prefix หลักที่สอง ( 0000 – 9999 ) เพื่อให้แทรกกลางได้ง่าย ๆ โดยไม่ต้องแก้ไฟล์เก่า
🏗️ การออกแบบ Prefix 3 หลัก ( Level 1 Hierarchy )
🏗️ Phase 1: Infrastructure & Instance ( 000-099 )
เน้นการตั้งค่าตัวเครื่องยนต์ ( Engine ) และสิทธิ์ระดับระบบ
000-019: System Parameters & Reboot Logic
- 000: Static Parameters ( ต้อง Restart เช่น
processes,sga_target,db_block_size) - 005: Database Mode ( เปิด ARCHIVELOG, FLASHBACK, FORCE LOGGING )
- 010: Dynamic Parameters ( เปลี่ยนได้ทันที เช่น
undo_retention,optimizer_mode)
020-049: Storage & Security Policy
- 020: Permanent Tablespaces ( Data, Index, LOB )
- 025: Temporary & Undo Tablespaces ( Temp Groups )
- 030: Profiles ( Password Policy, Idle Time, CPU Limits )
- 035: Resource Manager ( Consumer Groups, Resource Plans )
- 040: Unified Audit Policies ( การเก็บ Log การใช้งาน )
050-099: Identity & Connectivity
- 050: Roles ( Application Roles, Reporting Roles )
- 060: User Schemas ( Create User + Default Tablespace/Profile )
- 070: System Grants ( สิทธิ์การสร้าง Object, สิทธิ์การ Debug )
- 080: Directory Objects ( Path สำหรับ BFILE หรือ Data Pump )
- 090: Database Links ( Private/Public DB Links )
🏗️ Phase 2: Schema Objects ( DDL ) ( 100-299 )
เน้นการสร้าง “ถังเก็บข้อมูล” และความสัมพันธ์
100-149: Foundation Objects
- 100: Sequences ( สำหรับทำ Auto-increment )
- 110: User Defined Types ( Object Types, Nested Tables, Varays )
- 120: Synonyms ( Public/Private Synonyms )
150-199: Tables & Storage Strategy
- 150: Tables ( Standard Heap Tables )
- 160: Partitioned Tables ( Range, List, Hash Partitioning )
- 170: Global Temporary Tables ( GTT )
- 180: External Tables ( เชื่อมโยงไฟล์ Flat File ภายนอก )
200-299: Constraints & Performance
- 200: Primary Keys & Unique Constraints
- 210: Standard Indexes ( B-Tree, Bitmap )
- 220: Partitioned Indexes ( Local / Global Indexes )
- 230: Specialized Indexes ( Function-based, Text/Domain Indexes )
- 250: Foreign Keys ( สร้างสุดท้ายของ Phase เพื่อให้มั่นใจว่า Table แม่มีอยู่ครบแล้ว )
🏗️ Phase 3: Messaging & Programmable Logic ( 300-599 )
เน้นระบบสื่อสารและตรรกะทางธุรกิจ ( PL/SQL )
300-349: Advanced Queuing ( AQ )
- 300: Queue Tables ( Infrastructure ของ Message )
- 310: Queues ( Create & Start Queues )
- 320: AQ Subscribers ( ผู้รับข้อมูลในระบบ Multi-consumer )
350-599: PL/SQL Logic
- 350: Views ( Standard & Complex Views )
- 360: Materialized Views ( รวม Log และ M-View Objects )
- 400: Functions ( Standalone Functions )
- 410: Procedures ( Standalone Procedures )
- 420: Package Specifications ( Spec )
- 430: Package Bodies ( Body )
- 450: Triggers ( Database, Schema, และ Table Level Triggers )
- 460: Java Sources / Libraries ( ถ้ามี )
🏗️ Phase 4: Data & Application Config ( 600-799 )
เน้นการเติมข้อมูลลงในระบบ
- 600: Master Data ( ข้อมูลคงที่ เช่น ประเทศ, สาขา, สถานะ )
- 610: System Configuration ( ตาราง Config สำหรับ Application )
- 700: Data Migration ( ย้ายข้อมูลจากระบบเก่ามาใหม่ )
- 750: Patching Scripts ( งานแก้ Data เฉพาะกิจ )
🏗️ Phase 5: Post-Deployment & Maintenance ( 800-999 )
เน้นการจูนเครื่องและตรวจสอบความถูกต้อง
- 800: Contexts & Security Policies ( VPD / RLS Policies )
- 850: Scheduler Jobs ( DBMS_SCHEDULER เพื่อรันงานอัตโนมัติ )
- 900: Statistics Collection ( Gather Stats เพื่อให้ Optimizer ทำงานได้แม่นยำ )
- 980: Cleanup Scripts ( ลบตารางพักข้อมูล/Staging )
- 990: Validation Reports ( เช็ค Valid/Invalid, Check Count, Check Compile Error )
💡 จุดเด่นของการแบ่ง 3 หลักแบบนี้
- Dependency Isolation: แยกส่วนที่มีความเสี่ยงสูง ( เช่น Static Parameters 000 ) ออกจากสคริปต์ปกติชัดเจน
- PL/SQL Hierarchy: แยก
Package Spec ( 420 )ออกจากPackage Body ( 430 )เพราะ Spec ต้องถูก Compile ก่อน Body เสมอ - Future-Proof: มีช่องว่างระหว่างหมวดหมู่เยอะมาก ( เช่น 121-149 ) หากคุณต้องการเพิ่มฟีเจอร์อย่าง XML DB หรือ Spatial Data ก็สามารถแทรกเข้าไปได้โดยไม่ต้องร่นเลขอื่น
- Logical Flow: การสร้าง
Types ( 110 )ก่อนTables ( 150 )และQueues ( 310 )ช่วยให้คุณใช้ Object-Relational features ของ Oracle ได้อย่างเต็มที่ครับ
การใช้ Prefix หลักที่สอง ( Level 2 Hierarchy )
เพื่อให้การแทรกไฟล์ตาม Prefix หลักที่หนึ่งได้ง่าย ๆ ยิ่งมีจำนวนหลักที่มาก โอกาสที่ระบบต้องใช้วนซ้ำลำดับที่ทำไปแล้วจะยิ่งยาก
อ่านเพิ่มเติม
