{"id":1583,"date":"2017-02-21T21:16:21","date_gmt":"2017-02-21T20:16:21","guid":{"rendered":"https:\/\/clemente.pamplona.name\/dba\/?p=1583"},"modified":"2017-02-23T08:54:22","modified_gmt":"2017-02-23T07:54:22","slug":"script-de-arranque-con-el-systemctl","status":"publish","type":"post","link":"http:\/\/clemente.pamplona.name\/dba\/script-de-arranque-con-el-systemctl\/","title":{"rendered":"Script de arranque con el systemctl"},"content":{"rendered":"<p>Hoy vamos a ver (con mucho  retraso) como hacer un script de arranque para el systemctl para nuestra base de datos 12c<\/p>\n<p>Vamos a poner el supuesto de que tenemos una base de datos 12c, en filesystem en una OL7. Al no haber instalado el grid control, nadie arrancar\u00e1 nuestra base de datos.<br \/>\n\u00bfComo hacemos para que arranque en el  inicio ?<br \/>\nSimplemente  hay que crearlos servicios de arranque <\/p>\n<h1> Scripts de arranque <\/h1>\n<p>Al igual que en un linux cl\u00e1sico, necesitaremos un script de start y stop para nuestra base de datos, nosotros crearemos :<\/p>\n<ul>\n<li><b> listener.sh <\/b>para el listener\n<li><b> cdbtest.sh <\/b>para nuestra instancia cdbtest.\n<\/ul>\n<p>Por compatibilidad con los sistemas antiguos, lo dejaremos en <i> \/etc\/init.d<\/i> (auqnue toda la informaci\u00f3n que he visto en internet lo deja ene l propio $HOME de oracle ) y le a\u00f1adiremos una guarda que compruebe que solamente pueda arrancase con el usuario <b>oracle<\/b> (y evitar asi que alguien lo use como root) <\/p>\n<h2> \/etc\/init.d\/listener.sh<\/h2>\n<pre>\r\n#!\/bin\/bash\r\n##  Configuramos el nombre del usuario que arranca la BBDD\r\nexport USUARIO=oracle\r\nif [ $UID -ne  `id -u $USUARIO`  ];then\r\n echo \"Programa invocado con  incorrecto, debe de invocarse como $USUARIO \"\r\n exit 1 ;\r\nfi\r\nexport ORAENV_ASK=no\r\nexport export ORACLE_HOME=\/u01\/app\/oracle\/product\/12.1.0\/dbhome_1\r\ncase $1 in \r\nstart)\r\n\t$ORACLE_HOME\/bin\/lsnrctl start \r\n;;\r\nstop)\r\n        $ORACLE_HOME\/bin\/lsnrctl stop\r\n;;\r\nstatus)\r\n        $ORACLE_HOME\/bin\/lsnrctl status\r\n;;\r\n*)\r\n  echo \"Usage $0 start|stop|status \"\r\n  ;;\r\nesac\r\n<\/pre>\n<h2>\/etc\/init.d\/cdbtest.sh<\/h2>\n<pre>\r\n#!\/bin\/bash\r\n##  Configuramos el nombre del usuario que arranca la BBDD\r\nexport USUARIO=oracle\r\nif [ $UID -ne  `id -u $USUARIO`  ];then\r\n echo \"Programa invocado con  incorrecto, debe de invocarse como $USUARIO \"\r\n exit 1 ;\r\nfi\r\nexport ORACLE_SID=cdbtest\r\nexport ORAENV_ASK=NO\r\n. oraenv\r\ncase $1 in \r\nstart)\r\n$ORACLE_HOME\/bin\/sqlplus \"\/as sysdba\" << EOF\r\n\tstartup;\r\n\texit;\r\nEOF\r\n;;\r\nstop)\r\n$ORACLE_HOME\/bin\/sqlplus \"\/as sysdba\" << EOF\r\n\tshutdown immediate;\r\n\texit;\r\nEOF\r\n;;\r\n*)\r\n  echo \"Usage $0 start|stop \"\r\n  ;;\r\n<\/pre>\n<h1> Creamos los servicios de systemctl <\/h1>\n<p>Ahora que tenemos ya los scripts que arrancaran y pararan el listener y la base de datos, crearemos nuestros servicios de arranque.<br \/>\nCrearemos uno especifico para el listener y otro para nuestra instancia cdbtest.<br \/>\nPara identificar cuales son nuestros servicios , los llamaremos <b>dbora-XXX<\/b> . Esto no es una convenci\u00f3n gen\u00e9rica ni una best practice , sino que es simplemente un patr\u00f3n propio para facilitarme su futura identificaci\u00f3n.<\/p>\n<h2> Servicio dbora-listener.service<\/h2>\n<p>Crearemos un fichero llamado <b> \/lib\/systemd\/system\/dbora-listener.service<\/b><\/p>\n<pre>\r\n[Unit]\r\nDescription=The Oracle Listener\r\nAfter=syslog.target network.target\r\n\r\n[Service]\r\nLimitMEMLOCK=infinity\r\nLimitNOFILE=65535\r\n\r\nRemainAfterExit=yes\r\nUser=oracle\r\nGroup=oinstall\r\nExecStart=\/etc\/init.d\/listener.sh start \r\nExecStop=\/etc\/init.d\/listener.sh stop \r\nType=idle\r\nRemainAfterExit=yes\r\nUser=oracle\r\nGroup=oinstall\r\n[Install]\r\nWantedBy=multi-user.target\r\n<\/pre>\n<h2> Servcio dbora-cdbtets.service<\/h2>\n<p>Ahora crearemos un servicio de arranque para nuestra instancia <b> \/lib\/systemd\/system\/dbora-cdbtets.service<\/b><\/p>\n<pre>\r\n[Unit]\r\nDescription=Base de datos cdbtest\r\nAfter=syslog.target network.target dbora-listener.service\r\n\r\n[Service]\r\nLimitMEMLOCK=infinity\r\nLimitNOFILE=65535\r\nRemainAfterExit=yes\r\nUser=oracle\r\nGroup=dba\r\nExecStart=\/etc\/init.d\/cdbtest.sh start  >> \/tmp\/startup_cdbtestlog 2>&1 &\r\nExecStop=\/etc\/init.d\/cdbtest.sh stop  >> \/tmp\/shutdown_cdbtestlog 2>&1 &\r\nType=idle\r\n[Install]\r\nWantedBy=multi-user.target\r\n<\/pre>\n<h1> Configuramos los servicios<\/h1>\n<p>Ya tenemos los scripts de arranque y los scripts de los servicios. Ahora simplemente nos quedar\u00e1 el habilitarlos para su funcionamiento.<br \/>\nPara ello, primero haremos un reload para refrescar los servicios<\/p>\n<pre>\r\n# systemctl daemon-reload\r\n<\/PRE>\r\nY luego los cargaremos y habilitaremos \r\n<pre>\r\nsystemctl start dbora-listener.service\r\nsystemctl enable dbora-listener.service\r\nsystemctl start dbora-cdbtest.service\r\nsystemctl enable dbora-cdbtest.service\r\n<\/pre>\n<p>As\u00ed pues,  si queremos ver el estado del service, podremos ver como :<\/p>\n<pre>\r\n[root@alone ~]# systemctl status dbora-cdbtest.service\r\n\u25cf dbora-cdbtest.service - Base de datos cdbtest\r\n   Loaded: loaded (\/usr\/lib\/systemd\/system\/dbora-cdbtest.service; enabled; vendor preset: disabled)\r\n   Active: active (exited) since mar 2017-02-21 13:16:19 CET; 9min ago\r\n  Process: 1039 ExecStart=\/etc\/init.d\/cdbtest.sh start >> \/tmp\/startup_cdbtestlog 2>&1 & (code=exited, status=0\/SUCCESS)\r\n Main PID: 1039 (code=exited, status=0\/SUCCESS)\r\n   CGroup: \/system.slice\/dbora-cdbtest.service\r\n           \u251c\u25002303 ora_pmon_cdbtest\r\n           \u251c\u25002305 ora_psp0_cdbtest\r\n           \u251c\u25002307 ora_vktm_cdbtest\r\n           \u251c\u25002311 ora_gen0_cdbtest\r\n           \u251c\u25002315 ora_mman_cdbtest\r\n           \u251c\u25002317 ora_diag_cdbtest\r\n           \u251c\u25002319 ora_dbrm_cdbtest\r\n           \u251c\u25002321 ora_vkrm_cdbtest\r\n           \u251c\u25002323 ora_dia0_cdbtest\r\n           \u251c\u25002325 ora_dbw0_cdbtest\r\n           \u251c\u25002327 ora_lgwr_cdbtest\r\n           \u251c\u25002329 ora_ckpt_cdbtest\r\n           \u251c\u25002331 ora_smon_cdbtest\r\n           \u251c\u25002333 ora_reco_cdbtest\r\n           \u251c\u25002335 ora_lreg_cdbtest\r\n           \u251c\u25002337 ora_pxmn_cdbtest\r\n           \u251c\u25002339 ora_mmon_cdbtest\r\n           \u251c\u25002341 ora_mmnl_cdbtest\r\n           \u251c\u25002343 ora_d000_cdbtest\r\n           \u251c\u25002345 ora_s000_cdbtest\r\n           \u251c\u25002357 ora_tmon_cdbtest\r\n           \u251c\u25002359 ora_tt00_cdbtest\r\n           \u251c\u25002361 ora_smco_cdbtest\r\n           \u251c\u25002363 ora_w000_cdbtest\r\n           \u251c\u25002365 ora_w001_cdbtest\r\n           \u251c\u25002369 ora_aqpc_cdbtest\r\n           \u251c\u25002373 ora_p000_cdbtest\r\n           \u251c\u25002375 ora_p001_cdbtest\r\n           \u251c\u25002377 ora_p002_cdbtest\r\n           \u251c\u25002379 ora_p003_cdbtest\r\n           \u251c\u25002381 ora_qm02_cdbtest\r\n           \u251c\u25002385 ora_q002_cdbtest\r\n           \u251c\u25002387 ora_q003_cdbtest\r\n           \u2514\u25002452 ora_cjq0_cdbtest\r\n\r\nfeb 21 13:16:33 alone.pamplona.name cdbtest.sh[1039]: Copyright (c) 1982, 2014, Oracle.  All rights reserved.\r\nfeb 21 13:16:51 alone.pamplona.name cdbtest.sh[1039]: Connected to an idle instance.\r\nfeb 21 13:17:00 alone.pamplona.name cdbtest.sh[1039]: SQL> ORACLE instance started.\r\nfeb 21 13:17:00 alone.pamplona.name cdbtest.sh[1039]: Total System Global Area 6291456000 bytes\r\nfeb 21 13:17:00 alone.pamplona.name cdbtest.sh[1039]: Fixed Size                    2938352 bytes\r\nfeb 21 13:17:00 alone.pamplona.name cdbtest.sh[1039]: Variable Size                 3372222992 bytes\r\nfeb 21 13:17:00 alone.pamplona.name cdbtest.sh[1039]: Database Buffers         2902458368 bytes\r\nfeb 21 13:17:00 alone.pamplona.name cdbtest.sh[1039]: Redo Buffers                   13836288 bytes\r\nfeb 21 13:17:05 alone.pamplona.name cdbtest.sh[1039]: Database mounted.\r\nfeb 21 13:17:30 alone.pamplona.name cdbtest.sh[1039]: Database opened.\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Hoy vamos a ver (con mucho retraso) como hacer un script de arranque para el systemctl para nuestra base de datos 12c Vamos a poner el supuesto de que tenemos una base de datos 12c, en filesystem en una OL7. &hellip; <a href=\"http:\/\/clemente.pamplona.name\/dba\/script-de-arranque-con-el-systemctl\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[60,86],"tags":[254,40,726,89,191],"class_list":["post-1583","post","type-post","status-publish","format-standard","hentry","category-12c","category-oracle-linux","tag-12c","tag-linux","tag-ol7","tag-servicio","tag-systemctl"],"_links":{"self":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/comments?post=1583"}],"version-history":[{"count":13,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1583\/revisions"}],"predecessor-version":[{"id":1596,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/1583\/revisions\/1596"}],"wp:attachment":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/media?parent=1583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/categories?post=1583"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/tags?post=1583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}