AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 42774
Accepted
maxschlepzig
maxschlepzig
Asked: 2013-05-23 00:07:16 +0800 CST2013-05-23 00:07:16 +0800 CST 2013-05-23 00:07:16 +0800 CST

Como inicializar/desligar rapidamente o Oracle 11?

  • 772

Gostaria de saber qual é a maneira mais rápida de inicializar/desligar corretamente um daemon do Oracle DB (Oracle 11.2, instalado em uma máquina de teste).

Eu preciso dele para programas C/C++ que usam a API OCI/Pro*C.

Eu quero isso porque estou acostumado com a velocidade de inicialização do PostgreSQL e porque o daemon é executado em uma máquina virtual que só é iniciada (sob demanda) para casos de teste.

Atualmente eu faço o script assim - startup:

sqlplus /nolog <<EOF
connect / as sysdba
startup
quit
EOF
lsnrctl start
emctl start dbconsole

E desligar:

emctl stop dbconsole
lsnrctl stop
sqlplus /nolog <<EOF
connect / as sysdba
shutdown
quit
EOF

Isso funciona - os programas funcionam conforme o esperado - mas esse procedimento é bastante lento.

O banco de dados Oracle é executado no CentOS 6.3, é a 'versão padrão' disponível gratuitamente (como na cerveja).

oracle oracle-11g-r2
  • 3 3 respostas
  • 62014 Views

3 respostas

  • Voted
  1. Best Answer
    maxschlepzig
    2013-05-23T06:30:47+08:002013-05-23T06:30:47+08:00

    Você pode usar os scripts dbstart/ dbshutque vêm com uma instalação do Oracle. Eles estão disponíveis em $ORACLE_HOME/bin.

    Após uma nova instalação, você deve editar o /etc/oratabarquivo:

    # cat /etc/oratab
    # format: $ORACLE_SID:$ORACLE_HOME:N|Y
    my_sid:/home/juser/app/juser/product/11.2.0/dbhome_1:N
    # sed -i 's/:N$/:Y/' /etc/oratab
    # grep my_sid /etc/oratab
    my_sid:/home/juser/app/juser/product/11.2.0/dbhome_1:Y
    

    Então você pode usar os scripts assim:

    $ whoami
    juser
    $ dbstart $ORACLE_HOME
    $ # execute DB jobs ...
    $ dbshut $ORACLE_HOME
    

    dbstarttraz tudo o que é necessário para os programas Pro*C/OCI.

    Usar dbstart/ dbshuté uma melhoria acima do método personalizado mencionado na pergunta:

    method                time    called tools
    ―――――――――――――――――――――――――――――――――――――――――――――――――――――
    dbstart              5.7 s    lsnrctl, sqlplus
    dbshut               5.7 s    lsnrctl, sqlplus
    custom startup      27.9 s    lsnrctl, sqlplus, emctl
    custom shutdown     31.0 s    lsnrctl, sqlplus, emctl
    

    (vezes em um sistema Core i7/2.8GHz, disco rígido de giro lento.)

    Como o dbstart/dbshut funciona

    Uma dbstart $ORACLE_HOME$chamada é basicamente equivalente a:

    $ lsnrctl start
    $ echo -e 'connect / as sysdba\nstartup\nquit'| sqlplus /nolog
    

    E a dbshut $ORACLE_HOME$é basicamente equivalente a:

    $ lsnrctl stop
    $ echo -e 'connect / as sysdba\nshutdown\nquit'| sqlplus /nolog
    

    (você pode verificar se tudo está desligado via ps aux | grep 'tnsl\|ora')

    Observe que a ordem dos comandos é importante. Isso significa que quando lsnrctl starté executado após o comando sqlplus-startup, o programa Pro*C/OCI ainda reclama de um ouvinte TNS indisponível.

    E este é exatamente o problema com a sequência de comandos na pergunta - onde emctl startapenas contorna a ordem errada porque corrige a parte de configuração do ouvinte TNS.

    Observe também que, para executar programas Pro*C/OCI, o serviço EMCTL não é necessário.

    • 8
  2. ibre5041
    2013-05-23T02:44:45+08:002013-05-23T02:44:45+08:00

    Por que você precisa disso tudo? Qual é a razão? Para desligar você tem 3 opções:

    • plain shutdown- aguarda o término das sessões
    • shutdown immediate- rollbacks e termina sessões (aguarda o término do rollback)
    • shutdown abort- mata tudo - geralmente o banco de dados precisa executar alguma recuperação na inicialização.

    PS: você provavelmente não precisa do Enterprise Manager para rodar, caso precise do banco de dados apenas para testes. Use o Oracle dbstart/ dbshutscripts. Se você realmente precisa do EM, inicie-o em segundo plano.

    • 1
  3. user126897
    2019-09-14T01:25:15+08:002019-09-14T01:25:15+08:00

    yasir-arsanukaev : Você pode apenas pausar (suspender) sua VM salvando seu estado no disco?

    colin-t-hart : Se esta for uma máquina de teste, crie um instantâneo. Inicie a máquina e inicie o Oracle usandodbstart. Basta forçar o desligamento da máquina quando terminar e reverter para o instantâneo.

    • 0

relate perguntas

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve