

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menyusutkan ruang meja di RDS untuk Oracle
<a name="Oracle.ShrinkTablespace"></a>

Dimulai dengan Oracle Database 26ai (26.0.0.0), Amazon RDS for Oracle mendukung penyusutan tablespace dengan prosedur. `rdsadmin.rdsadmin_util.shrink_tablespace` Gunakan prosedur ini untuk merebut kembali ruang yang tidak terpakai di ruang meja dengan mengecilkan datafile-nya. Menyusut mengurangi konsumsi penyimpanan tanpa migrasi data atau rekreasi tablespace.

**Topics**
+ [Gambaran umum](#Oracle.ShrinkTablespace.Overview)
+ [Persyaratan](#Oracle.ShrinkTablespace.Requirements)
+ [Sintaks](#Oracle.ShrinkTablespace.Syntax)
+ [Parameter](#Oracle.ShrinkTablespace.Parameters)
+ [Contoh](#Oracle.ShrinkTablespace.Examples)
+ [Pertimbangan-pertimbangan](#Oracle.ShrinkTablespace.Considerations)
+ [Sumber daya terkait](#Oracle.ShrinkTablespace.Resources)

## Gambaran umum
<a name="Oracle.ShrinkTablespace.Overview"></a>

Seiring waktu, tablespace dalam database Oracle dapat mengakumulasi ruang yang tidak terpakai dari data yang dihapus atau direorganisasi. `rdsadmin.rdsadmin_util.shrink_tablespace`Prosedur ini membungkus `DBMS_SPACE.SHRINK_TABLESPACE` fungsionalitas Oracle dan menangani hak istimewa internal yang diperlukan untuk Anda.

Tablespace menyusut mendukung mode berikut:
+ **Analyze mode** (`DBMS_SPACE.TS_MODE_ANALYZE`) - Mengevaluasi tablespace dan melaporkan berapa banyak ruang yang dapat Anda reklamasi, tanpa membuat perubahan.
+ **Shrink mode** (`DBMS_SPACE.TS_MODE_SHRINK`) — Memindahkan objek dan mengubah ukuran data di tablespace untuk merebut kembali ruang yang tidak digunakan. Ini adalah mode default.

## Persyaratan
<a name="Oracle.ShrinkTablespace.Requirements"></a>

Untuk menggunakan penyusutan tablespace, instans DB Anda harus memenuhi persyaratan berikut:
+ Oracle Database 26ai atau lebih tinggi
+ Oracle Enterprise Edition

## Sintaks
<a name="Oracle.ShrinkTablespace.Syntax"></a>

```
EXEC rdsadmin.rdsadmin_util.shrink_tablespace(
  p_tablespace_name => '{{tablespace_name}}',
  p_shrink_mode     => {{mode}},
  p_target_size     => {{target_bytes}});
```

## Parameter
<a name="Oracle.ShrinkTablespace.Parameters"></a>


**parameter shrink\_tablespace**  

| Nama parameter | Jenis data | Default | Wajib | Deskripsi | 
| --- | --- | --- | --- | --- | 
| `p_tablespace_name` | `VARCHAR2` | — | Ya | Nama tablespace untuk menyusut. | 
| `p_shrink_mode` | `NUMBER` | `2` (`TS_MODE_SHRINK`) | Tidak | Mode menyusut. Gunakan `DBMS_SPACE.TS_MODE_ANALYZE` (`1`) untuk menganalisis saja, atau `DBMS_SPACE.TS_MODE_SHRINK` (`2`) untuk melakukan shrink. | 
| `p_target_size` | `NUMBER` | `0` | Tidak | Ukuran target, dalam byte. Gunakan `0` (default) untuk menyusut ke ukuran minimum yang mungkin. Tentukan nilai positif untuk menyusut ke target tertentu. | 

## Contoh
<a name="Oracle.ShrinkTablespace.Examples"></a>

### Menganalisis ruang meja untuk ruang yang dapat direklamasi
<a name="Oracle.ShrinkTablespace.Examples.Analyze"></a>

Untuk menganalisis tablespace tanpa membuat perubahan, jalankan perintah berikut:

```
EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS', DBMS_SPACE.TS_MODE_ANALYZE);
```

Berikut ini adalah output contoh:

```
-------------------ANALYZE RESULT-------------------
Total Movable Objects: 0
Total Movable Size(GB): 0
Original Datafile Size(GB): .1
Suggested Target Size(GB): .06
Process Time: +00 00:00:00.021513
```

### Menyusutkan ruang meja ke ukuran minimum
<a name="Oracle.ShrinkTablespace.Examples.Minimum"></a>

Untuk mengecilkan tablespace dan merebut kembali semua ruang yang tidak digunakan, jalankan perintah berikut:

```
EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS');
```

Berikut ini adalah output contoh:

```
-------------------SHRINK RESULT-------------------
Total Moved Objects: 0
Total Moved Size(GB): 0
Original Datafile Size(GB): .1
New Datafile Size(GB): .05
Process Time: +00 00:00:00.281151
```

### Menyusutkan tablespace ke ukuran target tertentu
<a name="Oracle.ShrinkTablespace.Examples.Target"></a>

Untuk mengecilkan tablespace ke ukuran target dalam byte, tentukan parameternya. `p_target_size` Jika target lebih kecil dari ukuran minimum yang dapat dicapai, Oracle menyesuaikannya ke atas secara otomatis:

```
EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS', DBMS_SPACE.TS_MODE_SHRINK, 52428800);
```

## Pertimbangan-pertimbangan
<a name="Oracle.ShrinkTablespace.Considerations"></a>

Pertimbangkan hal berikut saat Anda mengecilkan tablespace:
+ Tablespace menyusut adalah operasi online. Objek di ruang meja tetap dapat diakses selama penyusutan.
+ Operasi menyusut mungkin memindahkan objek, seperti tabel dan indeks, di dalam ruang tabel untuk mengkonsolidasikan ruang kosong sebelum mengubah ukuran file data.
+ Indeks tetap valid setelah operasi menyusut, dan integritas data dipertahankan.
+ Jika nilainya `p_target_size` lebih kecil dari ruang yang ditempati objek saat ini, Oracle menyesuaikan target dengan ukuran minimum yang dapat dicapai.
+ Nilai tidak boleh melebihi ukuran tablespace saat ini. `p_target_size` Tentukan target yang lebih kecil dari atau sama dengan ukuran saat ini.
+ Transaksi aktif pada objek di tablespace dapat mencegah operasi merebut kembali semua ruang yang tersedia. Untuk hasil terbaik, jalankan shrink selama periode aktivitas rendah.
+ Memanggil `DBMS_SPACE.SHRINK_TABLESPACE` langsung tanpa `rdsadmin_util` pembungkus tidak didukung. Selalu gunakan `rdsadmin.rdsadmin_util.shrink_tablespace` pembungkusnya.

## Sumber daya terkait
<a name="Oracle.ShrinkTablespace.Resources"></a>
+ [DBMS\_ SPACE.SHRINK \_TABLESPACE](https://docs.oracle.com/en/database/oracle/oracle-database/26/arpls/DBMS_SPACE.html) dalam dokumentasi Oracle Database
+ Lihat informasi yang lebih lengkap di [Melakukan tugas basis data umum untuk instans DB Oracle](Appendix.Oracle.CommonDBATasks.Database.md).