Oracle: Unterschied zwischen den Versionen
Aus MeinWiki
K (→Tablespace erweitern) |
(→ORDS Debugging aktivieren) |
||
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | *[[Installationsanleitung Linux/Oracle | + | *[[Installationsanleitung Linux/Oracle]] |
+ | *[[Version12]] | ||
+ | *[[Procedure/Function]] | ||
+ | *[[Fehlermeldung]] | ||
== Berechtigung verwalten == | == Berechtigung verwalten == | ||
*User Berechtigung auf ein Objekt erteilen. (All, Select, Insert, Update, Delete, Alter, Referenz, Index) | *User Berechtigung auf ein Objekt erteilen. (All, Select, Insert, Update, Delete, Alter, Referenz, Index) | ||
Zeile 15: | Zeile 18: | ||
*User Berechtigung zum Ausführen von Funktionen/Prozeduren erteilen | *User Berechtigung zum Ausführen von Funktionen/Prozeduren erteilen | ||
revoke execute on "object" from "user"; | 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 == | ||
Zeile 41: | Zeile 50: | ||
*Feldlänge ändern, die größer ist als sind. Daten werden abgeschnitten. | *Feldlänge ändern, die größer ist als sind. Daten werden abgeschnitten. | ||
update "Table" set "Column" = substr("Column",0,255) where length("Column")> 255; | 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
Inhaltsverzeichnis
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>