Percebi que foi criado um Schema na Tablespace USERS mas nossa regra local é que ele deve estar em uma Tablespace isolada. No Oracle, como você move um Schema para um Tablespace diferente?
relate perguntas
-
Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?
-
ORDER BY usando prioridades personalizadas para colunas de texto
-
Interface sqlplus confortável? [fechado]
-
Como encontrar as instruções SQL mais recentes no banco de dados?
-
Como posso consultar nomes usando expressões regulares?
Um esquema em si não pode ser armazenado nem pode ter alterado o tablespace em bloco de forma alguma. Na verdade, é apenas uma meta-estrutura. Em vez disso, há o
DEFAULT TABLESPACE
atributo subjacenteUSER
. Se você alterá-lo, novos objetos serão criados neste tablespace por padrão (a menos que você especifique explicitamente outro).Além disso, cada tipo de estrutura (Tabela/Índice/Partição...) tem sua própria forma de se mover para outro tablespace. (ou seja, mover uma tabela não move índices construídos sobre ela - o que seria bastante indesejável, porque você deseja armazenar índices em outro sistema de arquivos para melhor desempenho). Isso significa que você terá que mover o conteúdo do esquema objeto por objeto.
Para 10 e 11G, use o utilitário de bomba de dados. Siga o tutorial aqui:
http://techxploration.blogspot.com.au/2012/10/change-tablespace-of-oracle-schema.html
É a maneira mais segura, se não a melhor, de fazer isso.
Eu tentei muitos scripts, mas não funcionou para todos os objetos. Você não pode mover objetos agrupados de um tablespace para outro, para isso você terá que usar o expdp. Portanto, sugerirei que expdp seja a melhor opção para mover todos os objetos para diferentes tablespaces.
Abaixo está o comando.
nohup expdp \"/ as sysdba\" DIRECTORY=test_dir DUMPFILE=users.dmp LOGFILE=users.log TABLESPACES=USERS &
Para uma explicação clara: https://www.orahow.com/2018/06/move-all-objects-to-another-tablespace.html