AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-18912

alok's questions

Martin Hope
alok
Asked: 2023-09-12 11:36:10 +0800 CST

Ativação RLS do postgresql: habilite se não estiver habilitado, verifique - vale a pena?

  • 5

Em nosso aplicativo, verificamos na inicialização,

se existir uma tabela postgresql, caso contrário, nós a criamos e, em seguida, ativamos a segurança em nível de linha

Se existir, ainda não temos certeza se a segurança em nível de linha é verdadeira ou não

Portanto, sempre precisamos verificar se a segurança em nível de linha está habilitada e, caso contrário, precisamos habilitá-la.

Agora, existem duas maneiras de fazer isso (poderia haver mais, mas estas são as duas maneiras que poderíamos pensar):

  1. ALTER TABLE <tname> enable row level security;

Ou podemos fazer

  1. SELECT rowsecurity FROM pg_tables WHERE tablename = <tname>e somente se retornar false, execute ALTER TABLEfrom (1).

A questão que temos é: a opção (2) tem melhor desempenho do que a opção (1) ou está apenas complicando as coisas sem melhorar o desempenho para startups subsequentes?

Essa verificação acontecerá na inicialização de cada aplicativo.

postgresql
  • 1 respostas
  • 20 Views
Martin Hope
alok
Asked: 2013-09-14 00:10:24 +0800 CST

Erro SQL1641N no linux ao executar db2start usando db2 express c no linux (LUW), mas o sistema de arquivos não está montado usando nosuid

  • 1

Estou tentando instalar e iniciar o db2 em minha máquina linux usando o seguinte script:

#!/usr/bin/env bash

MKDIR=/bin/mkdir
RM=/bin/rm
TAR=/bin/tar

DB2_SERVER_PROGRAM_PATH=/home/alok/Documents/Installers
DB2_SERVER_PROGRAM=v10.5_linuxx64_expc.tar.gz

echo "changing to $DB_SERVER_PROGRAM_PATH"
cd ${DB2_SERVER_PROGRAM_PATH}
echo "removing expc"
${RM} -rf expc
echo "untarring ${DB2_SERVER_PROGRAM}"
${TAR} zxf ${DB2_SERVER_PROGRAM}

echo "changing to expc"
cd expc

echo "Installing db2 as root"
sudo ./db2_install

echo "Adding user group db2grp1 as root"
sudo groupadd db2grp1
echo "Adding user group dasadm1 as root"
sudo groupadd dasadm1
echo "Adding user group db2fgrp1 as root"
sudo groupadd db2fgrp1

echo "Adding user db2inst1. Please provide password for new user db2inst1."
sudo useradd -g db2grp1 -G dasadm1 -m db2inst1
sudo passwd db2inst1

echo "Adding user dasusr1. Please provide password for new user dasusr1."
sudo useradd -g dasadm1 -G db2grp1 -m dasusr1
sudo passwd dasusr1

echo "Adding user db2fenc1. Please provide password for new user db2fenc1."
sudo useradd -g db2fgrp1 -m db2fenc1
sudo passwd db2fenc1

cd /opt/ibm/db2/V10.5/instance

echo "Creating DAS as root via user dasusr1."
sudo ./dascrt -u dasusr1

echo "Creating database instance as root via user db2fenc1 and db2inst1."
sudo ./db2icrt -u db2fenc1 db2inst1

echo "Setting communication protocol to tcpip as user db2inst1."
sudo -u db2inst1 ../adm/db2set DB2COMM=tcpip
echo "Setting SVCENAME 50000 for dbm cfg as user db2inst1."
sudo -u db2inst1 ../bin/db2 update dbm cfg using SVCENAME 50000

echo "starting db2 as user db2inst1."
sudo chmod +x ../adm/db2start
sudo -u db2inst1 ../adm/db2start

netstat -an | grep 50000

Tudo funciona bem, até chegar à penúltima linha:

sudo -u db2inst1 ../adm/db2start

SQL1641N  The db2start command failed because one or more DB2 database
manager program files was prevented from executing with root 
privileges by file system mount settings.

Agora eu verifiquei /etc/fstabe diz:

proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/sda1       /               ext4    errors=remount-ro,user_xattr 0       1
UUID=d4d794eb-1e68-4ddf-a9ec-249a22f084fb none            swap    sw             0       0
/swapfile swap swap defaults 0 0

Meu caminho de instalação /opt/ibm/db2/V10.5/admestá basicamente ativado /dev/sda1e não está montado usando a nosuidopção.

