O DBCA (Database Create Assistant) é a ferramenta oficial da Oracle para criar, gerenciar e deletar bancos de dados e templates de banco de dados Oracle. A interface gráfica do DBCA já é bem conhecida de quem instala o banco de dados com opção “Instalar e Criar um Banco de Dados” ou quando emitimos o comando dbca no terminal.

O Modo Silent

Mas uma possibilidade muito interessante do dbca (assim como em outros assistentes oficiais da Oracle) é o seu modo silent. Útil quando não temos um terminal gráfico ou simplesmente precisamos realizar as tarefas via scripts que, entre outras coisas, cria um banco de dados.

As opções gerais do DBCA são apresentadas ao executar-mos o comando “dbca -help”.

[oracle@dg01 oracle]$ dbca -help

dbca  [-silent | -progressOnly] {<command> <options> }  | { [<command> [options] ] -responseFile  <response file > } [-continueOnNonFatalErrors <true | false>]

 <command> : -createDatabase | -configureDatabase | -createTemplateFromDB | -createCloneTemplate | -generateScripts | -deleteDatabase | -createPluggableDatabase | -unplugDatabase | -deletePluggableDatabase | -configurePluggableDatabase


Enter "dbca -<command> -help" for more option

Como indicado pela ajuda do comando, podemos obter uma ajuda mais detalhada de uma opção específica. No exemplo abaixo, eu solicito ajuda para a opção -deleteDatabase.

[oracle@dg01 oracle]$ dbca -deleteDatabase -help
Delete a database by specifying the following parameters:
        -deleteDatabase
                -sourceDB    <source database sid>
                [-sysDBAUserName     <user name  with SYSDBA privileges>
                 -sysDBAPassword     <password for sysDBAUserName user name>]
                [-emConfiguration <DBEXPRESS|CENTRAL|BOTH|NONE>]
                        [-omsHost     <Enterprise Manager central agent home>
                        -omsPort     <Enterprise Manager central agent port>
                        -emUser     <Host user name for EM backup job>
                        -emPassword     <Host user password for EM backup job>]]

Exemplo 1: Criar um novo Banco de Dados

Neste primeiro exemplo, irei criar um novo banco de dados chamado TESTE, utilizando o template General_Purpose que é fornecido pela Oracle durante a instalação do software.
Para começar, vamos analisar os parâmetros da opção -createDatabase:

[oracle@dg01 oracle]$ dbca -createDatabase -help
Create a database by specifying the following parameters:
        -createDatabase
                -templateName <name of an existing template in default location or the complete template path>
                [-cloneTemplate]
                -gdbName <global database name>
                [-ignorePreReqs] <ignore prerequisite checks for current operation>
                [-sid <database system identifier>]
                [-createAsContainerDatabase <true|false>
                        [-numberOfPDBs <Number of Pluggable databases to be created, default is 0>]
                        [-pdbName <New Pluggable Database Name>]
                [-sysPassword <SYS user password>]
                [-systemPassword <SYSTEM user password>]
                [-emConfiguration <DBEXPRESS|CENTRAL|BOTH|NONE>]
                        -dbsnmpPassword     <DBSNMP user password>
                        [-omsHost     <EM management server host name>
                        -omsPort     <EM management server port number>
                        -emUser     <EM Admin username to add or modify targets>
                        -emPassword     <EM Admin user password>]]
                [-dvConfiguration <true | false Specify "true" to configure and enable Database Vault 
                        -dvUserName     <Specify Database Vault Owner user name>
                        -dvUserPassword     <Specify Database Vault Owner password>
                        -dvAccountManagerName     <Specify separate Database Vault Account Manager >
                        -dvAccountManagerPassword     <Specify Database Vault Account Manager password>]
                [-olsConfiguration <true | false Specify "true" to configure and enable Oracle Label Security >
                [-datafileDestination <destination directory for all database files> | 
 -datafileNames <a text file containing database objects such as controlfiles, tablespaces, redo log files and spfile to their corresponding raw device file names mappings in name=value format.>]
                [-redoLogFileSize <size of each redo log file in megabytes>]
                [-recoveryAreaDestination <destination directory for all recovery files>]
                [-datafileJarLocation  <location of the data file jar, used only for clone database creation>]
                [-storageType < FS | ASM > 
                        [-asmsnmpPassword     <ASMSNMP password for ASM monitoring>]
                         -diskGroupName   <database area disk group name>
                         -recoveryGroupName       <recovery area disk group name>
                [-characterSet <character set for the database>]
                [-nationalCharacterSet  <national character set for the database>]
                [-registerWithDirService <true | false> 
                        -dirServiceUserName    <user name for directory service>
                        -dirServicePassword    <password for directory service >
                        -walletPassword    <password for database wallet >]
                [-listeners  <list of listeners to configure the database with>]
                [-variablesFile   <file name for the variable-value pair for variables in the template>]]
                [-variables  <comma separated list of name=value pairs>]
                [-initParams <comma separated list of name=value pairs>]
                [-sampleSchema  <true | false> ]
                [-memoryPercentage <percentage of physical memory for Oracle>]
                [-automaticMemoryManagement ]
                [-totalMemory <memory allocated for Oracle in MB>]
                [-databaseType <MULTIPURPOSE|DATA_WAREHOUSING|OLTP>]]

Como podemos notar, há uma variedade muito grande de parâmetros, mas a maioria deles é opcional. Para simplificar este exemplo, vamos definir apenas os seguintes:
-templateName
-gdbName
-sysPassword
-systemPassword
Em outras palavras, irei especificar somente o nome do template, o nome do banco de dados e a senha dos usuários sys e system. Sendo assim vamos deixar o Oracle setar valores default para os demais parâmetros.

$ dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName TESTE -sysPassword oracle -systemPassword oracle

Banco de Dados criado com sucesso. Agora vamos verificar se a instância está em execução com o comando ps -ef | grep pmon no Linux e depois conectar-se ao banco para verificar o status da instância e se o banco está aberto para leitura e escrita normalmente.

Exemplo 2: Deletar banco de dados

Após demonstrar a criação de um banco de dados chamado TESTE, vou utilizar este mesmo banco para demonstrar o processo de exclusão. A opção -deleteDatabase tem uma quantidade bem menor de parâmetros e nesse exemplo vou utilizar somente o -sourceDB que indica o nome do banco de dados que pretedemos deletar.

[oracle@dg01 oracle]$ dbca -deleteDatabase -help
Delete a database by specifying the following parameters:
        -deleteDatabase
                -sourceDB    <source database sid>
                [-sysDBAUserName     <user name  with SYSDBA privileges>
                 -sysDBAPassword     <password for sysDBAUserName user name>]
                [-emConfiguration <DBEXPRESS|CENTRAL|BOTH|NONE>]
                        [-omsHost     <Enterprise Manager central agent home>
                        -omsPort     <Enterprise Manager central agent port>
                        -emUser     <Host user name for EM backup job>
                        -emPassword     <Host user password for EM backup job>]]

A instância pode estar iniciada ou não e o banco de dados pode estar em qualquer estado. Isso é, não faz diferença se a instância está desligada ou se o banco de dados está aberto, o DBCA conseguirá excluir o banco de dados normalmente.

$ dbca -silent -deleteDatabase -sourceDB TESTE

Processo concluído, banco de dados excluído com sucesso. Ao final, o comando ps -ef | grep pmon lista somente uma instância chamada “novo” (que já estava em execução no servidor antes dos testes).

Leave a Reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading