ALTER DATABASE
ALTER DATABASE â измениÑÑ Ð°ÑÑибÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
СинÑакÑиÑ
ALTER DATABASEимÑ[ [ WITH ]паÑамеÑÑ[ ... ] ] ÐдеÑÑпаÑамеÑÑ: ALLOW_CONNECTIONSÑазÑ_подклÑÑениÑCONNECTION LIMITпÑедел_подклÑÑенийIS_TEMPLATEÑÑо_ÑаблонALTER DATABASEимÑRENAME TOновое_имÑALTER DATABASEимÑOWNER TO {новÑй_владелеÑ| CURRENT_USER | SESSION_USER } ALTER DATABASEимÑSET TABLESPACEновое_Ñабл_пÑоÑÑÑанÑÑвоALTER DATABASEимÑSETпаÑамеÑÑ_конÑигÑÑаÑии{ TO | = } {знаÑение| DEFAULT } ALTER DATABASEимÑSETпаÑамеÑÑ_конÑигÑÑаÑииFROM CURRENT ALTER DATABASEимÑRESETпаÑамеÑÑ_конÑигÑÑаÑииALTER DATABASEимÑRESET ALL
ÐпиÑание
ALTER DATABASE изменÑÐµÑ Ð°ÑÑибÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
.
ÐеÑÐ²Ð°Ñ ÑоÑма опеÑаÑоÑа менÑÐµÑ Ð¿Ð°ÑамеÑÑÑ Ð½Ð° ÑÑовне Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . (ÐодÑобнее опиÑано ниже.) ÐзменÑÑÑ ÑÑи паÑамеÑÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð»Ð¸ ÑÑпеÑполÑзоваÑелÑ.
ÐÑоÑÐ°Ñ ÑоÑма менÑÐµÑ Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐеÑеименоваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÐРили ÑÑпеÑполÑзоваÑÐµÐ»Ñ (не ÑÑпеÑполÑзоваÑÐµÐ»Ñ ÑÑебÑеÑÑÑ Ñакже пÑаво CREATEDB). ÐеÑеименоваÑÑ ÑекÑÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
нелÑзÑ. (ÐÑли вам нÑжно ÑделаÑÑ ÑÑо, ÑнаÑала подклÑÑиÑеÑÑ Ðº дÑÑгой базе.)
ТÑеÑÑÑ ÑоÑма менÑÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ЧÑÐ¾Ð±Ñ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа базÑ, необÑ
одимо бÑÑÑ ÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем и Ñакже непоÑÑедÑÑвеннÑм или опоÑÑедованнÑм Ñленом новой Ñоли-владелÑÑа, и кÑоме Ñого, имеÑÑ Ð¿Ñаво CREATEDB. (ÐамеÑÑÑе, ÑÑо ÑÑпеÑполÑзоваÑели наделÑÑÑÑÑ Ð²Ñеми ÑÑими пÑавами авÑомаÑиÑеÑки.)
ЧеÑвÑÑÑÐ°Ñ ÑоÑма менÑÐµÑ ÑаблиÑное пÑоÑÑÑанÑÑво по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐÑоизвеÑÑи ÑÑо изменение Ð¼Ð¾Ð¶ÐµÑ ÑолÑко ÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¸Ð»Ð¸ ÑÑпеÑполÑзоваÑелÑ; кÑоме Ñого, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ имеÑÑ Ð¿Ñаво Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑаблиÑного пÑоÑÑÑанÑÑва. ÐÑа команда ÑизиÑеÑки пеÑеноÑÐ¸Ñ Ð²Ñе ÑаблиÑÑ Ð¸Ð»Ð¸ индекÑÑ Ð¸Ð· пÑежнего оÑновного ÑаблиÑного пÑоÑÑÑанÑÑва ÐРв новое. Ðовое ÑаблиÑное пÑоÑÑÑанÑÑво должно бÑÑÑ Ð¿ÑÑÑÑм Ð´Ð»Ñ ÑÑой Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ к ней никÑо не должен бÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÑн. ТаблиÑÑ Ð¸ индекÑÑ, Ð½Ð°Ñ Ð¾Ð´ÑÑиеÑÑ Ð½Ðµ в оÑновном ÑаблиÑном пÑоÑÑÑанÑÑве, пÑи ÑÑом не заÑÑагиваÑÑÑÑ.
ÐÑÑалÑнÑе ÑоÑÐ¼Ñ Ð¼ÐµÐ½ÑÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑионнÑÑ
пеÑеменнÑÑ
вÑемени вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Postgres Pro. Ðогда ÑÑÑанавливаеÑÑÑ ÑледÑÑÑий ÑÐµÐ°Ð½Ñ ÑабоÑÑ Ñ Ñказанной базой даннÑÑ
, заданное ÑÑой командой знаÑение ÑÑановиÑÑÑ Ð·Ð½Ð°Ñением по ÑмолÑаниÑ. ÐнаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеменнÑÑ
, заданнÑе Ð´Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, пеÑеопÑеделÑÑÑ Ð·Ð½Ð°ÑениÑ, опÑеделÑннÑе в postgresql.conf или полÑÑеннÑе ÑеÑез команднÑÑ ÑÑÑÐ¾ÐºÑ postgres. ÐенÑÑÑ ÑеанÑовÑе знаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеменнÑÑ
Ð´Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð¼Ð¾Ð¶ÐµÑ ÑолÑко ÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¸Ð»Ð¸ ÑÑпеÑполÑзоваÑелÑ. ÐекоÑоÑÑе паÑамеÑÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ñаким обÑазом нелÑзÑ, а некоÑоÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑелÑ.
ÐаÑамеÑÑÑ
имÑÐÐ¼Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , аÑÑибÑÑÑ ÐºÐ¾ÑоÑой изменÑÑÑÑÑ.
ÑазÑ_подклÑÑениÑÐÑли false, никÑо не ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ Ðº ÑÑой базе даннÑÑ .
пÑедел_подклÑÑенийЧиÑло ÑазÑеÑÑннÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно подклÑÑений к ÑÑой базе даннÑÑ (-1 ÑÐ½Ð¸Ð¼Ð°ÐµÑ Ð¾Ð³ÑаниÑение).
ÑÑо_ÑаблонÐÑли true, Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÐ¼Ð¾Ð¶ÐµÑ ÐºÐ»Ð¾Ð½Ð¸ÑоваÑÑ Ð»Ñбой полÑзоваÑÐµÐ»Ñ Ñ Ð¿Ñавами
CREATEDB; в пÑоÑивном ÑлÑÑае клониÑоваÑÑ ÑÑÑ Ð±Ð°Ð·Ñ ÑмогÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели и ÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ.новое_имÑÐовое Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
новÑй_владелеÑÐовÑй Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
новое_Ñабл_пÑоÑÑÑанÑÑвоÐовое оÑновное ÑаблиÑное пÑоÑÑÑанÑÑво Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
ÐÑÑ ÑоÑÐ¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð²ÑполнÑÑÑ Ð²Ð½ÑÑÑи блока ÑÑанзакÑии.
паÑамеÑÑ_конÑигÑÑаÑиизнаÑениеУÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑеанÑовое знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ñказанного паÑамеÑÑа конÑигÑÑаÑии. ÐÑли ÑказÑваеÑÑÑ
знаÑениеDEFAULTили ÑавнознаÑнÑй ваÑианÑ,RESET, опÑеделение паÑамеÑÑа на ÑÑовне Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÑдалÑеÑÑÑ, Ñак ÑÑо в новÑÑ ÑеанÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ Ð·Ð½Ð°Ñение по ÑмолÑаниÑ, опÑеделÑнное на ÑÑовне ÑиÑÑемÑ. ÐÐ»Ñ Ð¾ÑиÑÑки вÑÐµÑ Ð·Ð½Ð°Ñений паÑамеÑÑов на ÑÑовне Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð²ÑполниÑеRESET ALL.SET FROM CURRENTÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°Ñение паÑамеÑÑа на ÑÑовне Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð· ÑекÑÑего знаÑÐµÐ½Ð¸Ñ Ð² акÑивном ÑеанÑе.Ðа подÑобнÑми ÑведениÑми об Ð¸Ð¼ÐµÐ½Ð°Ñ Ð¸ знаÑениÑÑ Ð¿Ð°ÑамеÑÑов обÑаÑиÑеÑÑ Ðº SET и Ðлаве 18.
ÐÑимеÑаниÑ
Также возможно ÑвÑзаÑÑ Ð¿Ð°ÑамеÑÑÑ ÑеанÑа не Ñ Ð±Ð°Ð·Ð¾Ð¹ даннÑÑ , а Ñ Ð¾Ð¿ÑеделÑнной ÑолÑÑ; Ñм. ALTER ROLE. Ð ÑлÑÑае конÑликÑа паÑамеÑÑÑ Ð½Ð° ÑÑовне Ñоли пеÑеопÑеделÑÑÑ Ð¿Ð°ÑамеÑÑÑ Ð½Ð° ÑÑовне Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
ÐÑимеÑÑ
ÐÑклÑÑение ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа по ÑмолÑÐ°Ð½Ð¸Ñ Ð² базе даннÑÑ
test:
ALTER DATABASE test SET enable_indexscan TO off;
СовмеÑÑимоÑÑÑ
ÐпеÑаÑÐ¾Ñ ALTER DATABASE ÑвлÑеÑÑÑ ÑаÑÑиÑением Postgres Pro.