Trabalhar com espaços para tabela no RDS para Oracle
É possível usar espaços para tabela com o RDS para Oracle, que é uma unidade lógica de armazenamento que armazena dados de banco de dados.
Importante
Se sua instância de banco de dados tiver réplicas, recomendamos usar configurações de grupos de parâmetros em vez de alterações em nível de sessão para gerenciar os locais padrão dos arquivos. As alterações em nível de sessão nos locais de arquivos padrão na instância primária não são exibidas automaticamente nas réplicas. O uso de configurações de grupos de parâmetros garante localizações de arquivos consistentes em suas instâncias primária e de réplica.
Tópicos
Especificar locais de arquivos de banco de dados no RDS para Oracle
O RDS para Oracle usa o Oracle Managed Files (OMF) para nomear arquivos de banco de dados. Quando você cria arquivos de banco de dados, o banco de dados extrai a configuração com base na configuração atual do parâmetro de inicialização DB_CREATE_FILE_DEST.
O valor padrão do parâmetro de inicialização DB_CREATE_FILE_DEST é /rdsdbdata/db para bancos de dados autônomos e /rdsdbdata/db/pdb para arquitetura em contêiner (CDB/MT). Se sua instância de banco de dados tiver volumes de armazenamento adicionais, você poderá definir DB_CREATE_FILE_DEST seus locais de volume. Por exemplo, se sua instância tiver um volume montado em /rdsdbdata/db, você poderá definir DB_CREATE_FILE_DEST como esse valor.
Você pode modificar o parâmetro DB_CREATE_FILE_DEST em nível de sessão ou em nível de instância do banco de dados Oracle.
Modificar DB_CREATE_FILE_SET em nível de instância
Para modificar o parâmetro em nível de instância, atualize o parâmetro no grupo de parâmetros atribuído à sua instância de banco de dados e aplique-o. Para obter mais informações, consulte Parâmetros de inicialização do RDS para Oracle e Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS.
Modificar DB_CREATE_FILE_DEST em nível de sessão
É possível modificar o parâmetro em nível de sessão executando uma instrução ALTER
SESSION. Essa abordagem é útil quando você deseja criar arquivos de banco de dados em um local específico para uma sessão específica sem afetar toda a instância.
O seguinte exemplo mostra como conferir o valor do parâmetro atual e modificá-lo para a sessão:
SHOW PARAMETER db_create_file_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_create_file_dest string /rdsdbdata/db ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db'; Session altered. SHOW PARAMETER db_create_file_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_create_file_dest string /rdsdbdata2/db
Criar e usar espaços de tabela no RDS para Oracle
Quando você cria espaços de tabela, o banco de dados cria os arquivos de dados no volume de armazenamento especificado pelo parâmetro de inicialização DB_CREATE_FILE_DEST no momento da criação. Por padrão, se você não especificar o tamanho de um arquivo de dados, os espaços de tabela serão criados com um tamanho padrão de AUTOEXTEND ON e sem um tamanho máximo. No exemplo a seguir, o tablespace users1 é autoextensível.
CREATE TABLESPACEusers1;
Devido a essas configurações padrão, espaços de tabela podem crescer ao ponto de consumirem todo o armazenamento alocado. Recomendamos que você especifique um tamanho máximo apropriado em espaços de tabela permanentes e temporários e que monitore cuidadosamente o uso do espaço.
O exemplo a seguir cria um espaço de tabela chamado users2 com um tamanho inicial de 1 gigabyte. Como o tamanho do arquivo de dados é especificado, mas AUTOEXTEND ON não é especificado, o espaço de tabela não é autoextensível.
CREATE TABLESPACEusers2DATAFILE SIZE1G;
O exemplo a seguir cria um espaço de tabela chamado users3 com um tamanho inicial de 1 gigabyte, extensão automática ativada e um tamanho máximo de 10 gigabytes.
CREATE TABLESPACEusers3DATAFILE SIZE1GAUTOEXTEND ON MAXSIZE10G;
O exemplo a seguir cria um espaço de tabela temporário chamado temp01:
CREATE TEMPORARY TABLESPACEtemp01;
É possível redimensionar um espaço de tabela de arquivos grandes usando ALTER
TABLESPACE. Você pode especificar o tamanho em quilobytes (K), megabytes (M), gigabytes (G) ou terabytes (T). O exemplo a seguir redimensiona um espaço de tabela de arquivos grandes chamado users_bf para 200 MB.
ALTER TABLESPACEusers_bfRESIZE200M;
O exemplo a seguir acrescenta um arquivo de dados adicional a um espaço de tabela de arquivos pequenos chamado users_sf.
ALTER TABLESPACEusers_sfADD DATAFILE SIZE100000MAUTOEXTEND ON NEXT250mMAXSIZEUNLIMITED;
Criar espaços de tabela em volumes de armazenamento adicionais no RDS para Oracle
Para criar um espaço para tabela em um volume de armazenamento adicional, modifique o parâmetro DB_CREATE_FILE_DEST para a localização do volume. O exemplo a seguir define o local do arquivo como /rdsdbdata2/db.
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db'; Session altered.
No exemplo a seguir, você vai criar um espaço para tabela no volume adicional /rdsdbdata2/db.
CREATE TABLESPACE new_tablespace DATAFILE SIZE 10G; Tablespace created. SELECT tablespace_name,file_id,file_name FROM dba_data_files WHERE tablespace_name = 'NEW_TABLESPACE'; TABLESPACE_NAME FILE_ID FILE_NAME ------------------------- ---------- -------------------------------------------------------------------------------- NEW_TABLESPACE 7 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_newtable_a123b4c5_.dbf
Para criar um espaço para tabela de arquivos pequenos e distribuir seus arquivos de dados em diferentes volumes de armazenamento, adicione arquivos de dados ao espaço para tabela depois de criá-lo. No exemplo a seguir, você vai criar um espaço para tabela com os arquivos de dados no local padrão de /rdsdbdata/db. Depois, vai definir o destino padrão como /rdsdbdata/db2. Quando você adiciona um arquivo de dados ao seu espaço para tabela recém-criado, o banco de dados armazena o arquivo em /rdsdbdata/db2.
ALTER SESSION SET db_create_file_dest = '/rdsdbdata/db'; Session altered. CREATE SMALLFILE TABLESPACE smalltbs DATAFILE SIZE 10G; Tablespace created. SELECT tablespace_name,file_id,file_name FROM dba_data_files WHERE tablespace_name = 'SMALLTBS'; TABLESPACE_NAME FILE_ID FILE_NAME ------------------------- ---------- -------------------------------------------------------------------------------- SMALLTBS 8 /rdsdbdata/db/ORCL_A/datafile/o1_mf_smalltbs_n563yryk_.dbf ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db'; Session altered. ALTER TABLESPACE smalltbs ADD DATAFILE SIZE 10G; Tablespace altered. SELECT tablespace_name,file_id,file_name FROM dba_data_files WHERE tablespace_name = 'SMALLTBS'; TABLESPACE_NAME FILE_ID FILE_NAME ------------------------- ---------- -------------------------------------------------------------------------------- SMALLTBS 8 /rdsdbdata/db/ORCL_A/datafile/o1_mf_smalltbs_n563yryk_.dbf SMALLTBS 9 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_smalltbs_n564004g_.dbf
Definir o espaço para tabela padrão no RDS para Oracle
Para definir o espaço padrão tabela padrão, use o procedimento do Amazon RDS rdsadmin.rdsadmin_util.alter_default_tablespace. O procedimento alter_default_tablespace tem os seguintes parâmetros.
| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
|---|---|---|---|---|
|
|
varchar |
— |
Sim |
O nome do espaço de tabela padrão. |
O exemplo a seguir define o espaço de tabela padrão como users2:
EXEC rdsadmin.rdsadmin_util.alter_default_tablespace(tablespace_name => 'users2');
Definir o espaço para tabela temporário padrão no RDS para Oracle
Para definir o espaço de tabela temporário padrão, use o procedimento do Amazon RDS rdsadmin.rdsadmin_util.alter_default_temp_tablespace. O procedimento alter_default_temp_tablespace tem os seguintes parâmetros.
| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
|---|---|---|---|---|
|
|
varchar |
— |
Sim |
O nome do espaço de tabela temporário padrão. |
O exemplo a seguir define o espaço de tabela temporário padrão como temp01.
EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => 'temp01');
Criar um espaço de tabela temporário no armazenamento de instância
Para criar um espaço de tabela temporário no armazenamento de instância, use o procedimento rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace do Amazon RDS. O procedimento create_inst_store_tmp_tblspace tem os seguintes parâmetros.
| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
|---|---|---|---|---|
|
|
varchar |
— |
Sim |
O nome do espaço de tabela temporário. |
O exemplo a seguir cria o espaço de tabela temporário temp01 no armazenamento de instância.
EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace(p_tablespace_name => 'temp01');
Importante
Quando você executa rdsadmin_util.create_inst_store_tmp_tblspace, o espaço de tabela temporário recém-criado não é automaticamente definido como o espaço de tabela temporário padrão. Para defini-lo como padrão, consulte Definir o espaço para tabela temporário padrão no RDS para Oracle.
Para obter mais informações, consulte Armazenar dados temporários em um armazenamento de instância do RDS for Oracle.