Ebook Oracle DBA - Tomas Solar Consulting
Transkript
Obsah Děkuji za registraci ............................................................................................................ 6 Teorie – webináře ............................................................................................................... 7 Webináře zdarma ...................................................................................................................... 7 Architektura databáze Oracle 12c ........................................................................................... 7 Oracle DBA: STARTUP ........................................................................................................... 7 Shutdown .............................................................................................................................................. 8 Nomount ............................................................................................................................................... 9 Mount ...................................................................................................................................................10 Open .....................................................................................................................................................11 Administrace..................................................................................................................... 12 Kontrola serveru a zjištování důležitých informací ............................................................. 12 Operační systém ...................................................................................................................................12 Verze OS - distribuce, architektura ......................................................................................................12 Hostname .............................................................................................................................................13 IP adresa...............................................................................................................................................13 Databáze................................................................................................................................... 14 Běžící procesy ......................................................................................................................................14 Instalované databáze ............................................................................................................................15 Nastavení uživatele Oracle ..................................................................................................... 16 Skupiny ................................................................................................................................................16 Kontrola listeneru/tnsnames.ora ........................................................................................... 17 listener.ora............................................................................................................................................17 tnsname.ora ..........................................................................................................................................18 Nastavení prostředí ................................................................................................................. 19 oraenv ..................................................................................................................................................19 Nastavení profilu uživatele. .................................................................................................... 19 Založení databáze ručně (bez DBCA) ................................................................................... 21 Vytvoření init souboru .........................................................................................................................21 Založení databáze CREATE DATABASE ........................................................................... 23 Nastavení EM express ............................................................................................................. 26 Registrace DB do listeneru ..................................................................................................... 27 Soubor tnsnames.ora .............................................................................................................. 29 Vytvoření password file .......................................................................................................... 32 Nastavení promptu v OS ........................................................................................................ 34 Nastavení promptu v Sqlplus. ................................................................................................ 35 Vytvoření aliasu pro rychlé spuštění Sqlplus ....................................................................... 37 Velikost databáze .................................................................................................................... 38 2|Page Jak zjistit SCN číslo? .............................................................................................................. 38 Vytvoření tablespace (TOOLS) ............................................................................................. 39 Vytvoření tablespace z sqlplus .............................................................................................................39 Vytvoření tablespace pomocí EM ........................................................................................................41 Vytvoření uživatele ................................................................................................................. 44 Přepnutí do archívního módu ................................................................................................ 45 Kontrola destinace pro archívní logy - FRA ........................................................................................45 Kontrola ...............................................................................................................................................47 Nastavební FRA ...................................................................................................................... 48 Kontrola ...............................................................................................................................................48 Nastavení .............................................................................................................................................49 Init soubor (Spfile vs pfile) ..................................................................................................... 50 Kontrolní soubor ..................................................................................................................... 51 Zjištění informací .................................................................................................................................51 Přídání kontrolního souboru.................................................................................................................53 Redo logy.................................................................................................................................. 55 Zjištění základních informací o Redo logách .......................................................................................55 Přidání redo log člena do skupiny bez ASM ........................................................................................56 Smazání člena z redo log skupiny ........................................................................................................56 Přidání redo log skupiny ......................................................................................................................56 Přidání redo log skupiny do FRA ........................................................................................................59 Automatic storage management - ASM .......................................................................... 61 Nastavení UDEV pro ASM disky........................................................................................... 61 Výpis SATA zařízení ...........................................................................................................................61 Vytvoření partition ...............................................................................................................................61 Identifikace disků .................................................................................................................................63 Nastavení důvěrného zařízení ..............................................................................................................63 Nastavení UDEV pravidel ...................................................................................................................64 Nahrání upravená blokových partition .................................................................................................64 Kontrola nastavení ...............................................................................................................................64 Kontrola oprávnění ..............................................................................................................................64 Restart služby .......................................................................................................................................65 Instalace grid infrastruktury - ASM ..................................................................................... 65 Vytvoření ASM diskgroup ...................................................................................................................65 asmca ...................................................................................................................................................65 Přidání redo log skupiny bez ASM ........................................................................................ 67 Změna aktivní skupiny .........................................................................................................................68 Přidání redo log skupiny s ASM ..........................................................................................................69 Přidání kontrolního souboru do ASM................................................................................... 69 Identifikace ..........................................................................................................................................69 Přidání ..................................................................................................................................................70 Přidání redo log člena do skupiny s ASM ............................................................................. 71 Zálohování a obnova........................................................................................................ 72 Záloha databáze RMAN ......................................................................................................... 72 3|Page Připojení ...............................................................................................................................................72 Kontrola nastavení ...............................................................................................................................73 Záloha databáze ...................................................................................................................... 73 Záloha databáze a archívních souborů ................................................................................. 74 Záloha archívních souborů .................................................................................................... 76 Přesun datového souboru ....................................................................................................... 77 Zálohování kontrolního souboru ........................................................................................... 79 Nastavení automatické zálohy kontrolního souboru ............................................................................79 Zjištění zálohy kontrolního souboru ....................................................................................................81 Textová záloha kontrolního souboru ....................................................................................................82 Binární záloha kontrolního souboru .....................................................................................................82 Obnova kontrolního souboru ................................................................................................. 82 Obnovení kontrolního souboru z autobackapu.....................................................................................82 Obnovení kontrolního souboru ze zálohy ............................................................................................85 Bezpečnost ........................................................................................................................ 85 Nebezpečí ověření pomocí OS ................................................................................................ 85 Kontrola prefixu ...................................................................................................................................85 OS user .................................................................................................................................................86 DB user ................................................................................................................................................86 Kontrola ...............................................................................................................................................86 Změna hesla uživatele ............................................................................................................. 87 Viditelné heslo .....................................................................................................................................87 Skryté heslo.............................................................................................................................. 87 Dočasná změna hesla .............................................................................................................. 88 Zjistění původního hesla ......................................................................................................................88 Dočasná změna ....................................................................................................................................88 Navrácení původního ...........................................................................................................................88 Přesun dat – datová pumpa ............................................................................................. 89 Datová pumpa - Export .......................................................................................................... 89 Vytvoření objektu directory .................................................................................................................89 Přiřazení oprávnění ..............................................................................................................................89 Příprava testových dat ..........................................................................................................................90 Vlastní export .......................................................................................................................................90 Ověření.................................................................................................................................................91 Datová pumpa - Import .......................................................................................................... 91 Smazání tabulky ...................................................................................................................................91 Vlastní import ......................................................................................................................................92 Ověření.................................................................................................................................................92 Datová pumpa - parametrický soubor .................................................................................. 93 Příprava ................................................................................................................................................93 Použití ..................................................................................................................................................93 Sledování a ladění ............................................................................................................ 94 Statspack .................................................................................................................................. 94 4|Page Vytvoření tablespace ............................................................................................................................94 Vlastní instalace ...................................................................................................................................94 Kontrola nastavení sběru informací .....................................................................................................97 Výpis dostupných snapshotů ................................................................................................................97 Vygenerování nového snapshotu. ........................................................................................................98 Vygenerování reportu. .........................................................................................................................98 Report v textové formě ......................................................................................................................100 Kolik archívní logu se generuje denně? .............................................................................. 101 Co obsahuje kontrolní soubor? ..................................................................................... 101 Zjištění počet log switch ....................................................................................................... 102 Nové vlastnosti 12c ......................................................................................................... 103 Multitenant ............................................................................................................................ 103 Vytvoření pluggable databáze pomocí DBCA ...................................................................................103 Přesun datového souboru online .......................................................................................... 110 Informace o posledním přihlášení uživatele ....................................................................... 111 Vytvoření COMMON uživatele ........................................................................................... 112 Jak získat informace o stavu CDB a PDB ........................................................................... 113 Jsem připojený do kontejnéru? ..........................................................................................................113 Jaké exitují containers? ........................................................................................................ 114 Jaké existují PDB? .............................................................................................................................114 V jakém stavu jsou PDB? ..................................................................................................................115 Vytvoření local uživatele v PDB........................................................................................... 115 SQL*Loader Express ............................................................................................................ 116 Import ................................................................................................................................................117 Kontrola .............................................................................................................................................117 Identity columns .................................................................................................................... 118 In database row archiving .................................................................................................... 120 Založení tabulky.................................................................................................................................121 Zapnutí archivování na tabulce ..........................................................................................................121 Archivováni řádku .............................................................................................................................122 Změna viditelnosti na všechny řádky .................................................................................................122 Řadek změněn na viditelný ................................................................................................................123 Invisible column .................................................................................................................... 124 Založíme tabulku ...............................................................................................................................124 Přídáme neviditelný sloupec ..............................................................................................................124 Změna na visible ................................................................................................................................125 Obnova tabulky z RMANa (12c) ......................................................................................... 126 Tabulka ..............................................................................................................................................126 Flashback nelze použít .......................................................................................................................127 Obnova z RMANa .............................................................................................................................127 Vytvoření dočasné instance ...............................................................................................................127 Export tabulky z dočasné instance .....................................................................................................127 Import tabulky do původní databáze ..................................................................................................127 5|Page Odstranění dočasné instance ..............................................................................................................128 Kontrola .............................................................................................................................................128 Obnova tabulky do jiné pomocí RMAN ........................................................................ 128 Doporučení: .................................................................................................................... 129 Provozujete Vy nebo Vaši klienti databáze Oracle? .......................................................... 129 Dotazy: ................................................................................................................................... 129 Webináře: .............................................................................................................................. 129 Workshopy: ........................................................................................................................... 129 Jste DBA?............................................................................................................................... 129 Děkuji za registraci Právě jste se přihlásili o odběru elektronické knihy "Oracle DBA - examples from practice". Kniha volně navazuje na mou předešlou tištěnou verzi, ačkoli koncepce bude trochu odlišná. Kniha je psaná jako učební materiál, tedy budu zadávat příklady, které si samy můžete zkusit a v dalším dílu bude řešení ode mě, které nemusí být jediné a už vůbec nemusí být nejlepší, ale zcela funkční dle všech principů a za využití doporučených a osvědčených postupů. O vašem postupu můžeme diskutovat a rozebírat i dalsí alternativy. K tomu tu je mail, telefon nebo skype. Budete-li chtím, domluvte si se mou 1 hodinu konzultace zdarma po skype. Zároveň mě můžete psát své vlastní nápady a já je zkusím zahrnout do některého z dalších čísel. Předpokládám, když jste se k registraci rozhodli, víte něco i o mě, autorovi. Jmenuji se Tomáš Solař. S databázemi pracuji již dlouho a pracoval jsem na celé řadě projektů, ať v ČR nebo zahraničí. Mezi mé klienty patřili a PATŘÍ společnosti různého zaměření a různé velikosti. Více o tom je v referencích na www.Tomas-Solar.com nebo v mém životopisu, který si můžete ze stránek stáhnout. Důležité pro vás je fakt, že veškeré příklady budou pocházet z praxe, neboť jako Oracle DBA pracuji pro své klienty vzdáleně, dělám konzultace a školím. Svou odbornost mám podloženou certifikacemi OCP (mimo jiné jediný oceněný Oracle ACE u nás) a spokojenosti klientů, tedy i vás, je pro mě hlavním motivem. 6|Page Nebojte se napsat, zeptat nebo upozornit na cokoli. Umím naslouchat a váš podnět vezmu v potaz. Ted však pojďme zkoumat databáze a řešit problémy, se kterými se můžete setkat. Ještě jendou děkuji za registraci. Tomáš Solař Teorie – webináře Webináře zdarma Každé první pondělí v měsící je k dispozici webinář zdarma. Kompletní seznam webinářů je k dispozici na stránkách. Vždy začínají slovem FREE. Odkaz: Webináře - ONLINE Architektura databáze Oracle 12c Ebook je zaměřen na praktická cvičení, ale pro pochopení příkladů, proč se věci dělají zrovna tak a ne jinak, je potřeba znát i základy teorie – Architekturu databáze. Já jsem ji shrnul do 125 minutového webináře, který je k dispozici ONLINE na webu. Odkaz: Oracle DBA: Architektura databáze Oracle 12c Oracle DBA: STARTUP Co se děje při stratu databáze? Popis máte níže, ale pro ty, kteří by to rádi slyšeli, je k dispozici ONLINE webinář přímo na webu. Odkaz: Oracle DBA: STARTUP Než začneme pracovat na konkrétních příkladech a ponoříme se do tajů databáze Oracle, je potřeba si na začátek vysvětlit základní principy a funkčnost databáze. Je to nudná teorie, ale bez ní se neobejdeme a zároveň nám pomůže pochopit principy PROČ se děje zrovna tohle a PROČ zrovna teď. 7|Page Pro ilustraci zde použiji základní schéma. Schéma ukazuje různé stavy, do kterých se databáze může dostat, ať již chtěně, tedy na náš popud, nebo nechtěně, díky nějaké chybě. Obr. 1. Jednotlivé stavy databáze Předpokládejme, že máte nainstalovanou databázi. Postup, jak nainstalovat databázi jsem zveřejnil jako PDF na webu. Jsou tam verze jak pro Windows, tak pro Linux. Jak je vidět ze schématu, databáze se může nacházet v některém ze čtyř základních stavů Shutdown Jedná se stav, kdy je databáze zastavená. V takovém stavu je možné editovat parametry v textové verzi init souboru, také známého jako PFILE. Oproti němu existuje ještě verze binární a té se říká SPFILE. Oba tyto soubory se nachází pod tzv. ORACLE_HOME\database (Windows) nebo ORACLE_HOME/dbs (Linux). V mém případě je ORACLE_HOME= j:\app\oraclewin\product\12.1.0\dbhome_1\ Vypis adresáre j:\app\oraclewin\product\12.1.0\dbhome_1\database 02.10.2013 13:45 <DIR> . 8|Page 02.10.2013 13:45 <DIR> .. 01.10.2013 14:29 <DIR> archive 02.10.2013 13:45 02.10.2013 12:30 22.12.2005 05:07 31 744 oradba.exe 02.10.2013 13:47 301 oradim.log 02.10.2013 12:27 7 680 PWDorcl12c.ora 02.10.2013 13:52 3 584 SPFILEORCL.ORA 2 048 hc_orcl12c.dat 75 initorcl12c.ora Databáze se může nastarovat z jednoho nebo druhého. Rozdíl mezi oběma je v tom, že celá řada parametrů je dynamických, tedy editovatelných za běhu databáze, ale jen za předpokladu, že databáze je nastartovaná z SPFILE. !!! Pokud nemáte k dispozici žádný init file, nepřepnete databázi ze stavu shutdown do některého dalšího. Nomount Režim nomount je první, do kterého se databáze přepíná. Během tohoto procesu se čte init file. Kontroluje se nastavení paměti a parameter control_files, který odkazuje na uložení kontrolních souborů. j:\app\oraclewin\product\12.1.0\dbhome_1\database>sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production on Fri Oct 4 12:58:17 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SQL> startup nomount; ORACLE instance started. Total System Global Area 2572144640 bytes Fixed Size Variable Size Database Buffers Redo Buffers 2405952 bytes 671091136 bytes 1879048192 bytes 19599360 bytes 9|Page Je-li špatně nastavená pamět, databáze se nepřepne do nomount režimu a budete muset dělat změny v init souboru. Pakliže je nastavení v pořádku, pamět se alokuje a spustí se background procesy, které zajištují vlastní běh databázového enginu. Chcete-li měnit počet nebo umístění kontrolních souborů, případně obnovovat kontrolní soubor, tak se to dělá právě v nomount režimu. Mount Do režimu mount se databáze přepne, pokud jsou k dispozici všechny kontrolní soubory. Pokud databáze běží v nomount režimu, pak se do mount režimu přepnete pomocí příkazu ALTER. Jinak se musí použít příkaz startup mount. SQL> alter database mount; Database altered. Nebo ze zastavené databáze. SQL> startup mount; ORACLE instance started. Total System Global Area 2572144640 bytes Fixed Size Variable Size Database Buffers Redo Buffers 2405952 bytes 671091136 bytes 1879048192 bytes 19599360 bytes Database mounted. V kontrolním souboru jsou mimo jiné uložené informace o fyzickém umístění všech redo log souborů a datových souborů. V tomto režimu tedy můžete libovolně manipulovat se všemi soubory a to pomocí příkazů operačního systému, ale lepší je to přes utilitu RMAN (recovery manager). V režimu mount se provádí obnova systémových datových souborů a v případě, že databáze neběží v archivelog módu, tak i celé databáze. Je-li databáze v noarchivelog módu, tak v tomto režimu provádíme i zálohu databáze. Je-li databáze v ARCHIVELOG módu, tak část úkonu pro zálohování a obnovu můžeme dělat i za plného běhu, tedy v open stavu. 10 | P a g e Chybí-li některý ze systémových datových souborů nebo se nachází v nekonzistentním stavu, musíme provést jejich obnovu (restore, recover) a až poté můžeme databázi přepnout do open módu. Open Poslední stav do kterého se databáze přepne. SQL> alter database open; Database altered. Nebo přímo ze zastavené databáze. SQL> startup ORACLE instance started. Total System Global Area 2572144640 bytes Fixed Size Variable Size Database Buffers 2405952 bytes 671091136 bytes 1879048192 bytes Redo Buffers 19599360 bytes Database mounted. Database opened. Je to konečná fáze startu databáze a pokud neudáte žádný parametr při startu, tak se do něj databáze přepne automaticky. Je-li databáze ve stavu open, je přístupná uživatelům, ti se mohou připojit a pracovat s ní. Tohle je velmi stručné vysvětlení startu databáze. Zastavení se děje v opačném gardu. Konkrétně z Open --> Mount --> Nomount --> shutdown SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. Pokud budete chtít vědet více nebo podrobněji, neváhejte mě kontaktovat. 11 | P a g e V některém z dalších článků se podíváme na to, co se děje v databázi, když provádím změnu údajů, UPDATE. Administrace Kontrola serveru a zjištování důležitých informací První věc, co musíte udělat, je zorientovat se v prostředí ve kterém budete pracovat. U mě jako konzultanta to je nebytný krok, protože co klient, to jiné nastavení. Přesto máte vždy k dispozici utility operačního systému nebo dotazy v databázi. Operační systém Jestli se jedná o windows nebo linux je jasné hned na začátku, ale v případě linuxu nás zajimají další údaje. Verze OS - distribuce, architektura [root@oel5864b ~]# cat /proc/version Linux version 2.6.32-300.10.1.el5uek ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) #1 SMP Wed Feb 22 17:37:40 EST 2012 [root@oel5864b ~]# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch Distributor ID: EnterpriseEnterpriseServer Description: Enterprise Linux Enterprise Linux Server release 5.10 (Carthage) Release: 5.10 Codename: Carthage [root@oel5864b ~]# uname -mrs Linux 2.6.32-300.10.1.el5uek x86_64 [root@oel5864b ~]# cat /proc/sys/kernel/{ostype,osrelease,version} Linux 2.6.32-300.10.1.el5uek #1 SMP Wed Feb 22 17:37:40 EST 2012 12 | P a g e Hostname [root@oel5864b ~]# sysctl kernel.hostname kernel.hostname = oel5864b.localdomain [root@oel5864b ~]# hostname oel5864b.localdomain [root@oel5864b ~]# uname -n oel5864b.localdomain Je možné se podívat i do /etc/hosts [root@oel5864b ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 10.0.0.30 oel5864b.localdomain eol5864b Nebo /etc/sysconfig/network [root@oel5864b ~]# cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=yes HOSTNAME=oel5864b.localdomain Windows - příkaz hostname funguje i na OS Win z příkazového řádku. IP adresa [root@oel5864b ~]# ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 08:00:27:a4:41:f9 brd ff:ff:ff:ff:ff:ff inet 10.0.0.30/24 brd 10.0.0.255 scope global eth0 inet6 fe80::a00:27ff:fea4:41f9/64 scope link valid_lft forever preferred_lft forever Nebo 13 | P a g e [root@oel5864b ~]# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:A4:41:F9 inet addr:10.0.0.30 Mask:255.255.255.0 Bcast:10.0.0.255 inet6 addr: fe80::a00:27ff:fea4:41f9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:409626 errors:0 dropped:0 overruns:0 frame:0 TX packets:209155 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:612712065 (584.3 MiB) TX bytes:13997266 (13.3 MiB) Windows: Pro zjištění nastavení síťe se použije příkaz ipconfig. Databáze Běžící procesy Pro kontrolu běžících procesů použijeme příkaz ps. [root@oel5864b ~]# ps -ef | grep pmon oracle 3687 1 root 7499 7062 0 11:16 ? 00:00:00 ora_pmon_orcl12c 0 12:12 pts/2 00:00:00 grep pmon Nebo všechny oracle procesy, za předpokladu, že databáze běží pod uživatelem oracle. [root@oel5864b ~]# ps -ef | grep oracle oracle 3687 1 0 11:16 ? 00:00:00 ora_pmon_orcl12c oracle 3689 1 0 11:16 ? 00:00:01 ora_psp0_orcl12c oracle 3691 1 3 11:16 ? 00:01:55 ora_vktm_orcl12c oracle 3695 1 0 11:16 ? 00:00:00 ora_gen0_orcl12c oracle 3697 1 0 11:16 ? 00:00:00 ora_mman_orcl12c oracle 3701 1 0 11:16 ? 00:00:00 ora_diag_orcl12c oracle 3703 1 0 11:16 ? 00:00:00 ora_dbrm_orcl12c oracle 3705 1 0 11:16 ? 00:00:04 ora_dia0_orcl12c oracle 3707 1 0 11:16 ? 00:00:00 ora_dbw0_orcl12c oracle 3709 1 0 11:16 ? 00:00:00 ora_lgwr_orcl12c oracle 3711 1 0 11:16 ? 00:00:01 ora_ckpt_orcl12c 14 | P a g e oracle 3713 1 0 11:16 ? 00:00:00 ora_smon_orcl12c oracle 3715 1 0 11:16 ? 00:00:00 ora_reco_orcl12c oracle 3717 1 0 11:16 ? 00:00:00 ora_lreg_orcl12c oracle 3719 1 0 11:16 ? 00:00:10 ora_mmon_orcl12c oracle 3721 1 0 11:16 ? 00:00:05 ora_mmnl_orcl12c oracle 3723 1 0 11:16 ? 00:00:00 ora_d000_orcl12c oracle 3725 1 0 11:16 ? 00:00:00 ora_s000_orcl12c oracle 3738 1 0 11:17 ? 00:00:00 ora_tmon_orcl12c oracle 3740 1 0 11:17 ? 00:00:00 ora_tt00_orcl12c oracle 3742 1 0 11:17 ? 00:00:00 ora_smco_orcl12c oracle 3746 1 0 11:17 ? 00:00:00 ora_aqpc_orcl12c oracle 3750 1 0 11:17 ? 00:00:17 ora_p000_orcl12c oracle 3752 1 0 11:17 ? 00:00:23 ora_p001_orcl12c oracle 3754 1 0 11:17 ? 00:00:02 ora_p002_orcl12c oracle 3756 1 0 11:17 ? 00:00:06 ora_p003_orcl12c oracle 3758 1 0 11:17 ? 00:00:00 ora_qm02_orcl12c oracle 3762 1 0 11:17 ? 00:00:00 ora_q002_orcl12c oracle 3764 1 0 11:17 ? 00:00:00 ora_q003_orcl12c oracle 3798 1 0 11:18 ? 00:00:08 ora_cjq0_orcl12c oracle 7122 1 0 11:57 ? 00:00:00 ora_w000_orcl12c oracle 7330 1 0 12:00 ? 00:00:00 ora_w001_orcl12c oracle 7380 1 0 12:05 ? 00:00:00 ora_w002_orcl12c oracle 7384 1 0 12:05 ? 00:00:00 ora_w003_orcl12c oracle 7387 1 0 12:05 ? 00:00:00 ora_w004_orcl12c root 7495 7062 0 12:11 pts/2 00:00:00 grep oracle Instalované databáze [root@oel5864b ~]# cat /etc/oratab .. # Entries are of the form: # $ORACLE_SID:$ORACLE_HOME:<N|Y>: # # The first and second fields are the system identifier and home 15 | P a g e # directory of the database respectively. indicates The third field # to the dbstart utility that the database should , "Y", or should not, # "N", be brought up at system boot time. # # Multiple entries with the same $ORACLE_SID are not allowed. # # orcl12c:/u01/app/oracle/product/12.1.0/dbhome_1:N Windows Instalové služby zkontrolujete přímo v záložce služby. Nastavení uživatele Oracle Skupiny [root@oel5864b ~]# cat /etc/group 16 | P a g e .. oinstall:x:54321: dba:x:54322:oracle Pod Oracle [oracle@oel5864b ~]$ id uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba) Windows ora_dba skupina Kontrola listeneru/tnsnames.ora listener.ora [oracle@oel5864b ~]$ which lsnrctl /u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl Databáze je registrovana v listeneru. [oracle@oel5864b admin]$ lsnrctl service LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 16-OCT-2013 14:34:41 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) Services Summary... Service "orcl12c.localdomain" has 1 instance(s). Instance "orcl12c", status READY, has 1 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 state:ready LOCAL SERVER Service "orcl12cXDB.localdomain" has 1 instance(s). Instance "orcl12c", status READY, has 1 handler(s) for this service... 17 | P a g e Handler(s): "D000" established:0 refused:0 current:0 max:1022 state:ready DISPATCHER <machine: oel5864b.localdomain, pid: 3827> (ADDRESS=(PROTOCOL=tcp)(HOST=oel5864b.localdomain)(PORT=42424)) Service "pdborcl.localdomain" has 1 instance(s). Instance "orcl12c", status READY, has 1 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 state:ready LOCAL SERVER The command completed successfully tnsname.ora [oracle@oel5864b admin]$ tnsping orcl12c TNS Ping Utility for Linux: Version 12.1.0.1.0 - Production on 16-OCT-2013 14:32:32 Copyright (c) 1997, 2013, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oel5864b.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl12c.localdomain))) OK (0 msec) Databáze má vytvořený alias v tnsnames.ora Připojení do databáze funguje. [oracle@oel5864b admin]$ sqlplus system@orcl12c 18 | P a g e SQL*Plus: Release 12.1.0.1.0 Production on Wed Oct 16 14:37:41 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: Last Successful login time: Wed Oct 16 2013 14:37:33 +02:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options Nastavení prostředí oraenv [oracle@oel5864b ~]$ . oraenv ORACLE_SID = [oracle] ? orcl12c The Oracle base has been set to /u01/app/oracle nebo druhý zápis, který se hodi do scriptů [oracle@oel5864b ~]$ export ORACLE_SID=orcl12c [oracle@oel5864b ~]$ export ORAENV_ASK=NO [oracle@oel5864b ~]$ . oraenv The Oracle base remains unchanged with value /u01/app/oracle Nastavení profilu uživatele. Je dobrým zvykem nastavit si prostředí pro uživatele Oracle hned po jeho přihlášení. Běží-li na serveru pouze jedna databáze, stačí spustit rovnou SQL*Plus, aniž byste museli nastavovat proměnné prostředí. V Linuxu, tedy v distribuci založené na Red Hat linuxu, vám k tomu poslouží skript .bash_profile. Tento soubor je uložený v domovském adresáři uživatele. Je spouštěn hned po jeho přihlášení, proto se zde nastavují veškeré cesty, proměnné, limity atd. Z výpisu souboru vidíte, co vše je potřeba nastavit. Proměnné ORACLE_SID a ORACLE_HOME jsou nutné, ale je doporučeno nastavit i ORACLE_BASE, kde ORACLE_SID udává jméno instance. ORACLE_HOME 19 | P a g e nastavuje domovský adresář, kde je nainstalovaný software Oracle, a ORACLE_BASE udává základní (kořenový) adresář pro instalaci dalších produktů. [oracle@oel64 ~]$ pwd /home/oracle [oracle@oel64 ~]$ ls -la total 40 drwx------. 4 oracle oinstall 4096 Nov 7 10:18 . drwxr-xr-x. 3 root 5 12:59 .. root -rw-------. 1 oracle oinstall 4096 Nov 123 Nov 6 13:54 .bash_history -rw-r--r--. 1 oracle oinstall 18 Dec 20 2012 .bash_logout -rw-r--r--. 1 oracle oinstall 176 Dec 20 2012 .bash_profile -rw-r--r--. 1 oracle oinstall 124 Dec 20 2012 .bashrc drwxr-xr-x. 2 oracle oinstall 4096 Nov 20 2010 .gnome2 -rw-r--r--. 1 oracle oinstall 121 Jul 8 12:59 .kshrc drwxr-xr-x. 4 oracle oinstall 4096 Nov 4 19:20 .mozilla -rw-------. 1 oracle oinstall 7 10:18 .Xauthority 63 Nov Upravte si tedy soubor .bash_profile podle vaší instalace. [oracle@oel64 ~]$ cat .bash_profile # Nastaveni Oracle export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=oel64.localdomain export ORACLE_UNQNAME=orcl12c export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1 export ORACLE_SID=orcl12c export PATH=/usr/sbin:$PATH export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib 20 | P a g e # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH Po přihlášení na server máte ihned nastaveno prostředí. login as: oracle Access denied [email protected]'s password: Last login: Thu Nov 7 10:18:54 2013 from akcent.ok.cz [oracle@oel64 ~]$ env | grep ORA ORACLE_UNQNAME=orcl12c ORACLE_SID=orcl12c ORACLE_BASE=/u01/app/oracle ORACLE_HOSTNAME=oel64.localdomain ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1 Založení databáze ručně (bez DBCA) Založení databáze ručně je sled 14-ti kroků, které jsou popsány v dokumentaci zde Vytvoření init souboru Init soubor, jak jsme si ukazovali dříve, je zákládní konfigurační soubor databáze, který může mít na 300 různých parametrů. Chceme-li vytvořit init sobor ručně, musíme zde zadat aspoň základní parametry. 21 | P a g e Jaké základní parametry je potřeba zadat se můžete podívat přímo do vašeho $ORACLE_HOME/dbs, kde je sample init soubor. [oracle@oel64 dbs]$ pwd /u01/app/oracle/product/12.1.0/dbhome_1/dbs [oracle@oel64 dbs]$ ls -ltr init.ora -rw-r--r--. 1 oracle oinstall 2992 Feb 3 2012 init.ora Nebo do dokumentace zde. Můj upravený vypadá třeba takhle. [oracle@oel64 dbs]$ pwd /u01/app/oracle/product/12.1.0/dbhome_1/dbs [oracle@oel64 dbs]$ cat initorcl12cm.ora db_name='orcl12cm' memory_target=1G processes = 150 db_block_size=8192 db_domain='' db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' db_recovery_file_dest_size=2G diagnostic_dest='/u01/app/oracle' dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)' open_cursors=300 remote_login_passwordfile='EXCLUSIVE' undo_tablespace='UNDOTBS1' control_files='/oradata/orcl12cm/control01.ctl','/u01/app/oracle/ fast_recovery_area/orcl12cm/control02.ctl' compatible ='12.0.0' Nastavte si prostředí. [oracle@oel64 dbs]$ export ORACLE_UNQNAME=orcl12cm [oracle@oel64 dbs]$ export ORACLE_SID=orcl12cm [oracle@oel64 dbs]$ env | grep ORA ORACLE_UNQNAME=orcl12cm ORACLE_SID=orcl12cm 22 | P a g e ORACLE_BASE=/u01/app/oracle ORACLE_HOSTNAME=oel64.localdomain ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1 Nyní můžete nastartovat instanci. [oracle@oel64 dbs]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 11:22:37 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SQL> CREATE SPFILE FROM PFILE='/u01/app/oracle/product/12.1.0/dbhome_1/dbs/initorcl12cm.o ra'; File created. SQL> startup nomount; ORACLE instance started. Total System Global Area 1068937216 bytes Fixed Size 2296576 bytes Variable Size 671089920 bytes Database Buffers 390070272 bytes Redo Buffers 5480448 bytes Před vlastním založení databáze je potřeba ještě vztvořit adresáře na OS. [oracle@oel64 orcl12c]$ mkdir /oradata/orcl12cm/ [oracle@oel64 orcl12c]$ mkdir /u01/app/oracle/fast_recovery_area/orcl12cm/ Založení databáze CREATE DATABASE SQL> CREATE DATABASE orcl12cm 23 | P a g e 2 USER SYS IDENTIFIED BY oracle_4U 3 USER SYSTEM IDENTIFIED BY oracle_4U 4 LOGFILE GROUP 1 ('/oradata/orcl12cm/redo01a.log','/oradata/orcl12cm/redo01b.log') 5 SIZE 100M BLOCKSIZE 512, 6 GROUP 2 ('/oradata/orcl12cm/redo02a.log','/oradata/orcl12cm/redo02b.log') 7 SIZE 100M BLOCKSIZE 512, 8 GROUP 3 ('/oradata/orcl12cm/redo03a.log','/oradata/orcl12cm/redo03b.log') 9 SIZE 100M BLOCKSIZE 512 10 MAXLOGHISTORY 1 11 MAXLOGFILES 16 12 MAXLOGMEMBERS 3 13 MAXDATAFILES 1024 14 CHARACTER SET AL32UTF8 15 NATIONAL CHARACTER SET AL16UTF16 16 EXTENT MANAGEMENT LOCAL 17 DATAFILE '/oradata/orcl12cm/system01.dbf' SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED 18 19 SYSAUX DATAFILE '/oradata/orcl12cm/sysaux01.dbf' 20 SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED 21 DEFAULT TABLESPACE deftbs 22 DATAFILE '/oradata/orcl12cm/deftbs01.dbf' 23 SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED 24 25 DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/oradata/orcl12cm/temp01.dbf' 26 SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED 27 28 UNDO TABLESPACE undotbs1 DATAFILE '/oradata/orcl12cm/undotbs01.dbf' 29 SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED 30 USER_DATA TABLESPACE usertbs 24 | P a g e 31 DATAFILE '/oradata/orcl12cm/usertbs01.dbf' 32 SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED; Database created. Databáze již běží, ale je potřeba ješte vytvoři data dictionary views. SQL> @?/rdbms/admin/catalog.sql SQL> @?/rdbms/admin/catproc.sql V této chvili je databáze hotová, záleží jen na tom, zda-li chcete doinstalovat nejaké dodatečné komponenty nebo nakonfigurovat EM Express. Doporučuji udělat backup a nastavit databázi tak, aby se automatický spouštěla po restartu serveru a případně dodělat password file, abyste s emohli vzdáleně připojovat jako SYSDBA. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 1068937216 bytes Fixed Size 2296576 bytes Variable Size 671089920 bytes Database Buffers 390070272 bytes Redo Buffers 5480448 bytes Database mounted. Database opened. SQL> select name from v$database; NAME --------ORCL12CM 1 row selected. 25 | P a g e Nastavení EM express Databáze 12c přináší nový koncept i v ovládání. Nadále již není k dispozici EM console, ale nový EM Express. I jeho konfigurace se již neděla pře utilitu emctl, ale přímo v databázi. Kontrola portu. SQL> select dbms_xdb_config.gethttpsport() from dual; DBMS_XDB_CONFIG.GETHTTPSPORT() -----------------------------1 row selected. SQL> select dbms_xdb_config.gethttpport() from dual; DBMS_XDB_CONFIG.GETHTTPSPORT() -----------------------------1 row selected. Nastavení portu. SQL> exec DBMS_XDB_CONFIG.SETHTTPPORT(5500); PL/SQL procedure successfully completed. SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5501); PL/SQL procedure successfully completed. Po nastavení se již porty zobrazují správně. Jestli běží listener na standartním portu 1521, je možné se do EM již přihlásit. SQL> select dbms_xdb_config.gethttpsport() from dual; DBMS_XDB_CONFIG.GETHTTPSPORT() ------------------------------ 26 | P a g e 5501 1 row selected. SQL> select dbms_xdb_config.gethttpport() from dual; DBMS_XDB_CONFIG.GETHTTPPORT() ----------------------------5500 1 row selected. Úvodní obrazovka EM Express Registrace DB do listeneru Stavající nastavení listeru je dynamické, to znamená, že listener si databázi zaregistruje až v okamžiku, že je nastartovana. V opačném případě o ní nebude vědět. To může činit problémy při přístupu do zastavené databáze přes connect string (@alias). [oracle@oel64 admin]$ cat listener.ora # listener.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.or a # Generated by Oracle configuration tools. 27 | P a g e LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = oel64.localdomain)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (service_name = orcl12c.localdomain) (sid_name = orcl12c) ) ) A zároveň jde vidět, že listener ví, jak o SID, tak o service name. [oracle@oel64 admin]$ lsnrctl status LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 07-NOV-2013 14:18:53 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER -----------------------Alias LISTENER Version Production TNSLSNR for Linux: Version 12.1.0.1.0 - Start Date 07-NOV-2013 13:51:00 Uptime 0 days 0 hr. 27 min. 52 sec 28 | P a g e Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.or a Listener Log File /u01/app/oracle/diag/tnslsnr/oel64/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel64.localdomain)(PORT =1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oel64.localdomain)(POR T=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/orcl 12c/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "orcl12c" has 1 instance(s). Instance "orcl12c", status UNKNOWN, has 1 handler(s) for this service... Service "orcl12c.localdomain" has 1 instance(s). Instance "orcl12c", status READY, has 1 handler(s) for this service... Service "orcl12cXDB.localdomain" has 1 instance(s). Instance "orcl12c", status READY, has 1 handler(s) for this service... The command completed successfully Soubor tnsnames.ora Soubor tnsnames.ora je klientský konfigurační soubor, do kterého si zapisujete aliasy na jednotlivé databáze. Tento soubor má smysl v tom případě, že se na databázi odkazujete přes connect string. V případě, že uživatele oveřujete pomocí OS, jako v tomto případě. [oracle@oel64 dbs]$ sqlplus / as sysdba 29 | P a g e SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 13:56:17 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> Tak tnsnames.ora nepotřebujete. Zde stačí, že přihlášený uživatel je členem skupiny DBA. [oracle@oel64 dbs]$ id uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 Jakmile se však budete chtít přihlásit přes listener, je potřeba, abyste měli daný alias vytvořený, v opačném případě se budete muset hlasit přes tzv. Easy connect string. V takovém případě musíte znát hostname, service name (nebo SID) a port listeneru. [oracle@oel64 dbs]$ hostname oel64.localdomain SQL> show parameter name NAME TYPE VALUE ------------------------------------ ----------- ----------------------------db_name string orcl12c db_unique_name string orcl12c global_names boolean FALSE instance_name string orcl12c service_names orcl12c.localdomain string 30 | P a g e Jedno z možných připojení je. [oracle@oel64 admin]$ sqlplus [email protected]:1521/orcl12c A zápis do tnsname.ora by měl vypadat nějak takhle. [oracle@oel64 admin]$ cat tnsnames.ora # tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.or a # Generated by Oracle configuration tools. ORCL12C = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oel64.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl12c.localdomain) ) ) Oveřit daný záznam můžete pře utilitu tnsping. [oracle@oel64 admin]$ tnsping ORCL12C TNS Ping Utility for Linux: Version 12.1.0.1.0 - Production on 07-NOV-2013 14:22:20 Copyright (c) 1997, 2013, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias 31 | P a g e Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oel64.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl12c.localdomain))) OK (0 msec) Připojení do sqlplus přes alias také funguje. [oracle@oel64 admin]$ sqlplus system@orcl12c SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 14:22:33 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> Vytvoření password file K čemu vlastně je password file? Tento soubor slouží k oveření uživatelu s oprávněním SYSDBA, kteří se chtějí připojit vzdáleně, tedy přes alias. Jedná se o zápis s @orcl12c. Normální uživatel se přihlásí. [oracle@oel64 admin]$ sqlplus system@orcl12c SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 14:31:42 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: 32 | P a g e Last Successful login time: Thu Nov 07 2013 14:28:45 +01:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> Ale uživateli SYS, který má oprávnění SYSDBA to není povoleno. [oracle@oel64 dbs]$ sqlplus sys@orcl12c as sysdba SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 14:35:41 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: ERROR: ORA-01017: invalid username/password; logon denied Na vině je chybějící password file v adresáři $ORACLE_HOME/dbs /u01/app/oracle/product/12.1.0/dbhome_1/dbs [oracle@oel64 dbs]$ ls -ltr total 40 -rw-r--r--. 1 oracle oinstall 2992 Feb 3 2012 init.ora -rw-r-----. 1 oracle oinstall 24 Nov 5 14:09 lkORCL12C -rw-r--r--. 1 oracle oinstall 466 Nov -rw-r-----. 1 oracle oinstall 24 Nov 7 11:19 initorcl12cm.ora 7 11:36 lkORCL12CM -rw-rw----. 1 oracle oinstall 1544 Nov 7 12:11 hc_orcl12cm.dat -rw-r-----. 1 oracle oinstall 2560 Nov spfileorcl12cm.ora 7 12:13 -rw-rw----. 1 oracle oinstall 1544 Nov 7 13:52 hc_orcl12c.dat -rw-r-----. 1 oracle oinstall 3584 Nov 7 14:03 spfileorcl12c.ora Soubor se vytvoří utilitou orapw. 33 | P a g e orapwd file=orapw<SID> password=<sys pwd> [oracle@oel64 dbs]$ cd $ORACLE_HOME/dbs [oracle@oel64 dbs]$ orapwd file=orapworcl12c password=oracle_4U [oracle@oel64 dbs]$ ls -ltr orapw* -rw-r-----. 1 oracle oinstall 7680 Nov 5 14:14 orapworcl12c.bkp -rw-r-----. 1 oracle oinstall 7680 Nov 7 14:38 orapworcl12c [oracle@oel64 dbs]$ sqlplus sys@orcl12c as sysdba SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 14:39:20 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> Nastavení promptu v OS Jako DBA nebo konzultanti pracujete na ruzných serverech a dost často máte otevřené více jak jedno okno v putty na ruzné servery. Abyste se v tom neztratili, tak je dobre upravit si prompt OS, ať vidíte rovnou, kam jste připojeni. Dané nastavení se obvykle dělá přes soubor .bashrc, který je v domovském adresáři každého uživatele. [oracle@oel64 ~]$ ls -la total 48 drwx------. 4 oracle oinstall 4096 Nov 7 14:26 . drwxr-xr-x. 3 root 5 12:59 .. root -rw-------. 1 oracle oinstall 4096 Nov 903 Nov 7 12:29 .bash_history 34 | P a g e -rw-r--r--. 1 oracle oinstall 18 Dec 20 2012 .bash_logout -rw-r--r--. 1 oracle oinstall 598 Nov -rw-r--r--. 1 oracle oinstall 124 Dec 20 2012 .bashrc drwxr-xr-x. 2 oracle oinstall 4096 Nov 20 2010 .gnome2 -rw-r--r--. 1 oracle oinstall 121 Jul 7 10:47 .bash_profile 8 12:59 .kshrc drwxr-xr-x. 4 oracle oinstall 4096 Nov 4 19:20 .mozilla -rw-------. 1 oracle oinstall 5974 Nov 7 14:26 .viminfo -rw-------. 1 oracle oinstall 7 13:47 .Xauthority 189 Nov Stačí do něj pak přidat tento řetězec. [oracle@oel64 ~]$ cat .bashrc #Nastaveni promptu PS1='[\h:\u:${ORACLE_SID}]$ ' # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions Po přihlášení pak vidíte takový prompt. login as: oracle oracle@...'s password: Last login: Thu Nov 7 13:47:45 2013 from tomas-solar.cz [oel64:oracle:orcl12c]$ Variací je celá řada, záleží jen na vás, jak si výpis upravíte. V mém případě je první výpis hostname, nasledně uživatel a nakonec SID databáze. Více třeba zde. Nastavení promptu v Sqlplus. Znáte to, přihlásíte se do nějaké databáze, ale nejste si jistí do které. Proto, než spustíte nějaký příkay, je potřeba oveřit, že jste na správné instanci. Dá se to poměrně jednoduše přes SQL dotaz, ale jsou to přece jen písmena navíc. 35 | P a g e SQL> select name from v$database; NAME --------ORCL12C SQL> show user USER is "SYS" Další možností je, nastavit si SQL promt tak, aby vám nestále ukazoval, kde jste přihlášení. Pod jakým uživatelem a do jaké databáze. SQL> SET SQLPROMPT '&_USER.@&_CONNECT_IDENTIFIER.>' SYS@orcl12c> To je pěkné, ale jakmile z Sqlplus vyskočíte, musíte si promt nastavit znovu. Existuje více možností jak změnu nastavit permanentně a to buď přes soubor glogin z adresáře $ORACLE_HOME/sqlplus/admin nebo pomocí souboru login.sql z vašeho domovského adresáře. Při spuštěni sqlplus se nejdříve čte soubor glogin.sql, pak se načítá login.sql z domovského adresáře, a není-li zde, pak z aktuálního adresáře. [oel64:oracle:orcl12c]$ pwd /home/oracle [oel64:oracle:orcl12c]$ cat login.sql SET SQLPROMPT '&_USER.@&_CONNECT_IDENTIFIER.>' Změny se projeví buď po opětovném přihlášení nebo načtení prostředí, jako v mém případě. [oel64:oracle:orcl12c]$ . ./.bashrc [oel64:oracle:orcl12c]$ sqlplus system/oracle_4U@orcl12c SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 17:31:23 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Last Successful login time: Thu Nov 07 2013 14:31:45 +01:00 36 | P a g e Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SYSTEM@orcl12c> Vytvoření aliasu pro rychlé spuštění Sqlplus Alias se hodí v případě často používaných příkazů. V našem případě, když se hlasím jako SYS, musím psát poměrně dlouhý text. [oel64:oracle:orcl12c]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 17:45:09 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SYS@orcl12c> Tak proč si nevytvořit nějakou užitečnou zkratku, jako například sqlp. Aktuální nastavení aliasu je následovné. [oel64:oracle:orcl12c]$ alias alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias vi='vim' 37 | P a g e alias which='alias | /usr/bin/which --tty-only --read-alias -show-dot --show-tilde' Provedu nastavení a otestuji. [oel64:oracle:orcl12c]$ alias sqlp='sqlplus "/ as sysdba"' [oel64:oracle:orcl12c]$ sqlp SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 17:48:35 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SYS@orcl12c> Velikost databáze Jak jednoduše zjistit velikost databáze? Je potřeba sečíst dataové a temp soubory. SQL> select (select sum(bytes)/1024/1024 from dba_data_files)+ (select sum(bytes)/1024/1024 from dba_temp_files) "Size in MB" from dual; Size in MB ---------213585.625 Jak zjistit SCN číslo? SQL> select name, open_mode, created, current_scn from v$database; NAME OPEN_MODE CREATED CURRENT_SCN --------- -------------------- --------- ----------- 38 | P a g e ORCL12C READ WRITE 12-NOV-13 2430363 Vytvoření tablespace (TOOLS) Než začnete tablespace vytvářet, je dobré, podívat se jaké tablespace máte již založené a kde. K tomu vám může pomoci EM a nebo se to dá zjistit přes sqlplus. Úvoní obrazovka EM Vytvoření tablespace z sqlplus Umístění datových souborů. SYS@orcl12c>col tablespace_name format a16; col file_name format a36; select tablespace_name, file_name, bytes from dba_data_files; TABLESPACE_NAME FILE_NAME BYTES ---------------- ------------------------------------ ---------USERS /oradata/orcl12c/users01.dbf 5242880 UNDOTBS1 /oradata/orcl12c/undotbs01.dbf 78643200 SYSAUX /oradata/orcl12c/sysaux01.dbf 744488960 SYSTEM /oradata/orcl12c/system01.dbf 817889280 EXAMPLE /oradata/orcl12c/example01.dbf 338821120 Když je potřeba zjistit přesné informace o konkretním tablespacu. SYS@orcl12c>desc dba_tablespaces Name Null? Type ----------------------------------------- -------- --------------------------TABLESPACE_NAME NOT NULL VARCHAR2(30) BLOCK_SIZE NOT NULL NUMBER 39 | P a g e INITIAL_EXTENT NUMBER NEXT_EXTENT NUMBER MIN_EXTENTS NOT NULL NUMBER MAX_EXTENTS NUMBER MAX_SIZE NUMBER PCT_INCREASE NUMBER MIN_EXTLEN NUMBER STATUS VARCHAR2(9) CONTENTS VARCHAR2(9) LOGGING VARCHAR2(9) FORCE_LOGGING VARCHAR2(3) EXTENT_MANAGEMENT VARCHAR2(10) ALLOCATION_TYPE VARCHAR2(9) PLUGGED_IN VARCHAR2(3) SEGMENT_SPACE_MANAGEMENT VARCHAR2(6) DEF_TAB_COMPRESSION VARCHAR2(8) RETENTION VARCHAR2(11) BIGFILE VARCHAR2(3) PREDICATE_EVALUATION VARCHAR2(7) ENCRYPTED VARCHAR2(3) COMPRESS_FOR VARCHAR2(30) Vytvoření tablespace pomocí příkazu CREATE.. SYS@orcl12c>CREATE SMALLFILE TABLESPACE "TOOLS" DATAFILE 'tool01' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 1000M LOGGING DEFAULT NOCOMPRESS ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO; ALTER DATABASE DEFAULT TABLESPACE "TOOLS"; Tablespace created. 40 | P a g e Database altered. SYS@orcl12c> Vytvoření tablespace pomocí EM Action Create Pojmenování tablespace. 41 | P a g e Určení datového souboru. 42 | P a g e Určení velikosti bloku. Nastavení logování. Nastavení alokace segmentů. 43 | P a g e Celý wizard vygeneroval tento statement. Vytvoření uživatele Opět jako v případě tablespace. K vytvoření uživatele můžete použít EM a nebo rychlejší cestu přes sqlplus. Při zakládání uživatele musíte zadat jako minimum jméno, heslo, profil, defaultní tablespace a temp tablespace. SYS@orcl12c>create user "TOM" identified by ****** profile "DEFAULT" account unlock default tablespace "TOOLS" temporary tablespace "TEMP"; User created. SYS@orcl12c> Dále musíte uživateli přiřadit oprávnění alespoň create session. Pokud tak neučiníte, daný uživatel se nepřihlásí. [oel64:oracle:orcl12c]$ sqlplus tom@orcl12c SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 19:21:51 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: ERROR: ORA-01045: user TOM lacks CREATE SESSION privilege; logon denied Práva se nastavují pomocí příkazu GRANT, později s ním budemem pracovat více. SYS@orcl12c>grant CREATE SESSION to "TOM"; Grant succeeded. Zároveň je potřeba ještě přiřadit uživateli nějakou kvótu na jeho tablespace, aby mohl vytvářet objekty. To se dělá příkazem ALTER USER. SYS@orcl12c>alter user "TOM" quota 200M on "TOOLS"; 44 | P a g e User altered. Teď je vše v pořádku a uživatel se přihlásí. [oel64:oracle:orcl12c]$ sqlplus tom@orcl12c SQL*Plus: Release 12.1.0.1.0 Production on Thu Nov 7 19:38:57 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options TOM@orcl12c> Přepnutí do archívního módu Kontrola destinace pro archívní logy - FRA SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 10 Current log sequence 12 SQL> show parameter recovery NAME TYPE VALUE ------------------------------------ ----------- ----------------------------db_recovery_file_dest string +FRA db_recovery_file_dest_size big integer 10G 45 | P a g e recovery_parallelism integer 0 Nastavení destinace je do FRA, což říká parameter USE_DB_RECOVERY_FILE_DEST. To to je defaulní konfigurace. V případě, že toto nastavení nemáte, je potřeba to nastavit pomocí příkazů. alter system set log_archive_dest_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST'; alter system set log_archive_dest_state_1 = enable; A zkontrolovat třeba přes select. SQL> SELECT dest_name,destination FROM v$archive_dest WHERE destination is not null; 2 3 DEST_NAME ------------------------------------------------------------------------------DESTINATION ------------------------------------------------------------------------------LOG_ARCHIVE_DEST_1 USE_DB_RECOVERY_FILE_DEST Přepnutí v mount režimu SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 1837244416 bytes Fixed Size Variable Size Database Buffers 2289544 bytes 553648248 bytes 1275068416 bytes 46 | P a g e Redo Buffers 6238208 bytes Database mounted. SQL> alter database archivelog; Database altered. SQL> alter database open; Database altered. SQL> Kontrola SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 10 Next log sequence to archive 12 Current log sequence 12 SQL> select log_mode from v$database; LOG_MODE -----------ARCHIVELOG SQL> alter system switch logfile; System altered. SQL> select name from v$archived_log order by completion_time; NAME 47 | P a g e ------------------------------------------------------------------------------+FRA/ORCL12C/ARCHIVELOG/2013_11_12/thread_1_seq_12.256.831302985 Nastavební FRA FRA neboli fast recovery area, dříve flash recovery area je oblast kam se ukládají veškeré zálohy – backup sety, image kopie, archívní logy, flashback logy, onlie redo logy, controlni soubor. Není nutné tuto oblast nastavovat, ale práce s ní je daleko jednodušší. I když budete mít nastaveno FRA, můžete stále databázi říci, aby archívní soubory ukládala jinde. Nové umístění se nastavuje pře parametry log_archive_dest a log_archive_duplex_dest. My však chceme používat FRA, takže tyto parametry musí být vypnuté. Kontrola SYS@orcl12c>show parameter arch NAME TYPE VALUE ------------------------------------ ----------- ----------------------------log_archive_dest string log_archive_duplex_dest string SQL> show parameter recovery NAME TYPE VALUE ------------------------------------ ----------- ----------------------------db_recovery_file_dest /u01/app/oracle/fast_recovery_ string area db_recovery_file_dest_size big integer 4800M recovery_parallelism integer 0 V případě, že bysme chtěli nějaký parametr vypnout, použili by se tyto příkazy. alter system set log_archive_duplex_dest = ''; alter system set log_archive_dest = ''; 48 | P a g e Nastavení Změna nebo nastavení se děje stejnými příkazy. SQL> alter system set db_recovery_file_dest = '/u02/fra'; System altered. SQL> alter system set db_recovery_file_dest_size = 10G; System altered. SQL> show parameter reco NAME TYPE VALUE ------------------------------------ ----------- ----------------------------control_file_record_keep_time integer 7 db_recovery_file_dest string /u02/fra db_recovery_file_dest_size big integer 10G db_unrecoverable_scn_tracking boolean TRUE recovery_parallelism integer 0 Úplně stejně se nastavuje FRA i když používáte ASM. Specifikujete pouze diskovou skupinu. SQL> show parameter recovery NAME TYPE VALUE ------------------------------------ ----------- ----------------------------db_recovery_file_dest string +DATA db_recovery_file_dest_size big integer 4800M recovery_parallelism integer 0 SQL> alter system set db_recovery_file_dest = '+FRA'; 49 | P a g e System altered. SQL> SQL> SQL> SQL> alter system set db_recovery_file_dest_size = 10G; System altered. Init soubor (Spfile vs pfile) SYS@orcl12c>show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ---------------spfile string /u01/app/oracle/product/12.1.0/dbhome_1/dbs/spfileorcl12c.ora SYS@orcl12c>create pfile from spfile; File created. [oel64:oracle:orcl12c]$ cd $ORACLE_HOME/dbs [oel64:oracle:orcl12c]$ pwd /u01/app/oracle/product/12.1.0/dbhome_1/dbs [oel64:oracle:orcl12c]$ ls -ltr init* -rw-r--r--. 1 oracle oinstall 2992 Feb -rw-r--r--. 1 oracle oinstall 3 2012 init.ora 977 Nov 12 12:11 initorcl12c.ora Soubor init.ora je defaultní a druhý soubor je náš, právě vytvořený. Parametry, které začínají jménem instance jsou nastaveny přímo z paměti na hodnotu, kterou měli práve v okamžiku spuštění příkazu CREATE. Je to díky tomu, že databáze si spravuje pamět automaticky. [oel64:oracle:orcl12c]$ cat initorcl12c.ora orcl12c.__data_transfer_cache_size=0 orcl12c.__db_cache_size=637534208 orcl12c.__java_pool_size=16777216 50 | P a g e orcl12c.__large_pool_size=33554432 orcl12c.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment orcl12c.__pga_aggregate_target=654311424 orcl12c.__sga_target=973078528 orcl12c.__shared_io_pool_size=50331648 orcl12c.__shared_pool_size=218103808 orcl12c.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/orcl12c/adump' *.audit_trail='db' *.compatible='12.1.0.0.0' *.control_files='/oradata/orcl12c/control01.ctl','/u01/app/oracle /fast_recovery_area/orcl12c/control02.ctl' *.db_block_size=8192 *.db_domain='localdomain' *.db_name='orcl12c' *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' *.db_recovery_file_dest_size=4800m *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=orcl12cXDB)' *.memory_target=1546m *.open_cursors=300 *.processes=300 *.remote_login_passwordfile='EXCLUSIVE' *.undo_tablespace='UNDOTBS1' Kontrolní soubor Zjištění informací Pokud chcete zjistit nějaké informace o kontrolním souboru. Můžete použít toto view v$controlfile_record_section. Částečný výpis typů. SQL> select distinct type from v$controlfile_record_section; TYPE ---------------------------- 51 | P a g e FILENAME TABLESPACE RMAN CONFIGURATION BACKUP CORRUPTION PROXY COPY FLASHBACK LOG REMOVABLE RECOVERY FILES AUXILIARY DATAFILE COPY DATAFILE RMAN STATUS THREAD INSTANCE NAME MAPPING GUARANTEED RESTORE POINT ACM OPERATION DATABASE DATAFILE COPY BACKUP DATAFILE RECOVERY DESTINATION DATAFILE HISTORY PDB RECORD COPY CORRUPTION DATABASE INCARNATION STANDBY DATABASE MATRIX REDO LOG TEMPORARY FILENAME BACKUP SET BACKUP REDOLOG BACKUP SPFILE RESTORE POINT DATABASE BLOCK CORRUPTION Další užitečné view je v$database; SQL> select name, open_mode, created, current_scn from v$database; NAME OPEN_MODE CREATED CURRENT_SCN 52 | P a g e --------- -------------------- --------- ----------ORCL12C READ WRITE 05-NOV-13 1931306 Přídání kontrolního souboru $ strings spfileorcl12c.ora | grep -i control_files *.control_files='/oradata/orcl12c/control01.ctl','/u01/app/oracle /fast_recovery_area/orcl12c/control02.ctl' SQL> show parameter spfile; NAME TYPE VALUE ------------------------------------ ----------- ----------------------------spfile string /u01/app/oracle/product/12.1.0/dbhome_1/dbs/spfileorcl12c.ora Přidání třetího kontrolní souboru. SQL> alter system set control_files='/oradata/orcl12c/control01.ctl','/u01/app/oracle/f ast_recovery_area/orcl12c/control02.ctl','/u02/fra/control03.ctl' scope=spfile; System altered. SQL> shutdown immediate; [oel64:oracle:orcl12c]$ cp /oradata/orcl12c/control01.ctl /u02/fra/control03.ctl SQL> startup ORACLE instance started. Total System Global Area 1620115456 bytes Fixed Size Variable Size Database Buffers Redo Buffers 2288920 bytes 1040188136 bytes 570425344 bytes 7213056 bytes 53 | P a g e Database mounted. Database opened. SQL> show parameter control_files NAME TYPE VALUE ------------------------------------ ----------- ----------------------------control_files string /oradata/orcl12c/control01.ctl, /u01/app/oracle/fast_recovery_area/orcl12c/control02.ctl, /u02/fra/control03.ctl Další varianta je pomocí init souboru, textového, pokud ho používáte. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 1837244416 bytes Fixed Size Variable Size Database Buffers Redo Buffers 2289544 bytes 553648248 bytes 1275068416 bytes 6238208 bytes Database mounted. Database opened. SQL> select name from v$controlfile; NAME ----------------------------------------------------------------+DATA/ORCL12C/CONTROLFILE/current.262.831290771 +DATA/ORCL12C/CONTROLFILE/current.261.831290771 +DATA/ORCL12C/CONTROLFILE/current.274.833969029 54 | P a g e Redo logy Zjištění základních informací o Redo logách SQL> COL group# FORM 99999 SQL> COL thread# FORM 99999 SQL> COL grp_status FORM a10 SQL> COL member FORM a30 SQL> COL mem_status FORM a10 SQL> COL mbytes FORM 999999 SQL> -SQL> SELECT 2 a.group#,a.thread#,a.status grp_status,b.member member 6 ,b.status mem_status,a.bytes/1024/1024 mbytes 8 FROM v$log a,v$logfile b 10 WHERE a.group# = b.group# 11 ORDER BY a.group#, b.member; GROUP# THREAD# GRP_STATUS MEMBER MEM_STATUS MBYTES ------ ------- ---------- ------------------------------ --------- ------1 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 1.263.831290773 1 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 1.264.831290773 2 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 2.265.831290773 2 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 2.266.831290775 3 1 CURRENT +DATA/ORCL12C/ONLINELOG/group_ 3.267.831290775 50 50 50 50 50 55 | P a g e 3 1 CURRENT +DATA/ORCL12C/ONLINELOG/group_ 3.268.831290775 4 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 4.272.831394745 4 1 INACTIVE +FRA/ORCL12C/ONLINELOG/group_4 .263.831394747 50 100 100 8 rows selected. Přidání redo log člena do skupiny bez ASM V případě, že nevyužíváte ASM, musíte zadat celou cestu a jméno redo logu. alter database add logfile member '/u02/oraredo/o12c/redo01b.rdo' to group 1; Smazání člena z redo log skupiny Daný člen nesmý být jediný ve skupině. SQL> alter database drop logfile member '+DATA/ORCL12C/ONLINELOG/group_2.275.836227183'; Database altered. Přidání redo log skupiny Informace o aktuálním nastavení SQL> COL group# FORM 99999 SQL> COL thread# FORM 99999 SQL> COL grp_status FORM a10 SQL> COL member FORM a30 SQL> COL mem_status FORM a10 SQL> COL mbytes FORM 999999 SQL> -SQL> SELECT 2 a.group# 3 ,a.thread# 56 | P a g e 4 ,a.status grp_status 5 ,b.member member 6 ,b.status mem_status 7 ,a.bytes/1024/1024 mbytes 8 FROM v$log a, 9 v$logfile b 10 WHERE a.group# = b.group# 11 ORDER BY a.group#, b.member; GROUP# THREAD# GRP_STATUS MEMBER MEM_STATUS MBYTES ------ ------- ---------- ------------------------------ --------- ------1 1 INACTIVE /oradata/orcl12c/redo01.log 2 1 CURRENT /oradata/orcl12c/redo02.log 3 1 INACTIVE /oradata/orcl12c/redo03.log 50 50 50 Přidání skupiny s dvěma členy. SQL> alter database add logfile group 4 ('/oradata/orcl12c/redo4a.log', '/u02/fra/redo4b.log') SIZE 50M; Database altered. GROUP# THREAD# GRP_STATUS MEMBER MEM_STATUS MBYTES ------ ------- ---------- ------------------------------ --------- ------1 1 INACTIVE /oradata/orcl12c/redo01.log 2 1 CURRENT /oradata/orcl12c/redo02.log 3 1 INACTIVE /oradata/orcl12c/redo03.log 4 1 UNUSED /oradata/orcl12c/redo4a.log 50 50 50 50 57 | P a g e 4 1 UNUSED /u02/fra/redo4b.log 50 Přidání člena do existující skupiny SQL> alter database add logfile member '/u02/fra/redo1b.log' to group 1; Database altered. GROUP# THREAD# GRP_STATUS MEMBER MEM_STATUS MBYTES ------ ------- ---------- ------------------------------ --------- ------1 1 INACTIVE /oradata/orcl12c/redo01.log 1 1 INACTIVE /u02/fra/redo1b.log 2 1 CURRENT /oradata/orcl12c/redo02.log 3 1 INACTIVE /oradata/orcl12c/redo03.log 4 1 UNUSED /oradata/orcl12c/redo4a.log 4 1 UNUSED /u02/fra/redo4b.log 50 INVALID 50 50 50 50 50 Nelekejte se stavu INVALID. Může sice značit, že je soubor nedostupný, ale ten samý status se objevuje u nově vytvořenho redo logu. Provedu párkrát přepnutí redo logů a bude to v pořádku. SQL> alter system switch logfile; System altered. SQL> / System altered. 58 | P a g e GROUP# THREAD# GRP_STATUS MEMBER MEM_STATUS MBYTES ------ ------- ---------- ------------------------------ --------- ------1 1 INACTIVE /oradata/orcl12c/redo01.log 1 1 INACTIVE /u02/fra/redo1b.log 2 1 CURRENT /oradata/orcl12c/redo02.log 3 1 INACTIVE /oradata/orcl12c/redo03.log 4 1 INACTIVE /oradata/orcl12c/redo4a.log 4 1 INACTIVE /u02/fra/redo4b.log 50 50 50 50 50 50 Přidání redo log skupiny do FRA GROUP# THREAD# GRP_STATUS MEMBER MEM_STATUS MBYTES ------ ------- ---------- ------------------------------ --------- ------1 1 CURRENT +DATA/ORCL12C/ONLINELOG/group_ 50 1.263.831290773 1 1 CURRENT +DATA/ORCL12C/ONLINELOG/group_ 50 1.264.831290773 2 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 50 2.265.831290773 2 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 50 2.266.831290775 3 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 50 3.267.831290775 3 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 50 59 | P a g e 3.268.831290775 SQL> show parameter db_recovery_file_dest NAME TYPE VALUE ------------------------------------ ----------- ----------------------------db_recovery_file_dest string +FRA db_recovery_file_dest_size big integer 10G SQL> show parameter db_create_file_dest NAME TYPE VALUE ------------------------------------ ----------- ----------------------------db_create_file_dest string +DATA SQL> alter database add logfile group 4; Database altered. SQL> select member from v$logfile where group# = 4; 2 3 MEMBER -----------------------------+DATA/ORCL12C/ONLINELOG/group_ 4.272.831394745 +FRA/ORCL12C/ONLINELOG/group_4 .263.831394747 60 | P a g e Automatic storage management - ASM Nastavení UDEV pro ASM disky Výpis SATA zařízení [root@node1 tmp]# ls -ltr /dev/sd* brw-rw----. 1 root disk 8, 16 Nov 11 11:05 /dev/sdb brw-rw----. 1 root disk 8, 32 Nov 11 11:05 /dev/sdc brw-rw----. 1 root disk 8, 0 Nov 11 11:05 /dev/sda brw-rw----. 1 root disk 8, 2 Nov 11 11:05 /dev/sda2 brw-rw----. 1 root disk 8, 1 Nov 11 11:05 /dev/sda1 Vytvoření partition [root@node1 tmp]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OS F disklabel Building a new DOS disklabel with disk identifier 0xe5a4eb5b. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended t o switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) 61 | P a g e p Partition number (1-4): 1 First cylinder (1-652, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): Using default value 652 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@node1 tmp]# fdisk /dev/sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OS F disklabel Building a new DOS disklabel with disk identifier 0xbe056bce. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended t o switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) 62 | P a g e p Partition number (1-4): 1 First cylinder (1-652, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): Using default value 652 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@node1 tmp]# [root@node1 tmp]# ls -ltr /dev/sd* brw-rw----. 1 root disk 8, 0 Nov 11 11:05 /dev/sda brw-rw----. 1 root disk 8, 2 Nov 11 11:05 /dev/sda2 brw-rw----. 1 root disk 8, 1 Nov 11 11:05 /dev/sda1 brw-rw----. 1 root disk 8, 16 Nov 11 11:54 /dev/sdb brw-rw----. 1 root disk 8, 17 Nov 11 11:54 /dev/sdb1 brw-rw----. 1 root disk 8, 32 Nov 11 11:54 /dev/sdc brw-rw----. 1 root disk 8, 33 Nov 11 11:54 /dev/sdc1 Identifikace disků [root@node1 tmp]# /sbin/scsi_id -g -u -d /dev/sdb 1ATA_VBOX_HARDDISK_VB207c3ecf-d051a088 [root@node1 tmp]# /sbin/scsi_id -g -u -d /dev/sdc 1ATA_VBOX_HARDDISK_VBd8b9123a-81ae1756 Nastavení důvěrného zařízení [root@node1 tmp]# vi /etc/scsi_id.config [root@node1 tmp]# cat /etc/scsi_id.config options=-g 63 | P a g e Nastavení UDEV pravidel [root@node1 tmp]# cat /etc/udev/rules.d/99-oracleasmdevices.rules KERNEL=="sdb1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/sdb", RESULT=="1ATA_VBOX_HARDDISK_VB207c3ecf-d051a088", NAME="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660" KERNEL=="sdc1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/sdc", RESULT=="1ATA_VBOX_HARDDISK_VBd8b9123a-81ae1756", NAME="asm-disk2", OWNER="oracle", GROUP="dba", MODE="0660" Nahrání upravená blokových partition [root@node1 tmp]# /sbin/partprobe /dev/sdb1 [root@node1 tmp]# /sbin/partprobe /dev/sdc1 Kontrola nastavení [root@node1 tmp]# udevadm test /block/sdb/sdb1 run_command: calling: test udevadm_test: version 147 This program is for debugging only, it does not run any program, specified by a RUN key. It may show incorrect results, because some values may be different, or not available at a simulation run. ..... <zde je kompletní výpis> ..... udevadm_test: UDISKS_PARTITION_SLAVE=/sys/devices/pci0000:00/0000:00:0d.0/host3 /target3:0:0/3:0:0:0/block/sdb udevadm_test: UDISKS_PARTITION_OFFSET=32256 udevadm_test: UDISKS_PARTITION_ALIGNMENT_OFFSET=0 udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event' Kontrola oprávnění [root@node1 tmp]# ls -ltr /dev/asm-disk* brw-rw----. 1 oracle dba 8, 33 Nov 11 12:08 /dev/asm-disk2 brw-rw----. 1 oracle dba 8, 17 Nov 11 12:08 /dev/asm-disk1 64 | P a g e Restart služby [root@oel64 ~]# udevadm control --reload-rules [root@oel64 ~]# /sbin/start_udev Starting udev: [ OK ] Instalace grid infrastruktury - ASM Vytvoření ASM diskgroup Předpokladem je, že máte k dispozici disk. Ja ho mám vytvořen pomocí UDEV, jako je v příkladě výše. [oracle@oel64 ~]$ ls -ltr /dev/asm-disk* brw-rw----. 1 oracle dba 8, 49 Nov 12 12:59 /dev/asm-disk3 brw-rw----. 1 oracle dba 8, 17 Nov 12 12:59 /dev/asm-disk1 brw-rw----. 1 oracle dba 8, 33 Nov 12 12:59 /dev/asm-disk2 asmca ORACLE_SID = [oracle] ? +ASM The Oracle base has been set to /u01/app/oracle [oracle@oel64 ~]$ which asmca /u01/app/oracle/product/12.1.0/grid/bin/asmca [oracle@oel64 ~]$ asmca 65 | P a g e Úvodní obrazovka. Definice nové diskové skupiny. Vytváření. 66 | P a g e Úspěšně hotovo. Konečný výpis. Přidání redo log skupiny bez ASM Například takto alter database add logfile group 3 ('/u01/oraredo/o12c/redo03a.rdo', 67 | P a g e '/u02/oraredo/o12c/redo03b.rdo') SIZE 50M; Smazání neaktivní redo log skupiny SQL> select group#, status, archived, thread#, sequence# from v$log; GROUP# STATUS ARC THREAD# SEQUENCE# ------ ---------------- --- ------- ---------1 INACTIVE YES 1 9 2 INACTIVE YES 1 10 3 INACTIVE YES 1 11 4 CURRENT NO 1 12 5 INACTIVE YES 1 8 SQL> alter database drop logfile group 5; Database altered. Změna aktivní skupiny V případě, že skupina neni INACTIVE je potřeba se přepnou na jinou. SQL> alter system switch logfile; System altered. SQL> select group#, status, archived, thread#, sequence# from v$log; GROUP# STATUS ARC THREAD# SEQUENCE# ------ ---------------- --- ------- ---------1 CURRENT NO 1 13 2 INACTIVE YES 1 10 3 INACTIVE YES 1 11 4 ACTIVE YES 1 12 68 | P a g e Pakliže je skupina stále ACTIVE, tedy potřeba v případě recovery, musí se veskere informace z redo logů uložit do datového souboru. SQL> alter system checkpoint; System altered. SQL> select group#, status, archived, thread#, sequence# from v$log; GROUP# STATUS ARC THREAD# SEQUENCE# ------ ---------------- --- ------- ---------1 CURRENT NO 1 13 2 INACTIVE YES 1 10 3 INACTIVE YES 1 11 4 INACTIVE YES 1 12 Přidání redo log skupiny s ASM SQL> alter database add logfile group 5 SIZE 55M; Database altered. GROUP# THREAD# GRP_STATUS MEMBER MEM_STATUS MBYTES ------ ------- ---------- ------------------------------ --------- ------5 1 UNUSED +DATA/ORCL12C/ONLINELOG/group_ 5.275.836225775 5 1 UNUSED +FRA/ORCL12C/ONLINELOG/group_5 .294.836225777 55 55 Přidání kontrolního souboru do ASM Identifikace SQL> select name from v$controlfile; NAME 69 | P a g e ----------------------------------------------------------------+DATA/ORCL12C/CONTROLFILE/current.262.831290771 +DATA/ORCL12C/CONTROLFILE/current.261.831290771 Přidání SQL> alter system set control_files='+DATA/ORCL12C/CONTROLFILE/current.262.831290771',' +DATA/ORCL12C/CONTROLFILE/current.261.831290771','+DATA' scope=spfile; System altered. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. [oracle@oel64 ~]$ rman target / Recovery Manager: Release 12.1.0.1.0 - Production on Thu Dec 12 10:01:56 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. rights reserved. All connected to target database (not started) RMAN> startup nomount Oracle instance started Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers 1837244416 bytes 2289544 bytes 553648248 bytes 1275068416 bytes 6238208 bytes RMAN> restore controlfile from '+DATA/ORCL12C/CONTROLFILE/current.261.831290771'; 70 | P a g e Starting restore at 12-DEC-13 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=23 device type=DISK channel ORA_DISK_1: copied control file copy output file name=+DATA/ORCL12C/CONTROLFILE/current.262.831290771 output file name=+DATA/ORCL12C/CONTROLFILE/current.261.831290771 output file name=+DATA/ORCL12C/CONTROLFILE/current.274.833969029 Finished restore at 12-DEC-13 SQL> alter system set control_files='+DATA/ORCL12C/CONTROLFILE/current.262.831290771',' +DATA/ORCL12C/CONTROLFILE/current.261.831290771','+DATA/ORCL12C/C ONTROLFILE/current.274.833969029' scope=spfile; System altered. SQL> shutdown immediate ORA-01507: database not mounted Přidání redo log člena do skupiny s ASM SQL> alter database add logfile member '+DATA' to group 2; Database altered. GROUP# THREAD# GRP_STATUS MEMBER MEM_STATUS MBYTES ------ ------- ---------- -----------------------------2 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 2.265.831290773 2 1 INACTIVE +DATA/ORCL12C/ONLINELOG/group_ 2.266.831290775 50 50 71 | P a g e 2 1 INACTIVE 50 +DATA/ORCL12C/ONLINELOG/group_ INVALID 2.275.836227183 Nelekejte se statusu invalid. Stačí provést logswitch a člen bude validní. SQL> alter system switch logfile; System altered. Zálohování a obnova Záloha databáze RMAN Připojení [oracle@oel64 dbs]$ rman target / Recovery Manager: Release 12.1.0.1.0 - Production on Tue Nov 12 13:45:18 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. rights reserved. All connected to target database: ORCL12C (DBID=661781458) RMAN> Nebo. [oracle@oel64 dbs]$ rman target sys@orcl12c Recovery Manager: Release 12.1.0.1.0 - Production on Tue Nov 12 13:45:53 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. rights reserved. All target database Password: connected to target database: ORCL12C (DBID=661781458) 72 | P a g e RMAN> Kontrola nastavení RMAN> show all; using target database control file instead of recovery catalog RMAN configuration parameters for database with db_unique_name ORCL12C are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/12.1.0/dbhome_1/dbs/snapcf_orcl12c.f'; # default Záloha databáze RMAN> backup database; Starting backup at 12-NOV-13 allocated channel: ORA_DISK_1 73 | P a g e channel ORA_DISK_1: SID=21 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00001 name=+DATA/ORCL12C/DATAFILE/system.258.831290679 input datafile file number=00003 name=+DATA/ORCL12C/DATAFILE/sysaux.257.831290613 input datafile file number=00002 name=+DATA/ORCL12C/DATAFILE/example.270.831290789 input datafile file number=00004 name=+DATA/ORCL12C/DATAFILE/undotbs1.260.831290745 input datafile file number=00006 name=+DATA/ORCL12C/DATAFILE/users.259.831290745 channel ORA_DISK_1: starting piece 1 at 12-NOV-13 channel ORA_DISK_1: finished piece 1 at 12-NOV-13 piece handle=+FRA/ORCL12C/BACKUPSET/2013_11_12/nnndf0_tag20131112t13473 1_0.257.831304055 tag=TAG20131112T134731 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:07:55 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set including current SPFILE in backup set channel ORA_DISK_1: starting piece 1 at 12-NOV-13 channel ORA_DISK_1: finished piece 1 at 12-NOV-13 piece handle=+FRA/ORCL12C/BACKUPSET/2013_11_12/ncsnf0_tag20131112t13473 1_0.258.831304531 tag=TAG20131112T134731 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 12-NOV-13 Záloha databáze a archívních souborů RMAN> backup database plus archivelog; Starting backup at 12-DEC-13 current log archived 74 | P a g e using channel ORA_DISK_1 skipping archived logs of thread 1 from sequence 12 to 13; already backed up channel ORA_DISK_1: starting compressed archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=14 RECID=3 STAMP=831372110 input archived log thread=1 sequence=15 RECID=4 STAMP=831393356 input archived log thread=1 sequence=16 RECID=5 STAMP=831400269 input archived log thread=1 sequence=17 RECID=6 STAMP=831469009 input archived log thread=1 sequence=18 RECID=7 STAMP=831475199 input archived log thread=1 sequence=19 RECID=8 STAMP=831489206 input archived log thread=1 sequence=20 RECID=9 STAMP=831500199 input archived log thread=1 sequence=21 RECID=10 STAMP=832414972 input archived log thread=1 sequence=22 RECID=11 STAMP=832603734 input archived log thread=1 sequence=23 RECID=12 STAMP=833187937 input archived log thread=1 sequence=24 RECID=13 STAMP=833205837 input archived log thread=1 sequence=25 RECID=14 STAMP=833206780 input archived log thread=1 sequence=26 RECID=15 STAMP=833879713 input archived log thread=1 sequence=27 RECID=16 STAMP=833969456 channel ORA_DISK_1: starting piece 1 at 12-DEC-13 channel ORA_DISK_1: finished piece 1 at 12-DEC-13 piece handle=+FRA/ORCL12C/BACKUPSET/2013_12_12/annnf0_tag20131212t10105 6_0.288.833969457 tag=TAG20131212T101056 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15 Finished backup at 12-DEC-13 Starting backup at 12-DEC-13 using channel ORA_DISK_1 channel ORA_DISK_1: starting compressed full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00005 name=+DATA/ORCL12C/DATAFILE/perfstat.273.833200283 input datafile file number=00003 name=+DATA/ORCL12C/DATAFILE/sysaux.257.831290613 75 | P a g e input datafile file number=00001 name=+DATA/ORCL12C/DATAFILE/system.258.831290679 input datafile file number=00002 name=+DATA/ORCL12C/DATAFILE/example.270.831290789 input datafile file number=00004 name=+DATA/ORCL12C/DATAFILE/undotbs1.260.831290745 input datafile file number=00006 name=+DATA/ORCL12C/DATAFILE/users.259.831398767 channel ORA_DISK_1: starting piece 1 at 12-DEC-13 channel ORA_DISK_1: finished piece 1 at 12-DEC-13 piece handle=+FRA/ORCL12C/BACKUPSET/2013_12_12/nnndf0_tag20131212t10111 2_0.289.833969473 tag=TAG20131212T101112 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:55 Finished backup at 12-DEC-13 Starting backup at 12-DEC-13 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting compressed archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=28 RECID=17 STAMP=833969587 channel ORA_DISK_1: starting piece 1 at 12-DEC-13 channel ORA_DISK_1: finished piece 1 at 12-DEC-13 piece handle=+FRA/ORCL12C/BACKUPSET/2013_12_12/annnf0_tag20131212t10130 7_0.291.833969589 tag=TAG20131212T101307 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 12-DEC-13 Starting Control File and SPFILE Autobackup at 12-DEC-13 piece handle=+FRA/c-661781458-20131212-01 comment=NONE Finished Control File and SPFILE Autobackup at 12-DEC-13 Záloha archívních souborů RMAN> backup archivelog all; 76 | P a g e Starting backup at 12-NOV-13 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=12 RECID=1 STAMP=831302986 input archived log thread=1 sequence=13 RECID=2 STAMP=831304687 channel ORA_DISK_1: starting piece 1 at 12-NOV-13 channel ORA_DISK_1: finished piece 1 at 12-NOV-13 piece handle=+FRA/ORCL12C/BACKUPSET/2013_11_12/annnf0_tag20131112t13580 7_0.260.831304687 tag=TAG20131112T135807 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 12-NOV-13 Přesun datového souboru Nejdříve se podívejte, kde vlastně máte uložené datové soubory. Informace lze získat z datového slovníku. SQL> desc dba_data_files Name Null? Type ----------------------------------------- -------- --------------------------FILE_NAME VARCHAR2(513) FILE_ID NUMBER TABLESPACE_NAME VARCHAR2(30) BYTES NUMBER BLOCKS NUMBER STATUS VARCHAR2(9) RELATIVE_FNO NUMBER AUTOEXTENSIBLE VARCHAR2(3) MAXBYTES NUMBER MAXBLOCKS NUMBER INCREMENT_BY NUMBER 77 | P a g e USER_BYTES NUMBER USER_BLOCKS NUMBER ONLINE_STATUS VARCHAR2(7) SQL> select FILE_NAME from dba_data_files; FILE_NAME ------------------------------------------------------------------------------/oradata/orcl12c/system01.dbf /oradata/orcl12c/sysaux01.dbf /u01/app/oracle/product/12.1.0/dbhome_1/dbs/tool01 /oradata/orcl12c/users01.dbf /oradata/orcl12c/example01.dbf /oradata/orcl12c/undotbs01.dbf 6 rows selected. Ve verzi 12c je k dispozici příkaz ALTER DATABASE MOVE DATAFILE, který umožní přesunout daotvý soubor online. SQL> alter database move datafile '/u01/app/oracle/product/12.1.0/dbhome_1/dbs/tool01' to '/oradata/orcl12c/tool01.dbf'; Database altered. SQL> select FILE_NAME from dba_data_files; FILE_NAME ------------------------------------------------------------------------------/oradata/orcl12c/system01.dbf /oradata/orcl12c/sysaux01.dbf /oradata/orcl12c/tool01.dbf /oradata/orcl12c/users01.dbf /oradata/orcl12c/example01.dbf 78 | P a g e /oradata/orcl12c/undotbs01.dbf 6 rows selected. U starší verze databáze to lze udělat například pomocí příkazu ALTER TABLESPACE RENAME. SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files; TABLESPACE_NAME FILE_NAME ----------------------------------------------------------------TOOLS /oradata/orcl12c/tool01.dbf Tablespace nebo jen datafile offline SQL> alter tablespace tools offline; Tablespace altered. Fyzický přesun [oel64:oracle:orcl12c]$ mv /oradata/orcl12c/tool01.dbf /oradata/orcl12c/tool.dbf Update datového slovníku SQL> alter tablespace tools rename datafile '/oradata/orcl12c/tool01.dbf' to '/oradata/orcl12c/tool.dbf'; Tablespace altered. Online SQL> alter tablespace tools online; Tablespace altered. Existuje i možnost s re-create controlního souboru. Tu tady teď ukazovat nebudu, třeba někdy později. Zálohování kontrolního souboru Nastavení automatické zálohy kontrolního souboru [oracle@oel64 ~]$ rman target / 79 | P a g e Recovery Manager: Release 12.1.0.1.0 - Production on Thu Dec 12 10:08:06 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. rights reserved. All connected to target database: ORCL12C (DBID=661781458) RMAN> show all; using target database control file instead of recovery catalog CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored Záloha kontrolníhou souboru RMAN> backup current controlfile; Starting backup at 12-DEC-13 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=42 device type=DISK channel ORA_DISK_1: starting compressed full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set channel ORA_DISK_1: starting piece 1 at 12-DEC-13 channel ORA_DISK_1: finished piece 1 at 12-DEC-13 piece handle=+FRA/ORCL12C/BACKUPSET/2013_12_12/ncnnf0_tag20131212t10102 8_0.285.833969429 tag=TAG20131212T101028 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 12-DEC-13 80 | P a g e Starting Control File and SPFILE Autobackup at 12-DEC-13 piece handle=+FRA/c-661781458-20131212-00 comment=NONE Finished Control File and SPFILE Autobackup at 12-DEC-13 Zjištění zálohy kontrolního souboru RMAN> list backup of controlfile; List of Backup Sets =================== BS Key Time Type LV Size Device Type Elapsed Time Completion ------- ---- -- ---------- ----------- ------------ -------------2 Full 9.64M BP Key: 2 TAG20131112T134731 DISK Status: AVAILABLE 00:00:04 12-NOV-13 Compressed: NO Tag: Piece Name: +FRA/ORCL12C/BACKUPSET/2013_11_12/ncsnf0_tag20131112t134731_0.258 .831304531 Control File Included: Ckp SCN: 1907829 13 BS Key Time Type LV Size Ckp time: 12-NOV- Device Type Elapsed Time Completion ------- ---- -- ---------- ----------- ------------ -------------13 Full 1.05M BP Key: 13 TAG20131211T093238 DISK Status: AVAILABLE 00:00:01 11-DEC-13 Compressed: YES Tag: Piece Name: /backup/0lor80o2_1_1 Control File Included: Ckp SCN: 2230955 13 BS Key Time Type LV Size Ckp time: 11-DEC- Device Type Elapsed Time Completion ------- ---- -- ---------- ----------- ------------ -------------19 Full 9.64M DISK 00:00:01 12-DEC-13 81 | P a g e BP Key: 19 TAG20131212T101309 Status: AVAILABLE Compressed: NO Tag: Piece Name: +FRA/c-661781458-20131212-01 Control File Included: Ckp SCN: 2237239 13 Ckp time: 12-DEC- Textová záloha kontrolního souboru SQL> alter database backup controlfile to trace as '/backup/zaloha_ctl_text.bkp'; Database altered. [oracle@oel64 backup]$ ls -ltr zaloha_ctl_* -rw-r--r--. 1 oracle dba zaloha_ctl_text.bkp 9238 Dec 12 10:18 Binární záloha kontrolního souboru SQL> alter database backup controlfile to '/backup/zaloha_ctl_bin.ctl'; Database altered. [oracle@oel64 backup]$ ls -ltr zaloha_ctl_* -rw-r--r--. 1 oracle dba zaloha_ctl_text.bkp 9238 Dec 12 10:18 -rw-r-----. 1 oracle dba 10043392 Dec 12 10:19 zaloha_ctl_bin.ctl Obnova kontrolního souboru Obnovení kontrolního souboru z autobackapu [oracle@oel64 backup]$ rman target / Recovery Manager: Release 12.1.0.1.0 - Production on Thu Dec 12 10:21:41 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. rights reserved. All connected to target database: ORCL12C (DBID=661781458) RMAN> shutdown immediate 82 | P a g e using target database control file instead of recovery catalog database closed database dismounted Oracle instance shut down RMAN> startup nomount connected to target database (not started) Oracle instance started Total System Global Area 1837244416 bytes Fixed Size Variable Size Database Buffers 2289544 bytes 553648248 bytes 1275068416 bytes Redo Buffers 6238208 bytes RMAN> restore controlfile from autobackup; Starting restore at 12-DEC-13 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=23 device type=DISK recovery area destination: +FRA database name (or database unique name) used for search: ORCL12C channel ORA_DISK_1: AUTOBACKUP +FRA/ORCL12C/AUTOBACKUP/2013_12_12/s_833969589.292.833969589 found in the recovery area channel ORA_DISK_1: looking for AUTOBACKUP on day: 20131212 channel ORA_DISK_1: restoring control file from AUTOBACKUP +FRA/ORCL12C/AUTOBACKUP/2013_12_12/s_833969589.292.833969589 channel ORA_DISK_1: control file restore from AUTOBACKUP complete output file name=+DATA/ORCL12C/CONTROLFILE/current.262.831290771 83 | P a g e output file name=+DATA/ORCL12C/CONTROLFILE/current.261.831290771 output file name=+DATA/ORCL12C/CONTROLFILE/current.274.833969029 Finished restore at 12-DEC-13 RMAN> alter database mount; Statement processed released channel: ORA_DISK_1 RMAN> recover database; Starting recover at 12-DEC-13 Starting implicit crosscheck backup at 12-DEC-13 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=23 device type=DISK Crosschecked 16 objects Finished implicit crosscheck backup at 12-DEC-13 Starting implicit crosscheck copy at 12-DEC-13 using channel ORA_DISK_1 Crosschecked 8 objects Finished implicit crosscheck copy at 12-DEC-13 searching for all files in the recovery area cataloging files... cataloging done List of Cataloged Files ======================= File Name: +FRA/ORCL12C/AUTOBACKUP/2013_12_12/s_833969589.292.833969589 using channel ORA_DISK_1 84 | P a g e starting media recovery archived log for thread 1 with sequence 29 is already on disk as file +DATA/ORCL12C/ONLINELOG/group_4.272.831394745 archived log file name=+DATA/ORCL12C/ONLINELOG/group_4.272.831394745 thread=1 sequence=29 media recovery complete, elapsed time: 00:00:00 Finished recover at 12-DEC-13 RMAN> alter database open resetlogs; Statement processed Obnovení kontrolního souboru ze zálohy RMAN> restore controlfile from 'C:\ORACLE\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2013_12_11\O1_MF_NC SNF_TAG20131211T063809_9BJY999F_.BKP'; ZaΦßtek restore v 12.12.13 pou₧itφ kanßlu ORA_DISK_1 kanßl ORA_DISK_1: obnova °φdicφho souboru kanßl ORA_DISK_1: obnova dokonΦena, uplynul² Φas: 00:00:01 jmΘno v²stupnφho souboru=C:\ORACLE\ORADATA\TEST\CONTROL01.CTL jmΘno v²stupnφho souboru=C:\ORACLE\ORADATA\TEST\CONTROL02.CTL jmΘno v²stupnφho souboru=C:\ORACLE\ORADATA\TEST\CONTROL03.CTL UkonΦenφ restore v 12.12.13 Bezpečnost Nebezpečí ověření pomocí OS Kontrola prefixu SQL> show parameter authent 85 | P a g e NAME TYPE VALUE ------------------------------------ ----------- ----------------------------os_authent_prefix string ops$ remote_os_authent boolean FALSE OS user [root@oel64 ~]# useradd hacker [root@oel64 ~]# passwd hacker Changing password for user hacker. New password: Retype new password: passwd: all authentication tokens updated successfully. DB user SQL> create user ops$hacker identified externally; User created. SQL> grant connect to ops$hacker; Grant succeeded. Kontrola [hacker@oel64 ~]$ id uid=54322(hacker) gid=54324(hacker) groups=54324(hacker) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [hacker@oel64 ~]$ sqlplus / -bash: sqlplus: command not found [hacker@oel64 ~]$ . oraenv ORACLE_SID = [hacker] ? orcl12c ORACLE_BASE environment variable is not being set since this information is not available for the current user ID hacker. You can set ORACLE_BASE manually if it is required. Resetting ORACLE_BASE to its previous value or ORACLE_HOME 86 | P a g e The Oracle base has been set to /u01/app/oracle/product/12.1.0/dbhome_1 [hacker@oel64 ~]$ /u01/app/oracle/product/12.1.0/dbhome_1/bin/sqlplus / SQL*Plus: Release 12.1.0.1.0 Production on Wed Nov 13 19:56:48 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> Uživatel se přihlasil bez jména a bez hesla. Změna hesla uživatele Viditelné heslo SQL> alter user tom identified by oracle_4U; User altered. Skryté heslo [oracle@oel64 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production on Wed Nov 13 20:06:46 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. 87 | P a g e Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> passw tom Changing password for tom New password: Retype new password: Password changed Dočasná změna hesla Zjistění původního hesla SQL> select 'alter user appusr identified by values ' || '''' || password || '''' || ';' from user$ where name='TOM'; 2 3 'ALTERUSERAPPUSRIDENTIFIEDBYVALUES'||''''||PASSWORD||''''||';' ------------------------------------------------------------------------------alter user appusr identified by values 'CDBB49AF6D590ED7'; Dočasná změna SQL> alter user tom identified by oracle; User altered. SQL> connect tom/oracle Connected. Navrácení původního SQL> connect / as sysdba 88 | P a g e Connected. SQL> alter user tom identified by values 'CDBB49AF6D590ED7'; User altered. Přesun dat – datová pumpa Datová pumpa - Export Vytvoření objektu directory SQL> create directory dpump_dir as '/backup/oradmp'; Directory created. Adresář musí existovat i na OS. [oracle@oel64 /]$ ls -ltr /backup/oradmp/ total 0 SQL> select owner, directory_name, directory_path from dba_directories where directory_name='DPUMP_DIR'; OWNER DIRECTORY_NAME DIRECTORY_PATH ----------------------------------------------------------------SYS DPUMP_DIR /backup/oradmp Defaultně je ve verzi 12c celá řada již vytvořených objektů directory. Pro datovou pumpu je to adresář $ORACLE_BASE/admin/SID/dpdump. SQL> select DIRECTORY_NAME, DIRECTORY_PATH from dba_directories; DIRECTORY_NAME DIRECTORY_PATH ----------------------------------------------------------------DATA_PUMP_DIR /u01/app/oracle/admin/orcl12c/dpdump/ Přiřazení oprávnění Vyberte si libovolného uživatele, kterému přiřadíte oprávnění. SQL> grant read, write on directory DPUMP_DIR to tom; 89 | P a g e Grant succeeded. Příprava testových dat SQL> show user USER is "TOM" SQL> create table test (id number); Table created. SQL> insert into test values(123); 1 row created. SQL> commit; Commit complete. Vlastní export [oracle@oel64 ~]$ expdp tom/oracle_4U directory=dpump_dir tables=test dumpfile=exp.dmp logfile=exp.log Export: Release 12.1.0.1.0 - Production on Thu Nov 14 18:06:15 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. rights reserved. All Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options Starting "TOM"."SYS_EXPORT_TABLE_01": tom/******** directory=dpump_dir tables=test dumpfile=exp.dmp logfile=exp.log Estimate in progress using BLOCKS method... 90 | P a g e Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 64 KB Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER . . exported "TOM"."TEST" 1 rows 5.023 KB Master table "TOM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ***************************************************************** ************* Dump file set for TOM.SYS_EXPORT_TABLE_01 is: /backup/oradmp/exp.dmp Job "TOM"."SYS_EXPORT_TABLE_01" successfully completed at Thu Nov 14 18:06:46 2013 elapsed 0 00:00:25 Ověření [oracle@oel64 ~]$ ls -ltr /backup/oradmp/ total 136 -rw-r-----. 1 oracle dba 135168 Nov 14 18:06 exp.dmp -rw-r--r--. 1 oracle dba 1201 Nov 14 18:06 exp.log Datová pumpa - Import Smazání tabulky SQL> drop table test purge; Table dropped. SQL> select * from tom.test; select * from tom.test * ERROR at line 1: ORA-00942: table or view does not exist 91 | P a g e Vlastní import [oracle@oel64 ~]$ impdp tom/oracle_4U directory=dpump_dir tables=test dumpfile=exp.dmp logfile=exp.log Import: Release 12.1.0.1.0 - Production on Thu Nov 14 18:12:08 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. rights reserved. All Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options Master table "TOM"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded Starting "TOM"."SYS_IMPORT_TABLE_01": tom/******** directory=dpump_dir tables=test dumpfile=exp.dmp logfile=exp.log Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/TABLE_DATA . . imported "TOM"."TEST" 1 rows 5.023 KB Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER Job "TOM"."SYS_IMPORT_TABLE_01" successfully completed at Thu Nov 14 18:12:27 2013 elapsed 0 00:00:18 Ověření SQL> select * from tom.test; ID ---------123 92 | P a g e Datová pumpa - parametrický soubor Příprava [oracle@oel64 ~]$ pwd /home/oracle [oracle@oel64 ~]$ cat exp.par userid=tom/oracle_4U directory=dpump_dir dumpfile=exp.dmp logfile=exp.log tables=test reuse_dumpfiles=y Použití [oracle@oel64 ~]$ expdp parfile=/home/oracle/exp.par Export: Release 12.1.0.1.0 - Production on Thu Nov 14 18:16:06 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. rights reserved. All Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Pro duction With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options Starting "TOM"."SYS_EXPORT_TABLE_01": parfile=/home/oracle/exp.par tom/******** Estimate in progress using BLOCKS method... Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 64 KB Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER 93 | P a g e . . exported "TOM"."TEST" 1 rows 5.023 KB Master table "TOM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ***************************************************************** ************* Dump file set for TOM.SYS_EXPORT_TABLE_01 is: /backup/oradmp/exp.dmp Job "TOM"."SYS_EXPORT_TABLE_01" successfully completed at Thu Nov 14 18:16:20 2013 elapsed 0 00:00:12 Sledování a ladění Statspack Vytvoření tablespace SQL> CREATE TABLESPACE perfstat DATAFILE '+DATA' SIZE 1000M REUSE EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K SEGMENT SPACE MANAGEMENT AUTO PERMANENT ONLINE; 2 3 4 5 6 Tablespace created. Vlastní instalace SQL> @$ORACLE_HOME/rdbms/admin/spcreate.sql Choose the PERFSTAT user's password ----------------------------------Not specifying a password will result in the installation FAILING Enter value for perfstat_password: oracle oracle Choose the Default tablespace for the PERFSTAT user 94 | P a g e --------------------------------------------------Below is the list of online tablespaces in this database which can store user data. Specifying the SYSTEM tablespace for the user's default tablespace will result in the installation FAILING, as using SYSTEM for performance data is not supported. Choose the PERFSTAT users's default tablespace. tablespace This is the in which the STATSPACK tables and indexes will be created. TABLESPACE_NAME TABLESPACE CONTENTS STATSPACK DEFAULT ------------------------------ --------- --------------------------EXAMPLE PERMANENT PERFSTAT PERMANENT SYSAUX PERMANENT * USERS PERMANENT Pressing <return> will result in STATSPACK's recommended default tablespace (identified by *) being used. Enter value for default_tablespace: PERFSTAT Using tablespace PERFSTAT as PERFSTAT default tablespace. Choose the Temporary tablespace for the PERFSTAT user ----------------------------------------------------Below is the list of online tablespaces in this database which can store temporary data (e.g. for sort workareas). SYSTEM Specifying the tablespace for the user's temporary tablespace will result in the 95 | P a g e installation FAILING, as using SYSTEM for workareas is not supported. Choose the PERFSTAT user's Temporary tablespace. TABLESPACE_NAME TABLESPACE CONTENTS DB DEFAULT TEMP ------------------------------ --------- ------------------------TEMP TEMPORARY * Pressing <return> will result in the database's default Temporary tablespace (identified by *) being used. Enter value for temporary_tablespace: TEMP Using tablespace TEMP as PERFSTAT temporary tablespace. ... Creating PERFSTAT user .. SQL> set echo off; Creating Package STATSPACK... Package created. No errors. Creating Package Body STATSPACK... Package body created. No errors. NOTE: 96 | P a g e SPCPKG complete. Please check spcpkg.lis for any errors. Kontrola nastavení sběru informací SQL> column SNAP_LEVEL format 99; column DESCRIPTION format a60; select SNAP_LEVEL, DESCRIPTION from stats$level_description ORDER BY snap_level;SQL> SQL> SNAP_LEVEL DESCRIPTION ---------- ----------------------------------------------------------0 This level captures general statistics, including rollback segment, row cache, SGA, system events, background events, session events, system statistics, wait statistics, lock statistics, and Latch information 5 This level includes capturing high resource usage SQL Statements, along with all data captured by lower levels 6 This level includes capturing SQL plan and SQL plan usage in formation for high resource usage SQL Statements, along with all data captured by lower levels 7 This level captures segment level statistics, including logical and physical reads, row lock, itl and buffer busy waits,along with all data captured by lower levels 10 This level includes capturing Child Latch statistics, along with all data captured by lower levels Nebo se může nastavení rovnou změnit. Defaultní level je 5. SQL> exec statspack.snap(i_snap_level => 6, i_modify_parameter => 'true'); PL/SQL procedure successfully completed. Výpis dostupných snapshotů SQL> select name,snap_id,to_char(snap_time,'DD.MM.YYYY:HH24:MI:SS') 97 | P a g e "Date/Time" from stats$snapshot,v$database; 2 NAME SNAP_ID Date/Time --------- ---------- ------------------ORCL12C 1 03.12.2013:12:42:01 1 row selected. Vygenerování nového snapshotu. SQL> exec statspack.snap; PL/SQL procedure successfully completed. SQL> select name,snap_id,to_char(snap_time,'DD.MM.YYYY:HH24:MI:SS') "Date/Time" from stats$snapshot,v$database; 2 NAME SNAP_ID Date/Time --------- ---------- ------------------ORCL12C 1 03.12.2013:12:42:01 ORCL12C 2 03.12.2013:12:44:44 2 rows selected. Vygenerování reportu. SQL> @?/rdbms/admin/spreport.sql Instances in this Statspack schema ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DB Id Inst Num DB Name Instance Host ----------- -------- ------------ ------------ -----------661781458 1 ORCL12C orcl12c oel64.locald omain Using 661781458 for database Id 98 | P a g e Using 1 for instance number Specify the number of days of snapshots to choose from ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Entering the number of days (n) will result in the most recent (n) days of snapshots being listed. Pressing <return> without specifying a number lists all completed snapshots. Listing all Completed Snapshots Snap Instance Comment DB Name Snap Id Snap Started Level ------------ ------------ --------- ----------------- ----- ------------------orcl12c ORCL12C 1 03 Dec 2013 12:42 6 2 03 Dec 2013 12:44 6 Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enter value for begin_snap: 1 Begin Snapshot Id specified: 1 Enter value for end_snap: 2 End Snapshot Id specified: 2 Specify the Report Name 99 | P a g e ~~~~~~~~~~~~~~~~~~~~~~~ The default report file name is sp_1_2. To use this name, press <return> to continue, otherwise enter an alternative. Enter value for report_name: orcl12c_1_to_2 Using the report name orcl12c_1_to_2 STATSPACK report for Database Release DB Id RAC Instance Inst Num Startup Time ~~~~~~~~ ----------- ------------ -------- --------------- ---------- --661781458 orcl12c 12.1.0.1.0 NO Host Name Memory (G) 1 03-Dec-13 09:05 Platform CPUs Cores Sockets ~~~~ ---------------- ---------------------- ----- ----- -----------------oel64.localdomai Linux x86 64-bit 1 0 0 5.7 Snapshot Comment Snap Id Snap Time Sessions Curs/Sess ~~~~~~~~ ---------- ------------------ -------- --------- ----------------Begin Snap: 1 03-Dec-13 12:42:01 44 1.9 End Snap: 2 03-Dec-13 12:44:44 44 1.9 Elapsed: 2.72 (mins) Av Act Sess: 0.0 DB time: 0.03 (mins) 0.01 (mins) DB CPU: Report v textové formě SQL> exit [oracle@oel64 ~]$ ls -ltr total 172 100 | P a g e -rw-r--r--. 1 oracle oinstall 2298 Dec 3 12:34 spcusr.lis -rw-r--r--. 1 oracle oinstall 5515 Dec 3 12:34 spctab.lis -rw-r--r--. 1 oracle oinstall 195 Dec 3 12:34 spcpkg.lis -rw-r--r--. 1 oracle oinstall 116332 Dec orcl12c_1_to_2.lst 3 12:46 Kolik archívní logu se generuje denně? SQL> select trunc(COMPLETION_TIME) TIME, SUM(BLOCKS * BLOCK_SIZE)/1024/1024 SIZE_MB from V$ARCHIVED_LOG group by trunc (COMPLETION_TIME) order by 1; TIME SIZE_MB --------- ---------07-JAN-14 3410.4502 08-JAN-14 10859.6255 09-JAN-14 7077.77783 10-JAN-14 8596.42627 11-JAN-14 1038.9624 12-JAN-14 1134.88135 13-JAN-14 13907.3379 14-JAN-14 11684.2139 15-JAN-14 8747.70459 16-JAN-14 13425.0083 17-JAN-14 8375.43604 Co obsahuje kontrolní soubor? Nejdříve si nastavte debug mód. SQL> oradebug setmypid Statement processed. SQL> oradebug unlimit Statement processed. SQL> alter session set events 'immediate trace name controlf level 9'; Session altered. 101 | P a g e SQL> select value from v$diag_info where name='Diag Trace'; VALUE ------------------------------------------------------------------------------/u01/app/oracle/diag/rdbms/orcl12c/orcl12c/trace Následně se pak můžete podívat na obsah kontrolního souboru. [oracle@oel64 trace]$ vi orcl12c_ora_3246.trc ***************************************************************** ********** DATABASE ENTRY ***************************************************************** ********** (size = 316, compat size = 316, section max = 1, section in-use = 1, last-recid= 0, old-recno = 0, last-recno = 0) (extent = 1, blkno = 1, numrecs = 1) 11/12/2013 10:06:10 DB Name "ORCL12C" Database flags = 0x00404001 0x00001200 Controlfile Creation Timestamp 11/12/2013 10:06:10 Incmplt recovery scn: 0x0000.00000000 Resetlogs scn: 0x0000.0022258b Resetlogs Timestamp 10:23:53 12/12/2013 Prior resetlogs scn: 0x0000.001a3f12 Prior resetlogs Timestamp 11/12/2013 10:06:12 Redo Version: compatible=0xc100000 #Data files = 6, #Online files = 6 Database checkpoint: Thread=1 scn: 0x0000.00250c9a Threads: #Enabled=1, #Open=1, Head=1, Tail=1 Zjištění počet log switch SQL> select count(*),to_char(first_time,'YYYY:MM:DD:HH24') from v$log_history 102 | P a g e group by to_char(first_time,'YYYY:MM:DD:HH24') order by 2; 2 3 4 COUNT(*) TO_CHAR(FIRST ---------- ------------10 2013:11:12:10 1 2013:11:12:12 3 2013:11:12:13 1 2013:11:13:08 1 2013:11:13:14 1 2013:11:13:16 Na základě frekvence logswitch se určuje optimální velikost redo logu. Nebo lze nastavit velikost dle doporučení. SQL> select optimal_logfile_size from v$instance_recovery; OPTIMAL_LOGFILE_SIZE -------------------62 Nové vlastnosti 12c Multitenant Vytvoření pluggable databáze pomocí DBCA 103 | P a g e 104 | P a g e 105 | P a g e 106 | P a g e 107 | P a g e 108 | P a g e 109 | P a g e Přesun datového souboru online SQL> SET LINESIZE 100 SQL> COLUMN name FORMAT A70 SQL> SELECT file#, name FROM v$datafile WHERE con_id = 1 ORDER BY file#; FILE# NAME ---------- --------------------------------------------------------------------1 /oradata/CDB/datafile/o1_mf_system_9jp9no1k_.dbf 3 /oradata/CDB/datafile/o1_mf_sysaux_9jp9lxst_.dbf 4 /oradata/CDB/datafile/o1_mf_undotbs1_9jp9pqcs_.dbf 6 /oradata/CDB/datafile/o1_mf_users_9jp9pp7g_.dbf 110 | P a g e SQL> alter database move datafile '/oradata/CDB/datafile/o1_mf_users_9jp9pp7g_.dbf' to '/oradata/CDB/datafile/users.dbf'; Database altered. SQL> SELECT file#, name FROM v$datafile WHERE con_id = 1 ORDER BY file#; FILE# NAME ---------- --------------------------------------------------------------------1 /oradata/CDB/datafile/o1_mf_system_9jp9no1k_.dbf 3 /oradata/CDB/datafile/o1_mf_sysaux_9jp9lxst_.dbf 4 /oradata/CDB/datafile/o1_mf_undotbs1_9jp9pqcs_.dbf 6 /oradata/CDB/datafile/users.dbf Alert.log Mon Feb 24 12:49:24 2014 alter database move datafile '/oradata/CDB/datafile/o1_mf_users_9jp9pp7g_.dbf' to '/oradata/CDB/datafile/users.dbf' Mon Feb 24 12:49:24 2014 Moving datafile /oradata/CDB/datafile/o1_mf_users_9jp9pp7g_.dbf (6) to /oradata/CDB/datafile/users.dbf Move operation committed for file /oradata/CDB/datafile/users.dbf Completed: alter database move datafile '/oradata/CDB/datafile/o1_mf_users_9jp9pp7g_.dbf' to '/oradata/CDB/datafile/users.dbf' Informace o posledním přihlášení uživatele [oel64:oracle:orcl12c]$ sqlplus tom/oracle_4U 111 | P a g e SQL*Plus: Release 12.1.0.1.0 Production on Mon Feb 24 14:51:45 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. Last Successful login time: Mon Feb 24 2014 14:48:39 +01:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> Případně to lze vypnout. [oel64:oracle:orcl12c]$ sqlplus -nologintime tom/oracle_4U SQL*Plus: Release 12.1.0.1.0 Production on Mon Feb 24 14:55:32 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> Vytvoření COMMON uživatele SQL> show con_name CON_NAME 112 | P a g e -----------------------------CDB$ROOT SQL> create user test identified by test; create user test identified by test * ERROR at line 1: ORA-65096: invalid common user or role name SQL> select PDB from v$services; PDB -----------------------------PDB2 PDB1 CDB$ROOT CDB$ROOT CDB$ROOT CDB$ROOT 6 rows selected. SQL> create user c##test identified by test; User created. SQL> select username from dba_users where username like '%TEST%'; USERNAME ------------------------------------------------------------------------------C##TEST Jak získat informace o stavu CDB a PDB Jsem připojený do kontejnéru? SQL> SELECT CDB FROM V$DATABASE; 113 | P a g e CDB --YES Jaké exitují containers? SQL> COLUMN NAME FORMAT A8 SELECT NAME, CON_ID, DBID, CON_UID, GUID FROM V$CONTAINERS ORDER BY CON_ID; NAME CON_ID DBID CON_UID GUID -------- ---------- ---------- ---------- ------------------------------CDB$ROOT 1 1956973310 DD7C48AA5A4504A2E04325AAE80A403C 1 PDB$SEED 2 4083010677 4083010677 F325F1E44F791113E0430A00000A00E6 PDB1 3 3348106321 3348106321 F32619B76F171AC4E0430A00000AD790 PDB2 4 3906668867 3906668867 F3262BF293A81BE0E0430A00000ACB00 Jaké existují PDB? SQL> COLUMN PDB_NAME FORMAT A15 SELECT PDB_ID, PDB_NAME, STATUS FROM DBA_PDBS ORDER BY PDB_ID;SQL> SQL> PDB_ID PDB_NAME STATUS ---------- --------------- ------------2 PDB$SEED NORMAL 3 PDB1 NORMAL 4 PDB2 NORMAL Nebo SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED 114 | P a g e ---------- ------------------------------ ---------- ---------2 PDB$SEED READ ONLY NO 3 PDB1 MOUNTED 4 PDB2 READ WRITE NO V jakém stavu jsou PDB? SQL> COLUMN NAME FORMAT A15 COLUMN RESTRICTED FORMAT A10 COLUMN OPEN_TIME FORMAT A30 SELECT NAME, OPEN_MODE, RESTRICTED, OPEN_TIME FROM V$PDBS;SQL> SQL> SQL> SQL> NAME OPEN_MODE RESTRICTED OPEN_TIME --------------- ---------- ---------- ----------------------------PDB$SEED READ ONLY NO 24-FEB-14 07.15.58.575 PM PDB1 MOUNTED PDB2 READ WRITE NO 24-FEB-14 07.25.47.944 PM Vytvoření local uživatele v PDB SQL> alter session set container=PDB2; Session altered. SQL> show con_name CON_NAME -----------------------------PDB2 SQL> create user test identified by test; create user test identified by test * ERROR at line 1: ORA-01109: database not open 115 | P a g e SQL> alter pluggable database PDB2 open read write; Pluggable database altered. SQL> show con_name CON_NAME -----------------------------PDB2 SQL> create user test identified by test; User created. SQL> select username from dba_users where username like '%TEST%'; USERNAME ------------------------------------------------------------------------------C##TEST TEST SQL*Loader Express SQL> connect tom/oracle_4U Connected. SQL> create table zamestnanci (id integer primary key, jmeno varchar2(10)); Table created. [oel64:oracle:orcl12c]$ cat zamestnanci.dat 1, Tom 2, Matej 3, Tomik 4, Jaroslava 116 | P a g e 5, Pepa 6, Katka Import [oel64:oracle:orcl12c]$ sqlldr tom/oracle_4U TABLE=zamestnanci SQL*Loader: Release 12.1.0.1.0 - Production on Mon Feb 24 20:00:52 2014 Copyright (c) 1982, 2013, Oracle and/or its affiliates. rights reserved. All Express Mode Load, Table: ZAMESTNANCI Path used: External Table, DEGREE_OF_PARALLELISM=AUTO SQL*Loader-816: error creating temporary directory object SYS_SQLLDR_XT_TMPDIR_00000 for file zamestnanci.dat ORA-01031: insufficient privileges SQL*Loader-579: switching to direct path for the load SQL*Loader-583: ignoring trim setting with direct path, using value of LDRTRIM SQL*Loader-584: ignoring DEGREE_OF_PARALLELISM setting with direct path, using value of NONE Express Mode Load, Table: ZAMESTNANCI Path used: Direct Load completed - logical record count 6. Table ZAMESTNANCI: 6 Rows successfully loaded. Check the log file: zamestnanci.log for more information about the load. Kontrola [oel64:oracle:orcl12c]$ sqlplus tom/oracle_4U 117 | P a g e SQL*Plus: Release 12.1.0.1.0 Production on Mon Feb 24 20:04:12 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. Last Successful login time: Mon Feb 24 2014 20:00:52 +01:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> select * from zamestnanci; ID JMENO ---------- ---------1 Tom 2 Matej 3 Tomik 4 Jaroslava 5 Pepa 6 Katka 6 rows selected. Identity columns Uživatel musí mít právo create sequence. SQL> grant create sequence to tom; Grant succeeded. Definovaná automatická vazba mezi primary key a sequenci 118 | P a g e SQL> create table pom (id number generated by default as identity (start with 1 increment by 1) primary key, text varchar2(50)); Table created. SQL> insert into pom (text) values ('sql kurzy'); 1 row created. SQL> commit; Commit complete. SQL> select * from pom; ID TEXT ---------- -------------------------------------------------1 sql kurzy Kontrola SQL> column object_name format a15; SQL> column object_type format a15; SQL> select object_name, object_type from user_objects; OBJECT_NAME OBJECT_TYPE --------------- --------------ZAMESTNANCI TABLE SYS_C0010194 INDEX POM TABLE SYS_C0010200 INDEX ISEQ$$_93149 SEQUENCE 6 rows selected. 119 | P a g e SQL> drop table pom; Table dropped. SQL> connect / as sysdba Connected. SQL> select object_name, object_type from dba_objects where owner = 'TOM'; OBJECT_NAME OBJECT_TYPE --------------- --------------ISEQ$$_93146 SEQUENCE ISEQ$$_93143 SEQUENCE SYS_C0010194 INDEX ZAMESTNANCI TABLE Sekvence zůstává i po smazání kvůli možnému restore. Musí se smazat i recycle bin. SQL> purge dba_recyclebin; DBA Recyclebin purged. SQL> select object_name, object_type from dba_objects where owner = 'TOM'; OBJECT_NAME OBJECT_TYPE --------------- --------------SYS_C0010194 INDEX ZAMESTNANCI TABLE In database row archiving Jedná se o způsob jak archivovat řádky, aniž bysme je museli odmazávat. Zůstavají v tabulce, ale aplikace s nimi nepracuje. Nicméně je můžeme kdykoli pomocí změny jednoho atributu zviditelnit. 120 | P a g e Založení tabulky SQL> create table zam (id integer primary key, jmeno varchar2(10), hist_date date); Table created. SQL> insert into zam (id, jmeno) values (1,'Tom'); 1 row created. SQL> insert into zam (id, jmeno) values (2,'Matej'); 1 row created. SQL> commit; Commit complete. SQL> SQL> select * from zam; ID JMENO HIST_DATE ---------- ---------- --------1 Tom 2 Matej Zapnutí archivování na tabulce Objeví se nový sloupec, který říka zda-li sloupec viditelný nebo ne. SQL> alter table zam row archival; Table altered. SQL> select id, jmeno, ora_archive_state from zam; 121 | P a g e ID JMENO ORA_ARCHIVE_STATE ---------- ---------- ----------------1 Tom 0 2 Matej 0 Archivováni řádku SQL> update zam set ora_archive_state=dbms_ilm.archivestatename(1), hist_date=sysdate where id=2; 1 row updated. SQL> commit; Commit complete. SQL> select * from zam; ID JMENO HIST_DATE ---------- ---------- --------1 Tom Změna viditelnosti na všechny řádky SQL> alter session set row archival visibility = all; Session altered. SQL> select * from zam; ID JMENO HIST_DATE ---------- ---------- --------1 Tom 2 Matej 25-FEB-14 122 | P a g e SQL> alter session set row archival visibility = active; Session altered. SQL> select * from zam; ID JMENO HIST_DATE ---------- ---------- --------1 Tom Řádek existuje a přidání nového záznamu je zamezeno díky constraintu. SQL> insert into zam (id, jmeno) values (2,'Franta'); insert into zam (id, jmeno) values (2,'Franta') * ERROR at line 1: ORA-00001: unique constraint (TOM.SYS_C0010202) violated SQL> alter session set row archival visibility = all; Session altered. Řadek změněn na viditelný SQL> update zam set ora_archive_state=dbms_ilm.archivestatename(0), hist_date=sysdate where id=2; 1 row updated. SQL> commit; Commit complete. SQL> alter session set row archival visibility = active; 123 | P a g e Session altered. SQL> select * from zam; ID JMENO HIST_DATE ---------- ---------- --------1 Tom 2 Matej 25-FEB-14 SQL> Invisible column Založíme tabulku SQL> create table pom (x int, y int); Table created. SQL> insert into pom values ( 10, 20 ); 1 row created. Přídáme neviditelný sloupec SQL> alter table pom add ( inv int INVISIBLE ); Table altered. Není viditelný přes DESCRIBE. SQL> desc pom Name Null? Type ----------------------------------------- -------- --------------------------X NUMBER(38) Y NUMBER(38) Ani se do něj nevkládají záznamy. 124 | P a g e SQL> insert into pom values ( 13, 14 ); 1 row created. SQL> select * from pom; X Y ---------- ---------10 20 13 14 Vložit do něj lze pouze při jeho uvedeni v příkazu INSERT SQL> insert into pom (x,y,inv) values ( 100, 200,300 ); 1 row created. Nebo při pojmenování v SELECTu. SQL> select x,y,inv from pom; X Y INV ---------- ---------- ---------10 20 13 14 100 200 300 SQL> Změna na visible SQL> alter table pom modify inv visible; Table altered. A vše funguje normálně. SQL> select * from pom; 125 | P a g e X Y INV ---------- ---------- ---------10 20 13 14 100 200 300 Obnova tabulky z RMANa (12c) Všechny logy jsou na webu http://www.tomas-solar.com/blog/obnova-tabulky-rmanaoracle-12c/ Tabulka SQL> show user USER is "TOM" SQL> select * from zam; ID JMENO HIST_DATE ---------- ---------- --------1 Tom 2 Matej SQL> select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER -----------------------2077404 SQL> drop table zam; Table dropped. SQL> purge table zam; Table purged. 126 | P a g e Flashback nelze použít SQL> flashback table reco to before drop; flashback table reco to before drop * ERROR at line 1: ORA-38305: object not in RECYCLE BIN Obnova z RMANa RMAN> recover table tom.zam until scn 2077404 auxiliary destination '/u02/fra'; Vytvoření dočasné instance Starting recover at 26-FEB-14 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=53 device type=DISK RMAN-05026: WARNING: presuming following set of tablespaces applies to specified Point-in-Time List of tablespaces expected to have UNDO segments Tablespace SYSTEM Tablespace UNDOTBS1 Creating automatic instance, with SID='etsm' initialization parameters used for automatic instance: db_name=ORCL12C db_unique_name=etsm_pitr_ORCL12C Export tabulky z dočasné instance EXPDP> . . exported "TOM"."ZAM" 5.898 KB 2 rows EXPDP> Master table "SYS"."TSPITR_EXP_etsm_eoom" successfully loaded/unloaded Import tabulky do původní databáze IMPDP> . . imported "TOM"."ZAM" 5.898 KB 2 rows 127 | P a g e IMPDP> Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT IMPDP> Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER IMPDP> Job "SYS"."TSPITR_IMP_etsm_lDgp" successfully completed at Wed Feb 26 10:29:01 2014 elapsed 0 00:00:14 Import completed Odstranění dočasné instance Removing automatic instance Automatic instance removed Kontrola SQL> select * from zam; ID JMENO HIST_DATE ---------- ---------- --------1 Tom 2 Matej Obnova tabulky do jiné pomocí RMAN RMAN> recover table 'TOM'.'zam' until scn 2077404 auxiliary destination '/u02/fra' REMAP TABLE 'TOM'.'zam':'zam_obnova'; Starting recover at 26-FEB-14 using channel ORA_DISK_1 RMAN-05026: WARNING: presuming following set of tablespaces applies to specified Point-in-Time List of tablespaces expected to have UNDO segments Tablespace SYSTEM Tablespace UNDOTBS1 128 | P a g e Creating automatic instance, with SID='BaEE' initialization parameters used for automatic instance: db_name=ORCL12C Doporučení: Provozujete Vy nebo Vaši klienti databáze Oracle? Mou primární oblastí je správa databází, konzultace a školení. Velmi rád s Vami bud spolupracovat. Kontaktujte me a můžeme si možnostech spolupráce pohovořit. Dotazy: Máte dotazy k daným příkládům nebo máte námět na jiné příklady? Zajimá vás jiná oblast? Napiště mi na [email protected] Webináře: Na webu www.tomas-solar.com máte k dispozi seznam webinářů, které proběhly nebo se chystají. Věřím, že témata pro Vás budou zajimavá a kdyby přece jen nebyla, napište mě, co Vás zajímá? Workshopy: Chtěli byste se účastit některého z jednodenních workshopů nebo máte námět na speciální školení? Napiště mi na [email protected] Jste DBA? Zaregistrujte se na komunitním webu http://database-administrator.com/ Hledáte další informace? Pak navštivte můj web http://www.tomas-solar.com/ 129 | P a g e Těším se na Vaše dotazy a brzy pošlu další pokračování. Pěkný den Tomáš Solař 130 | P a g e
Podobné dokumenty
Osteoporóza
Bringhurst FR, et al. Harrison’s Principles of Internal Medicine. 16th ed. 2005:2238-2249.
Lindsay R, et al. Treatment of the Postmenopausal Woman: Basic and Clinical Aspects. 2nd ed. 1999:305-314.
databázový server firebird instalace,konfigurace
V rámci FB je použit způsob zabezpečení na úrovni databázového serveru – jednotlivé databáze
neobsahují žádné dodatečné informace o uživatelských účtech, z čehož vyplývá požadavek na
zabezpečení fy...
PostgreSQL ve verzi 9.2, 9.3 a 9.4 SQL
sloučí řádky (a zároveň odstraní případné duplicitní řádky). Podmínkou je stejný počet
sloupců a konvertibilní datové typy slučovaných relací.
Instalační příručce Oracle pro Linux
INSTALACE ORACLE LISTENERU
Pro správný běh Oracle je třeba mít naistalovánu a spuštěnu službu Listener. Listener lze vytvořit
pomocí nástroje Oracle Net Configuration Assistant, který vyvoláme pom...
Untitled
2. Pokud je hledání programů ukončeno, objeví se následující zpráva (s počtem nalezených
programů a rádií). Posuňte kurzor na “OK” a stiskněte tlačítko “OK” pro uložení změn.
Automatic Storage Management (ASM)
ASM dokáže pracovat i s jejími částmi (např.
jemnější striping používá 128 KB bloky)
soubory rozděleny na bloky této velikosti a
umístěny na disky dle nastavené politiky
(striping, mirroring…) do...
Novinky databáze Oracle 12c
Novinek je dost a pravděpodobně vznikne ještě pokračování, protože do
1h nejsem schopen pojmout vše.
Některé příklady jsou a budou určitě v EBOOKu.
Sledujte stránku webinářu, kde se objevují nově p...