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
.
8|Page
02.10.2013
13:45
..
01.10.2013
14:29
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: 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::
# # 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. ..... ..... 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 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 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 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 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