Então. SQLPlus simplesmente dá para minha primeira tentativa (depois de um pouco de experiência com postgresql):
SQL> SELECT * FROM MYTABLESPACE.MYTABLE;
SELECT * FROM MYTABLESPACE.MYTABLE
*
ERROR at line 1:
ORA-00942: table or view does not exist
Eu tentei também SELECT * FROM MYTABLESPACE$MYTABLE
(tentativa intuitiva) e simplesmente SELECT * FROM MYTABLE
também, mas nada deu certo. Pesquisando isso fornece muitas informações sobre o gerenciamento de espaço de tabela, mas nada dessa questão trivial.
O que fazer?
Extensão nº 1: Bem, parece que houve realmente um pequeno equívoco sobre os tablespaces e os esquemas. Mas o problema ainda é bem visível: eu tenho acesso à dba_tables
tabela, tenho acesso a um de seus registros, quero consultar a tabela descrita por aquela e não funciona.
Extensão #2: Aqui está o que eu fiz. Liguei sqlplus
com a system
conta ( sqlplus system/****
):
SQL> SELECT * FROM (SELECT * FROM dba_tables WHERE tablespace_name='MYTABLESPACE') WHERE ROWNUM<=1;
OWNER TABLE_NAME TABLESPACE_NAME CLUSTER_NAME IOT_NAME STATUS PCT_FREE PCT_USED INI_TRANS
------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ -------- ---------- ---------- ----------
MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS LOG B NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE CHAIN_CNT AVG_ROW_LEN
---------- -------------- ----------- ----------- ----------- ------------ ---------- --------------- --- - ---------- ---------- ------------ ---------- ---------- -----------
AVG_SPACE_FREELIST_BLOCKS NUM_FREELIST_BLOCKS DEGREE INSTANCES CACHE TABLE_LO SAMPLE_SIZE LAST_ANA PAR IOT_TYPE T S
------------------------- ------------------- ---------------------------------------- ---------------------------------------- -------------------- -------- ----------- -------- --- ------------ - -
NES BUFFER_ FLASH_C CELL_FL ROW_MOVE GLO USE DURATION SKIP_COR MON CLUSTER_OWNER DEPENDEN COMPRESS COMPRESS_FOR DRO REA SEG RESULT_
--- ------- ------- ------- -------- --- --- --------------- -------- --- ------------------------------ -------- -------- ------------ --- --- --- -------
EXAMPLEOWNER MYTABLE MYTABLESPACE VALID 10 1
255 65536 1048576 1 2147483645 NO N
1 1 N ENABLED NO N N
NO DEFAULT DEFAULT DEFAULT DISABLED NO NO DISABLED YES DISABLED DISABLED NO NO YES DEFAULT
SQL> SELECT * FROM MYTABLE;
SELECT * FROM MYTABLE
*
ERROR at line 1:
ORA-00942: table or view does not exist
Dada a sua
DBA_TABLES
consulta, você tem o seguinte:Proprietário (nome do esquema):
EXAMPLEOWNER
Nome da tabela:
MYTABLE
O
SYSTEM
usuário não poderá apenas selecionar, aMYTABLE
menos que haja um sinônimo público apontando para ele.Portanto, para selecionar na tabela, você deve qualificar totalmente o nome prefixando a tabela com seu esquema:
Observe que tablespaces são simplesmente o local em que o objeto é armazenado e não têm relação com consultas DML.
Do ponto de vista da consulta, não é necessário nomear o tablespace. o espaço de tabela é simplesmente um nome lógico para armazenar os arquivos de dados do banco de dados. O que importa é o esquema em que a tabela é criada e seus privilégios em relação aos objetos desse esquema. Portanto, se 'MYTABLE' estiver no esquema chamado 'USERTABS', você precisará de uma concessão em execução para fornecer permissões; por exemplo
OU
Em seguida, você seleciona na tabela qualificada por seu esquema;