Pokazywanie postów oznaczonych etykietą oracle - administracja. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą oracle - administracja. Pokaż wszystkie posty

piątek, 13 listopada 2009

ORA-01658: unable to create INITIAL extent for segment in tablespace string

Brakło miejsca przy rozszerzaniu pliku należącego do przestrzeni tabel (TABLE SPACE). Jeżeli została użyta opcja opcja AUTOEXTEND (przy tworzeniu takiego plikunp. ALTER DATABASE DATAFILE 'pelna_sciezka_do_pliku' AUTOEXTEND ON NEXT 10M;) - to prawdopodobnie zabrakło miejsca na partycji, w której znajduje się powyższy plik. W przeciwnym razie powodem jest przekroczenie rozmiaru pliku (gdy nie używamy opcji AUTOEXTEND) - wtedy musimy ręcznie zwiększyć jego rozmiar, np. tak:

ALTER DATABASE DATAFILE 'pelna_sciezka_do_pliku' RESIZE 500M;

poniedziałek, 9 listopada 2009

Jak sprawdzić z skąd instancja Oracle'a wzięła parametry startowe?

Z którego typu parametrów uruchomieniowych korzysta twoja instancja? Zmieniłeś je w PFILE'u a instancja dalej się uruchamia ze starymi ustawieniami - więc zapewne jest to SPFILE? Nie chcesz zgadywać?

Uruchamiamy konsolę:

sqlplus / as sysdba
SELECT DECODE (value, NULL,'PFILE', 'SPFILE') "Init File Type" FROM v$parameter WHERE name = 'spfile';


I już wiemy.
Ogólnie zasada jest taka - wartość value = NULL oznacza, że baza nie korzysta z określonego typu pliku inicjalizacyjnego. Jeżeli w obydwu przypadkach wartość kolumny VALUE jest NULLem - to baza danych używa PFILE.

Możemy też łatwo znaleźć lokalizację pliku za pomocą:

select value from v$parameter where name like 'spfile';


lub

SHOW PARAMETER SPFILE;

środa, 19 sierpnia 2009

Oracle - jak włączyć tryb ARCHIVELOG?

Domyślnie po instalacji tryb archiwizowania redo logów jest wyłączony co oznacza, że w momencie zapełnienia wszystkich wolumenów redo logów następuje ich rotacja - najstarszy redo log jest czyszczony a następnie zrzucane do niego wykonane transakcje.
Żeby nie stracić tych informacji warto włączyć tryb archivelog (to nie jedyny powód dla którego warto to zrobić - o tym następnym razem).
Włączę konsolę oracle'a:

$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Aug 19 07:33:05 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

SQL>

Teraz w konsoli sprawdźmy w jakim trybie są archiwizacja redo logów:

SQL> select log_mode from v$database;

LOG_MODE
------------
NOARCHIVELOG


Teraz włączę archivelogi. W tym celu należy na początek wyłączyć bazę danych:

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.


Teraz zamontujemy bazę - nie będzie ona jeszcze dostępna z zewnątrz.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 268435456 bytes
Fixed Size 1258364 bytes
Variable Size 243272836 bytes
Database Buffers 20971520 bytes
Redo Buffers 2932736 bytes
Database mounted.


Możemy ustawić tryb pracy z archiwizowaniem redo logów:
SQL> alter database archivelog;

Database altered.


Następnie otwieramy bazę danych:

SQL> alter database open;

Database altered.


Sprawdźmy czy się udało:

SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG


Jak najbardziej.

Zobaczmy czy działa proces archiwizacji redo logów (arch):

SQL> show parameter log_archive_start

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_start boolean FALSE


Jak widać nie działa. W celu uruchomienia go ręcznie można użyć komendy:
SQL> alter system archive log start;

System altered.


Zobaczmy w widoku procesów oracle czy działa jakiś archiwizator:
SQL> select * from v$archive_processes;

PROCESS STATUS LOG_SEQUENCE STAT
---------- ---------- ------------ ----
0 ACTIVE 0 IDLE
1 ACTIVE 0 IDLE
2 STOPPED 0 IDLE
3 STOPPED 0 IDLE

Działają dwa. Czyli ok.
Teraz należałoby ustawić automatyczny start procesów archiwizacji. Musimy to zrobić w pliku init.ora. Należy dodać poniższe linijki:
log_archive_dest = /var/lib/oracle/archivelog/
log_archive_format = %S.arc
log_archive_start = true


Ważne! Żeby wykonywać te polecenia muszę być zalogowany z uprawnieniami SYSDBA lub SYSOPER.