Category Archive Oracle

Byphunsanit

Docker: Oracle-DB Container

การสร้าง Docker container เพื่อ run oracle เป็นวิธีที่ยอดเยี่ยมสำหรับนักพัฒนา เพราะช่วยให้เราติดตั้งฐานข้อมูลขนาดใหญ่ได้ภายในไม่กี่นาที โดยไม่ต้องลงโปรแกรมหนักเครื่องแบบสมัยก่อน

  1. สร้าง folder เก็บข้อมูลก่อน โดยคำสั่ง
    mkdir -p /Users/Shared/Portable/docker/oracle
  2. ไปที่ folder
    cd /Users/Shared/Portable/docker/oracle
  3. สร้างไฟล์
    touch docker-compose.yml
  4. ใส่เนื้อหา
    services:
      oracle:
        container_name: docker-oracle
        environment:
          - ORACLE_PASSWORD=SAj44GMbSLM8 # Use the same password style you like
          - APP_USER=Rwmm92CEWJn3
          - APP_USER_PASSWORD=raAEWgr9VWEV
        image: gvenzl/oracle-free:latest
        platform: linux/amd64
        ports:
          - "1521:1521"
        restart: unless-stopped
        volumes:
          - ./data:/opt/oracle/oradata
    
    • container_name เช่น docker-oracle
    • ORACLE_PASSWORD เช่น SAj44GMbSLM8
    • APP_USER เช่น Rwmm92CEWJn3
    • APP_USER_PASSWORD เช่น raAEWgr9VWEV
    • ports เช่น 1521
  5. ติดตั้งและรัน
    docker compose up -d

ทดสอบ

ดู log
หลังจากสั่ง Run แล้ว Oracle ต้องใช้เวลาสักพัก ( 2-5 นาที ) ในการ Setup ฐานข้อมูลภายใน คุณสามารถเช็คสถานะได้ด้วยคำสั่ง:
docker logs -f docker-oracle

ใช้คำสั่ง
docker exec -it docker-oracle bash

  • -i ( interactive ): ทำให้เราโต้ตอบกับ Container ได้
  • -t ( tty ): จำลองหน้าจอ Terminal ให้เราพิมพ์ได้สะดวก

การเข้าใช้งาน SQL*Plus (จัดการ Database)

ถ้าคุณต้องการรันคำสั่ง SQL หรือจัดการ User โดยไม่ผ่านโปรแกรมภายนอก ( เช่น DBeaver ) ให้ใช้คำสั่งนี้

เข้าใช้งานในฐานะ SYSDBA ( สิทธิ์สูงสุด )

docker exec -it docker-oracle sqlplus sys/SAj44GMbSLM8@FREEPDB1 as sysdba

หรือเข้าแบบปกติ (ใส่ Password ทีหลังเพื่อความปลอดภัย)

docker exec -it docker-oracle sqlplus system@FREEPDB1

การรันคำสั่งเดี่ยวๆ ( ไม่ต้องเข้าค้างไว้ )

บางครั้งเราแค่ต้องการรันคำสั่งเดียวแล้วจบไป เช่น การเช็คพื้นที่ Disk ภายใน Container:

docker exec -it docker-oracle df -h


⚠️ ข้อควรระวังและการจัดการไฟล์

เนื่องจากคุณมีการทำ Volume Mapping ไว้ที่ ./data หากคุณต้องการก๊อปปี้ไฟล์ Config หรือ Script SQL เข้าไปรัน คุณมี 2 ทางเลือก

  1. วางไฟล์ในโฟลเดอร์ ./data: ไฟล์จะโผล่ใน /opt/oracle/oradata ทันที ( เพราะเราเชื่อมกันไว้แล้ว )
  2. ใช้คำสั่ง docker cp: ( กรณีไม่ได้ทำ Volume ไว้ )
    docker cp my_script.sql docker-oracle:/tmp/

สรุปคำสั่งที่ใช้บ่อยสำหรับ Oracle

งานที่ต้องการทำคำสั่งที่ใช้
เช็ค Log แบบ Real-timedocker logs -f docker-oracle
เข้าไปพิมพ์คำสั่ง Linuxdocker exec -it docker-oracle bash
รัน SQL ภายในdocker exec -it docker-oracle sqlplus system/SAj44GMbSLM8@FREEPDB1
หยุดการทำงานdocker stop docker-oracle

อ่านเพิ่มเติม