Создать скрипт PowerShell для автоматизации БД Oracle - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу создать скрипт Powershell для автоматизации баз данных Oracle, в котором будут упомянуты следующие шаги по автоматизации: -

  1. Удаление схемы в БД (удаление каскада имени пользователя)
  2. Восстановление чистой БД (impdp из дамп-файлов)
  3. Запуск задачи настройки (сценария)
  4. Статистика Impdp из другой среды в БД
  5. Восстановление / применение статистики из другой среды (dbms_stats.import_schema_statistics)
  6. Статистика резервного копирования после шага 4 (dbms_stats.gather_schema_statistics)

Пожалуйста, помогите мне создать пример сценария powershell, в котором должны быть упомянуты все шаги.

1 Ответ

0 голосов
/ 04 декабря 2018

Пример сценария для удаления пользователя с табличным пространством tablespace_username, включая использование содержимого и файлов данных ./drop_user.ps1 username

param(
[string]$name_user = ""
)

Write-Host "NAME_USER: $name_user"

##!!!!! ORA-01940: cannot drop a user that is currently connected
## USER must disconnect before drop user!!!

#Dropping Users
#Dropping users is very straightforward and is accomplished with the drop user command. The
#only parameters are the username to be dropped and the cascade option; any objects owned by
#the user must be explicitly dropped or moved to another schema if the cascade option is not used.

$username_dba = "system"
$password_dba = "manager"
$tnsalias_db = "test-ecdu"
$full_name_user=$name_user   
#
$user_tablespace = "tablespace_"
$default_tablespace_user = $user_tablespace+$name_user
#
Write-Host "USER default_tablespace: $default_tablespace_user"


#Make SQL DROP TABLESPACE
# The database also automatically drops from the operating system any Oracle-managed datafiles and tempfiles in the tablespace. 
#Other datafiles and tempfiles are not removed from the operating system unless you specify INCLUDING CONTENTS AND DATAFILES.
$sqlQuery_drop_tablespace = @"
set NewPage none
set heading off
set feedback off
WHENEVER SQLERROR continue
DROP TABLESPACE  $default_tablespace_user INCLUDING CONTENTS AND DATAFILES
;
"@

#Degug display "SQL Tablespace: $sqlQuery_drop_tablespace"
#Specify CASCADE to drop all objects in the user's schema before dropping the user. 
#You must specify this clause to drop a user whose schema contains any objects.
Write-Host "SQL Drop Tablespace: $sqlQuery_drop_tablespace"
#
$sqlQuery_drop_user = 
@"

DROP USER $full_name_user CASCADE 
;
exit
"@


$sqlQuery = $sqlQuery_drop_tablespace + $sqlQuery_drop_user

# Degug display  $sqlQuery = $sqlQuery_drop_tablespace + $sqlQuery_drop_user
Write-Host $sqlQuery   
$sqlOutput = $sqlQuery | sqlplus -silent $username_dba/$password_dba@$tnsalias_db

# Degug display result SQL
Write-Host  $sqlOutput
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...