All pages
1 of 2

Loading...

Loading...

์„ค์น˜ ์•ˆ๋‚ด์„œ

O2 Extension ์„ค์น˜

๊ฐœ์š”

O2๋Š” PostgreSQL ํ™˜๊ฒฝ์—์„œ ์˜ค๋ผํด์ด ์ง€์›ํ•˜๋Š” ํ•จ์ˆ˜/ํŒจํ‚ค์ง€/ํƒ€์ž…๋“ค๊ณผ ํ˜ธํ™˜๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž๋“ค์˜ ํŽธ์˜๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” PostgreSQL Extension ์ž…๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์š”๊ตฌ ์‚ฌํ•ญ

OpenSQL์—์„œ ์ง€์›ํ•˜๋Š” ์šด์˜์ฒด์ œ/ํ•˜๋“œ์›จ์–ด ์‚ฌ์–‘๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

O2 Extension์—์„œ๋Š” ์ œํ’ˆ ์„ค์น˜๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ๋‹ค์Œ์˜ 2๊ฐ€์ง€ ์„ค์น˜ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • make ๋ฐฉ์‹์œผ๋กœ ์„ค์น˜

  • shell ๋ฐฉ์‹์œผ๋กœ ์„ค์น˜

O2 ์„ค์น˜ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

OpenSQL ์„ค์น˜ ํŒจํ‚ค์ง€ ๋‚ด๋ถ€์— ๋™๋ด‰๋  O2 ์„ค์น˜ํŒŒ์ผ ๋ชจ์Œ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์—๋Š” 2๊ฐ€์ง€ ์„ค์น˜๋ฐฉ๋ฒ•์„ ์œ„ํ•œ ํŒŒ์ผ(Makefile, install.sh)๋“ค์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

PostgreSQL๊ฐ€ ์„ค์น˜๋œ Linux ํ”Œ๋žซํผ์—์„œ O2 Extension์„ make ์ปค๋งจ๋“œ๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

O2 Extension์ด ํฌํ•จํ•˜๋Š” ๋ชจ๋“  Extension์„ ๋™์‹œ ์„ค์น˜ํ•˜๋Š” ์ „์ฒด ์„ค์น˜, ๊ฐœ๋ณ„ Extension์„ ์„ค์น˜ํ•˜๋Š” ๊ฐœ๋ณ„ ์„ค์น˜๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL์ด ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ๊ณ , ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์ค„์—์„œ make, pg_config ์ปค๋งจ๋“œ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

O2 Extension ์„ค์น˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ชจ์—ฌ ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ(Makefile ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ) ๋‚ด๋ถ€๋กœ ์ด๋™ํ•˜์—ฌ ์•„๋ž˜์˜ make ์ปค๋งจ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ณ„ ์„ค์น˜๋Š” make ์ปค๋งจ๋“œ์— ์„ค์น˜ํ•˜๋ ค๋Š” extension ์ด๋ฆ„์„ ์ธ์ž๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • DBMS_ALERT

  • DBMS_ASSERT

  • DBMS_OUTPUT

  • DBMS_PIPE


make ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ shell script๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆ˜๊ธฐ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL๊ฐ€ ์„ค์น˜๋œ Linux ํ”Œ๋žซํผ์—์„œ O2 Extension์„ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. O2 Extension์ด ํฌํ•จํ•˜๋Š” ๋ชจ๋“  Extension์„ ๋™์‹œ ์„ค์น˜ํ•˜๋Š” ์ „์ฒด ์„ค์น˜, ๊ฐœ๋ณ„ Extension์„ ์„ค์น˜ํ•˜๋Š” ๊ฐœ๋ณ„ ์„ค์น˜๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

PostgreSQL์ด ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ๊ณ , ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์ค„์—์„œ pg_config ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

OpenSQL ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ชจ์—ฌ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ(scripts)๋กœ ์ด๋™ํ•œ ํ›„ install.sh ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

O2 Extension ์„ค์น˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ชจ์—ฌ ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ(Makefile ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ) ๋‚ด๋ถ€๋กœ ์ด๋™ํ•˜์—ฌ install.sh ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ์ปค๋งจ๋“œ์— ์„ค์น˜ํ•˜๋ ค๋Š” extension ์ด๋ฆ„์„ ์ธ์ž๋กœ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • DBMS_ALERT

  • DBMS_ASSERT

  • DBMS_OUTPUT

  • DBMS_PIPE


make/shell ์„ค์น˜ ๋ฐฉ๋ฒ• ๋ชจ๋‘ pg_config ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณ„์ •์œผ๋กœ ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

