Oracle

Aus MeinWiki
Wechseln zu: Navigation, Suche

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>