quinta-feira, 22 de agosto de 2013

Procedimento para Trocar o nome da Base de Dados de um Web Application

(Normalmente ficam fora de um padrão como WSS_Content_owgisl234lçdfg99dgsdf0g)
*CUIDADO: Não fazer o procedimento para a base do Admin Sharepoint (Qualquer outra pode ser feita).
- Antes de iniciar é necessário ter acesso ao management studio com permissão de sysadmin (preferencialmente).
- O meu Sharepoint 2010 Foundation está em português (mas, não há diferença para a versão em inglês, é só traduzir).
- Meu Management studio esta em inglês (sem problemas, somente traduza caso precise).
- Sql Server 2008R2.
Procedimento feito de dentro do servidor onde está instalado o Sharepoint.
clip_image002
Acessar o Admin Sharepoint
Vá em Administração Central \ Gerenciamento de Aplicativo – Gerenciar bancos de dados de conteúdo.
clip_image004
Verifique inicialmente o aplicativo web (se for necessário troque para o qual se deseja atualizar o nome do banco de dados).
Clique no nome do Banco de dados.
clip_image006
Altere o status do banco de dados de Online para Offline e desça mais um pouco.
clip_image008
Clique na box ‘remover banco de dados de conteúdo’ (será exibida uma mensagem de aviso, clique em ‘OK’). Clique no botão OK.
clip_image010
Observe que agora não existem mais banco de dados para exibição.
clip_image012
Agora vamos ao management studio.
Start \ All programs \ Microsoft SQL Server 2008 R2 – SQL Server Management Studio
(A versão do Sql Server não altera o nosso procedimento).
Logue no banco de dados.
clip_image014
Navegue até a base de dados que você pretende alterar o nome e em cima clique com o botão direito do mouse \ Properties
clip_image019

Na tela que se abre clique em Files. Mova a barra um pouco para o lado e veja o diretório (e na coluna ao lado o nome) onde estão os arquivos que iremos mudar os nomes. Navegue até o diretório para evitar não lembrar o nome do arquivo após fazer o detach dele do banco. Clique em OK.
clip_image022
Cuidado para não confundir o nome dos arquivos, podem haver parecidos como no exemplo abaixo. Lembre-se são 2 arquivos que iremos mudar o nome (.mdf e .ldf), conforme eu selecionei abaixo.
clip_image027
Agora que já está com os arquivos marcados. Navegue novamente (management studio) até a base de dados que você pretende alterar o nome e em cima clique com o botão direito do mouse \ Tasks \ Detach...
clip_image029

Atenção, nesta tela, você pode marcar a opção para dropar conecções, mas, não marque Update Statistcs. Clique no botão ok.
clip_image033
Agora vamos até os arquivos e os renomearemos para o nome desejado (não altere as extensões caso esteja visível para você, no meu caso não estão).
clip_image035
Agora vamos recolocar a base do banco de dados de volta ao Managemente Studio.
Volte ao management Studio e em cima de Databases clique com o botão direito \ Attach...
clip_image037

Atenção agora.
Na tela que se abre clique em Add..
Navegue até o diretório onde está o arquivo que foi renomeado, mas, o importante é que você vá até o arquivo que tem a extensão (.mdf) como no exemplo abaixo. Aperte ‘Enter’.
clip_image040
Caso apareça uma mensagem de Not Found na coluna Message igual ao meu exemplo, significa que o arquivo internamente aponta para um outro nome de arquivo (o antigo que você renomeou). Sem problemas.
clip_image044
Clique nas ... setinhas (na 1ª linha) este especifica o arquivo de dados (.mdf) e na janela que se abre navegue até o nome do arquivo que foi renomeado (o mesmo de antes com o final .mdf). Selecione-o e clique em OK , ou no botão ‘Enter’.
clip_image048
Observe que a mensagem de Not Found sumiu.
clip_image052
Agora o procedimento é na linha de baixo (arquivo de log .ldf). Navegue até o arquivo (espero que você tenha renomeado ele também, fica mais identificável e legível). Dê 2 cliques, clique em ‘Enter’ ou pressione OK.
clip_image055
Neste momento não existem mais mensagem de Not Found. Mas, ainda existe uma ultima coisa MUITO IMPORTANTE a ser feita. Observe que na coluna Attach As TEMOS QUE ALTERAR O NOME DA BASE DE DADOS (guarde este nome será usado mais na frente).
clip_image058
Após alterar o nome podemos continuar (não se esqueça de guardar o nome). Clique em OK. Dependendo do tamanho da base o Attach será rápido.
clip_image061
Agora vamos voltar ao Admin Sharepoint.
Na ultima tela na qual estávamos vamos continuar. Clique em Adicionar um banco de dados de conteúdo.
clip_image064
Observe sempre o nome da aplicação. Iremos agora trocar o nome do banco de dados para o nome que foi colocado no passo anterior (eu disse para guardar o nome).
clip_image066
Observe o nome alterado. Em autenticação do banco de dados verifique qual é a forma de autenticação (Normalmente é a de Autenticação do Windows). Clique em OK.
clip_image070

Aguarde e reze.. rsrs
clip_image073
No nosso exemplo, o procedimento funcionou corretamente. Podemos ver o banco de dados e seu status como Iniciado.
clip_image075
Não é necessário reiniciar nada.
Mas, para garantir. Acesse o endereço do web Aplication.
Boa sorte!!
clip_image077

terça-feira, 11 de junho de 2013

Sharepoint - Could not find stored procedure ‘sp_dboption’ – Installing SharePoint 2010 on SQL Server 2012'

Olá Amigos,
Voltei depois de muito, muito tempo... 
A vida está corrida rsrs...

Mas, estou aqui hoje para uma dica, desta vez,  referente ao Sharepoint.

Seguem os dados do ambiente e do problema: 

Sharepoint Foundation 2010

Banco de Dados Sql Server Express Edition 2012.

Durante a instalação do Sharepoint durante a fase de configuração da Administração Central do Sharepoint ocorre o erro:

Could not find stored procedure ‘sp_dboption’ – Installing SharePoint 2010 on SQL Server 2012


Este erro está relacionado a falta da procedure chamada 'sp_dboption'.

Pesquisando na web encontrei algumas dicas dizendo para atualizar o Sql Server aplicando o patch SP1, porém encontrei uma outra dica bem simples e rápida que vou reproduzir aqui, que se trata de criar a procedure que está faltando (bem óbvio até...).

Segue o link de onde eu peguei a dica: http://itkbase.wordpress.com/2013/02/12/creating-webmarshal-database-on-sql-server-2012-error-could-not-find-stored-proceduresp_dboption/

Agora vai o comando:
Simplesmente crie a procedure usando o Management Studio por exemplo, e mande rodar novamente o instalador do Sharepoint.
Qualquer dúvida, entre em contato.
Copie e cole o código abaixo.


USE [master]

GO

/****** Object:  StoredProcedure [sys].[sp_dboption]    Script Date: 06/06/2012 21:16:10 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE procedure [dbo].[sp_dboption] -- 1999/08/09 18:25

@dbname sysname = NULL,   -- database name to change

@optname varchar(35) = NULL, -- option name to turn on/off

@optvalue varchar(10) = NULL -- true or false

as

set nocount    on

declare @dbid int   -- dbid of the database

declare @catvalue int  -- number of category option

declare @optcount int  -- number of options like @optname

declare @allstatopts int -- bit map off all options stored in sysdatqabases.status

-- that can be set by sp_dboption.

declare @alloptopts int  -- bit map off all options stored in sysdatqabases.status

-- that can be set by sp_dboption.

declare @allcatopts int  -- bit map off all options stored in sysdatqabases.category

-- that can be set by sp_dboption.

declare @exec_stmt nvarchar(max)

declare @fulloptname varchar(35)

declare @alt_optname varchar(50)

declare @alt_optvalue varchar(30)

declare @optnameIn varchar(35)

select @optnameIn = @optname

,@optname = LOWER (@optname collate Latin1_General_CI_AS)

-- If no @dbname given, just list the possible dboptions.

--  Only certain status bits may be set or cleared by sp_dboption.

-- Get bitmap of all options that can be set by sp_dboption.

select @allstatopts=number from master.dbo.spt_values where type = 'D'

and name = 'ALL SETTABLE OPTIONS'

select @allcatopts=number from master.dbo.spt_values where type = 'DC'

and name = 'ALL SETTABLE OPTIONS'

select @alloptopts=number from master.dbo.spt_values where type = 'D2'

and name = 'ALL SETTABLE OPTIONS'

if @dbname is null

begin

select 'Settable database options:' = name

from master.dbo.spt_values

where (type = 'D'

and number & @allstatopts <> 0

and number not in (0,@allstatopts)) -- Eliminate non-option entries

or (type = 'DC'

and number & @allcatopts <> 0

and number not in (0,@allcatopts))

or (type = 'D2'

and number & @alloptopts <> 0

and number not in (0,@alloptopts))

order by name

return (0)

end

--  Verify the database name and get info

select @dbid = dbid

from master.dbo.sysdatabases

where name = @dbname

--  If @dbname not found, say so and list the databases.

if @dbid is null

begin

raiserror(15010,-1,-1,@dbname)

print ' '

select 'Available databases:' = name

from master.dbo.sysdatabases

return (1)

end

-- If no option was supplied, display current settings.

if @optname is null

begin

select 'The following options are set:' = v.name

from master.dbo.spt_values v, master.dbo.sysdatabases d

where d.name=@dbname

and ((number & @allstatopts <> 0

and number not in (-1,@allstatopts)

and v.type = 'D'

and (v.number & d.status)=v.number)

or (number & @allcatopts <> 0

and number not in (-1,@allcatopts)

and v.type = 'DC'

and d.category & v.number <> 0)

or (number & @alloptopts <> 0

and number not in (-1,@alloptopts)

and v.type = 'D2'

and d.status2 & v.number <> 0))

return(0)

end

if @optvalue is not null and lower(@optvalue) not in ('true', 'false', 'on', 'off')

begin

raiserror(15241,-1,-1)

return (1)

end

--  Use @optname and try to find the right option.

--  If there isn't just one, print appropriate diagnostics and return.

select @optcount = count(*) ,@fulloptname = min(name)

from master.dbo.spt_values

where lower(name collate Latin1_General_CI_AS) like '%' + @optname + '%'

and ((type = 'D'

and number & @allstatopts <> 0

and number not in (-1,@allstatopts))

or (type = 'DC'

and number & @allcatopts <> 0

and number not in (-1,@allcatopts))

or (type = 'D2'

and number & @alloptopts <> 0

and number not in (-1,@alloptopts)))

--  If no option, show the user what the options are.

if @optcount = 0

begin

raiserror(15011,-1,-1,@optnameIn)

print ' '

select 'Settable database options:' = name

from master.dbo.spt_values

where (type = 'D'

and number & @allstatopts <> 0

and number not in (-1,@allstatopts)) -- Eliminate non-option entries

or (type = 'DC'

and number & @allcatopts <> 0

and number not in (-1,@allcatopts))

or (type = 'D2'

and number & @alloptopts <> 0

and number not in (-1,@alloptopts))

order by name

return (1)

end

--  If more than one option like @optname, show the duplicates and return.

if @optcount > 1

begin

raiserror(15242,-1,-1,@optnameIn)

print ' '

select duplicate_options = name

from master.dbo.spt_values

where lower(name collate Latin1_General_CI_AS) like '%' + @optname + '%'

and ((type = 'D'

and number & @allstatopts <> 0

and number not in (-1,@allstatopts))

or (type = 'DC'

and number & @allcatopts <> 0

and number not in (-1,@allcatopts))

or (type = 'D2'

and number & @alloptopts <> 0

and number not in (-1,@alloptopts))

)

return (1)

end

--  Just want to see current setting of specified option.

if @optvalue is null

begin

select OptionName = v.name,

CurrentSetting = (case

when ( ((v.number & d.status) = v.number

and v.type = 'D')

or (d.category & v.number <> 0

and v.type = 'DC')

or (d.status2 & v.number <> 0

and v.type = 'D2')

)

then 'ON'

when not

( ((v.number & d.status) = v.number

and v.type = 'D')

or (d.category & v.number <> 0

and v.type = 'DC')

or (d.status2 & v.number <> 0

and v.type = 'D2')

)

then 'OFF'

end)

from master.dbo.spt_values v, master.dbo.sysdatabases d

where d.name=@dbname

and ((v.number & @allstatopts <> 0

and v.number not in (-1,@allstatopts) -- Eliminate non-option entries

and v.type = 'D')

or (v.number & @allcatopts <> 0

and v.number not in (-1,@allcatopts) -- Eliminate non-option entries

and v.type = 'DC')

or (v.number & @alloptopts <> 0

and v.number not in (-1,@alloptopts) -- Eliminate non-option entries

and v.type = 'D2')

)

and lower(v.name) = lower(@fulloptname)

return (0)

end

select @catvalue = 0

select @catvalue = number

from master.dbo.spt_values

where lower(name) = lower(@fulloptname)

and type = 'DC'

-- if setting replication option, call sp_replicationdboption directly

if (@catvalue <> 0)

begin

select @alt_optvalue = (case lower(@optvalue)

when 'true' then 'true'

when 'on' then 'true'

else 'false'

end)

select @alt_optname = (case @catvalue

when 1 then 'publish'

when 2 then 'subscribe'

when 4 then 'merge publish'

else quotename(@fulloptname, '''')

end)

select @exec_stmt = quotename(@dbname, '[')   + '.dbo.sp_replicationdboption'

EXEC @exec_stmt @dbname, @alt_optname, @alt_optvalue

return (0)

end

-- call Alter Database to set options

-- set option value in alter database

select @alt_optvalue = (case lower(@optvalue)

when 'true' then 'ON'

when 'on' then 'ON'

else 'OFF'

end)

-- set option name in alter database

select @fulloptname = lower(@fulloptname)

select @alt_optname = (case @fulloptname

when 'auto create statistics' then 'AUTO_CREATE_STATISTICS'

when 'auto update statistics' then 'AUTO_UPDATE_STATISTICS'

when 'autoclose' then 'AUTO_CLOSE'

when 'autoshrink' then 'AUTO_SHRINK'

when 'ansi padding' then 'ANSI_PADDING'

when 'arithabort' then 'ARITHABORT'

when 'numeric roundabort' then 'NUMERIC_ROUNDABORT'

when 'ansi null default' then 'ANSI_NULL_DEFAULT'

when 'ansi nulls' then 'ANSI_NULLS'

when 'ansi warnings' then 'ANSI_WARNINGS'

when 'concat null yields null' then 'CONCAT_NULL_YIELDS_NULL'

when 'cursor close on commit' then 'CURSOR_CLOSE_ON_COMMIT'

when 'torn page detection' then 'TORN_PAGE_DETECTION'

when 'quoted identifier' then 'QUOTED_IDENTIFIER'

when 'recursive triggers' then 'RECURSIVE_TRIGGERS'

when 'default to local cursor' then 'CURSOR_DEFAULT'

when 'offline' then (case @alt_optvalue when 'ON' then 'OFFLINE' else 'ONLINE' end)

when 'read only' then (case @alt_optvalue when 'ON' then 'READ_ONLY' else 'READ_WRITE' end)

when 'dbo use only' then (case @alt_optvalue when 'ON' then 'RESTRICTED_USER' else 'MULTI_USER' end)

when 'single user' then (case @alt_optvalue when 'ON' then 'SINGLE_USER' else 'MULTI_USER' end)

when 'select into/bulkcopy' then 'RECOVERY'

when 'trunc. log on chkpt.' then 'RECOVERY'

when 'db chaining' then 'DB_CHAINING'

else @alt_optname

end)

if @fulloptname = 'dbo use only'

begin

if @alt_optvalue = 'ON'

begin

if databasepropertyex(@dbname, 'IsSingleUser') = 1

begin

raiserror(5066,-1,-1);

return (1)

end

end

else

begin

if databasepropertyex(@dbname, 'IsDBOOnly') = 0

return (0)

end

end

if @fulloptname = 'single user'

begin

if @alt_optvalue = 'ON'

begin

if databasepropertyex(@dbname, 'ISDBOOnly') = 1

begin

raiserror(5066,-1,-1);

return (1)

end

end

else

begin

if databasepropertyex(@dbname, 'IsSingleUser') = 0

return (0)

end

end

select @alt_optvalue = (case @fulloptname

when 'default to local cursor' then (case @alt_optvalue when 'ON' then 'LOCAL' else 'GLOBAL' end)

when 'offline' then ''

when 'read only' then ''

when 'dbo use only' then ''

when 'single user' then ''

else  @alt_optvalue

end)

if lower(@fulloptname) = 'select into/bulkcopy'

begin

if @alt_optvalue = 'ON'

begin

if databasepropertyex(@dbname, 'IsTrunclog') = 1

select @alt_optvalue = 'RECMODEL_70BACKCOMP'

else

select @alt_optvalue = 'BULK_LOGGED'

end

else

begin

if databasepropertyex(@dbname, 'IsTrunclog') = 1

select @alt_optvalue = 'SIMPLE'

else

select @alt_optvalue = 'FULL'

end

end

if lower(@fulloptname) = 'trunc. log on chkpt.'

begin

if @alt_optvalue = 'ON'

begin

if databasepropertyex(@dbname, 'IsBulkCopy') = 1

select @alt_optvalue = 'RECMODEL_70BACKCOMP'

else

select @alt_optvalue = 'SIMPLE'

end

else

begin

if databasepropertyex(@dbname, 'IsBulkCopy') = 1

select @alt_optvalue = 'BULK_LOGGED'

else

select @alt_optvalue = 'FULL'

end

end

-- construct the ALTER DATABASE command string

select @exec_stmt = 'ALTER DATABASE ' + quotename(@dbname) + ' SET ' + @alt_optname + ' ' + @alt_optvalue + ' WITH NO_WAIT'

EXEC (@exec_stmt)

if @@error <> 0

begin

raiserror(15627,-1,-1)

return (1)

end

return (0) -- sp_dboption&
 
 





quinta-feira, 24 de maio de 2012

Tutorial - Alterando a partição da Base de Dados do Mysql para outra pasta/partição.

Voltei após muito tempo...
E desta vez, volto com Mysql. Veja este pequeno e simples tutorial para muda a base de diretório... 
Usem como quiser o Tutorial, foi totalmente desenvolvido por mim.
Se desejar colocar em seu site e puder deixar uma citação eu agradeço.
Existem momentos que é necessária trocar a base do mysql de diretório, seja por motivo de segurança, seja por motivo de falta de espaço e até mesmo para ganho de performance (Quando a base está numa partição separada da partição do windows por exemplo, existe ganho de performance. Se você está passando por isto, e não sabe como fazer... Leia abaixo o...
 
Procedimento para alterar a partição da Base de Dados do Mysql para outra pasta/partição.

Versão de teste: Windows XP – Mysql 5.5

Atenção, as pastas podem variar dependendo da versão do mysql, porém, será facil descobrir o caminho da instalação, quando depois de logado usando o comando: show variables where value like 'C:%';  Verifique o diretório no campo 'value'
Existe uma lista de erros conhecidos com soluções no final do arquivo.

1 - Conecte na base com privilégios de administrador e execute o seguinte comando:
(Para conectar, abra o prompt do DOS e execute o comando mysql -u root -p (será solicitada a senha de administrador.

2 - Após conectado digite o comando: show databases; (Anote o nome das bases para futura verificação).

3 -Execute o próximo comando: show variables where value like 'C:%';

O resultado deverá ser como o exibido abaixo na Figura 1:



4 - Desconecte do Banco de Dados com o comando: exit;

5 - Crie um backup dos arquivos data. (copiando e colando os arquivos que estão na pasta: C:\ProgramData\MySQL\MySQL Server 5.5\Data\  )

6 - Gere também outro backup (Dump Full) No prompt de DOS digite:  mysqldump --all-databases -u root -p  > c:\caminho\backup.sql
Atenção: Será pedido a senha de root informe-a.

7 - Crie a pasta para onde os arquivos de dados serão movidos: ex.: E:\MYSQL\DATA\

8 - Pare o Banco de dados: na linha de comando digite: net stop mysql

9 - Abra o arquivo my.ini (com um editor de texto comum, como o bloco de notas por exemplo) em: (C:\Program Files (x86)\MySQL\MySQL Server 5.5\)

10 - Dentro do arquivo comente a linha abaixo usando o (#)
            datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
11 - Ficará assim:
            #datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

13 - Coloque abaixo desta linha o novo caminho dos arquivos de dados conforme abaixo na Figura1:
Obs.: use a  / para indicar o diretório.


  Figura 2

Cuidado para não alterar a linha onde fica o basedir.
14 - Salve o arquivo e feche-o.
Caso ainda não tenha criado, crie o caminho que foi identificado na linha datadir:
No nosso exemplo ficou: E:\MYSQL\DATA\
Altere conforme a sua necessidade.

15 - Copie todos os arquivos da pasta: C:\ProgramData\MySQL\MySQL Server 5.5\Data\
A pasta C:\ProgramData está oculta.

para a pasta  E:\MYSQL\DATA\

16 - Restarte o serviço com comando net start mysql

17 - Reconecte na base com privilégios de administrador e execute o seguinte comando:
(Para conectar, abra o prompt do DOS e execute o comando mysql -u root -p (será solicitada a senha de administrador)). Após conectado digite o comando:
 show variables where value like 'C:%' or value like 'E:%';
(Atenção: no comando a cima a letra E é a letra da unidade, que é a do exemplo deste tutorial, troque-a conforme a sua necessidade.)

Deverá ficar conforme mostrado na Figura 3:


Figura 3


18 - Verifique se as bases estão corretas: (Conectado ao Banco de Dados) Use o comando: show databases;
Verifique se são as mesmas bases e se estão como estavam antes.

19 - Após confirmar que está tudo correto, não se esqueça de deletar os arquivos na pasta antiga. (Poderá deletar os backups também.) Não esqueça que o seu banco de deve ter rotina de backup sempre. :D

Os diretórios que ficaram listados na consulta que estão na letra C:\  são os arquivos de instalação do Mysql. Não se preocupe com eles.

Pronto os arquivos da base já foram trocados de partição e pasta.

Estes passos são o suficiente para trocar as bases do Banco de Dados de pastas.





POSSÍVEIS ERROS:


Atenção: Caso ocorra o erro  abaixo ao tentar logar ou reiniciar o serviço do mysql:
--------------------------------------------------------

A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.
--------------------------------------------------------
Verifique o arquivo my.ini e veja se o caminho que foi alterado está correto. Caso contrário, conserte-o.



Jefferson Silva. - DBA

sexta-feira, 13 de janeiro de 2012

Desbloqueio de usuario Oracle e mudança do tempo de expiração da senha

Estou de volta galera!! Esse ano promete. Estou trabalhando firme com Oracle e outros SGBDs. Não vou deixar de lado o objetivo da principal do blog que é ajudar a galera sobre informática. Porém, a enfase tem sido Banco de Dados...
Aqui vai uma dica simples que aprendi no serviço e acredito que muitas vezes isso pode vir a ocorrer no nosso dia-a-dia.O esquecimento da senha...
Cenário:
O usuário chega para o DBA e fala: 
-Não consigo logar no sistema.Acho que meu usuário está bloqueado...
Oq fazer nessa hora??
Segue abaixo oque fazer, super simples. 
Caso, vc esteja usando a versão 11g (outras também), no final vem uma dica para verificar o tempo de inatividade do uso da senha e como altera-lá.
Quando um usuário tenta logar no Banco de dados Oracle por muitas vezes digitando a senha errada, o este usuário ficará bloqueado. Para fazer o desbloqueio do mesmo, o DBA após logar como system terá duas (02) opções: 
Na primeira ele estará alterando a senha do usuário e desbloqueando a conta.
1) - A pessoa não lembra mais senha, por exemplo use esse comando:

ALTER USER "NOME DO USUARIO" IDENTIFIED BY "NOVA SENHA" ACCOUNT UNLOCK;

Na segunda, a conta será apenas desbloqueada sem alteração da senha.

2) A pessoa lembrou a senha correta por exemplo, use esse comando:
ALTER USER "NOME DO USUARIO" ACCOUNT UNLOCK;


--- Para vc que esta usando o oracle 11g ou até inferior:

Existe na versão 11g uma regra que define que a senha ficará inativa após 180 por padrão (somente no 11g). 
Por este motivo, pode-se trocar este parametro e definir que a senha ficará ativa sem limite de tempo.

Vamos visualizar e trocar esse parametro:
Após connectar como sys:

SQL> selecet username, profile from dba_users where user_name= upper('nome_usuario');
USERNAME                       PROFILE
------------------------------ ------------------------------
USUARIO                        DEFAULT
Após, vamos ver a DBA_PROFILES e ver o limite do profile:
SQL> select resource_name, limit from dba_profiles
where resouce_name = 'PASSWORD_LIFE_TIME';
SQL> select RESOURCE_NAME, LIMIT from dba_profiles
where RESOURCE_NAME='PASSWORD_LIFE_TIME';
RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
PASSWORD_LIFE_TIME               180

Observe que o valor  LIMIT estará setado como 180 (Caso esteja, como UNLIMITED então não é necessário fazer alterações).
Vamos alterar o limite agora.
SQL> ALTER PROFILE default LIMIT password_life_time UNLIMITED;
profile alteread...
Pronto! Agora, você pode dar uma outra visualizada para garantir que a alteração está feita.
SQL> select resource_name, limit from dba_profiles
where resouce_name = 'PASSWORD_LIFE_TIME';
RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
PASSWORD_LIFE_TIME               UNLIMITED


Observe que a alteração também poderia ser feita para um outro valor, como por exemplo 90 dias (3 meses). Verifique com atenção como deve ficar esse valor.
O ideal também seria a criação de outros profiles para cada um ter um valor diferente, dependo das regras de segurança da empresa é claro... Mas, isto fica para outro post. :D

Mas, se tiverem pressa , segue aqui um bom link para estudo:
http://www.dartanghan.com.br/oracle-plsql/oracle-date-functions/

Vlw pessoal, estou voltando em 2012 com o mesmo problema de tempo de 2011, mas, assim que possível, estarei postando referente ao nosso objetivo maior que é a certificação ok?

quinta-feira, 25 de agosto de 2011

SELECT * , ALIAS


Voltei, agora é pra começar bem básico, mas, já vou avisando que nos próximos posts vou acelerar...

Para os nossos estudos, levarei em consideração que você já tem acesso a um Banco na versão 11G preferencialmente. Usaremos o usuário (schema) HR como já mencionado.
Select é o comando mais importante de todos os comandos da linguagem SQL. Sua funcionalidade pode ser extendida ao comandos update, insert e delete (veremos mais pra frente).

Sua sintaxe básica é select * from tabela.

Para ficar mais explicativo, veja o exemplo: select * from hr.employees;

* seleciona todos os campos da tabela.
from: Obrigatório para informar de qual lugar serão pegos os dados.
hr: É o nome do esquema (ou usuário, como queira chamar). Usando o hr. evita-se de acessar uma tabela com o mesmo nome só que de outro usuário e direciona à tabela correta. É uma boa prática usar o nome do esquema.
Employees: É o nome da tabela.

Visualizaremos agora somente dois campos da tabela:

select e.first_name, e.last_name
from hr.employees e;

Novos conceitos foram utilizados. Criamos um apelido (alias) para a tabela employees. Usamos a letra ‘e’ após o nome. Usamos normalmente nomes curtos ou letra como apelido. Isto facilita na hora de referenciar os campos. Além de novamente, ser uma boa prática.

O nome do primeiro campo é first_name, usamos o ‘e.’ na frente para referenciar a tabela correta. Acostume-se com essa prática, pois, quando estivermos programando com várias tabelas isso será muito útil.

select e.first_name nome, e.last_name as "Sobre nome"
from hr.employees e;
 

Agora, incorporamos os alias (apelidos) nas colunas (campo) de duas formas diferentes. Na primeira, usamos nome (letra minúscula) porém, aparece em letra maiúscula no resultado (não é aceito espaço em branco). Dessa forma, não faz diferença escreverem  maiúsculo ou minúscula, o resultado será o mesmo. Na segunda forma, usamos o ‘as’ que o nome da coluna entre aspas dupla. Dessa forma, o que for escrito será mostrado da forma como é escrito, aceitando inclusive espaços em branco.

+ Tome cuidado na prova, é normal, aparecem questões  na qual, a primeira forma é utilizada.

SELECT cust_last_name Name, cust_credit_limit
"New Credit Limit" FROM customers;

Estarei no próximo post colocando mais comandos. Acelerando e incrementando mais comandos.