Comandos Úteis Oracle 18c

Login como “SYSDBA”

# sqlplus "sys as sysdba"

Habilitando o acesso externo ao Enterprise Manager:

SQL> exec dbms_xdb_config.SetListenerLocalAccess(false);

Alterar o container da sessão:

SQL> ALTER SESSION SET CONTAINER=XEPDB1;

Alterando o container da sessão root:

SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;

Alterando o SCHEMA da sessão:

SQL> ALTER SESSION SET CURRENT_SCHEMA = test;

Criar um tablespace com 100MB expandindo automaticamente 100MB:

SQL> CREATE TABLESPACE teste DATAFILE '/opt/oracle/oradata/XE/XEPDB1/teste.dbf' SIZE 100M AUTOEXTEND ON NEXT 100M;

Excluindo um tablespace e os arquivos de dados:

SQL> DROP TABLESPACE teste INCLUDING CONTENTS AND DATAFILES;

Criando um usuário no container atual com quota ilimitada no tablespace especificado:

SQL> CREATE USER teste IDENTIFIED BY 123 DEFAULT TABLESPACE teste QUOTA UNLIMITED ON teste CONTAINER=CURRENT;

Definindo uma quota ilimitada para um usuário em um tablespace:

SQL> ALTER USER teste QUOTA UNLIMITED ON teste;

Concedendo permissões padrões a um usuário:

SQL> GRANT CREATE SESSION,CREATE TABLE,CREATE SEQUENCE,CREATE ANY DIRECTORY TO teste;

Concendo permissão para executar as funções do pacote CTX_DDL:

SQL> GRANT EXECUTE ON CTX_DDL TO teste;

Excluindo um usuário:

SQL> DROP USER teste;

Habilitando o suporte a índices FULLTEXT:

BEGIN
    CTX_DDL.CREATE_PREFERENCE('MIXED_CASE_LEXER_PREF','BASIC_LEXER');
    CTX_DDL.SET_ATTRIBUTE('MIXED_CASE_LEXER_PREF', 'MIXED_CASE', 'FALSE');
    CTX_DDL.SET_ATTRIBUTE('MIXED_CASE_LEXER_PREF', 'BASE_LETTER','TRUE'); 
END;

Criando um índice FULLTEXT:

CREATE INDEX INDICETABELACAMPO ON TABELA(CAMPO) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER MIXED_CASE_LEXER_PREF SYNC(ON COMMIT)');

Excluindo um índice

DROP INDEX INDICEDOCUMENTOASSUNTO;

Alterando os parâmetros “NLS_SORT” and “NLS_SORT” para ajustar a busca e ordenação como case insensitive a nível de CDB:

SQL> ALTER SYSTEM SET NLS_SORT='BINARY_AI' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET NLS_COMP='LINGUISTIC' SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

Alterando os parâmetros “NLS_SORT” and “NLS_COMP” para ajustar a busca e ordenação como case insensitive a nível de PDB:

SQL> ALTER SESSION SET CONTAINER = XEPDB1;
SQL> ALTER SYSTEM SET NLS_SORT='BINARY_AI' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET NLS_COMP='LINGUISTIC' SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

Retornando os valores padrões de propriedades a nível de CDB ou PDB:

SQL> ALTER SYSTEM RESET NLS_SORT SCOPE=SPFILE;
SQL> ALTER SYSTEM RESET NLS_COMP SCOPE=SPFILE;

SQL> ALTER SESSION SET CONTAINER = XEPDB1;

SQL> ALTER SYSTEM RESET NLS_SORT SCOPE=SPFILE;
SQL> ALTER SYSTEM RESET NLS_COMP SCOPE=SPFILE;

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

Criando um Trigger de Logon para ajustar a busca e ordenação case insensitive a nível de sessão:

CREATE OR REPLACE TRIGGER CASE_INSENSITIVE_ONLOGON AFTER LOGON ON SCHEMA BEGIN
    EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_COMP=LINGUISTIC';
    EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_SORT=BINARY_AI';
END;

Exibindo informações de um parâmetro:

SQL> SHOW PARAMETER NLS_COMP;
SQL> SHOW PARAMETER NLS_SORT;

Exibindo informações de um parâmetro a nível de sessão:

SQL> SELECT * FROM nls_session_parameters WHERE parameter IN ('NLS_COMP', 'NLS_SORT');

Exibindo informações de um parâmetro a nível de CDB:

SQL> SELECT * FROM nls_database_parameters WHERE parameter IN ('NLS_COMP', 'NLS_SORT');

Exibindo informações de um parâmetro a nível de instância:

SQL> SELECT * FROM nls_instance_parameters WHERE parameter IN ('NLS_COMP', 'NLS_SORT');

Referências

https://oracle-base.com/articles/12c/column-level-collation-and-case-insensitive-database-12cr2

Instalando o Oracle XE 18c no Centos 7 1810

Baixando e instalando os pacotes de pré-instalação:

# curl -o oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm
# yum -y localinstall oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm

Acesse a página abaixo e baixe o pacote “oracle-database-xe-18c-1.0-1.x86_64.rpm” (é necessário possuir cadastro), copiando-o para o diretório “/root” da máquina:

https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html

Instalando o Oracle 18c:

# yum -y localinstall oracle-database-xe-18c-1.0-1.x86_64.rpm

Para criar uma instância do Oracle XE, basta executar o comando abaixo e digitar a senha (o comando abaixo cria uma instância de nome “XE” com suporte a CDB e um PDB de nome “XEPDB1”):

# /etc/init.d/oracle-xe-18c configure

Crie um arquivo para definir as variáveis de ambiente no login (estará disponível no próximo login):

# tee /etc/profile.d/set_oraenv.sh <<-'EOF'
export ORACLE_SID=XE
export ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
export ORACLE_BASE=/opt/oracle
export PATH=$PATH:/opt/oracle/product/18c/dbhomeXE/bin
EOF

Iniciando o serviço e colocando para inicialização automática:

# systemctl daemon-reload
# systemctl start oracle-xe-18c
# systemctl enable oracle-xe-18c

Referências

https://docs.oracle.com/en/database/oracle/oracle-database/18/xeinl/procedure-installing-oracle-database-xe.html
https://mikesmithers.wordpress.com/2019/01/03/installing-and-configuring-oracle-18cxe-on-centos/

Instalando o Mono 6.0 no CentOS 7 1810

Adicionando os repositórios do Mono:

# rpmkeys --import "http://pool.sks-keyservers.net/pks/lookup?op=get&search=0x3fa7e0328081bff6a14da29aa6a19b38d3d831ef"
# su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo'

Para compilar código é necessário instalar o pacote “mono-devel”:

# yum -y install mono-devel

Para instalar tudo, basta instalar o “mono-complete” (isso ajuda a evitar muitos casos de “Assembly not found”:

# yum -y install mono-complete

O pacote “referenceassemblies-pcl” deve ser instalado para compilação com suporte a PCL (isso resolve muitos casos de “Framework not installed: .NETPortable” durante a compilação).

# yum -y install referenceassemblies-pcl

O pacote “xsp” deve ser instalado para rodar aplicações ASP.NET sem um servidor WEB como o Apache ou Nginx:

# yum -y install xsp

É interessante também instalar o “nuget” para baixar os pacotes necessários antes de executar “msbuild” em uma solução “.sln”:

# yum -y install nuget

Referências

https://www.mono-project.com/download/stable/#download-lin-centos

Configurando o Samba 4.10.6 Como AD DC no CentOS 7 1810

Antes de iniciar a configuração, deve-se compilar e instalar o Samba 4.10.6:

Compilando e Instalando o Samba 4.10.6 Com Suporte a ADS no CentOS 7 1810

Obs 1.: é aconselhável definir um IP fixo, bem como colocar o nome da máquina com domínio (ex.: dc-1.arabasso.local).

Renomear ou remover o arquivo “krb5.conf” padrão:

# mv /etc/krb5.conf /etc/krb5.conf.org

Promovendo o servidor como AD DC:

# samba-tool domain provision

Obs 2.: Alterar o DNS da máquina para 127.0.0.1.

Finalizando a configuração, iniciando o serviço, e habilitando para inicializar no boot:

# cp /etc/samba/krb5.conf /etc/
# systemctl start samba
# systemctl enable samba

Verificando se o domínio foi criado com êxito:

# samba-tool domain level show

Referências

https://www.server-world.info/en/note?os=CentOS_7&p=samba&f=4

Compilando e Instalando o Samba 4.10.6 Com Suporte a ADS no CentOS 7 1810

Baixar e executar o script “bootstrap.sh” para auxiliar na instalação no CentOS 7 1810:

# curl -O https://raw.githubusercontent.com/samba-team/samba/master/bootstrap/generated-dists/centos7/bootstrap.sh
# sh bootstrap.sh

Baixar e compilar o Samba 4.10.6:

# curl -O https://download.samba.org/pub/samba/stable/samba-4.10.6.tar.gz
# tar zxvf samba-4.10.6.tar.gz
# cd samba-4.10.6
# ./configure --prefix=/usr --localstatedir=/var --with-configdir=/etc/samba --libdir=/usr/lib64 --with-modulesdir=/usr/lib64/samba --with-pammodulesdir=/lib64/security --with-lockdir=/var/lib/samba --with-logfilebase=/var/log/samba --with-piddir=/run/samba --with-privatedir=/etc/samba --enable-cups --with-acl-support --with-ads --with-automount --enable-fhs --with-pam --with-quotas --with-shared-modules=idmap_rid,idmap_ad,idmap_hash,idmap_adex --with-syslog --with-utmp --with-dnsupdate --systemd-install-services
# make
# make install

Criar o arquivo “/etc/tmpfiles.d/samba.conf”

# tee /etc/tmpfiles.d/samba.conf <<-'EOF'
d /var/run/samba 0755 root root -
EOF

Referências

https://www.server-world.info/en/note?os=CentOS_7&p=samba&f=4

MSBuild Tools 2017 com CMake 3.11.2 e Visual Studio Code 1.24 no Windows 10 1709

Baixar e instalar o MSBuild Tools 2017

https://www.visualstudio.com/pt-br/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15#

Baixar e instalar o CMake 3.11.2

x86_64 – https://cmake.org/files/v3.11/cmake-3.11.3-win64-x64.msi
x86 – https://cmake.org/files/v3.11/cmake-3.11.3-win32-x86.msi

Instalar o Visual Studio Code 1.24

x84_64 – https://go.microsoft.com/fwlink/?Linkid=852157
x86 – https://go.microsoft.com/fwlink/?LinkID=623230

Instalar as extensões do Visual Studio Code

  • C/C++
    • vscode:extension/ms-vscode.cpptools
  • CMake
    • vscode:extension/twxs.cmake
  • CMake Tools
    • vscode:extension/vector-of-bool.cmake-tools

Criar um projeto com os arquivos:

CMakeLists.txt

cmake_minimum_required (VERSION 3.0)
project (projeto)
set(SOURCE main.cpp)
add_executable(${PROJECT_NAME} ${SOURCE})

main.cpp

#include <cstdio>
#include <cstdlib>

int main(){
    printf("Olah mundo!\n");

    return 0;
}

.vscode\launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Passe o mouse para ver as descrições dos atributos existentes.
    // Para obter mais informações, visite: https://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",
    "configurations": [
        {
            "name": "(Windows) Launch",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${command:cmake.launchTargetPath}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true
        }
    ]
}

