Grant UTL_HTTP-Berechtigung in PLSQL
Möchte ich, um HTML-Inhalte von einer bestimmten Webseite in meiner Funktion. Ich habe gelesen ich kann es mit der UTL_HTML Paket in PLSQL. Also machte ich den folgenden code in das Projekt:
v_webcontent := utl_http.request(v_weblink);
Hier die v_webconent und v_weblink sind zuvor deklariert. läuft das in de Funktion gibt eine PLSQL-Ausnahme: PLS-00201: identifier 'UTL_HTTP' must be declared
ich glaube, dieses problem ist, weil das Paket nicht verfügbar ist (aus diesem link: gleiche Fehlermeldung).
Folgte ich dem Rat. So erstellte ich eine neue Datenbank-Verbindung im sql developer als SYSTEM-Rolle (SYS hat nicht funktioniert, Sie sayd ich konnte nur Anmeldung mit SYSDBA oder SYSOPER aber beides würde nicht nehmen Sie das standard-Passwort habe ich mit der Datenbank). Dann betrat ich den code in den link oben.
GRANT EXECUTE ON SYS.UTL_HTTP TO [database];
Den Benutzer habe ich erstellt mit dem Namen 'Datenbank'. Es gab mir einen Fehler, ohne die [] eckigen Klammern. Tabelle oder view nicht vorhanden, so dass ich dann setzen Sie die Klammern um ihn herum. Nun, es gibt Fehler:
Error starting at line : 1 in command -
GRANT EXECUTE ON SYS.UTL_HTTP TO [database]
Error report -
SQL Error: ORA-00987: missing or invalid username(s)
00987. 00000 - "missing or invalid username(s)"
*Cause:
*Action:
Also ich habe keine Ahnung, wie dieses Problem zu beheben. In dem oben genannten link OP sagte, dass er einen anderen Fehler, so dass ich überprüft, wenn ich nicht das gleiche problem haben. Ich habe eingegeben:
SELECT * FROM dba_objects WHERE object_name='UTL_HTTP'
Kehrte er 4 Eintrag. Mit Eigentümer: SYS, SYS, ÖFFENTLICHEN und APEX_040000.
Kann mir jemand helfen? Brauche ich für die Anmeldung als SYS-und mit was für Passwörter?
InformationsquelleAutor Politiepet | 2014-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
SYS AS SYSDBA
.grant execute on sys.utl_http to "Database";
nicht verwenden keine eckigen Klammern!Funktionieren sollte.
Ratschlag: verwenden Sie nicht den Namen Ihres DB-user 'der Datenbank'.
Setzen Sie Ihr SYS-Passwort
cmd.exe
als administrator.cd
zu Ihrem${ORACLE_HOME}/database
.PWDsomething.ora
Datei dort (wosomething
werden die Instanz-name), kopieren Sie dessen Namen (in der Zwischenablage).orapwd file=PWDsomething.ora password=SomePasswordOfMine force=y
, woPWDsomething.ora
ersetzt werden, mit dem Dateinamen aus Schritt 3 undSomePasswordOfMine
muss ersetzt werden durch was auch immer-Passwort, das Sie haben wollen.Könnte.
Antwort bearbeitet, versuchen Sie es. (Ich hatte nie zurücksetzen meine SYS-Passwort, so weiß nicht, ob das funktionieren wird.)
Ich habe es schon behoben. Das problem war nicht, dass ich mich nicht anmelden konnte in SYS. Es war, dass Sie das richtige Kennwort hat nicht funktioniert für SYSDBA sql developer. Also, was ich Tat, war auf meinem sql server-computer: geöffnete cmd-eingegeben 'sqlplus/nolog', als 'connect sys as sysdba", Passwort ist Lager-Passwort. Von hier aus konnte ich 'grant execute on sys.utl_http "Datenbank";' Es auf diese Weise gearbeitet haben.
Yup,
sqlplus
ist immer der beste Weg. Es wäre mein Nächster Rat an dich, wenn das Passwort-änderung würde nicht für Sie arbeiten. 🙂 Froh, geholfen zu haben.Danke für die Hilfe 😀
InformationsquelleAutor nop77svk
Seit 11g erstellen Sie eine access control list (ACL'), die angibt, welche Benutzer Zugriff auf bestimmte domains, es nicht mehr ausreicht, nur die Nutzer die Rechte execute on utl_http!
Etwas wie diese Arbeit sollte in 11g(nach Gewährung der Rechte execute on UTL_HTTP zu der Datenbank-Benutzer, wie angegeben durch die akzeptierte Antwort) :
Hier ist ein sehr hilfreicher link, der erklärt, die Parameter der oben genannten zwei Funktionen :
http://www.oracleflash.com/36/Oracle-11g-Access-Control-List-for-External-Network-Services.html
Glück!
InformationsquelleAutor mancini0