Logo Oracle Deutschland   Application Express Community
Datenbankuser und APEX-Workspace mit SQL*Plus auf einmal anlegen
Erscheinungsmonat APEX-Version Datenbankversion
November 2011 ab 4.0 9.2

Als APEX-Entwickler kommt es ja doch häufig vor, dass man sich auf seinem Entwicklungssystem einen leeren APEX-Workspace und einen Datenbankuser anlegen möchte - während ein Datenbankuser mit Hilfe von SQL*Plus und dem CREATE USER-Kommando schnell erzeugt ist, muss man den APEX-Workspace danach recht mühsam über die Weboberfläche (Workspace INTERNAL) anlegen.

Aber das muss nicht sein. Das folgende SQL-Skript nimmt einen Usernamen entgegen, legt dann den Datenbankuser (mit Passwort "oracle") an und erzeugt danach einen gleichnamigen APEX-Workspace mit einem ADMIN-User und dem Passwort "oracle". Es muss als DBA gestartet werden. Und auf einem Entwicklungssystem ist es auch angenehmer, wenn man das Passwort eben nicht beim ersten Login ändern muss.

create user &1. identified by oracle
/

grant connect, resource, create view, alter session to &1.
/

begin
   wwv_flow_api.set_security_group_id(p_security_group_id=> 10);
   apex_instance_admin.add_workspace(
     P_WORKSPACE            => upper('&1.'),
     P_PRIMARY_SCHEMA       => upper('&1.'),
     P_ADDITIONAL_SCHEMAS   => upper('&1.')
   );
end;
/

commit
/

declare
  v_wsid apex_workspaces.workspace_id%type;
begin
   select workspace_id into v_wsid
   from apex_workspaces
   where upper(workspace) = upper('&1.');

   wwv_flow_api.set_security_group_id(p_security_group_id => v_wsid);

   apex_util.create_user(
     p_user_name       => 'ADMIN',
     p_web_password    => lower('oracle'),
     P_DEVELOPER_PRIVS => 'ADMIN:CREATE:DATA_LOADER:EDIT:HELP:MONITOR:SQL',  
     p_first_name      => 'Max',
     p_last_name       => 'Mustermann',
     p_email_address   => 'max.mustermann@mailserver.com',
     p_default_schema  => '&1.',
     p_change_password_on_first_use => 'N' 
   );
end;
/

commit
/

begin
   apex_instance_admin.enable_workspace(
     p_workspace       => '&1.'
   );
end;
/

commit
/

undefine &1

Speichern Sie das Skript unter dem Namen cruapx.sql ab - man kann es sogar zusammen mit anderen in einem bestimmten Verzeichnis auf dem PC sammeln - setzt man dann die Umgebungsvariable SQLPATH auf diesen Ordner, können die Skripte direkt angesprochen werden.

SQL> @cruapx WSTEST9999

alt   1: create user &1. identified by &1.
neu   1: create user WSTEST9999 identified by WSTEST9999

Benutzer wurde erstellt.

Abgelaufen: 00:00:00.29
alt   1: grant connect, resource, create view, alter session to &1.
neu   1: grant connect, resource, create view, alter session to WSTEST9999

Benutzerzugriff (Grant) wurde erteilt.

Abgelaufen: 00:00:00.12
alt   4:      P_WORKSPACE            => upper('&1.'),
neu   4:      P_WORKSPACE            => upper('WSTEST9999'),
alt   5:      P_PRIMARY_SCHEMA       => upper('&1.'),
neu   5:      P_PRIMARY_SCHEMA       => upper('WSTEST9999'),
alt   6:      P_ADDITIONAL_SCHEMAS   => upper('&1.')
neu   6:      P_ADDITIONAL_SCHEMAS   => upper('WSTEST9999')

PL/SQL-Prozedur erfolgreich abgeschlossen.

Abgelaufen: 00:00:03.00

Transaktion mit COMMIT abgeschlossen.

Abgelaufen: 00:00:00.03
alt   6:    where upper(workspace) = upper('&1.');
neu   6:    where upper(workspace) = upper('WSTEST9999');
alt  12:      p_web_password    => lower('&1.'),
neu  12:      p_web_password    => lower('WSTEST9999'),
alt  17:      p_default_schema  => '&1.',
neu  17:      p_default_schema  => 'WSTEST9999',

PL/SQL-Prozedur erfolgreich abgeschlossen.

Abgelaufen: 00:00:02.00

Transaktion mit COMMIT abgeschlossen.

Abgelaufen: 00:00:00.04

alt   3:      p_workspace       => '&1.'
neu   3:      p_workspace       => 'WSTEST9999'

PL/SQL-Prozedur erfolgreich abgeschlossen.

Abgelaufen: 00:00:00.01

Transaktion mit COMMIT abgeschlossen.

Abgelaufen: 00:00:00.01

SQL>

Noch mehr SQL*Plus-"Miniskripte" finden sich hier.

Zurück zur Community-Seite