Feeds:
Posts
Comentários

Quando um usuário é criado, o Ubuntu automaticamente associa o shell /bin/sh como default para o novo usuário.

Para alterar o shell default há duas maneiras.

1- Use o comando chsh

Quando logado com o usuário novo, digite chsh

O Ubuntu pedirá a senha do usuário e em seguida aparecerá um prompt para o novo shell a ser usado.

Changing the login shell for oracle
Enter the new value, or press ENTER for the default
    Login Shell [/bin/sh]:
Para mudar para bash, apenas digite /bin/bash

 

2- Altere o bash default em /etc/passwd

Para tal, deverá ter permissão de root e usar um editor de texto para modificar o arquivo.

sudo vi /etc/passwd

Busque pela linha com o novo usuário no arquivo e altere o último parâmetro que é o de default shell.

oracle:x:1001:1001::/home/oracle:/bin/sh

Altere para

oracle:x:1001:1001::/home/oracle:/bin/bash

Salve o arquivo e pronto. Quando logar com o usuário novo estará usando o shell especificado.

No repositório oficial do Ubuntu há somente o openjdk.
Mas para instalar facilmente o java Oracle, basta seguir os procedimentos abaixo (as PPAs usadas são de terceiros).

1- Remove o openjdk no apt-get

sudo apt-get purge openjdk*

2- Adicione o repositório e atualize sua lista de pacotes.

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

3- Instale o jdk7.

sudo apt-get install oracle-java7-installer

Voce pode rodar o comando java -version> no terminal para verificar a instalação.

No navegador do Mozilla Firefox, teste na página do java abaixo.

http://www.java.com/en/download/installed.jsp

If you are having problems with your wifi Broadcom bcm4311 drivers as I did, you may follow these steps below.

  • Verify your BCM Netwok Controller:

lspci | grep BCM

  • If you have package bcmwl-kernel-source installed, it will be necessary to remove it:

sudo apt-get remove bcmwl-kernel-source

  • Install firmware-b43-installer and the b43-fwcutter packages:

sudo apt-get install firmware-b43-installer b43-fwcutter

  • Verify if your bcm hardware is blacklisted. Run the command below:

cat /etc/modprobe.d/* | egrep ‘bcm’

  • If you see ‘blacklist bcm43xx’ there, it means its blacklisted.
  • Remove it from blacklist by editing the conf file

sudo gedit /etc/modprobe.d/blacklist.conf

  • Comment the line putting a # in front of the line: blacklist bcm43xx. Save the file.
  • Reboot your pc.
  • Confirm your wifi is not blocked.

rfkill list all

Essa semana fiz um script simples para criar um novo usuário e copiar todas as permissões de um outro usuário já existente no banco de dados.

 

set linesize 150
set echo off
set feedback off
set verify off
set head off

define v_newusername = 'NEWUSER'
define v_newuserpass = 'P4ssW0rd'
define v_usertocopyfrom = 'OLDUSER'

set termout off

-- Create user, define default tablespace, temporary tablespace and profile
select '-- Create user, define default tablespace, temporary tablespace and profile' from dual
union all
select 'create user &v_newusername identified by &v_newuserpass' ||
' default tablespace ' || default_tablespace ||
' temporary tablespace '|| temporary_tablespace ||
' profile '|| profile ||
';'
from dba_users
where username = upper('&v_usertocopyfrom')
union all
-- Grant Roles to new user
select '-- Grant Roles to new user' from dual
union all
select 'grant '|| granted_role || ' to &v_newusername' ||
decode(admin_option, 'YES', ' with admin option') || ';'
from dba_role_privs
where grantee = upper('&v_usertocopyfrom')
union all
-- Grant System Privs...
select '-- Grant System Privs' from dual
union all
select 'grant '|| privilege || ' to &v_newusername' ||
decode(admin_option, 'YES', ' with admin option') || ';'
from dba_sys_privs
where grantee = upper('&v_usertocopyfrom')
union all
-- Grants on database objects
select '-- Grant on database objects' from dual
union all
select 'grant '|| privilege || ' on ' || owner || '.' || table_name ||' to &v_newusername' ||
decode(grantable, 'YES', ' with admin option') || ';'
from dba_tab_privs
where grantee = upper('&v_usertocopyfrom')
union all
-- Grant Column Privs...
select '-- Grant Column Privs' from dual
union all
select 'grant '|| privilege || '(' || column_name || ') on ' || owner || '.' || table_name ||
' to &v_newusername;'
from dba_col_privs
where grantee = upper('&v_usertocopyfrom')
union all
-- Set Default Role...
select '-- Set default role' from dual
union all
select 'alter user &v_newusername default role ' || granted_role ||';'
from dba_role_privs
where grantee = upper('&v_usertocopyfrom')
and default_role = 'YES'
union all
-- Set quotas to user
select '-- Set quotas to new user' from dual
union all
select 'alter user &v_newusername quota ' || max_bytes ||' on ' || tablespace_name || ';'
from dba_ts_quotas
where username = upper('&v_usertocopyfrom');

undefine v_newusername
undefine v_newuserpass
undefine v_usertocopyfrom

set head on
set verify on
set echo on
set termout on
set feedback on

Isto vai gerar um output como o abaixo.

– Create user, define default tablespace, temporary tablespace and profile
create user NEWUSER identified by P4ssW0rd default tablespace USERS temporary tablespace TEMP_USERS profile VMU_USER_PROFILE;
– Grant Roles to new user
grant RESOURCE to NEWUSER;
grant CONNECT to NEWUSER;
– Grant System Privs
grant UNLIMITED TABLESPACE to NEWUSER;
– Grant on database objects
– Grant Column Privs
– Set default role
alter user NEWUSER default role RESOURCE;

Basta, então, copiar este output e colar no sqlplus para criar o novo usuário NEWUSER com as mesmas permissões que OLDUSER.

Também tem a versão usando o comando spool. Mas nesse caso, o arquivo gerado pelo spool deverá ser executado no sqlplus com o @. Se quiser também pode habilitar o ACCEPT no lugar de DEFINE.

set head off
set pages 0
set long 10000
set linesize 150
set echo off
set feedback off
set verify off
set trimspool on

spool /home/oracle/copy_olduser2newuser.sql

--Prompts the user for new username, new pass and existing user to copy from

--accept v_newusername CHAR PROMPT '--Enter new username: ';
--accept v_newuserpass CHAR PROMPT '--Enter new user password: ';
--accept v_usertocopyfrom CHAR PROMPT '--Enter existing username to copy from: ';

define v_newusername = 'HR2'
define v_newuserpass = 'HR2'
define v_usertocopyfrom = 'HR'

set termout off

-- Create user, define default tablespace, temporary tablespace and profile
select '-- Create user, define default tablespace, temporary tablespace and profile' from dual;

select 'create user &v_newusername identified by &v_newuserpass' ||
' default tablespace ' || default_tablespace ||
' temporary tablespace '|| temporary_tablespace ||
' profile '|| profile ||
' password expire;'
from dba_users
where username = upper('&v_usertocopyfrom');

-- Grant Roles to new user
select '-- Grant Roles to new user' from dual;

select 'grant '|| granted_role || ' to &v_newusername' ||
decode(admin_option, 'YES', ' with admin option') || ';'
from dba_role_privs
where grantee = upper('&v_usertocopyfrom');    

-- Grant System Privs...
select '-- Grant System Privs' from dual;

select 'grant '|| privilege || ' to &v_newusername' ||
decode(admin_option, 'YES', ' with admin option') || ';'
from dba_sys_privs
where grantee = upper('&v_usertocopyfrom');

-- Grants on database objects
select '-- Grant on database objects' from dual;

select 'grant '|| privilege || ' on ' || owner || '.' || table_name ||' to &v_newusername' ||
decode(grantable, 'YES', ' with admin option') || ';'
from dba_tab_privs
where grantee = upper('&v_usertocopyfrom');

-- Grant Column Privs...
select '-- Grant Column Privs' from dual;

select 'grant '|| privilege || '(' || column_name || ') on ' || owner || '.' || table_name ||
' to &v_newusername;'
from dba_col_privs
where grantee = upper('&v_usertocopyfrom');

-- Set Default Role...
select '-- Set default role' from dual;

select 'alter user &v_newusername default role ' || granted_role ||';'
from dba_role_privs
where grantee = upper('&v_usertocopyfrom')
and default_role = 'YES';

-- Set quotas to user
select '-- Set quotas to new user' from dual;

select 'alter user &v_newusername quota ' || max_bytes ||' on ' || tablespace_name || ';'
from dba_ts_quotas
where username = upper('&v_usertocopyfrom');

spool off

undefine v_newusername
undefine v_newuserpass
undefine v_usertocopyfrom

set head on
set verify on
set echo on
set termout on
set feedback on

Recentemente, eu decidi estudar administração de banco de dados Oracle. Como primeiro passo, resolvi instalar o Oracle 11g em minha máquina que roda a versão do Ubuntu 11.10 Oneiric 32bits. Não foi uma tarefa simples, e exigiu muitas buscas por blogs e fóruns. Neste post irei descrever os passos que segui para instalar o software do banco com sucesso em minha máquina.

Inicialmente, já vale lembrar que o Ubuntu não é suportado pela Oracle. Portanto, não é recomendável usá-lo em sistemas reais, em produção, etc., já que a Oracle não irá oferecer suporte se o banco estiver instalado sobre o Ubuntu. Esta informação é encontrada no Installation Guide do link http://docs.oracle.com/cd/E11882_01/install.112/e24322/toc.htm. Que aliás, utilizei para obter mais informações da instalação. Mas no meu caso, só resolvi instalar o banco para fins de estudo mesmo.

É bom verificar os requisitos de hardware. A saber, a configuração mínima recomendada é:

■ 1 GB RAM
■ 1.5 GB swap space
■ 400 MB no TEMP (se houver uma partição TEMP, senão, considere o sistema de arquivo do root)
■ 1.5 GB–3.5 GB para a partição onde ficará o Oracle Home
■ 2.4 GB para o flash recovery area
■ 1 GHz CPU

Lógico que não é necessário levar isso à risca. Você pode usar o comando free para ver quanto de espaço possui no sistema de arquivo e na partição de swap e também o df -h para ver o espaço em cada partição. Eu mesmo possuo um swap de 1GB somente.

Dado que haja espaço suficiente, pode-se seguir com os passos da instalação.

1- Fazer o download do banco no site da oracle (será necessário se cadastrar).

Baixei a versão Enterprise para Linux x86.

2- Atualize sua lista de pacotes e faça um upgrade para atualizar seus pacotes já instalados (esteja logado como root).

apt-get update
apt-get upgrade

3- Em seguida, alguns pacotes deverão ser instalados. Use o comando apt-get install <nome_do_pacote>.

  • alien
  • binutils
  • build-essential
  • gawk
  • gcc-multilib
  • ksh
  • libaio1
  • libc6
  • libc6-dev
  • libmotif4
  • libstdc++5
  • libtool
  • make
  • rpm
  • sysstat
  • unixodbc
  • unzip

O comando abaixo pode ser executado para que se obtenha uma lista de todos os pacotes instalados em seu sistema em um arquivo nomeado pacotes.txt.

dpkg –get-selections >> pacotes.txt

Também é necessário ter pelo menos o java run-time instalado. Você pode obter o java run-time neste link ou mesmo instalar o pacote openjdk executando apt-get install openjdk-7-jre.

4-  É comum a prática de criar um usuário com o qual é instalado o banco de dados. Também é criado o grupo dba, que consiste nos usuários que serão administradores do banco, e o grupo oinstall, que são os usuários que fazem parte da instalação. Abaixo foram criados os grupos e o usuário oracle, que terá como grupo primário o oinstall. Ao final, é criada a senha do usuário oracle.

sudo groupadd oinstall
sudo groupadd dba
sudo groupadd nobody
sudo useradd -m oracle -g oinstall -G dba
sudo passwd oracle

5- Alguns parâmetros do Kernel devem ser atualizados. Eu mesmo só tive problemas com 1 deles, que é o net.ipv4.ip_local_port_range que tive que alterar para 65500. No entanto, coloquei aqui uma lista que obtive de fóruns e outros blogs.

Para tal execute o comando como root:

sudo vi /etc/sysctl.conf

Altere os seguintes parâmetros no arquivo

kernel.shmall=2097152
kernel.shmmax=2147483648
kernel.shmmni=4096
kernel.sem=250 32000 100 128
fs.file-max=65536
net.ipv4.ip_local_port_range=65500
fs.aio-max-nr=1048576
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586

Recarregue:

sudo sysctl -p

6- Deverá ser criado o diretório onde o banco será instalado. Esse consistirá nas variáveis de ambiente ORACLE_HOME e ORACLE_BASE definidas posteriormente. O ORACLE_BASE é o diretório onde ficam todos os produtos instalados pertencentes à Oracle. Cada produto instalado terá sua própria ORACLE_HOME, abaixo do ORACLE_BASE. Aqui utilizei os seguintes diretórios

ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

Portanto, rodei o seguinte comando:

sudo mkdir -p /u01/app/oracle

Enfim, define-se as permissões para o diretório criado.

sudo chown -R oracle:oinstall /u01
sudo chmod -R 775 /u01

7- Agora será descompactado os arquivos de instalação.

sudo mkdir /ora_install
sudo mv linux_11gR2_database_* /ora_install
cd /ora_install
sudo unzip linux_11gR2_database_1of2.zip
sudo unzip linux_11gR2_database_2of2.zip
sudo chown -R oracle:oinstall /ora_install

 8- Antes de iniciar a instalação, os seguintes comandos tiveram que ser executados para corrigir links de arquivos em pastas diferentes.

ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a
ln -s /usr/lib/i386-linux-gnu/libc_nonshared.a /usr/lib/libc_nonshared.a
ln -s /usr/bin/basename /bin/basename
ln -s /usr/bin/awk /bin/awk
ln -s /bin/lib/libgcc_s.so.1 /lib/libgcc_s.so
ln -s /lib/i386-linux-gnu/libgcc_s.so.1 /lib/libgcc_s.so.1
ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib/libstdc++.so.6

Atenção: para ubuntu 64bit, execute abaixo.

ln -s /usr/lib /usr/lib64
ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib/
ln -s /usr/bin/basename /bin/basename
ln -s /usr/bin/awk /bin/awk
ln -s /bin/lib/libgcc_s.so.1 /lib/libgcc_s.so
ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib

Reinicie sua máquina antes de iniciar o próximo passo.

9- Execute o comando xhost + para dar acesso a saída de aplicações gráficas à todos os usuários. Então, altere o RunLevel para 3. Em seguida, logar como usuário oracle e executar o installer. A variável DISPLAY deve ser iniciada antes para o instalador saber o terminal que o usuário deseja que a janela de instalação seja exibida.

sudo xhost +
sudo init 3
su oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export DISPLAY=:0.0
cd /ora_install/database
./runInstaller

10- A janela do instalador deverá ser aberta. Irei exibir aqui somente algumas opções que escolhi na instalação.

Note que ainda tive reclamações do instalador de que o tamanho do swap era pequeno. Também dizia que alguns pacotes não estavam instalados. Simplesmente ignorei esses e segui em frente.

11- Correção dos erros.

Essa parte que foi complicada. Esses errors ocorrem por causa de uma mudança na shared library links do gcc que foi introduzida no Ubuntu 11.

Eu fui corrigindo os erros conforme ocorriam. Sempre que surgia um erro, eu checava o log da instalação acusado na mensagem de erro e também o log do make em /u01/app/oracle/product/11.2.0/dbhome_1/install/make.log.

O primeiro erro foi o abaixo.

Para corrigir, eu abri outra janela do terminal e executei:.

sudo vi /u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk

substitui a linha:

$(SYSMANBIN)emdctl: $(MK_EMAGENT_NMECTL)

por:

$(SYSMANBIN)emdctl: $(MK_EMAGENT_NMECTL) -lnnz11

Feito e salvo, voltei na tela de erro e cliquei em Repetir.

Em seguida, outra mensagem de erro apresentada na figura abaixo.

Para este, consultei o $ORACLE_HOME/install/make.log várias vezes até corrigir o erro por completo e passar deste ponto. A mensagem de erro do instalador era sempre a mesma, mas conforme eu ia corrigindo, o log do make apresentava onde estava o novo erro.

Os passos seguidos foram:

sudo vi $ORACLE_HOME/rdbms/lib/env_rdbms.mk

substituir

KFED_LINKLINE=$(LINK) $(S0MAIN) $(SSKFEDED) $(SKFEDPT)  \

por

KFED_LINKLINE=$(LINK) $(S0MAIN) -Wl,--no-as-needed $(SSKFEDED) $(SKFEDPT)  \

-

substituir

KFOD_LINKLINE=$(LINK) $(S0MAIN) $(SSKFODED) $(SKFODPT) $(KFODOBJ) \

por

KFOD_LINKLINE=$(LINK) $(S0MAIN) -Wl,--no-as-needed $(SSKFODED) $(SKFODPT) $(KFODOBJ) \

-

substituir

KFNDG_LINKLINE=$(LINK) $(S0MAIN) $(SSKFNDGED) $(SKFNDGPT) $(KFNDGOBJ) \

por

KFNDG_LINKLINE=$(LINK) $(S0MAIN) -Wl,--no-as-needed $(SSKFNDGED) $(SKFNDGPT) $(KFNDGOBJ) \

-

substituir

AMDU_LINKLINE=$(LINK) $(S0MAIN) $(SSKFMUED) $(SKFMUPT) \

por

AMDU_LINKLINE=$(LINK) $(S0MAIN) -Wl,--no-as-needed $(SSKFMUED) $(SKFMUPT) \

-

substituir

ORACLE_KERNEL_LIBS=$(LLIBSKGTR) $(LLIBPERFSRV) $(NAETTOBJS) $(CONFIG) \ $(SPOBJS) $(LLIBSERVER) $(LLIBODM) $(LLIBSAGE) \

por

ORACLE_KERNEL_LIBS=$(LLIBSKGTR) $(LLIBPERFSRV) $(NAETTOBJS) $(CONFIG) \ $(SPOBJS) -Wl,--no-as-needed $(LLIBSERVER) $(LLIBODM) $(LLIBSAGE) \

-

no arquivo /bin/genorasdksh

sudo vi $ORACLE_HOME/bin/genorasdksh

substituir

$LD $LD_RUNTIME $LD_OPT $LD_OUT $LD_SELF_CONTAINED $BASE_LIB \

por

$LD $LD_RUNTIME -Wl,--no-as-needed $LD_OPT $LD_OUT $LD_SELF_CONTAINED $BASE_LIB \

-

no arquivo /srvm/lib/ins_srvm.mk

sudo vi $ORACLE_HOME/srvm/lib/ins_srvm.mk

substituir

GETCRSHOME_LINKLINE=$(LINK) $(LDPATHFLAG)$(RDBMSLIB) $(CDEBUG) $(OPT) $(GETCRSHOME_OBJ1) \ $(OCRLIBS_DEFAULT) $(LLIBCLNTSH) $(LINKLDLIBS)

por

GETCRSHOME_LINKLINE=$(LINK) $(LDPATHFLAG)$(RDBMSLIB) $(CDEBUG) $(OPT) $(GETCRSHOME_OBJ1) -Wl,--no-as-needed \ $(OCRLIBS_DEFAULT) $(LLIBCLNTSH) $(LINKLDLIBS)

-

Por último, tive o erro abaixo.

Este no arquivo /network/lib/env_network.mk.

sudo vi $ORACLE_HOME/network/lib/env_network.mk

substituir

TNSLSNR_LINKLINE=$(LINK) $(TNSLSNR_OFILES) $(LINKTTLIBS) $(LLIBONS) \

por

TNSLSNR_LINKLINE=$(LINK) $(TNSLSNR_OFILES) -Wl,--no-as-needed $(LINKTTLIBS) $(LLIBONS) \

Feito isso a instalação terminou como bem-sucedida.

Até o momento já criei banco, subi o listener, fiz o startup do banco, iniciei o Enterprise Manager, conectei por sqlplus e sqldeveloper e nenhum problema!

 
Fontes:
http://mikesmithers.wordpress.com/2010/03/14/installing-oracle-11gr2-on-ubuntu-9-10/
http://barrasbin.wordpress.com/2011/05/09/ubuntu-10-10-64-bits-oracle-11g-r2-64-bits/
https://forums.oracle.com/forums/thread.jspa?threadID=1091616
https://forums.oracle.com/forums/thread.jspa?threadID=2301639
http://blog.arkzoyd.com/2011/11/oracle-database-11g-and-ubuntu-1110.html 
http://www.pythian.com/news/13291/installing-oracle-11gr2-enterprise-edition-on-ubuntu-10-04-lucid-lynx/

Apresentação

Olá para todos!

Criei este blog com a intenção de postar minhas experiências no aprendizado de diversas tecnologias, tais como banco de dados, sistemas operacionais, eletrônica, microcontroladores, linguagens de programação, etc.
Aceito sugestões e críticas a quaisquer posts que eu publicar aqui.
Se este blog servir como guia para alguns que passaram dificuldades iguais as minhas, seria ótimo poder ajudar.
Também resolvi criar este blog como um repositório pessoal das atividades que já fiz para minha própria consulta posteriormente.

A quem me vistar, um obrigado!

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.