Aqui está a saída de mount:

alok@hostname:~$ mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro,user_xattr)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
shmfs on /dev/shm type tmpfs (rw,size=2048m)
gvfs-fuse-daemon on /home/alok/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=alok)

Isso novamente indica que /não está montado no nosuidmodo. Então, por que estou recebendo erro SQL1641N? É um problema diferente enviar esta mensagem?

db2 linux
  • 1 respostas
  • 6310 Views
Martin Hope
alok
Asked: 2013-09-04 05:15:36 +0800 CST

DB2 (LUW) equivalente para Oracle "drop user cascade"

  • 3

Esta questão está relacionada à criação e inicialização de bancos de dados de teste e desenvolvimento para um aplicativo que possui o banco de dados em execução no LUW (linux-unix-windows)

No oráculo temos

  • um usuário do sistema operacional (no linux) chamado oracle,
  • um usuário oracle admin chamado sysousystem
  • um usuário oracle predefinido fixo que é o proprietário do objeto do aplicativo, vamos chamá-loappowner
  • um usuário oracle que é o usuário da aplicação, ou seja, tem privilégios limitados nos objetos pertencentes ao appowner, vamos chamá-lo appuser

sempre que houver necessidade de inicializar o banco de dados, ou seja, começar do zero, primeiro nos conectamos ao oracle usando sysou systemoracle user e então executamos este comando:

DROP USER appowner CASCADE;

e então vamos recriar o usuário e os objetos que ele possui do zero. Também concedemos alguns privilégios aos appuserobjetos criados porappowner

O aplicativo sempre efetua login como, em appuservez de , a appownermenos que haja alguma tarefa administrativa a ser executada no banco de dados.

Agora estamos transferindo este aplicativo para o DB2, e é aqui que ficamos confusos.

Para iniciantes, o db2 cria esses usuários do sistema operacional, que também são usuários do db2:

dasusr1
db2inst1
db2fenc1

Como esses três usuários são mapeados para sys/ systeme ?appownerappuser

Eu acredito que dasusr1é o equivalente aproximado de sys/ system, db2inst1é o equivalente aproximado de appownere db2fenc1é o equivalente aproximado deappuser

(por favor, corrija-me se eu estiver errado, e eu aprecio plenamente que o mapeamento não seja exato)

Sendo esse o caso, se eu tiver que remover todos os objetos pertencentes a db2inst1, faço o login como dasusr1e descarto o usuário db2inst1?

Não há realmente um mapeamento um para um entre os usuários do oracle e os usuários do db2, porque

  • db2inst1pode criar vários bancos de dados enquanto appuseré mapeado para um banco de dados no oracle
  • dentro de um banco de dados db2, pode haver vários esquemas, enquanto no oracle, um usuário mapeia para um esquema

Então é um pouco confuso. Ajudaria se alguém com experiência em portar aplicativos do oracle para o db2 pudesse lançar alguma luz sobre a equivalência entre os usuários do db2 e do oracle, o que finalmente levaria a descobrir o equivalente do db2 para a cascata do usuário drop do oracle.

oracle schema
  • 2 respostas
  • 2982 Views
Martin Hope
alok
Asked: 2013-09-03 21:10:18 +0800 CST

Ajuda db2 LUW para um usuário oracle: criar banco de dados trava sem nenhuma saída, mas o banco de dados foi criado

  • 3

Sou novo no db2, mas já trabalhei no oracle antes. Tentando criar um banco de dados e foi bem-sucedido, mas a sessão em que emiti um comando de criação de banco de dados trava.

Eu instalei o db2 10.5 em uma máquina ubuntu de 64 bits.

Primeiro, loguei como db2inst1o proprietário da instância e invoquei o db2 na linha de comando para acessar o shell.

alok@mylaptop:~$ su - db2inst1
शब्दकूट: 
$ uname -a
Linux cxps044 3.2.0-52-generic #78-Ubuntu SMP Fri Jul 26 16:21:44 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ db2
(c) Copyright IBM Corporation 1993,2007
Command Line Processor for DB2 Client 10.5.0

You can issue database manager commands and SQL statements from the command 
prompt. For example:
    db2 => connect to sample
    db2 => bind sample.bnd

For general help, type: ?.
For command help, type: ? command, where command can be
the first few keywords of a database manager command. For example:
 ? CATALOG DATABASE for help on the CATALOG DATABASE command
 ? CATALOG          for help on all of the CATALOG commands.