$PATH ๋ณ€์ˆ˜ ๊ฐ’์— /usr/pgsql-{PG๋ฒ„์ „}/bin ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

$PATH๊ฐ€ ์„ค์ •๋˜์–ด์žˆ๋Š” ์œ ์ €์˜ ๊ถŒํ•œ์œผ๋กœ ์šฐํšŒํ•˜์—ฌ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

sudo ๊ถŒํ•œ์„ ํ†ตํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

O2 extension ์€ OpenSQL ๋ผ์ด์„ผ์Šค๋ฅผ ํ™•์ธํ•˜๋ฏ€๋กœ, ์•„๋ž˜์™€ ๊ฐ™์ด ๋ผ์ด์„ผ์Šค ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


O2 Extension๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํฌ๊ฒŒ 4์ข…๋ฅ˜ ๊ทธ๋ฃน์œผ๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค.

๊ฐ ๊ทธ๋ฃน๋“ค์˜ ํ•˜์œ„ ๋ชฉ๋ก์€ ์‹ค์ œ ์ œ๊ณต๋˜๋Š” ๊ฐœ๋ณ„ Extension์˜ ์ด๋ฆ„์„ ๋‚˜์—ดํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • Types Extension

    • O2Types

  • Views Extension

๊ฐ extension๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์€ ํŒŒ์ผ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  ๊ฐ extension๋ณ„๋กœ ๊ฐœ๋ณ„ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ) O2Functions Extension์˜ ๊ตฌ์„ฑ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Shared object file (eg. o2functions.so)

  • Control file (eg. o2functions.control)

  • Script file (eg. o2functionsโ€”1.0.sql, o2functionsโ€”1.0โ€”1.1.sql, โ€ฆ)

๊ทธ๋ฆฌ๊ณ  extension๋“ค์˜ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ํ•œ ๊ณณ์œผ๋กœ ๋ฌถ์€ VERSION.json ํŒŒ์ผ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.


O2 Extension์„ ์„ค์น˜ํ•œ ํ›„ ํ™œ์„ฑํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด SQL ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • O2 Extension๋“ค์€ ๋‚ด๋ถ€์— ์ •์˜ํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์Šคํ‚ค๋งˆ oracle ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Package Extension(DBMS_ALERT, DBMS_PIPE ๋“ฑ)์€ ๊ฐ์ž extension ์ด๋ฆ„์„ ์Šคํ‚ค๋งˆ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • O2 Extension์—์„œ ์‚ฌ์šฉ๋  ์Šคํ‚ค๋งˆ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ extension์˜ control ํŒŒ์ผ ๋‚ด๋ถ€ schema ํ•ญ๋ชฉ์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. (๋‹จ, ๊ฐ Package extension๋“ค์€ ์Šคํ‚ค๋งˆ ์ด๋ฆ„์ด ๊ณ ์ •๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)


O2 Extension์„ ์ƒ์œ„ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด SQL ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


