Instrucțiuni pentru crearea

Bună ziua, membri ai comunității!
Prin cererea populară de astăzi vă voi spune cum să creați și să ridicați o copie de rezervă Terrasoft pe baza de date Oracle.
Pentru a face acest lucru este foarte simplu, totul se face automat - trebuie doar să rulați fișierul batch și să introduceți numele bazei de date.

  1. Despachetăm conținutul arhivei Backup.zip de pe serverul în care este instalat serverul Oracle.
  2. Executați BackupDatabase.cmd.
  3. Specificați: numele schemei, parola acesteia (schema de utilizator) și numele fișierului dump al bazei de date.
  4. Ca rezultat, primim două fișiere: Grant.sql - scriptul pentru crearea drepturilor distribuite și de fapt, dumpingul bazei de date Oracle.
  1. Despachetăm conținutul arhivei Restore.zip pe serverul în care este instalat serverul Oracle.
  2. De asemenea, trebuie să punem două fișiere (Grant.sql și dump) create atunci când a fost creată copia de rezervă.
  3. Porniți RestoreDatabase.cmd.
  4. Specificați User Parola SYS, numele fișierului haldei de baze de date (backup de nume de fișier db), numele vechi al schemei la care sa făcut groapa de gunoi (vechea schemă de utilizator), numele noii scheme (schema noua de utilizator) și parola noului sistem (nouă parolă de utilizator).
  5. Apoi, totul va rula automat: va crea un nou sistem, răsune drepturile necesare, va crea tipurile necesare, baze de date de rezervă va crește în cadrul schemei de spus, înlocuiți coardele de obiecte în sistemul de tabele Terrasoft privind noile RESOUND drepturile necesare pentru rolurile pe tabele și vizualizări.

În instalarea Terrasoft sunt incluse deja script-uri similare, dar ele sunt legate de faptul că baza de date a fost creată cu schema TSAUTOBUILD. Scripturile mele mai solicită numele vechii scheme.

Descriu pe scurt, doar cele mai necesare. Dacă aveți întrebări, voi fi fericit să răspund.

Observ că informațiile prezentate trebuie să fie considerate un exemplu, pe care oricine le poate schimba la nevoile lor. Aceste scripturi sunt valabile pentru Oracle instalat pe sistemul de operare Windows și fișierul de comandă trebuie executat pe serverul propriu-zis. Pentru toate celelalte opțiuni (un alt sistem de operare, lansarea de pe mașina client), vă puteți adăuga.

Punctul cheie în crearea unei copii de rezervă script Grant.sql (a se vedea. Backup.zip), care creează un „turnat“ drepturi distribuite pentru modelul, care se aplică în Terrasoft CRM.

UPD: Mulțumită lui Sasha Kotenko pentru defecțiunea găsită în fișierul BackupDatabase.cmd. A fost corectată.

Clienții se întreabă adesea de ce, atunci când ridică o copie de rezervă, Oracle emite avertismente și de ce unele obiecte după import sunt nevalide.

Voi încerca să răspund la aceste întrebări.

Tipul de tip "SCHEMA_NAME". "T_FieldInfo" există deja cu un alt identificator

Sistemul nostru utilizează tipuri de obiecte din baza de date Oracle, OBJECT TYPE.

Problema este că Oracle conectează rigid tipurile de obiecte cu identificatorii lor, OID.

În acest caz, în cazul în care serverul a fost o dată restaurat de backup sistem de Terrasoft, se vor crea toate tipurile de aplicații ( „t_GetLoginInfo“, „tbl_GetLoginInfo“ și colab.).
Dar, datorită legării rigide la OID, aceste tipuri vor fi create cu OID, care este înregistrat în dump.

Prima dată când totul va fi bine. Dar a luat la fel, sau alte scheme de rezervă Terrasoft pe același server, se va crea din nou tipuri cu aceeași OID - ca urmare a unei erori: Există deja obiectul OID. Ca urmare, după ridicarea de rezervă de orice unul dintre tipurile nu se va forma.

Din cauza acestei trăsături a Oracle, am făcut o soluție în scenariile pentru ridicarea schemelor noastre:

  1. Înainte de a ridica copiile de rezervă, scriptul CreateTypes.sql creează în mod explicit toate tipurile necesare, atunci când se creează Oracle, acesta va genera OID-uri noi.
  2. Atunci când ridicarea Oracle încearcă să creeze tipuri de rezervă c vechiul lor OID, în același timp, a emis eroare IMP-00061: Avertisment :. Object „schema“ tip „de tip“ există deja cu un alt identificator

Dacă apare o astfel de eroare, crearea de tip este omisă.

Dar în cazul nostru nu este o eroare, pentru că acest lucru se face în mod specific ca o soluție. Toate tipurile de obiecte necesare sunt create de script-ul nostru chiar înainte ca backup-ul să fie ridicat.

După ridicarea copiei de siguranță, unele obiecte sunt nevalide

Aceasta nu este o greșeală, doar un avertisment.

Când importați o schemă, mai întâi migrați tabele și vizualizări, apoi declanșați și apoi salvați proceduri și funcții.

Dacă una dintre declanșatoare utilizează un apel la orice procedură stocată, aceasta va fi nevalidă după import.

Trecem de la teorie la practică. În sistemul nostru multe mese au un declanșator de linie BEFORE INSERT OR UPDATE. de exemplu:

După cum puteți vedea din cod, acest declanșator apelează funcția fn_CreateGUID. care la momentul transferului declanșatorului nu este acolo. Acesta va fi creat mai târziu, cu toate celelalte HP. Din acest motiv, declanșatorul rămâne nevalid.

Sistemul de administrare Oracle în versiunea 341 sa schimbat semnificativ. În acest sens, sa modificat și mecanismul de creare și restaurare a copiilor de rezervă.

Ce sa schimbat în noile scripturi de rezervă pentru 341

  • A existat o oportunitate de a specifica instanța Oracle pentru implementarea copiilor de rezervă
  • Puteți specifica un spațiu de tabel separat pentru a extinde schema
  • Situația fixă ​​cu exportul de tabele goale (Oracle 11)

În noul sistem de administrare, aproape toate drepturile pentru utilizator sunt atribuite prin roluri. Prin urmare, la restaurarea unei copii de siguranță, au apărut trei opțiuni: modurile de transfer al drepturilor utilizatorilor. Voi vorbi despre asta în detaliu.

Opțiunea # 0 - Reconectați utilizatorii la o schemă nouă (implicită)

În același timp, toți utilizatorii Terrasoft vor fi creați și vor fi distribuiți și atribuiți roluri implicite pentru a accesa noua schemă (la cea pe care o desfășurați). Utilizatorii vor avea automat acces la schema veche. Această opțiune este potrivită pentru salvarea inițială a unui backup pe o instanță nouă sau pentru transferarea unei scheme de luptă către o nouă schemă.

Opțiunea # 1 - Creați utilizatori cu perimeno

Această opțiune presupune că toți utilizatorii Terrasoft vor fi creați ca noi utilizatori Oracle cu prefixele "U" și toate drepturile relevante vor fi distribuite acestora. De exemplu, vechea schemă a fost User1. după ce backup-ul este ridicat, noul utilizator va fi User1U. Astfel, utilizatorul vechi User1 va continua să funcționeze în mod normal cu vechea schemă, iar noul utilizator va avea toate aceleași drepturi în legătură cu noua schemă din aceeași instanță. Această opțiune este convenabilă atunci când ridicați schema de testare în aceeași instanță în care sistemul de lupte este deja în desfășurare. Astfel, utilizatorii vor fi absolut independenți.

Opțiunea # 2 - Nu creați utilizatori

În acest caz, atunci când restaurați o copie de rezervă, este creat doar utilizatorul schemei Terrasoft. El i se atribuie drepturile administratorului Terrasoft, iar sub acesta trebuie să mergeți pentru înființarea independentă a utilizatorilor potriviți și pentru a le ordona licențe.

Și cel mai important, scripturile din arhiva atașată.

Articole similare