Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Команддная строка.Создание/Удаление схемы(Юзера)


Автор: SimpAlex 9.5.2009, 15:12
Доброго времени суток!

У меня возникла следующая проблемка : есть некая схема (TEMP) на главном сервере где стоит Оракл 10.

Раз в неделю по электронке дамп (exp temp/passtemp file=c:\tempdump.dmp) этой схемы пересылается диллерам. У них тоже стоит Оракл 10. Им приходится удалять через Веб-интерфейс пользователя TEMP затем создавать, потом через консоль импортировать (imp temp/passtemp file=c:\tempdump.temp fromuser=temp touser=temp).

Мне бы очень хотелось этот процесс автоматизировать, а именно написать такой bat-ник, чтобы пользователи просто выполняли его, а в этот момент происходили следующие действия:

1 удаление старой схемы-пользователя temp.
2 создаение новой схемы temp, с полными правами dba.
3 импорт данных из дампа-файла.

Через комндную строку SQL я прочел примерно как это делать, но мне важно чтобы пользователям ничего строннего не следовало запускать, просто выполним один батник.

С уважением, Владимир.

Автор: ToshaCh 9.5.2009, 17:12
И в чём проблема? За тебя никто писать не будет. Конкретные вопросы возникнут, спрашивай.

Автор: SimpAlex 9.5.2009, 18:18
Окей, меня интересует - как из виндовской консоли (cmd) удалить,а потом создать какуюто схему?

Если брать SQL*plus, то там вроде ничего сложного : 

Удаляем
Код

connect sys/passsys as sysdba
drop user temp cascade


Создаем
 
Код

create user temp identified by password
  default tablespace USERS
  temporary tablespace TEMP
  profile DEFAULT

grant connect to temp
grant dba to temp
grant unlimited tablespace to temp


Импортировать и экспортировать в CMD - я знаю как.
Я не прошу за меня сделать, просто мб ктото сталкивался с подобным и есть какието наработки-советы.

Автор: ToshaCh 9.5.2009, 19:22
Пишешь нужные команды в файл, скажем 1.sql. Команды пишешь так как если бы ты набирал их в sqlplus (т.е. с ; и / там где это необходимо). в конце не забуть написать exit

А затем вызваешь его из батника: sqlplus -S "user/password@SID" @1.sql >> log.txt

Цитата(SimpAlex @  9.5.2009,  18:18 Найти цитируемый пост)

grant connect to temp
grant dba to temp
grant unlimited tablespace to temp

Вместо этого можно поступить более гибко и перед удалением пользователя выяснять его системные привилегии через табличку dba_sys_privs, подготавливать временный скрипт с помощью select и spool, а потом запускать его.

Автор: SimpAlex 9.5.2009, 20:58
ToshaCh, Огромное спасибо) завтра опробую Ваш метод) о результате отпишусь!

Автор: SimpAlex 11.5.2009, 09:05
Попробовал ... не получилось.

Создал документ imp.sql , создал батник. При исполнении его выдает окно с параметрами коммандной строки для sqlplus.

impStart.bat
Код

C:\oraclexe\app\oracle\product\10.2.0\server\BIN\SQLPLUS.EXE -S "SYS AS SYSDBA/ххххххх@XE" @imp.sql >> LOG.TXT


imp.sql
Код

DROP USER KOGARANT CASCADE
/
CREATE USER KOGARANT  IDENTIFIED BY хххххххх
/
EXIT



LOG.TXT
Код

SQL*Plus: Release 10.2.0.1.0 - Production

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Usage 1: sqlplus -H | -V

    -H           Displays the SQL*Plus version and the
           usage help.
    -V           Displays the SQL*Plus version.

Usage 2: sqlplus [ [<option>] [<logon>] [<start>] ]

  <option> is: [-C <version>] [-L] [-M "<options>"] [-R <level>] [-S]

    -C <version>   Sets the compatibility of affected commands to the
           version specified by <version>.  The version has
           the form "x.y[.z]".    For example, -C 10.2.0
    -L           Attempts to log on just once, instead of
           reprompting on error.
    -M "<options>" Sets automatic HTML markup of output.  The options
           have the form:
           HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text]
           [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]
    -R <level>       Sets restricted mode to disable SQL*Plus commands
           that interact with the file system.    The level can
           be 1, 2 or 3.  The most restrictive is -R 3 which
           disables all user commands interacting with the
           file system.
    -S           Sets silent mode which suppresses the display of
           the SQL*Plus banner, prompts, and echoing of
           commands.

  <logon> is: (<username>[/<password>][@<connect_identifier>] | /)
          [AS SYSDBA | AS SYSOPER] | /NOLOG

    Specifies the database account username, password and connect
    identifier for the database connection.  Without a connect
    identifier, SQL*Plus connects to the default database.

    The AS SYSDBA and AS SYSOPER options are database administration
    privileges.

    The /NOLOG option starts SQL*Plus without connecting to a
    database.

  <start> is: @<URL>|<filename>[.<ext>] [<parameter> ...]

    Runs the specified SQL*Plus script from a web server (URL) or the
    local file system (filename.ext) with specified parameters that
    will be assigned to substitution variables in the script.

When SQL*Plus starts, and after CONNECT commands, the site profile
(e.g. $ORACLE_HOME/sqlplus/admin/glogin.sql) and the user profile
(e.g. login.sql in the working directory) are run.  The files may
contain SQL*Plus commands.

Refer to the SQL*Plus User's Guide and Reference for more information.


Где же я ошибся?

Автор: ToshaCh 11.5.2009, 09:11
Цитата(SimpAlex @  11.5.2009,  09:05 Найти цитируемый пост)
SYS AS SYSDBA/ХХХХХХХХХ


Для начала НЕ ПОСТЬ ПАРОЛИ НА ФОРУМ!!!! 

А во вторых "sys/password@xe as sysdba" или "/ as sysdba"

Там sqlplus даже подсказку выдал:
Цитата

<logon> is: (<username>[/<password>][@<connect_identifier>] | /)
          [AS SYSDBA | AS SYSOPER] | /NOLOG


Автор: SimpAlex 11.5.2009, 10:11
ToshaCh,  Спасибо) заработало!

З.Ы. Пароль это от моей локальной тренировочной базы, но учту на будущее в любом случае) ...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)