Oracle: Unterschied zwischen den Versionen

Aus MeinWiki
Wechseln zu: Navigation, Suche
K
(ORDS Debugging aktivieren)
 
(30 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
*[[Installationsanleitung Linux/Oracle]]
 +
*[[Version12]]
 +
*[[Procedure/Function]]
 +
*[[Fehlermeldung]]
 +
== Berechtigung verwalten ==
 +
*User Berechtigung auf ein Objekt erteilen. (All, Select, Insert, Update, Delete, Alter, Referenz, Index)
 +
    grant "Privileges" on "object" to "user";
 +
    grant "Privileges", "Privileges",  on "object" to "user";
 +
*User Berechtigung von ein Objekt entfernen. (All, Select, Insert, Update, Delete, Alter, Referenz, Index)
 +
    revoke "Privileges" on "object" from "user";
 +
*User zu Gruppe hinzufügen
 +
    grant "Role" to "user";
 +
    grant "Role", "Role" to "user";
 +
*User von einer Gruppe entfernen
 +
    revoke "Role" from "user";
 +
*User Berechtigung zum Ausführen von Funktionen/Prozeduren erteilen
 +
    grant execute on "object" to "user";
 +
*User Berechtigung zum Ausführen von Funktionen/Prozeduren erteilen
 +
    revoke execute on "object" from "user";
 +
*Passwortablauf der Benutzer über Profile deaktiveren. Wenn nötig das "DEFAULT"-Profile clonen.
 +
  alter profile "DEFAULT" limit PASSWORD_REUSE_TIME UNLIMITED;
 +
  alter profile "DEFAULT" limit PASSWORD_LIFE_TIME UNLIMITED;
 +
  -- Abfragen --
 +
  select username, account_status, expiry_date from dba_user;
 +
  select * drom dba_profiles order by profile, resource_name;
 +
 
== Tablespace erweitern ==
 
== Tablespace erweitern ==
*um ein File
+
*um ein File.
 
     ALTER TABLESPACE "Tablespace"  
 
     ALTER TABLESPACE "Tablespace"  
 
     ADD  
 
     ADD  
Zeile 7: Zeile 33:
 
     ON NEXT  100M MAXSIZE  2048M;
 
     ON NEXT  100M MAXSIZE  2048M;
  
*um mehrere Files
+
*um mehrere Files.
 
     ALTER TABLESPACE "Tablespace"  
 
     ALTER TABLESPACE "Tablespace"  
 
     ADD  
 
     ADD  
Zeile 15: Zeile 41:
 
     ON NEXT  100M MAXSIZE  2048M, '/opt/oracle/oradata/"SID"/"Tablespace"..dbf' SIZE 100M AUTOEXTEND  
 
     ON NEXT  100M MAXSIZE  2048M, '/opt/oracle/oradata/"SID"/"Tablespace"..dbf' SIZE 100M AUTOEXTEND  
 
     ON NEXT  100M MAXSIZE  2048M;
 
     ON NEXT  100M MAXSIZE  2048M;
 +
*Autoextend erweitern.
 +
    ALTER DATABASE DATAFILE '/opt/oracle/oradata/"SID"/"Tablespace".dbf' AUTOEXTEND ON MAXSIZE  768M
 +
 +
== Hilfreiche Befehle ==
 +
=== Feldlänge ===
 +
*Feldlänge die größer ist als abfragen.
 +
    select substr("Column",0,255)  from "Table" where length(Column)> 255;
 +
*Feldlänge ändern, die größer ist als sind. Daten werden abgeschnitten.
 +
    update "Table" set "Column" = substr("Column",0,255) where length("Column")> 255;
 +
 +
== Move Datefile ==
 +
=== Online ===
 +
* In der Enterprise Version ab Version 12.1 besteht die Möglichkeit online Datafiles zu verschieben.
 +
select file_id, file_name FROM dba_data_files
 +
alter database move datafile "file_id oder file_name' to 'new_file_name'
 +
=== Offline ===
 +
select t.file_id, t.tablespace_name, t.file_name  from dba_data_files t
 +
shutdown immediate;
 +
host mv file_name new_file_name
 +
alter database rename file 'file_name' to 'new_file_name';
 +
alter database open;
 +
 +
== Oracle Dump Export/ Import ==
 +
=== Export / Import old ===
 +
*Export mit Parameterfile
 +
Parameterfile:
 +
FILE='/path/dump.dmp'
 +
LOG='/path/log.log'
 +
STATISTICS=none
 +
OWNER=(DBUSER1,DBUSER2)
 +
Befehl:
 +
exp \'/ as sysdba\' PARFILE=/path/parameterfile.dat
 +
=== Oracledump ===
 +
*Dump Directory für Import oder Export erstellen
 +
    CREATE DIRECTORY dmpdir-name AS 'Verzeichnis';
 +
*Export-Dump.
 +
    expdp \'/ as sysdba\' dumpfile=file.dmp logfile=file.log schemas=SCHEMA-NAME directory=dmpdir-name version=10.2.0
 +
*Import-Dump.
 +
    impdp \'/ as sysdba\' dumpfile=file.dmp logfile=file.log schemas=SCHEMA-NAME directory=dmpdir-name
 +
====Fehlermeldung====
 +
*ORA-39346: Datenverlust bei Zeichensatzkonvertierung für Objekt SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
 +
Export mit dem Parameter exclude=statistics ausführen.
 +
 +
== Archivelog Änderungen anzeigen. ==
 +
  select t.sid, s.name, t.value, r.username, r.program, r.type, r.module
 +
  from v$sesstat t
 +
      join v$statname s on s.statistic# = t.statistic#
 +
      join v$session r on r.sid = t.sid
 +
  where name like '%redo entries%'
 +
  order by t.value desc;
 +
== Patchmanagment ==
 +
=== OPatch aktualisieren ===
 +
Bevor neue Patches in die Oracleinstallation eingespielt werden könnne, muss das Patchtool "OPatch" auf den neusten Stand aktualisiert werden.
 +
*Parameter ORACLE_HOME überprüfen.
 +
*Inventory anzeigen (OPatchversion).
 +
    $ORACLE_HOME/OPatch/opatch version
 +
    $ORACLE_HOME/OPatch/opatch lsinventory
 +
*Patch entpacken. (muss nicht innerhalb der Oracleinstallation sein)
 +
*Verzeichnis $ORACLE_HOME/OPatch löschen.
 +
*Patch in das Verzeichnis kopieren(Berechtigung beachten).
 +
*Inventory anzeigen (OPatchversion).
 +
 +
=== Patch einspielen ===
 +
*Patch entpacken.
 +
*In das entpackte Verzeichnis wechseln.
 +
*Anforderung der Patchinstallation überprüfen.
 +
    $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
 +
*Datenbank und Listner stoppen.
 +
*Patch einspielen.
 +
    $ORACLE_HOME/OPatch/opatch apply
 +
*Installierte Patches anzeigen
 +
*Datenbank starten.
 +
*Scripte der Preinstallation ausführen (Readme-Datei).
 +
== Archivelog analysieren ==
 +
* File laden
 +
begin
 +
sys.dbms_logmnr.add_logfile (logfilename => 'File-Path',options=>sys.dbms_logmnr.new);
 +
sys.DBMS_LOGMNR.START_LOGMNR(options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
 +
end;
 +
/
 +
*Inhalt anzeigen.
 +
select * from V$LOGMNR_CONTENTS where rownum < 1000;
 +
 +
column SQL_REDO format a80;
 +
column SQL_UNDO format a80;
 +
select SQL_REDO , SQL_UNDO from V$LOGMNR_CONTENTS where rownum < 1000;
 +
*File entladen!!!!
 +
begin
 +
sys.dbms_logmnr.end_logmnr;
 +
end;
 +
/
 +
 +
== ODAC ==
 +
*Installation lt. Anleitung.
 +
*Umgebungsvariable PAth anpassen.
 +
*TNS-Names erstellen.
 +
*Umgebungsvariable TNS_ADMIN erstellen.
 +
 +
== APEX ==
 +
=== Fehler ===
 +
==== Verbindung ORDS REST fehlerhaft ====
 +
*  The connection pool named: ords_rt is not correctly configured, due to the following error(s): ORA-28000: Account ist gesperrt
 +
Datenbank User APEX_REST_PUBLIC_USER entsprerren.
 +
    ALTER USER APEX_REST_PUBLIC_USER IDENTIFIED BY "Passwort" ACCOUNT UNLOCK;
 +
Verbindungseinstellung der ORDS Konfiguration überprüfen.
 +
    /u01/ords/conf/ords/conf/ords_rt.xml
 +
Ggf. Passwort Parameter in der Konfiguration neu setzen. Unverschlüsselt mit !. Tomcat neu starten.
 +
    <entry key="db.password">!newpassword</entry>
 +
 +
==== ORDS Debugging aktivieren====
 +
Im Parameterfile folgende Einträge hinzufügen.
 +
  <entry key="debug.debugger">true</entry>
 +
  <entry key="debug.printDebugToScreen">true</entry>
 +
  <entry key="log.logging">true</entry>
 +
  <entry key="log.maxEntries">600</entry>

Aktuelle Version vom 6. November 2020, 17:53 Uhr

Berechtigung verwalten

  • User Berechtigung auf ein Objekt erteilen. (All, Select, Insert, Update, Delete, Alter, Referenz, Index)
   grant "Privileges" on "object" to "user";
   grant "Privileges", "Privileges",  on "object" to "user";
  • User Berechtigung von ein Objekt entfernen. (All, Select, Insert, Update, Delete, Alter, Referenz, Index)
   revoke "Privileges" on "object" from "user";
  • User zu Gruppe hinzufügen
   grant "Role" to "user";
   grant "Role", "Role" to "user";
  • User von einer Gruppe entfernen
   revoke "Role" from "user";
  • User Berechtigung zum Ausführen von Funktionen/Prozeduren erteilen
   grant execute on "object" to "user";
  • User Berechtigung zum Ausführen von Funktionen/Prozeduren erteilen
   revoke execute on "object" from "user";
  • Passwortablauf der Benutzer über Profile deaktiveren. Wenn nötig das "DEFAULT"-Profile clonen.
  alter profile "DEFAULT" limit PASSWORD_REUSE_TIME UNLIMITED;
  alter profile "DEFAULT" limit PASSWORD_LIFE_TIME UNLIMITED;
  -- Abfragen --
  select username, account_status, expiry_date from dba_user;
  select * drom dba_profiles order by profile, resource_name;

Tablespace erweitern

  • um ein File.
   ALTER TABLESPACE "Tablespace" 
   ADD 
   DATAFILE '/opt/oracle/oradata/"SID"/"Tablespace".dbf' SIZE 100M 
   AUTOEXTEND 
   ON NEXT  100M MAXSIZE  2048M;
  • um mehrere Files.
   ALTER TABLESPACE "Tablespace" 
   ADD 
   DATAFILE '/opt/oracle/oradata/"SID"/"Tablespace".dbf' SIZE 100M 
   AUTOEXTEND 
   ON NEXT  100M MAXSIZE  2048M, '/opt/oracle/oradata/"SID"/"Tablespace"..dbf' SIZE 100M AUTOEXTEND 
   ON NEXT  100M MAXSIZE  2048M, '/opt/oracle/oradata/"SID"/"Tablespace"..dbf' SIZE 100M AUTOEXTEND 
   ON NEXT  100M MAXSIZE  2048M;
  • Autoextend erweitern.
   ALTER DATABASE DATAFILE '/opt/oracle/oradata/"SID"/"Tablespace".dbf' AUTOEXTEND ON MAXSIZE  768M

Hilfreiche Befehle

Feldlänge

  • Feldlänge die größer ist als abfragen.
   select substr("Column",0,255)  from "Table" where length(Column)> 255;
  • Feldlänge ändern, die größer ist als sind. Daten werden abgeschnitten.
   update "Table" set "Column" = substr("Column",0,255) where length("Column")> 255;

Move Datefile

Online

  • In der Enterprise Version ab Version 12.1 besteht die Möglichkeit online Datafiles zu verschieben.
select file_id, file_name FROM dba_data_files
alter database move datafile "file_id oder file_name' to 'new_file_name'

Offline

select t.file_id, t.tablespace_name, t.file_name  from dba_data_files t
shutdown immediate;
host mv file_name new_file_name
alter database rename file 'file_name' to 'new_file_name';
alter database open;

Oracle Dump Export/ Import

Export / Import old

  • Export mit Parameterfile

Parameterfile:

FILE='/path/dump.dmp'
LOG='/path/log.log' 
STATISTICS=none 
OWNER=(DBUSER1,DBUSER2)

Befehl:

exp \'/ as sysdba\' PARFILE=/path/parameterfile.dat

Oracledump

  • Dump Directory für Import oder Export erstellen
   CREATE DIRECTORY dmpdir-name AS 'Verzeichnis';
  • Export-Dump.
   expdp \'/ as sysdba\' dumpfile=file.dmp logfile=file.log schemas=SCHEMA-NAME directory=dmpdir-name version=10.2.0
  • Import-Dump.
   impdp \'/ as sysdba\' dumpfile=file.dmp logfile=file.log schemas=SCHEMA-NAME directory=dmpdir-name

Fehlermeldung

  • ORA-39346: Datenverlust bei Zeichensatzkonvertierung für Objekt SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Export mit dem Parameter exclude=statistics ausführen.

Archivelog Änderungen anzeigen.

  select t.sid, s.name, t.value, r.username, r.program, r.type, r.module
  from v$sesstat t 
      join v$statname s on s.statistic# = t.statistic#
      join v$session r on r.sid = t.sid
  where name like '%redo entries%'
  order by t.value desc;

Patchmanagment

OPatch aktualisieren

Bevor neue Patches in die Oracleinstallation eingespielt werden könnne, muss das Patchtool "OPatch" auf den neusten Stand aktualisiert werden.

  • Parameter ORACLE_HOME überprüfen.
  • Inventory anzeigen (OPatchversion).
   $ORACLE_HOME/OPatch/opatch version
   $ORACLE_HOME/OPatch/opatch lsinventory
  • Patch entpacken. (muss nicht innerhalb der Oracleinstallation sein)
  • Verzeichnis $ORACLE_HOME/OPatch löschen.
  • Patch in das Verzeichnis kopieren(Berechtigung beachten).
  • Inventory anzeigen (OPatchversion).

Patch einspielen

  • Patch entpacken.
  • In das entpackte Verzeichnis wechseln.
  • Anforderung der Patchinstallation überprüfen.
   $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
  • Datenbank und Listner stoppen.
  • Patch einspielen.
   $ORACLE_HOME/OPatch/opatch apply
  • Installierte Patches anzeigen
  • Datenbank starten.
  • Scripte der Preinstallation ausführen (Readme-Datei).

Archivelog analysieren

  • File laden
begin
sys.dbms_logmnr.add_logfile (logfilename => 'File-Path',options=>sys.dbms_logmnr.new);
sys.DBMS_LOGMNR.START_LOGMNR(options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
end;
/
  • Inhalt anzeigen.
select * from V$LOGMNR_CONTENTS where rownum < 1000;

column SQL_REDO format a80;
column SQL_UNDO format a80;
select SQL_REDO , SQL_UNDO from V$LOGMNR_CONTENTS where rownum < 1000;
  • File entladen!!!!
begin
sys.dbms_logmnr.end_logmnr;
end; 
/

ODAC

  • Installation lt. Anleitung.
  • Umgebungsvariable PAth anpassen.
  • TNS-Names erstellen.
  • Umgebungsvariable TNS_ADMIN erstellen.

APEX

Fehler

Verbindung ORDS REST fehlerhaft

  • The connection pool named: ords_rt is not correctly configured, due to the following error(s): ORA-28000: Account ist gesperrt

Datenbank User APEX_REST_PUBLIC_USER entsprerren.

   ALTER USER APEX_REST_PUBLIC_USER IDENTIFIED BY "Passwort" ACCOUNT UNLOCK;

Verbindungseinstellung der ORDS Konfiguration überprüfen.

    /u01/ords/conf/ords/conf/ords_rt.xml

Ggf. Passwort Parameter in der Konfiguration neu setzen. Unverschlüsselt mit !. Tomcat neu starten.

   <entry key="db.password">!newpassword</entry>

ORDS Debugging aktivieren

Im Parameterfile folgende Einträge hinzufügen.

 <entry key="debug.debugger">true</entry>
 <entry key="debug.printDebugToScreen">true</entry>
 <entry key="log.logging">true</entry>
 <entry key="log.maxEntries">600</entry>