USE master
GO
IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
DROP PROCEDURE sp_hexadecimal
GO
CREATE PROCEDURE sp_hexadecimal
@binvalue varbinary(256),
@hexvalue varchar (514) OUTPUT
AS
DECLARE @charvalue varchar (514)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i <= @length)
BEGIN
DECLARE @tempint int
DECLARE @firstint int
DECLARE @secondint int
SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
SELECT @firstint = FLOOR(@tempint/16)
SELECT @secondint = @tempint - (@firstint*16)
SELECT @charvalue = @charvalue +
SUBSTRING(@hexstring, @firstint+1, 1) +
SUBSTRING(@hexstring, @secondint+1, 1)
SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
GO
IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
DROP PROCEDURE sp_help_revlogin
GO
CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
DECLARE @name sysname
DECLARE @type varchar (1)
DECLARE @hasaccess int
DECLARE @denylogin int
DECLARE @is_disabled int
DECLARE @PWD_varbinary varbinary (256)
DECLARE @PWD_string varchar (514)
DECLARE @SID_varbinary varbinary (85)
DECLARE @SID_string varchar (514)
DECLARE @tmpstr varchar (1024)
DECLARE @is_policy_checked varchar (3)
DECLARE @is_expiration_checked varchar (3)
DECLARE @defaultdb sysname
IF (@login_name IS NULL)
DECLARE login_curs CURSOR FOR
SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
sys.server_principals p LEFT JOIN sys.syslogins l
ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'
ELSE
DECLARE login_curs CURSOR FOR
SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
sys.server_principals p LEFT JOIN sys.syslogins l
ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_name
OPEN login_curs
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
IF (@@fetch_status = -1)
BEGIN
PRINT 'No login(s) found.'
CLOSE login_curs
DEALLOCATE login_curs
RETURN -1
END
SET @tmpstr = '/* sp_help_revlogin script '
PRINT @tmpstr
SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
PRINT @tmpstr
PRINT ''
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
PRINT ''
SET @tmpstr = '-- Login: ' + @name
PRINT @tmpstr
IF (@type IN ( 'G', 'U'))
BEGIN -- NT authenticated account/group
SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'
END
ELSE BEGIN -- SQL Server authentication
-- obtain password and sid
SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )
EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
-- obtain password policy state
SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'
IF ( @is_policy_checked IS NOT NULL )
BEGIN
SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
END
IF ( @is_expiration_checked IS NOT NULL )
BEGIN
SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked
END
END
IF (@denylogin = 1)
BEGIN -- login is denied access
SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
END
ELSE IF (@hasaccess = 0)
BEGIN -- login exists but does not have access
SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
END
IF (@is_disabled = 1)
BEGIN -- login is disabled
SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
END
PRINT @tmpstr
END
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
END
CLOSE login_curs
DEALLOCATE login_curs
RETURN 0
GO
--- Execute a proc
para gerar os logins
EXEC sp_help_revlogin
Archive for the ‘Dicas’ Category
Olá Pessoal,
Gostaria de compartilhar esse procedimento feito pelo mestre Portilho da NERV Informática, achei muito interessante.
Este é o procedimento para remover o uso de todas as Features de Enterprise Edition de um banco de dados, para deixá-lo compatível com a Standard Edition, Standard Edition One, ou Standard Edition Two.
– Remover índices BITMAP.
– Remover DEGREE de objetos.
– Retirar compressão de objetos.
– Remover compressão de configurações do RMAN.
– Remover compressão de procedimentos de backup.
– Remover SQL Profiles.
– Remover SQL Baselines.
– Remover Partições.
– Executar DUMP apenas do(s) OWNER(s) da aplicação, e não FULL.
– Instalar o Oracle da Edition correta (SE1 / SE / SE2).
– Nas SE e SE1 (= 12.1.0.2), o instalador é separado.
– Remover opções após a instalação (via chopt).
– Criar um novo banco de dados, via Template “Custom Database” do DBCA. Ainda no DBCA, alterar estes parâmetros:
AUDIT_TRAIL = NONE
CONTROL_MANAGEMENT_PACK_ACCESS = NONE
DEFERRED_SEGMENT_CREATION = FALSE
JOB_QUEUE_PROCESSES = 0
OPTIMIZER_USE_SQL_PLAN_BASELINES = FALSE
OPTIMIZER_ADAPTIVE_FEATURES = FALSE — Apenas 12c.
PARALLEL_MAX_SERVERS = 0
RESOURCE_LIMIT = FALSE
– Imediatamente após a criação do banco, executar:
EXEC DBMS_AUTO_TASK_ADMIN.DISABLE (CLIENT_NAME => ‘auto optimizer stats collection’, OPERATION => NULL, WINDOW_NAME => NULL);
EXEC DBMS_AUTO_TASK_ADMIN.DISABLE (CLIENT_NAME => ‘sql tuning advisor’, OPERATION => NULL, WINDOW_NAME => NULL);
EXEC DBMS_AUTO_TASK_ADMIN.DISABLE (CLIENT_NAME => ‘auto space advisor’, OPERATION => NULL, WINDOW_NAME => NULL);
— Em 12c, executar as alterações acima também em PDBs.
SELECT NAME, DETECTED_USAGES, CURRENTLY_USED, FIRST_USAGE_DATE, LAST_USAGE_DATE FROM DBA_FEATURE_USAGE_STATISTICS ORDER BY LAST_USAGE_DATE DESC;
— Executar novamente a verificação acima 8 dias depois.
– Adequar o parâmetro JOB_QUEUE_PROCESSES de acordo com o ambiente.
– Importar o DUMP.
Fonte: http://nervinformatica.com.br/blog/index.php/2016/10/07/migracao-de-ee-para-se-se1-se2/
[Oracle] Bundle Patch 12.1.0.2.10 – Windows 64bits – Single Tenant (non-CDB/PDB)
Posted: 26/10/2016 in DicasOlá, pessoal!
Abaixo o procedimento para atualizar bundle patch no Oracle 12c – Single Tenant (non-CDB/PDB).
Procedimento retirado do “Read Me” no suporte da oracle, segue o link para fazer o download “metalink.oracle.com”
Download do Patch 21821214: WINDOWS DB BUNDLE PATCH 12.1.0.2.10
Pré requisitos:
OPatch Utility
How to install the utility: --------------------------- To install this patch, Please extract the file "zipped file" using unzip or winzip, depending upon the platform. You should extract the zip file directly under the ORACLE_HOME. Please follow the following steps for extracting the zip file of OPatch. (1) Please take a backup of ORACLE_HOME/OPatch into a dedicated backup location. (2) Please make sure no directory ORACLE_HOME/OPatch exist. (3) Please unzip the OPatch downloaded zip into ORACLE_HOME directory. To check the version of the opatch utility installed in the above step, go to the OPatch directory and run "opatch version".
– Próximo passo aplicar o patch 12.1.0.2.10 (Recomendo fazer o backup antes de executar o procedimento)
1. Shut down all instances and listeners associated with the Oracle home that you are updating
sqlplus / as sysdba
shutdown immediate
2. Explicitly stop the Distributed Transaction Coordinator service (which is not an Oracle service) if it is running.
net stop msdtc
3. Set the ORACLE_HOME environment variable pointing to your Database Home, go to the directory where the patch is located and then run the OPatch utility by entering the following commands:
set ORACLE_HOME=c:\oracle\orcl\1210
set PATH=%ORACLE_HOME%\OPatch;%PATH%
set PATH=%ORACLE_HOME%\perl\bin;%PATH%
cd C:\install_ora
unzip p21821214_121020_MSWIN-x86-64.zip
cd C:\install_ora\21821214
%ORACLE_HOME%\OPatch\opatch apply
4. Steps to Run the datapatch Utility for Single
sqlplus / as sysdba
startup
5. Check Patch
select patch_id, patch_uid, version, status, bundle_series, description from dba_registry_sqlpatch;
SELECT comp_id, status from dba_registry;
%ORACLE_HOME%\OPatch\opatch lsinventory
É isso ai pessoal, espero ter ajudado!
Fonte: https://support.oracle.com
O DBA hoje em dia não precisa mais se preocupar com o overhead causado pela extensão automática dos datafiles. Soluções como gerenciamento local das tablespaces e infraestrutura de hardware mais competentes absorvem quase que totalmente o impacto. Sendo assim, habilitar esse recurso ajuda a deixar a administração do banco mais fácil. Ex.: alter database datafile '+DATA/dr/datafile/users.dbf' autoextend on next 256M; Nesse exemplo estou habilitado a extensão automática para o datafile (autoextend on) e estou informando de quantos em quantos megas eu quero que isso aconteça (next 256M). Para habilitar para todos os datafiles: spool runts.sql select 'alter database datafile '|| file_name|| ' '|| ' autoextend on;' from dba_data_files; @runts
Fonte: http://www.dba-oracle.com/t_alter_autoextend_on.htm
##### --- Deixe seu comentário ou sugestão e até a próxima. --- #####
Olá, iremos fazer um simples backup e restore do banco de dados TESTE. # --------------------------------- # - Fazendo backup full banco TESTE # --------------------------------- BACKUP DATABASE TESTE TO DISK='M:\SQLSERVER\Backup\TESTE.bak' GO # --------------------------------- # - Deletando banco TESTE # --------------------------------- DROP DATABASE TESTE GO # --------------------------------- # - Restore backup full banco TESTE # --------------------------------- RESTORE DATABASE TESTE FROM DISK='M:\SQLSERVER\Backup\TESTE.bak' GO
##### --- Deixe seu comentário ou sugestão e até a próxima. --- #####
Olá, iremos ativar o modo archive no oracle, muito fácil e importante. # --------------------------- # Desligando o banco de dados. # --------------------------- shutdown immediate; # ------------------------------------- # Iniciando o banco de dados em modo mount. # ------------------------------------- startup mount; # --------------------------- # Ativando o archive mode. # --------------------------- alter database archivelog; # --------------------------- # Abrindo o banco de dados. # --------------------------- alter database open; # --------------------------- # Verificando o archivemode. # --------------------------- archive log list; Modo log de banco de dados Modo de Arquivamento Arquivamento automático Ativado
##### --- Deixe seu comentário ou sugestão e até a próxima. --- #####
Olá, iremos aprender como mover os datafiles de um Standby, para outro diretório no mesmo servidor linux. # ------------------------------------------- # Verifique o $ORACLE_HOME do banco standby. # ------------------------------------------- cat /etc/oratab # ---------------------------------- # Setar as variáveis do banco standby. # ---------------------------------- export ORACLE_HOME=/u01/app/oracle/db_home1 export ORACLE_SID=orcl # -------------------- # Conectar no sqlplus # -------------------- sqlplus /nolog conn / as sysdba # -------------------------- # Listar todos os datafiles # -------------------------- col FILE# format 999; col NAME format A64; select file#, name from v$datafile; # -------------------------- # Baixar o banco standby. # -------------------------- shutdown immediate; # ------------------------------------------------------------------ # Copiar os datafiles necessários da origem para o diretório destino. # ------------------------------------------------------------------ cp -rv /oracle/oradata/orcl/system.dbf /oradata/orcl/ # -------------------- # Conectar no sqlplus # -------------------- sqlplus /nolog conn / as sysdba # -------------------------- # Montar o banco standby. # -------------------------- startup mount; # ------------------------------------------------------- # Alterar gerenciamento de arquivos do standby para MANUAL. # ------------------------------------------------------- show parameter standby; alter system set standby_file_management=MANUAL scope=both; # --------------------------------------- # Realizar o rename dos datafiles copiados. # --------------------------------------- alter database rename file '/oracle/oradata/orcl/system.dbf' to '/oradata/orcl/system.dbf'; # ------------------------------------------------------- # Voltar gerenciamento de arquivos do standby valor antigo. # ------------------------------------------------------- alter system set standby_file_management=AUTO scope=both; # --------------------------------------- # Montar novamente a base em modo standby. # --------------------------------------- shutdown immdiate; startup nomount; alter database mount standby database;
##### --- Deixe seu comentário ou sugestão e até a próxima. --- #####
Olá, neste artigo iremos mostrar como criar uma nova tablespace undo e deletar a tablespace undo antiga.
# ------------------
# Conectar sqlplus
# ------------------
sqlplus /nolog
conn sys/suasenha as sysdba
# ------------------------------------------------- # Comando para criar tablespace UNDO no +ASM # ------------------------------------------------- CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '+DATA' SIZE 50M AUTOEXTEND ON NEXT 500M;
# -------------------------------------------------------------------- # Setar tbs undotbs2 como default # -------------------------------------------------------------------- alter system set undo_tablespace=UNDOTBS2 scope=both;
# -------------------------------------------------------------------- # Verificar se existem transações na tbs antiga # -------------------------------------------------------------------- column username format a6 SELECT a.name,b.status , d.username , d.sid , d.serial# FROM v$rollname a,v$rollstat b, v$transaction c , v$session d WHERE a.usn = b.usn AND a.usn = c.xidusn AND c.ses_addr = d.saddr AND a.name IN ( SELECT segment_name FROM dba_segments WHERE tablespace_name = 'UNDOTBS1' );
# -------------------------------------------------------------------- # Comando para finalizar as sessões caso necessário # -------------------------------------------------------------------- alter system kill session 'sid,serial';
# -------------------------------------------------------------------- # Deletando a tbs UNDOTBS1 # -------------------------------------------------------------------- DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;
##### --- Deixe seu comentário ou sugestão e até a próxima. --- #####