Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Durchführen allgemeiner Systemaufgaben für Oracle DB-Instances
Im Folgenden erfahren Sie, wie Sie bestimmte allgemeine DBA-Aufgaben durchführen können, die mit dem System Ihrer Amazon RDS-DB-Instances in Oracle zusammenhängen. Um eine verwaltete Service-Erfahrung zu bieten, stellt Amazon RDS keinen Shell-Zugriff zu DB-Instances bereit und beschränkt den Zugriff auf bestimmte Systemprozeduren und -tabellen, die erweiterte Sonderrechte erfordern.
Themen
- Trennen einer Sitzung
- Beenden einer Sitzung
- Abbrechen einer SQL-Anweisung in einer Sitzung
- Aktivieren und Deaktivieren von beschränkten Sitzungen
- Bereinigen des freigegebenen Pools
- Bereinigen des Buffer-Cache
- Leeren des Smart-Flash-Caches der Datenbank
- Erteilen von SELECT- oder EXECUTE-Berechtigungen für SYS-Objekte
- Widerrufen von SELECT- oder EXECUTE-Berechtigungen für SYS-Objekte
- Verwaltung von RDS_X$-Ansichten für Oracle-DB-Instances
- Erteilen von Berechtigungen an Nicht-Hauptbenutzer
- Erstellen von benutzerdefinierten Funktionen für das Überprüfen von Passwörtern
- Einrichten eines benutzerdefinierten DNS-Servers
- Festlegen und Aufheben von Systemdiagnoseereignissen
Trennen einer Sitzung
Um die aktuelle Sitzung zu trennen, indem Sie den dedizierten Serverprozess beenden, verwenden Sie die Amazon RDS-Prozedur rdsadmin.rdsadmin_util.disconnect
. Die Prozedur disconnect
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
Zahl |
— |
Ja |
Die Sitzungskennung |
|
Zahl |
— |
Ja |
Die Seriennummer der Sitzung |
|
varchar |
'IMMEDIATE' |
Nein |
Gültige Werte sind |
Im folgenden Beispiel wird die Verbindung mit einer Sitzung getrennt.
begin rdsadmin.rdsadmin_util.disconnect( sid =>
sid
, serial =>serial_number
); end; /
Stellen Sie an die Ansicht V$SESSION
eine Abfrage, um die Sitzungskennung und die -seriennummer zu erhalten. Im folgenden Beispiel werden alle Sitzungen für den Benutzer abgerufen AWSUSER
.
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = '
AWSUSER
';
Die Datenbank muss offen sein, um diese Methode zu verwenden. Weitere Informationen über das Trennen der Verbindung zu einer Sitzung finden Sie unter ALTER SYSTEM
Beenden einer Sitzung
Um eine Sitzung zu beenden, verwenden Sie die Amazon RDS-Prozedur rdsadmin.rdsadmin_util.kill
. Die Prozedur kill
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
Zahl |
— |
Ja |
Die Sitzungskennung |
|
Zahl |
— |
Ja |
Die Seriennummer der Sitzung |
|
varchar |
Null |
Nein |
Gültige Werte sind
Wenn Sie |
Stellen Sie an die Ansicht V$SESSION
eine Abfrage, um die Sitzungskennung und die -seriennummer zu erhalten. Im folgenden Beispiel werden alle Sitzungen für den Benutzer abgerufen AWSUSER
.
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = '
AWSUSER
';
Im folgenden Beispiel wird eine Sitzung beendet.
BEGIN rdsadmin.rdsadmin_util.kill( sid =>
sid
, serial =>serial_number
, method => 'IMMEDIATE'); END; /
Im folgenden Beispiel werden die mit einer Sitzung verbundenen Prozesse beendet.
BEGIN rdsadmin.rdsadmin_util.kill( sid =>
sid
, serial =>serial_number
, method => 'PROCESS'); END; /
Abbrechen einer SQL-Anweisung in einer Sitzung
Um eine SQL-Anweisung in einer Sitzung abzubrechen, verwenden Sie die Amazon RDS-Prozedur rdsadmin.rdsadmin_util.cancel
.
Anmerkung
Dieses Verfahren wird für Oracle Database 19c (19.0.0) und alle höheren Haupt- und Nebenversionen von RDS for Oracle unterstützt.
Die Prozedur cancel
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
Zahl |
— |
Ja |
Die Sitzungskennung |
|
Zahl |
— |
Ja |
Die Seriennummer der Sitzung |
|
varchar2 |
Null |
Nein |
Die SQL-ID der SQL-Anweisung. |
Das folgende Beispiel bricht eine SQL-Anweisung in einer Sitzung ab.
begin rdsadmin.rdsadmin_util.cancel( sid =>
sid
, serial =>serial_number
, sql_id =>sql_id
); end; /
Um die Sitzungs-ID, die Sitzungsseriennummer und die SQL-ID einer SQL-Anweisung abzurufen, rufen Sie die V$SESSION
-Ansicht ab. Das folgende Beispiel ruft alle Sitzungen und SQL-IDs für den Benutzer a AWSUSER
.
select SID, SERIAL#, SQL_ID, STATUS from V$SESSION where USERNAME = '
AWSUSER
';
Aktivieren und Deaktivieren von beschränkten Sitzungen
Um eine SQL-Anweisung in einer Sitzung abzubrechen, verwenden Sie die Amazon RDS-Prozedur rdsadmin.rdsadmin_util.restricted_session
. Die Prozedur restricted_session
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Ja | Beschreibung |
---|---|---|---|---|
|
Boolean |
true |
Nein |
Setzen Sie diesen Parameter auf |
Im folgenden Beispiel wird gezeigt, wie beschränkte Sitzungen aktiviert und deaktiviert werden können.
/* Verify that the database is currently unrestricted. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ------- ALLOWED /* Enable restricted sessions */ EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => true); /* Verify that the database is now restricted. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ---------- RESTRICTED /* Disable restricted sessions */ EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => false); /* Verify that the database is now unrestricted again. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ------- ALLOWED
Bereinigen des freigegebenen Pools
Um den freigegebenen Pool zu bereinigen, verwenden Sie die Amazon-RDS-Prozedur rdsadmin.rdsadmin_util.flush_shared_pool
. Die Prozedur flush_shared_pool
hat keine Parameter.
Im folgenden Beispiel wird der geteilte Pool bereinigt.
EXEC rdsadmin.rdsadmin_util.flush_shared_pool;
Bereinigen des Buffer-Cache
Um den gemeinsamen Pool zu leeren, verwenden Sie die Amazon RDS-Prozedur rdsadmin.rdsadmin_util.flush_buffer_cache
. Die Prozedur flush_buffer_cache
hat keine Parameter.
Im folgenden Beispiel wird der Buffer-Cache bereinigt.
EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;
Leeren des Smart-Flash-Caches der Datenbank
Wenn Sie den Smart-Flash-Cache der Datenbank leeren möchten, verwenden Sie das Amazon-RDS-Verfahren rdsadmin.rdsadmin_util.flush_flash_cache
. Die Prozedur flush_flash_cache
hat keine Parameter. Im folgenden Beispiel wird der Smart-Flash-Cache der Datenbank geleert.
EXEC rdsadmin.rdsadmin_util.flush_flash_cache;
Weitere Informationen zur Verwendung des Smart-Flash-Caches der Datenbank mit RDS für Oracle finden Sie unter Speichern temporärer Daten in einem Instance-Speicher von RDS für Oracle.
Erteilen von SELECT- oder EXECUTE-Berechtigungen für SYS-Objekte
Im Normalfall werden Sonderrechte mithilfe von Rollen übertragen, die viele Objekte beinhalten können. Um den Puffer-Cache zu leeren, verwenden Sie die Amazon RDS-Prozedur rdsadmin.rdsadmin_util.grant_sys_object
. Die Prozedur gewährt nur Berechtigungen, die dem Masterbenutzer bereits über eine Rolle oder direkte Erteilung gewährt wurden.
Die Prozedur grant_sys_object
hat die folgenden Parameter.
Wichtig
Verwenden Sie für alle Parameterwerte Großbuchstaben, es sei denn, Sie haben den Benutzer mit einer Kennung mit bedeutsamer Groß- und Kleinschreibung erstellt. Wenn Sie z. B. CREATE USER
myuser
oder CREATE USER MYUSER
ausführen , wird im Datenwörterbuch MYUSER
gespeichert. Wenn Sie jedoch doppelte Anführungszeichen in CREATE USER
"MyUser"
verwenden, speichert das Datenwörterbuch MyUser
.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
varchar2 |
— |
Ja |
Der Name des Objekts dem die Sonderrechte erteilt werden sollen. Das Objekt kann ein Verzeichnis, eine Funktion, ein Paket, eine Prozedur, eine Sequenz, eine Tabelle oder eine Ansicht sein. Objektnamen müssen genauso angegeben werden, wie sie in sin |
|
varchar2 |
— |
Ja |
Der Name des Objekts, dem die Sonderrechte erteilt werden sollen. Das Objekt kann ein Schema oder eine Rolle sein. |
|
varchar2 |
Null |
Ja |
— |
|
Boolean |
false |
Nein |
Setzen Sie diesen Wert auf |
Im folgenden Beispiel werden einem Objekt mit dem Namen V_$SESSION
für einen Benutzer mit dem Namen USER1
ausgewählte Berechtigungen erteilt.
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => '
V_$SESSION
', p_grantee => 'USER1
', p_privilege => 'SELECT
'); end; /
Im folgenden Beispiel werden einem Objekt mit dem Namen V_$SESSION
für einen Benutzer mit dem Namen USER1
mit der Erteilungsoption ausgewählte Berechtigungen erteilt.
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => '
V_$SESSION
', p_grantee => 'USER1
', p_privilege => 'SELECT
', p_grant_option =>true
); end; /
Um Sonderrechte für ein Objekt erteilen zu können, muss Ihr Konto über diese Sonderrechte verfügen, die ihm entweder direkt, mithilfe der Genehmigungsoption oder einer Rolle mithilfe von erteilt wurde with admin option
. Im häufigsten Fall wird das Sonderrecht SELECT
an eine DBA-Ansicht erteilt, das an die Rolle SELECT_CATALOG_ROLE
erteilt wurde. Wenn diese Rolle Ihrem Benutzer nicht bereits direkt mithilfe von with admin option
erteilt wurde, können Sie die Berechtigung nicht übertragen. Wenn Sie über das DBA-Sonderrecht verfügen, können Sie die Rolle direkt an einen anderen Benutzer übertragen.
Im folgenden Beispiel wird die SELECT_CATALOG_ROLE
und EXECUTE_CATALOG_ROLE
an USER1
übertragen. Da with
admin option
verwendet wird, kann USER1
jetzt Zugriffsrechte auf SYS-Objekte erteilen, die an SELECT_CATALOG_ROLE
erteilt wurden.
GRANT SELECT_CATALOG_ROLE TO
USER1
WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE toUSER1
WITH ADMIN OPTION;
Objekte, die bereits an PUBLIC
erteilt wurden, müssen nicht erneut erteilt werden. Wenn Sie die Prozedur grant_sys_object
verwenden, um erneut Zugriffsrechte zu erteilen, ist der Prozeduraufruf erfolgreich.
Widerrufen von SELECT- oder EXECUTE-Berechtigungen für SYS-Objekte
Um Berechtigungen für ein einzelnes Objekt zu entziehen, verwenden Sie die Amazon RDS-Prozedur rdsadmin.rdsadmin_util.revoke_sys_object
. Das Verfahren widerruft nur Privilegien, die dem Masterkonto bereits über eine Rolle oder direkte Erteilung gewährt wurden.
Die Prozedur revoke_sys_object
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
varchar2 |
— |
Ja |
Der Name des Objekts, für das Berechtigungen widerrufen werden sollen. Das Objekt kann ein Verzeichnis, eine Funktion, ein Paket, eine Prozedur, eine Sequenz, eine Tabelle oder eine Ansicht sein. Objektnamen müssen genauso angegeben werden, wie sie in sin |
|
varchar2 |
— |
Ja |
Der Name des Objekts, für das Berechtigungen widerrufen werden sollen. Das Objekt kann ein Schema oder eine Rolle sein. |
|
varchar2 |
Null |
Ja |
— |
Im folgenden Beispiel werden ausgewählte Berechtigungen für ein Objekt mit dem Namen V_$SESSION
von einem Benutzer mit dem Namen USER1
widerrufen.
begin rdsadmin.rdsadmin_util.revoke_sys_object( p_obj_name => '
V_$SESSION
', p_revokee => 'USER1
', p_privilege => 'SELECT
'); end; /
Verwaltung von RDS_X$-Ansichten für Oracle-DB-Instances
Möglicherweise müssen Sie auf SYS.X$
feste Tabellen zugreifen, auf die nur über zugegriffen werden kannSYS
. Verwenden Sie die im rdsadmin.rdsadmin_util
Paket enthaltenen Verfahren, um SYS.RDS_X$
Ansichten für geeignete X$
Tabellen zu erstellen. Ihrem Hauptbenutzer wird automatisch die Berechtigung für die SELECT … WITH GRANT OPTION
RDS_X$
Ansichten erteilt.
Die rdsadmin.rdsadmin_util
Verfahren sind in den folgenden Versionen der Datenbank-Engine verfügbar:
-
21.0.0.0.ru-2023-10.rur-2023-10.r1
und höhere Versionen von Oracle Database 2.1c -
19.0.0.0.ru-2023-10.rur-2023-10.r1
und höhere Versionen von Oracle Database 19c
Wichtig
Intern erstellt das rdsadmin.rdsadmin_util
Paket Ansichten für X$
Tabellen. Die X$
Tabellen sind interne Systemobjekte, die in der Oracle Database-Dokumentation nicht beschrieben werden. Wir empfehlen, dass Sie bestimmte Ansichten in Ihrer Nicht-Produktionsdatenbank testen und nur Ansichten in Ihrer Produktionsdatenbank unter Anleitung des Oracle-Supports erstellen.
Listet feste X$-Tabellen auf, die für die Verwendung in RDS_X$-Ansichten geeignet sind
Verwenden Sie das RDS-Verfahren, um X$-Tabellen aufzulisten, die für die Verwendung in RDS_X$
Ansichten in Frage kommen. rdsadmin.rdsadmin_util.list_allowed_sys_x$_views
Dieses Verfahren akzeptiert keine Parameter. In den folgenden Anweisungen werden alle geeigneten X$
Tabellen aufgeführt (einschließlich Beispielausgabe).
SQL> SET SERVEROUTPUT ON SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views); 'X$BH' 'X$K2GTE' 'X$KCBWBPD' 'X$KCBWDS' 'X$KGLLK' 'X$KGLOB' 'X$KGLPN' 'X$KSLHOT' 'X$KSMSP' 'X$KSPPCV' 'X$KSPPI' 'X$KSPPSV' 'X$KSQEQ' 'X$KSQRS' 'X$KTUXE' 'X$KQRFP'
Die Liste der in Frage kommenden X$
Tabellen kann sich im Laufe der Zeit ändern. Um sicherzustellen, dass Ihre Liste der in Frage kommenden X$
festen Tische aktuell ist, sollten Sie sie list_allowed_sys_x$_views
regelmäßig wiederholen.
SYS.RDS_X$-Ansichten werden erstellt
Verwenden Sie das RDS-Verfahren, um eine RDS_X$
Ansicht für eine geeignete X$
Tabelle zu erstellen. rdsadmin.rdsadmin_util.create_sys_x$_view
Sie können nur Ansichten für die Tabellen erstellen, die in der Ausgabe von aufgeführt sindrdsadmin.rdsadmin_util.list_allowed_sys_x$_views
. Das create_sys_x$_view
-Verfahren akzeptiert die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
varchar2 |
Null |
Ja |
Ein gültiger |
|
Boolesch |
FALSE |
Nein |
Ein Wert, der angibt, ob die Erstellung einer |
Im folgenden Beispiel wird die SYS.RDS_X$KGLOB
Ansicht für die Tabelle erstelltX$KGLOB
. Das Format für den Namen der Ansicht istRDS_
.X$tablename
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.
Die folgende Datenwörterbuchabfrage listet die Ansicht auf SYS.RDS_X$KGLOB
und zeigt ihren Status an. Ihrem Masterbenutzer wird automatisch die Berechtigung SELECT ... WITH GRANT OPTION
für diese Ansicht gewährt.
SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; OWNER OBJECT_NAME STATUS ------------------------------ ------------------------------ ------------------------------ SYS RDS_X$KGLOB VALID
Wichtig
X$
Es kann nicht garantiert werden, dass Tabellen vor und nach einem Upgrade unverändert bleiben. RDS for Oracle löscht die RDS_X$
Ansichten der X$
Tabellen während eines Engine-Upgrades und erstellt sie neu. Anschließend wird das SELECT
... WITH GRANT OPTION
Privileg dem Masterbenutzer gewährt. Erteilen Sie Datenbankbenutzern nach einem Upgrade nach Bedarf Berechtigungen für die entsprechenden RDS_X$
Ansichten.
SYS.RDS_X$-Ansichten auflisten
Verwenden Sie das RDS-Verfahren, um vorhandene RDS_X$
Ansichten aufzulisten. rdsadmin.rdsadmin_util.list_created_sys_x$_views
Die Prozedur listet nur Ansichten auf, die mit der Prozedur erstellt wurdencreate_sys_x$_view
. Das folgende Beispiel listet X$
Tabellen RDS_X$
mit entsprechenden Ansichten auf (einschließlich Beispielausgabe).
SQL> SET SERVEROUTPUT ON SQL> COL XD_TBL_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views); XD_TBL_NAME STATUS ------------------------------ ------------------------------ X$BH VALID X$K2GTE VALID X$KCBWBPD VALID 3 rows selected.
RDS_X$-Ansichten werden gelöscht
Verwenden Sie das RDS-Verfahren, um eine SYS.RDS_X$
Ansicht zu löschen. rdsadmin.rdsadmin_util.drop_sys_x$_view
Sie können nur Ansichten löschen, die in der Ausgabe von aufgeführt sindrdsadmin.rdsadmin_util.list_allowed_sys_x$_views
. Das drop_sys_x$_view
-Verfahren akzeptiert den folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
varchar2 |
Null |
Ja |
Ein gültiger |
Im folgenden Beispiel wird die RDS_X$KGLOB
Ansicht gelöscht, die für die Tabelle erstellt wurdeX$KGLOB
.
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.
Das folgende Beispiel zeigt, dass die Ansicht gelöscht SYS.RDS_X$KGLOB
wurde (einschließlich Beispielausgabe).
SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; no rows selected
Erteilen von Berechtigungen an Nicht-Hauptbenutzer
Sie können Auswahl-Sonderrechte für viele Objekte im SYS
-Schema mithilfe der SELECT_CATALOG_ROLE
-Rolle erteilen. Die Rolle SELECT_CATALOG_ROLE
gibt Benutzern SELECT
-Sonderrechte für Datenverzeichnisansichten. Im folgenden Beispiel wird die Rolle SELECT_CATALOG_ROLE
einem Benutzer mit dem Namen user1
erteilt.
GRANT SELECT_CATALOG_ROLE TO
user1
;
Sie können EXECUTE
-Sonderrechte für viele Objekte im SYS
-Schema mithilfe der EXECUTE_CATALOG_ROLE
-Rolle erteilen. Die Rolle EXECUTE_CATALOG_ROLE
gibt Benutzern EXECUTE
-Sonderrechte für Pakete und Prozeduren im Datenverzeichnis. Im folgenden Beispiel wird die Rolle EXECUTE_CATALOG_ROLE
einem Benutzer mit dem Namen user1 erteilt.
GRANT EXECUTE_CATALOG_ROLE TO
user1
;
Im folgenden Beispiel werden die Berechtigungen abgerufen, die durch die Rollen SELECT_CATALOG_ROLE
und EXECUTE_CATALOG_ROLE
gewährt werden.
SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE IN ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') ORDER BY ROLE, TABLE_NAME ASC;
Im folgenden Beispiel wird ein Nicht-Masterbenutzer mit dem Namen user1
erstellt, die Berechtigung CREATE SESSION
gewährt und die Berechtigung SELECT
für eine Datenbank mit dem Namen sh.sales erteilt.
CREATE USER
user1
IDENTIFIED BY PASSWORD; GRANT CREATE SESSION TOuser1
; GRANT SELECT ONsh.sales
TOuser1
;
Erstellen von benutzerdefinierten Funktionen für das Überprüfen von Passwörtern
Es gibt verschiedene Möglichkeiten, eine benutzerdefinierte Funktion für die Passwortüberprüfung zu erstellen:
-
Um die Standardüberprüfungslogik zu verwenden und Ihre Funktion im
SYS
-Schema zu speichern, verwenden Sie die Prozedurcreate_verify_function
. -
Um eine benutzerdefinierte Überprüfungslogik zu verwenden und Ihre Funktion nicht im
SYS
-Schema zu speichern, verwenden Sie die Prozedurcreate_passthrough_verify_fcn
.
Die Prozedur create_verify_function
Sie können eine benutzerdefinierte Funktion erstellen, um Passwörter mithilfe der Amazon RDS-Prozedur rdsadmin.rdsadmin_password_verify.create_verify_function
zu überprüfen. Das create_verify_function
Verfahren wird für alle Versionen von RDS for Oracle unterstützt.
Die Prozedur create_verify_function
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
varchar2 |
— |
Ja |
Der Name für Ihre benutzerdefinierte Funktion. Diese Funktion wird für Sie im SYS-Schema erstellt. Sie teilen diese Funktion den Benutzerprofilen zu. |
|
Zahl |
8 |
Nein |
Die erforderliche Mindestzeichenanzahl. |
|
Zahl |
256 |
Nein |
Die maximale Anzahl der erlaubten Zeichen |
|
Zahl |
1 |
Nein |
Die Mindestanzahl der erforderlichen Buchstaben |
|
Zahl |
0 |
Nein |
Die Mindestanzahl der erforderlichen Großbuchstaben |
|
Zahl |
0 |
Nein |
Die Mindestanzahl der erforderlichen Kleinbuchstaben |
|
Zahl |
1 |
Nein |
Die Mindestanzahl der erforderlichen Zahlen |
|
Zahl |
0 |
Nein |
Die Mindestanzahl der erforderlichen Sonderzeichen |
|
Zahl |
3 |
Nein |
Die Mindestanzahl der zwischen dem alten und dem neuen Passwort erforderlichen unterschiedlichen Zeichen. |
|
Boolean |
true |
Nein |
Setzen Sie diesen Wert auf |
|
Boolean |
true |
Nein |
Auf |
|
Boolean |
true |
Nein |
Setzen Sie diesen Wert auf |
|
Boolean |
true |
Nein |
Setzen Sie diesen Wert auf |
|
Boolean |
false |
Nein |
Setzen Sie diesen Wert auf |
|
Boolean |
false |
Nein |
Setzen Sie diesen Wert auf |
Sie können mehrere benutzerdefinierte Funktionen für die Passwortüberprüfung erstellen.
Es gibt Einschränkungen im Hinblick auf den Namen für Ihre benutzerdefinierte Funktion. Der Name Ihrer benutzerdefinierten Funktion darf nicht mit dem Namen eines vorhandenen Systemobjekts identisch sein. Der Name darf nicht mehr als 30 Zeichen lang sein. Der Name muss außerdem eine der folgenden Zeichenfolgen enthalten: PASSWORD
, VERIFY
, COMPLEXITY
, ENFORCE
oder STRENGTH
.
Im folgenden Beispiel wird die Funktion mit dem Namen erstell CUSTOM_PASSWORD_FUNCTION
. Die Funktion erfordert ein Passwort mit mindestens 12 Zeichen, 2 Großbuchstaben, 1 Zahl und 1 Sonderzeichen. Außerdem ist das @-Zeichen im Passwort nicht erlaubt.
begin rdsadmin.rdsadmin_password_verify.create_verify_function( p_verify_function_name => '
CUSTOM_PASSWORD_FUNCTION
', p_min_length =>12
, p_min_uppercase =>2
, p_min_digits =>1
, p_min_special =>1
, p_disallow_at_sign =>true
); end; /
Tätigen Sie die Abfrage DBA_SOURCE
, um den Text Ihrer Überprüfungsfunktion anzusehen. Im folgenden Beispiel wird der Text einer benutzerdefinierten Passwortfunktion mit dem Namen erhalte CUSTOM_PASSWORD_FUNCTION
.
COL TEXT FORMAT a150 SELECT TEXT FROM DBA_SOURCE WHERE OWNER = 'SYS' AND NAME = '
CUSTOM_PASSWORD_FUNCTION
' ORDER BY LINE;
Verwenden Sie alter
profile
, um Ihre Überprüfungsfunktion einem Benutzerprofil zuzuordnen. Verwenden Sie DEFAULT
, um Ihre Überprüfungsfunktion dem Benutzerprofil zuzuordnen.
ALTER PROFILE
DEFAULT
LIMIT PASSWORD_VERIFY_FUNCTIONCUSTOM_PASSWORD_FUNCTION
;
Stellen Sie die Abfrage , um zu sehen, welchen Benutzerprofilen welche Überprüfungsfunktionen zugeordnet sin DBA_PROFILES
. Im folgenden Beispiel wird das Profil erhalten, dem die benutzerdefinierte Überprüfungsfunktion mit dem Namen zugehörig is CUSTOM_PASSWORD_FUNCTION
.
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD' AND LIMIT = '
CUSTOM_PASSWORD_FUNCTION
'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION
Im folgenden Beispiel werden alle Profile und Passwortüberprüfungsfunktionen erhalten, die miteinander verknüpft sind.
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION RDSADMIN PASSWORD_VERIFY_FUNCTION PASSWORD NULL
Die Prozedur create_passthrough_verify_fcn
Das create_passthrough_verify_fcn
Verfahren wird für alle Versionen von RDS for Oracle unterstützt.
Sie können eine benutzerdefinierte Funktion erstellen, um Passwörter mithilfe der Amazon RDS-Prozedur rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn
zu überprüfen. Die Prozedur create_passthrough_verify_fcn
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
varchar2 |
— |
Ja |
Der Name für Ihre benutzerdefinierte Überprüfungsfunktion. Dies ist eine Wrapper-Funktion, die für Sie im SYS-Schema erstellt wird und keine Überprüfungslogik beinhaltet. Sie teilen diese Funktion den Benutzerprofilen zu. |
|
varchar2 |
— |
Ja |
Der Schemabesitzer für Ihre benutzerdefinierte Überprüfungsfunktion |
|
varchar2 |
— |
Ja |
Der Name für Ihre bestehende benutzerdefinierte Funktion, der die Überprüfungslogik beinhaltet. Ihre benutzerdefinierte Funktion muss einen Booleschen Wert zurückgeben. Ihre Funktion sollte |
Im folgenden Beispiel wird eine Passwortüberprüfungsfunktion erstellt, die die Logik aus der Funktion mit dem Namen verwende PASSWORD_LOGIC_EXTRA_STRONG
.
begin rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn( p_verify_function_name => '
CUSTOM_PASSWORD_FUNCTION
', p_target_owner => 'TEST_USER
', p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG
'); end; /
Verwenden Sie , um die Überprüfungsfunktion Ihrem Benutzerprofil zuzuordne alter
profile
. Im folgenden Beispiel wird die Überprüfungsfunktion mit dem DEFAULT
-Benutzerprofil verknüpft.
ALTER PROFILE
DEFAULT
LIMIT PASSWORD_VERIFY_FUNCTIONCUSTOM_PASSWORD_FUNCTION
;
Einrichten eines benutzerdefinierten DNS-Servers
Amazon RDS unterstützt ausgehenden Netzwerkzugriff auf Ihre DB-Instance, auf der Oracle ausgeführt wird. Weitere Informationen zu ausgehendem Netzwerkzugriff, einschließlich Voraussetzungen, finden Sie unter Konfigurieren des UTL_HTTP-Zugriffs mit Zertifikaten und einer Oracle Wallet.
Amazon RDS-Oracle erlaubt Domain Name Service (DNS)-Auflösung aus einem benutzerdefinierten DNS-Server, der im Besitz des Kunden ist. Sie können nur vollständig geeignete Domänenamen aus Ihrer Amazon RDS-DB-Instance über Ihren benutzerdefinierten DNS-Server auflösen.
Nachdem Sie Ihren benutzerdefinierten DNS-Namensserver eingerichtet haben, dauert es bis zu 30 Minuten, um die Änderungen an Ihre DB-Instance zu übertragen. Nachdem die Änderungen an Ihre DB-Instance übertragen wurden, wird ausgehender Datenverkehr, der eine DNS-Abfrage tätigen muss, Ihren DNS-Server über Port 53 abrufen.
Führen Sie folgende Schritte aus, um einen benutzerdefinierten DNS-Server für Ihre Amazon RDS for Oracle-DB-Instance einzurichten:
-
Legen Sie in dem Ihrer Virtual Private Cloud (VPC) beigefügten DHCP-Optionsset die Option
domain-name-servers
für die IP-Adresse Ihres DNS-Namensservers fest. Weitere Informationen finden Sie unter DHCP-Optionssets.Anmerkung
Die Option
domain-name-servers
akzeptiert bis zu vier Werte, Ihre Amazon RDS-DB-Instance verwendet jedoch nur den ersten Wert. -
Stellen Sie sicher, dass Ihr DNS-Server die Suchabfragen auflösen kann, einschließlich DNS-Namen, Amazon EC2-private-DNS-Namen und benutzerspezifischen DNS-Namen. Wenn der ausgehende Datenverkehr DNS-Abfragen beinhaltet, die Ihr DNS-Server nicht handhaben kann, müssen für Ihren DNS-Server angemessene DNS-Provider für einen Upstream konfiguriert sein.
-
Konfigurieren Sie Ihren DNS-Server, um User Datagram Protocol (UDP)-Antworten in der Größenordnung von 512 Bytes oder weniger zu erhalten.
-
Konfigurieren Sie Ihren DNS-Server, um Transmission Control Protocol (TCP)-Antworten in der Größenordnung von 1 024 Bytes oder weniger zu erhalten.
-
Konfigurieren Sie Ihren DNS-Server, um eingehenden Datenverkehr aus Ihrer Amazon RDS-DB-Instance über Port 53 zu erlauben. Wenn sich Ihr DNS-Server in einer Amazon VPC befindet, muss die VPC über eine Sicherheitsgruppe verfügen, die eingehende Regeln für das Erlauben von UDP und TCP über Port 53 beinhaltet. Wenn sich Ihr DNS-Server nicht in einer Amazon VPC befindet, muss er über eine angemessene Firewall-Whitelist verfügen, die UDP- und TCP-Übertragungen über Port 53 zulassen.
Weitere Informationen finden Sie unter Sicherheitsgruppen für Ihre VPC und unter Hinzufügen und Entfernen von Regeln.
-
Konfigurieren Sie die VPC Ihrer Amazon RDS-DB-Instance, um ausgehenden Datenverkehr über Port 53 zu erlauben. Ihre VPC muss über eine Sicherheitsgruppe mit ausgehenden Regeln verfügen, die UDP- und TCP-Übertragungen über Port 53 erlauben.
Weitere Informationen finden Sie unter Sicherheitsgruppen für Ihre VPC und unter Hinzufügen und Entfernen von Regeln.
-
Der Routing-Pfad zwischen der Amazon RDS-DB-Instance und dem DNS-Server muss korrekt konfiguriert werden, um DNS-Datenverkehr zu erlauben.
-
Wenn sich die Amazon RDS-DB-Instance und der DNS-Server nicht in der selben VPC befinden, muss zwischen ihnen eine Peer-to-Peer-Verbindung eingerichtet werden. Weitere Informationen finden Sie unter Was ist VPC Peering?
-
Festlegen und Aufheben von Systemdiagnoseereignissen
Um Diagnoseereignisse auf Sitzungsebene festzulegen und aufzuheben, können Sie die Oracle SQL-Anweisung verwende ALTER
SESSION SET EVENTS
. Um Ereignisse auf Systemebene festzulegen, können Sie Oracle SQL jedoch nicht verwenden. Verwenden Sie stattdessen die Systemereignisprozesse im rdsadmin.rdsadmin_util
-Paket. Die Systemereignisprozesse sind in den folgenden Engine-Versionen verfügbar:
-
Alle Versionen von Oracle Database 21c
-
19.0.0.0.ru-2020-10.rur-2020-10.r1 oder höhere Versionen von Oracle Database 19c
Weitere Informationen finden Sie unter Version 19.0.0.0.ru-2020-10.rur-2020-10.r1 in den Versionshinweisen zu Amazon RDS for Oracle
Wichtig
Intern legt das rdsadmin.rdsadmin_util
-Paket Ereignisse mithilfe der ALTER SYSTEM SET EVENTS
-Anweisung fest. Diese ALTER
SYSTEM
-Aussage ist nicht in der Oracle Database-Dokumentation dokumentiert. Einige Systemdiagnoseereignisse können große Mengen an Rückverfolgungsinformationen generieren, Konflikte verursachen oder die Datenbankverfügbarkeit beeinträchtigen. Wir empfehlen, dass Sie bestimmte Diagnoseereignisse in Ihrer Nicht-Produktionsdatenbank testen und Ereignisse in Ihrer Produktionsdatenbank nur unter Anleitung von Oracle Support festlegen.
Auflisten zulässiger Systemdiagnoseereignisse
Verwenden Sie das Amazon RDS-Verfahren , um die Systemereignisse aufzulisten, die Sie festlegen könne rdsadmin.rdsadmin_util.list_allowed_system_events
. Dieses Verfahren akzeptiert keine Parameter.
Im folgenden Beispiel werden alle Systemereignisse aufgeführt, die Sie festlegen können.
SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;
Die folgende Beispielausgabe listet Ereignisnummern und ihre Beschreibungen auf. Verwenden Sie die Amazon RDS-Verfahren set_system_event
, um diese Ereignisse festzulegen und unset_system_event
, um sie aufzuheben.
604 - error occurred at recursive SQL level 942 - table or view does not exist 1401 - inserted value too large for column 1403 - no data found 1410 - invalid ROWID 1422 - exact fetch returns more than requested number of rows 1426 - numeric overflow 1427 - single-row subquery returns more than one row 1476 - divisor is equal to zero 1483 - invalid length for DATE or NUMBER bind variable 1489 - result of string concatenation is too long 1652 - unable to extend temp segment by in tablespace 1858 - a non-numeric character was found where a numeric was expected 4031 - unable to allocate bytes of shared memory ("","","","") 6502 - PL/SQL: numeric or value error 10027 - Specify Deadlock Trace Information to be Dumped 10046 - enable SQL statement timing 10053 - CBO Enable optimizer trace 10173 - Dynamic Sampling time-out error 10442 - enable trace of kst for ORA-01555 diagnostics 12008 - error in materialized view refresh path 12012 - error on auto execute of job 12504 - TNS:listener was not given the SERVICE_NAME in CONNECT_DATA 14400 - inserted partition key does not map to any partition 31693 - Table data object failed to load/unload and is being skipped due to error:
Anmerkung
Die Liste der erlaubten Systemereignisse kann sich im Laufe der Zeit ändern. Um sicherzustellen, dass Sie die aktuellste Liste der berechtigten Ereignisse haben, verwenden Sie rdsadmin.rdsadmin_util.list_allowed_system_events
.
Festlegen von Systemdiagnoseereignissen
Verwenden Sie das Amazon RDS-Verfahren , um ein Systemereignis festzulege rdsadmin.rdsadmin_util.set_system_event
. Sie können nur Ereignisse festlegen, die in der Ausgabe von aufgeführt sin rdsadmin.rdsadmin_util.list_allowed_system_events
. Das set_system_event
-Verfahren akzeptiert die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
Zahl |
— |
Ja |
Die Systemereignisnummer. Der Wert muss eine der von gemeldeten Ereignisnummern sei |
|
Zahl |
— |
Ja |
Das Event-Level. In der Oracle Database-Dokumentation oder bei Oracle Support finden Sie Beschreibungen von Werten verschiedener Ebenen. |
Das Verfahren set_system_event
konstruiert und führt die erforderlichen ALTER SYSTEM SET EVENTS
-Aussagen nach folgenden Grundsätzen aus:
-
Der Ereignistyp (
context
odererrorstack
) wird automatisch bestimmt. -
Eine Anweisung im Formular
ALTER SYSTEM SET EVENTS '
legt die Kontextereignisse fest. Diese Notation entsprichtevent
LEVELevent_level
'ALTER SYSTEM SET EVENTS '
.event
TRACE NAME CONTEXT FOREVER, LEVELevent_level
' -
Eine Anweisung im Formular
ALTER SYSTEM SET EVENTS '
legt die Fehler-Stack-Ereignisse fest. Diese Notation entsprichtevent
ERRORSTACK (event_level
)'ALTER SYSTEM SET EVENTS '
.event
TRACE NAME ERRORSTACK LEVELevent_level
'
Im folgenden Beispiel werden Ereignis 942 auf Ebene 3 und Ereignis 10 442 auf Ebene 10 festgelegt. Die Beispielausgabe ist enthalten.
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(942,3); Setting system event 942 with: alter system set events '942 errorstack (3)' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(10442,10); Setting system event 10442 with: alter system set events '10442 level 10' PL/SQL procedure successfully completed.
Auflisten der festgesetzten Systemdiagnoseereignisse
Verwenden Sie das Amazon RDS-Verfahren , um die derzeit festgelegten Systemereignisse aufzuliste rdsadmin.rdsadmin_util.list_set_system_events
. Dieses Verfahren meldet nur Ereignisse, die auf Systemebene von festgelegt wurde set_system_event
.
Im folgenden Beispiel werden die aktiven Systemereignisse aufgeführt.
SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_set_system_events;
Die folgende Beispielausgabe zeigt die Liste der Ereignisse, den Ereignistyp, die Ebene, auf der die Ereignisse derzeit festgelegt sind, und den Zeitpunkt, zu dem das Ereignis festgelegt wurde.
942 errorstack (3) - set at 2020-11-03 11:42:27 10442 level 10 - set at 2020-11-03 11:42:41 PL/SQL procedure successfully completed.
Aufheben von Systemdiagnoseereignissen
Verwenden Sie das Amazon RDS-Verfahren , um ein Systemereignis aufzuhebe rdsadmin.rdsadmin_util.unset_system_event
. Sie können nur die in der Ausgabe von aufgelisteten Ereignisse aufhebe rdsadmin.rdsadmin_util.list_allowed_system_events
. Das unset_system_event
-Verfahren akzeptiert den folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
Zahl |
— |
Ja |
Die Systemereignisnummer. Der Wert muss eine der von gemeldeten Ereignisnummern sei |
Im folgenden Beispiel werden die Ereignisse 942 und 10 442 aufgezeichnet. Die Beispielausgabe ist enthalten.
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(942); Unsetting system event 942 with: alter system set events '942 off' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(10442); Unsetting system event 10442 with: alter system set events '10442 off' PL/SQL procedure successfully completed.