рдУрд░реЗрдХрд▓ рдХреЛ рд▓рд┐рдкрд┐ рд╡рд╛рддрд╛рд╡рд░рдг-рд╕реНрд╡рддрдВрддреНрд░ рдмрдирд╛рддреЗ рд╣реБрдП

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╣реА рд▓реЗрдЦ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ (рдЬреИрд╕реЗ рд╕реАрд╡реАрдПрд╕, рдПрд╕рд╡реАрдПрди, рдЯреАрдПрдлрдПрд╕, рдЖрджрд┐) рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдФрд░ рд▓рд╛рднреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рддреИрдирд╛рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реИред
рдореИрдВ рдЦреБрдж рдХреЛ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рд▓реБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред

рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрд╡рдпрдВ (рджреЗрд╡), рдЖрдВрддрд░рд┐рдХ рдкрд░реАрдХреНрд╖рдг (рдХреНрдпреВрдП), рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ (рдпреВрдПрдЯреА) рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕реАрдзреЗ, рдЙрддреНрдкрд╛рджрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрдЦ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рдХрднреА-рдХрднреА (рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрднрд╡ рдореЗрдВ) рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рди рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдЗрд╕ рдЪрдХреНрд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ, рд╡реЗ рдПрдХ рдХрд╛рд░рдг рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдорддрднреЗрдж рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рднрд┐рдиреНрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рд╕реНрдХреАрдорд╛ рдирд╛рдо, DBLinks, рдФрд░ рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рдЕрдВрддрд░ред рдЗрд╕ рдкрд░реЗрд╢рд╛рдиреА рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ, рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред



рдЫрд╡рд┐

рдореБрдЦреНрдп рддреИрдирд╛рддреА рдХреЗ рдЖрдЧреЗред рдПрд╕рд╕реАрдПрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЬреЛ рд╕реАрдзреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ), рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рд▓рдЧрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ - рдбрд┐рдлрд╛рдЗрди-рдПрд╕, рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

DEFINE DATA_TS = DEV_DATA_TS DEFINE INDEX_TS = DEV_DATA_TS DEFINE Some_Source_data_dbl = Dev_dbl_source.world -- ...  .. 


рдкреНрд░рддреНрдпреЗрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдЕрдкрдирд╛ рд╣реЛрдЧрд╛ред
рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЖрдЧреЗ, рд╕рдм рдХреБрдЫ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:

  create table my_table (sample_col VarChar(2 char) ) tablespace &DATA_TS; .... select * from dual@&Some_Source_data_dbl; 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдкреНрд░рддрд┐ рдЙрджрд╛рд╕реАрди рд╣реЛрдЧреА, рдФрд░ рдЖрдк рдЕрдзрд┐рдХ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡реЗ UAT (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдкрд░ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдирддреАрдЬрддрди, рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдорд╛рдирд╡ рдХрд╛рд░рдХ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЛ рджреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЯрд╛рдЗрдкреЛ, рд╡рд┐рд╕реНрдорд░рдг, рд╡рд┐рдХрд░реНрд╖рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ред
рдЗрд╕рдХреЗ рдЬреЛрдЦрд┐рдо, рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреИрд░рд╛рдореАрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реА рдорд┐рд▓ рдЬрд╛рдПрдЧреА, рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдВрдЧреНрд░рд╣ рдХреЗ 1-2-3 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИ (рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдШрдЯрд╛рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ)ред

рдпрд╣ рдХреЗрд╡рд▓ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдЗрди рд╕рднреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдЖрдЧреЗ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕рд┐рд░рджрд░реНрдж рдХреЗ рд╕рд╛рде рдмрдиреА рд╣реБрдИ рд╣реИред рдпрд╣рд╛рдВ, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рд╡рд╛рд▓ рдЖрддрд╛ рд╣реИ: рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдирд╛рдо рдХреИрд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рдПред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмреБрд▓рд╛рддреЗ рдереЗ:

dev.sql
qa.sql
uat.sql
prod.sql

рд▓реЗрдХрд┐рди рдЕрдм рд╣рдордиреЗ рдЗрд╕ рдкреНрд░рдерд╛ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ TNS рдирд╛рдо рд╕реЗ рдкреБрдХрд╛рд░рддреЗ рд╣реИрдВред
рдпрд╣ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ? рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХреА .sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ (рдореИрдВ рдХреЗрд╡рд▓ рд╕рд╛рд░ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ):

  # ...     , help,      par_file = ${3//.WORLD/} sqlplus $1/$2@$3 @deploy.sql $par_file # ...      


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдирдкреБрдЯ рдореЗрдВ рддреАрди рдкреИрд░рд╛рдореАрдЯрд░ рдЖрддреЗ рд╣реИрдВ (рдЗрд╕ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕рд░реНрдХрд┐рдЯ рд╣реЛрддрд╛ рд╣реИ): рд▓реЙрдЧрд┐рди, рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЯреАрдПрдирдПрд╕ рдЙрдкрдирд╛рдоред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХрдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ

name.default_domain = рджреБрдирд┐рдпрд╛

рддрдм рд╣рдо рд╕рдм рдХреБрдЫ рдПрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ: рд╣рдо рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ ".WORLD" рдХреЛ рдХрд╛рдЯ рджреЗрддреЗ рд╣реИрдВ)ред рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд░рд╣рддрд╛ рд╣реИ (TNSalias рдирд╛рдо рд╕реЗ) рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдпрд╣ рд╕рдВрдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред

  --    spool _deploy.log --       --  par_file    : @./defines/&1 @../ddl/some_table_create.sql @../data/some_other_deploy_activity.sql @./validate_invalid_objects.sql @./run_post_deployment_checks.sql spool off exit 


рдЕрдкрдиреА рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдорд╛рдирдХ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╕реЗ, рдЖрдк рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдПрдВрдЧреЗ, рдЬреЛ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ, рддреИрдирд╛рддреА рдХреЗ рд╕рдордп - рдЕрдВрддрд┐рдо рд╕рдордп рдореЗрдВ "рд╕рд┐рд░рджрд░реНрдж" рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред

рдкреБрдирд╢реНрдЪ: рдореИрдВ рдХреБрдЫ рдХреМрд╢рд▓ рдФрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдирд┐рд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рд▓рдШреБ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП рдорд╛рдорд▓реЛрдВ, рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдиреБрдХрд╕рд╛рдиред

Source: https://habr.com/ru/post/In147371/


All Articles