HA ๊ตฌ์„ฑ ์‹œ ๊ฐ ๋…ธ๋“œ์— ์ง์ ‘ ๋ถ™์–ด ์ˆ˜๋™์œผ๋กœ O2 Extension ์„ค์น˜ ๋ฐ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ ๋…ธ๋“œ์— ์„ค์น˜๋œ O2 Extension version์€ ์ผ์น˜ํ•˜๊ฒŒ ์„ค์น˜๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋…ธ๋“œ ๊ฐ„ ๋ฒ„์ „ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฒ„์ „ ๊ฐ„ ๋™์ž‘ ์ฐจ์ด๋กœ ์ธํ•ด ์ฟผ๋ฆฌ ์ˆ˜ํ–‰ ์‹œ ์–ด๋А ๋…ธ๋“œ๋กœ ๋ณด๋‚ด ์กŒ๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DBMS_RANDOM

  • DBMS_SCHEDULER

  • DBMS_SQL

  • DBMS_JOB

  • DBMS_RLS

  • UTL_FILE

  • O2Functions

  • O2Types

  • O2Views

  • DBMS_RANDOM

  • DBMS_SCHEDULER

  • DBMS_SQL

  • DBMS_JOB

  • DBMS_RLS

  • UTL_FILE

  • O2Functions

  • O2Types

  • O2Views

  • O2Views
  • Functions Extension

    • O2Functions

  • Package Extensions

    • DBMS_ALERT

    • DBMS_ASSERT

    • DBMS_OUTPUT

    • DBMS_PIPE

    • DBMS_RANDOM

    • DBMS_SCHEDULER

    • DBMS_SQL

    • DBMS_JOB

    • DBMS_RLS

    • UTL_FILE

  • make ์„ค์น˜๋ฐฉ๋ฒ•

    ์„ค์น˜ ์ „ ์š”๊ตฌ์‚ฌํ•ญ

    ์ „์ฒด ์„ค์น˜

    ๊ฐœ๋ณ„ ์„ค์น˜

    ๊ฐœ๋ณ„ ์„ค์น˜ extension ์ด๋ฆ„ ๋ชฉ๋ก

    shell ์„ค์น˜๋ฐฉ๋ฒ•

    ์„ค์น˜ ์ „ ์š”๊ตฌ์‚ฌํ•ญ

    ์ „์ฒด ์„ค์น˜

    ๊ฐœ๋ณ„ ์„ค์น˜

    ๊ฐœ๋ณ„ ์„ค์น˜ extension ์ด๋ฆ„ ๋ชฉ๋ก

    ์„ค์น˜ ์œ ์˜ ์‚ฌํ•ญ

    pg_config์™€ $PATH ์„ค์ •

    $PATH ๊ฐ’์— PG๊ฒฝ๋กœ๊ฐ€ ์„ค์ • ๋˜์–ด์žˆ์ง€ ์•Š์€ ์œ ์ € ๊ณ„์ •์—์„œ์˜ ์„ค์น˜ ๋ฐฉ๋ฒ•

    ๋ผ์ด์„ ์Šค ๊ด€๋ จ ์„ค์ •

    ์„ค์น˜ ๊ตฌ์„ฑ ์š”์†Œ

    Extension ์ข…๋ฅ˜

    Extension ๊ตฌ์„ฑ ์š”์†Œ

    O2 Extension ํ™œ์„ฑํ™”

    O2 Extension ์—…๋ฐ์ดํŠธ

    HA ๊ตฌ์„ฑ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ

    ls -rlta
    
    total 60
    drwxr-xr-x  2 root root 4096 Mar 13 05:09 utl_file
    drwxr-xr-x  2 root root 4096 Mar 13 05:09 o2views
    drwxr-xr-x  2 root root 4096 Mar 13 05:09 o2types
    drwxr-xr-x  2 root root 4096 Mar 13 05:09 o2functions
    -rw-r--r--  1 root root 3266 Mar 13 05:09 install.sh        # sh ์„ค์น˜์šฉ ์Šคํฌ๋ฆฝํŠธ
    drwxr-xr-x  2 root root 4096 Mar 13 05:09 dbms_sql
    drwxr-xr-x  2 root root 4096 Mar 13 05:09 dbms_random
    drwxr-xr-x  2 root root 4096 Mar 13 05:09 dbms_pipe
    drwxr-xr-x  2 root root 4096 Mar 13 05:09 dbms_output
    drwxr-xr-x  2 root root 4096 Mar 13 05:09 dbms_alert
    -rw-r--r--  1 root root 1465 Mar 13 05:09 VERSION.json      # o2 extensions ๋ฒ„์ „ ์ •๋ณด
    -rw-r--r--  1 root root  672 Mar 13 05:09 Makefile          # make ๋ฐฉ์‹์„ค์น˜์šฉ ํŒŒ์ผ
    drwxr-xr-x 12 root root 4096 Mar 13 05:09 .
    drwxr-xr-x  6 root root 4096 Mar 13 05:09 ..
    cd o2
    make all # o2 extensions ์ „์ฒด ์„ค์น˜
    
    # ์•„๋ž˜๋Š” ์ „์ฒด ์„ค์น˜ ๊ณผ์ •์—์„œ ์ถœ๋ ฅ๋˜๋Š” ์˜ˆ์‹œ ๋กœ๊ทธ
    make[1]: Entering directory '/home/opensql/o2/build/o2-dist-1.0.1/o2functions'
    /usr/bin/mkdir -p '/home/opensql/postgres/build/16/lib'
    /usr/bin/mkdir -p '/home/opensql/postgres/build/16/share/extension'
    /usr/bin/mkdir -p '/home/opensql/postgres/build/16/share/extension'
    /usr/bin/install -c -m 755  o2functions.so '/home/opensql/postgres/build/16/lib/o2functions.so'
    /usr/bin/install -c -m 644 .//o2functions.control '/home/opensql/postgres/build/16/share/extension/'
    /usr/bin/install -c -m 644 .//VERSION.json .//o2functions--1.0.sql  '/home/opensql/postgres/build/16/share/extension/'
    make[1]: Leaving directory '/home/opensql/o2/build/o2-dist-1.0.1/o2functions'
    ...
    cd o2
    # make [ extension1 extension2 ... ]
    make o2functions o2types dbms_output
    
    # ์•„๋ž˜๋Š” make ์ˆ˜ํ–‰ ์‹œ ๋‚˜์˜ค๋Š” ์˜ˆ์‹œ ๋กœ๊ทธ
    make -C o2functions install
    make[1]: Entering directory '/home/opensql/o2/build/o2-dist-1.0.1/o2functions'
    /usr/bin/mkdir -p '/home/opensql/postgres/build/16/lib'
    /usr/bin/mkdir -p '/home/opensql/postgres/build/16/share/extension'
    /usr/bin/mkdir -p '/home/opensql/postgres/build/16/share/extension'
    /usr/bin/install -c -m 755  o2functions.so '/home/opensql/postgres/build/16/lib/o2functions.so'
    /usr/bin/install -c -m 644 .//o2functions.control '/home/opensql/postgres/build/16/share/extension/'
    /usr/bin/install -c -m 644 .//VERSION.json .//o2functions--1.0.sql  '/home/opensql/postgres/build/16/share/extension/'
    make[1]: Leaving directory '/home/opensql/o2/build/o2-dist-1.0.1/o2functions'
    ...
    cd scripts
    sh ./install.sh o2
    # sh install.sh [ extension1 extension2 ... ]
    sh install.sh o2functions o2types dbms_output
    
    # ์•„๋ž˜๋Š” ๊ฐœ๋ณ„ ์„ค์น˜ ๊ณผ์ •์—์„œ ์ถœ๋ ฅ๋˜๋Š” ์˜ˆ์‹œ๋กœ๊ทธ
    Installing extensions to:
      Library directory: /home/opensql/postgres/build/16/lib
      Shared extension directory: /home/opensql/postgres/build/16/share/extension
    Extensions to install: o2functions o2types dbms_output
    Installing extension: o2functions
      Copied control file: ./o2functions.control
      Copied SQL file: ./o2functions--1.0.sql
      Copied shared library: ./extensions/functions/o2functions.so
    Installing extension: o2types
      Copied control file: ./o2types.control
      Copied SQL file: ./o2types--1.0.sql
      Copied shared library: ./extensions/types/o2types.so
    Installing extension: dbms_output
      Copied control file: ./dbms_output.control
      Copied SQL file: ./dbms_output--1.0.sql
      Copied shared library: ./extensions/dbms_output/dbms_output.so
    Copied METADATA: VERSION.json
    Installation completed.
    [root@20fec5585ddd /]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/pgsql-16/bin/
    
    # ํ˜„์žฌ ์ ‘์†ํ•œ ๊ณ„์ •์˜ $PATH์— ๊ฒฝ๋กœ๊ฐ’์ด ์—†๋‹ค๋ฉด PG ๋ฒ„์ „์— ์•Œ๋งž์€ ๊ฒฝ๋กœ๋ฅผ $PATH ๊ฒฝ๋กœ์— ์ถ”๊ฐ€
    [root@20fec5585ddd /]# echo "export PATH=$PATH:/usr/pgsql-16/bin/" >> ~/.bashrc
    [root@20fec5585ddd /]# source ~/.bashrc
    sudo -u {PG๊ฒฝ๋กœ๊ฐ€ $PATH์— ์„ค์ •๋œ ๋‹ค๋ฅธ USER} bash -l -c "{make ๋˜๋Š” shell ์„ค์น˜ ๋ช…๋ น}"
    
    # ์˜ˆ์‹œ)
    # postgres ์œ ์ €์˜ $PATH์— /usr/pgsql-16/bin/ ๊ฒฝ๋กœ๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๊ณ ,
    # opensql์ด๋ผ๋Š” ์œ ์ €๋กœ ์ ‘์†ํ•˜์—ฌ make ๋ฐฉ์‹์œผ๋กœ o2 ์„ค์น˜ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ
    [opensql@20fec5585ddd /]# sudo -u postgres bash -l -c "make all"
    # postgresql.conf์˜ shared_preload_libraries์˜ ์ฒซ ๋ฒˆ์งธ๋กœ opensql_license ์ถ”๊ฐ€
    shared_preload_libraries = 'opensql_license'
    
    # ๋ผ์ด์„ ์Šค ํŒŒ์ผ ๊ฒฝ๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •
    export OPENSQL_LICENSE_PATH="/path/to/license.xml"
    CREATE EXTENSION {extension name};
    ALTER EXTENSION {extension name} UPDATE TO {new version};