To exit db2 interactive mode, type QUIT at the command prompt. Outside 
interactive mode, all commands must be prefixed with 'db2'.
To list the current command option settings, type LIST COMMAND OPTIONS.

For more detailed help, refer to the Online Reference Manual.

Em seguida, anexei uma instância a db2inst1, que acredito ter sido bem-sucedida considerando a saída. Eu segui as instruções da instalação do db2 cli para isso.

db2 => attach to db2inst1

   Instance Attachment Information

 Instance server        = DB2/LINUXX8664 10.5.0
 Authorization ID       = DB2INST1
 Local instance alias   = DB2INST1

Em seguida, tentei criar o banco de dados usando este comando:

db2 => create database mytestdb

E isso trava, sem fornecer nenhuma saída.

Depois de verificar algumas horas depois, descobri que o banco de dados foi criado.

$ db2 list applications

Auth Id Application Appl. Application Id DB # of
Name Handle Name Agents
-------- -------------- ---------- -------------------------------------------------------------- -------- -----
DB2INST1 db2bp 85 *LOCAL.db2inst1.130903105030 MYTESTDB 1 
DB2INST1 db2bp 86 *LOCAL.db2inst1.130903105031 EIGHTBYT 1 
DB2INST1 db2bp 99 *LOCAL.db2inst1.130903110149 TUT_DB 1 

No entanto, como descobrir quanto tempo esperar antes de desistir? Existe algum log ou outra saída que possa dar uma dica sobre se deve continuar esperando o comando concluir a execução?

Tentei outro comando create database, que travou, e verifiquei em outra sessão para descobrir se o banco de dados foi realmente criado.

Sessão 1:

$ db2
(c) Copyright IBM Corporation 1993,2007
Command Line Processor for DB2 Client 10.5.0

You can issue database manager commands and SQL statements from the command 
prompt. For example:
    db2 => connect to sample
    db2 => bind sample.bnd

For general help, type: ?.
For command help, type: ? command, where command can be
the first few keywords of a database manager command. For example:
 ? CATALOG DATABASE for help on the CATALOG DATABASE command
 ? CATALOG          for help on all of the CATALOG commands.

To exit db2 interactive mode, type QUIT at the command prompt. Outside 
interactive mode, all commands must be prefixed with 'db2'.
To list the current command option settings, type LIST COMMAND OPTIONS.

For more detailed help, refer to the Online Reference Manual.

db2 => attach to db2inst1

   Instance Attachment Information

 Instance server        = DB2/LINUXX8664 10.5.0
 Authorization ID       = DB2INST1
 Local instance alias   = DB2INST1

db2 => create database mytestd2 automatic storage yes

Enquanto isso está pendurado aqui, sessão 2:

$ db2
(c) Copyright IBM Corporation 1993,2007
Command Line Processor for DB2 Client 10.5.0

You can issue database manager commands and SQL statements from the command 
prompt. For example:
    db2 => connect to sample
    db2 => bind sample.bnd

For general help, type: ?.
For command help, type: ? command, where command can be
the first few keywords of a database manager command. For example:
 ? CATALOG DATABASE for help on the CATALOG DATABASE command
 ? CATALOG          for help on all of the CATALOG commands.

To exit db2 interactive mode, type QUIT at the command prompt. Outside 
interactive mode, all commands must be prefixed with 'db2'.
To list the current command option settings, type LIST COMMAND OPTIONS.

For more detailed help, refer to the Online Reference Manual.

db2 => attach to db2inst1

   Instance Attachment Information

 Instance server        = DB2/LINUXX8664 10.5.0
 Authorization ID       = DB2INST1
 Local instance alias   = DB2INST1


db2 => list applications

Auth Id  Application    Appl.      Application Id                                                 DB       # of
         Name           Handle                                                                    Name    Agents
-------- -------------- ---------- -------------------------------------------------------------- -------- -----
DB2INST1 db2bp          226        *LOCAL.db2inst1.130903115709                                   MYTESTD2 1    

db2 => 

^C, ^X, ^Ze assim por diante na sessão 1 não tem impacto.

Sou novo no db2, mas familiarizado com oracle e linux/posix.

Alguns minutos depois:

Eu finalmente recebi o prompt de volta na sessão 1:

db2 => create database mytestd2 automatic storage yes
DB20000I  The CREATE DATABASE command completed successfully.
db2 => 

Portanto, esta questão é meio que "resolvida automaticamente", mas as observações podem ser úteis para outra pessoa.

db2 linux
  • 1 respostas
  • 1684 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve