Após realizar a alteração no arquivo postgresql.conf ou por linha de comando para melhor performance, podemos prosseguir com a criação do banco de dados.
Neste exemplo, foram criados os usuários ‘tpprd’, ‘tphml’ e ‘tpdev’ com a senha igual ao nome de usuário no Cluster PostgreSQL.
Por questões de segurança, não adote esta prática em seu ambiente de produção. |
Você pode escolher outro nome e senha para a criação, o padrão utilizado neste documento segue esta definição e indicações de nomenclatura:
T (TOTVS) P (Protheus) PRD (Produção) | TPPRD |
T (TOTVS) P (Protheus) HML (Homologação) | TPHML |
T (TOTVS) P (Protheus) DEV (Desenvolvimento) | TPDEV |
Acesse o Linux e entre com o usuário criado automaticamente na instalação do PostgreSQL:
su - postgres |
Certifique-se que este usuário tem acesso a pasta para criação dos datafiles do banco de dados.
Confira os grants mínimos para o funcionamento do DBAccess. |
Diretamente no Sistema Operacional com a ferramenta psql:
psql -c "CREATE USER tpprd WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tpprd'" psql -c "CREATE USER tphml WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tphml'" psql -c "CREATE USER tpdev WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tpdev'" |
Ou diretamente pelo banco de dados, conectado ao psql ou ao pgAdmin:
CREATE USER tpprd WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tpprd' CREATE USER tphml WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tphml' CREATE USER tpdev WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tpdev' |
Pode-se verificar a criação do usuário no PgAdmin no “Login/Group Roles”
Ou com a seguinte query:
SELECT usename FROM pg_user; |
Após a criação do usuário, crie os tablespaces e dê permissão ao usuário criado.
O Path utilizado (/pgdata) foi criado no sistema operacional e é exclusivo para os datafiles Protheus. Você pode especificar um path diferente, caso haja. |
chown -R postgres:postgres /pgdata/
su - postgres cd /pgdata mkdir -p tpprd/data mkdir -p tpprd/index mkdir -p tphml/data mkdir -p tphml/index mkdir -p tpdev/data mkdir -p tpdev/index |
Diretamente no Sistema Operacional com a ferramenta psql:
su - postgres |
Ambiente Produção
psql -c "CREATE TABLESPACE tpprd_data OWNER tpprd LOCATION '/pgdata/tpprd/data'"; psql -c "CREATE TABLESPACE tpprd_index OWNER tpprd LOCATION '/pgdata/tpprd/index'"; |
Ambiente Homologação
psql -c "CREATE TABLESPACE tphml_data OWNER tphml LOCATION '/pgdata/tphml/data'"; psql -c "CREATE TABLESPACE tphml_index OWNER tphml LOCATION '/pgdata/tphml/index'"; |
Ambiente Desenvolvimento
psql -c "CREATE TABLESPACE tpdev_data OWNER tpdev LOCATION '/pgdata/tpdev/data'"; psql -c "CREATE TABLESPACE tpdev_index OWNER tpdev LOCATION '/pgdata/tpdev/index'"; |
Ou com a ferramenta pgAdmin:
CREATE TABLESPACE tpprd_data OWNER tpprd LOCATION '/pgdata/tpprd/data'; CREATE TABLESPACE tpprd_index OWNER tpprd LOCATION '/pgdata/tpprd/index'; CREATE TABLESPACE tphml_data OWNER tphml LOCATION '/pgdata/tphml/data'; CREATE TABLESPACE tphml_index OWNER tphml LOCATION '/pgdata/tphml/index'; CREATE TABLESPACE tpdev_data OWNER tpdev LOCATION '/pgdata/tpdev/data'; CREATE TABLESPACE tpdev_index OWNER tpdev LOCATION '/pgdata/tpdev/index'; |
Para ambientes que utilizam serviços da AWS (RDS) não há a necessidade de criar tablespace. |
No pgAdmin podemos visualizar os tablespaces criados:
Ou com a query:
SELECT spcname FROM pg_tablespace; |
Alguns módulos utilizam funções de conversão diretamente no banco de dados, como o SISJURI. Para atender ao comportamento esperado e correto das funções de conversão de caracteres do banco de dados, como LOWER ou UPPER, o LC_CTYPE utilizado deve ser 'pt_BR.CP1252'. Note que os parâmetros de Encoding, Collation e Character Type de um banco Postgres não são alteráveis para um banco já criado. |
Diretamente no Sistema Operacional com a ferramenta psql:
su - postgres psql -c "CREATE DATABASE tpprd with OWNER = tpprd TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tpprd_data CONNECTION LIMIT = -1;"; psql -c "CREATE DATABASE tphml with OWNER = tphml TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tphml_data CONNECTION LIMIT = -1;"; psql -c "CREATE DATABASE tpdev with OWNER = tpdev TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tpdev_data CONNECTION LIMIT = -1;"; |
Ou com a ferramenta pgAdmin:
CREATE DATABASE tpprd with OWNER = tpprd TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tpprd_data CONNECTION LIMIT = -1; CREATE DATABASE tphml with OWNER = tphml TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tphml_data CONNECTION LIMIT = -1; CREATE DATABASE tpdev with OWNER = tpdev TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tpdev_data CONNECTION LIMIT = -1; |
No pgAdmin, visualize no item Databases, os bancos de dados que foram criados:
ENCONDIG, LC_COLLATE e LC_CTYPE Homologado. ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' OU LC_CTYPE = 'pt_BR.CP1252' |
Ou com a seguinte query:
SELECT datname FROM pg_database; |
Configure o ambiente Produção, Homologação e Desenvolvimento em servidores diferentes para evitar a concorrência de serviços computacionais. |