Referências

https://vector-of-bool.github.io/docs/vscode-cmake-tools/debugging.html#debugging-launch-json

Criando um projeto .NET Core 2.0 com XUnit e Shoudly usando o dotnet-cli

AppTestVsCode

Criando a solução

$> mkdir AppTest
$> cd AppTest
$> dotnet new sln

Criando o projeto de domínio com biblioteca de classes e adicionando na solução

$> dotnet new library -n AppTest
$> dotnet sln add AppTest\AppTest.csproj
$> dotnet restore AppTest\AppTest.csproj

Criando o projeto de testes, acrescentando a referência para a biblioteca de domínio e ao Shoudly, e adicionando na solução

$> dotnet new xunit -n AppTest.Test
$> dotnet add AppTest.Test\AppTest.Test.csproj reference AppTest\AppTest.csproj
$> dotnet add AppTest\AppTest.csproj package Shouldly
$> dotnet sln add AppTest.Test\AppTest.Test.csproj
$> dotnet restore AppTest.Test\AppTest.Test.csproj

Criando o projeto da interface de usuário como ASP.NET Core MVC e adicionando na solução

$> dotnet new mvc -n AppTest.Web
$> dotnet sln add AppTest.Web\AppTest.Web.csproj
$> dotnet restore AppTest.Web\AppTest.Web.csproj

Criando o projeto de testes, acrescentando a referência para a interface de usuário e ao Shoudly, e adicionando na solução

$> dotnet new xunit -n AppTest.Web.Test
$> dotnet add AppTest.Web.Test\AppTest.Web.Test.csproj reference AppTest.Web\AppTest.Web.csproj
$> dotnet add AppTest.Web\AppTest.Web.csproj package Shouldly
$> dotnet sln add AppTest.Web.Test\AppTest.Web.Test.csproj
$> dotnet restore AppTest.Web.Test\AppTest.Web.Test.csproj

Construindo a solução

$> dotnet build

Para corrigir o problema ao executar o “dotnet test” em todos os projetos, criar os arquivos na raiz da solução

after.AppTest.sln.targets

<Project>
 <Target Name="VSTest">
   <MSBuild Projects="@(ProjectReference)" Targets="VSTestIfTestProject" Properties="%(ProjectReference.AdditionalProperties)" />
 </Target>
</Project>

Directory.Build.targets

<Project>
 <Target Name="VSTestIfTestProject">
   <CallTarget Targets="VSTest" Condition="'$(IsTestProject)' == 'true'" />
 </Target>
</Project>

Executando os testes e construindo a solução

$> dotnet test
$> dotnet build

Referências

https://stackoverflow.com/questions/42730877/net-core-when-to-use-dotnet-new-sln
https://gist.github.com/dasMulli/6fb5d1f507b886aeebaf27069f47f895