

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

# Connect ke sumber data Oracle Database
<a name="oracle-datasource-AMG"></a>

**catatan**  
Sumber data ini hanya untuk Grafana Enterprise. Untuk informasi selengkapnya, lihat [Mengelola akses ke plugin Enterprise](upgrade-to-enterprise-plugins.md).  
Selain itu, di ruang kerja yang mendukung versi 9 atau yang lebih baru, sumber data ini mungkin mengharuskan Anda untuk menginstal plugin yang sesuai. Untuk informasi selengkapnya, lihat [Perluas ruang kerja Anda dengan plugin](grafana-plugins.md).

## Menambahkan sumber data
<a name="datasource-configuration"></a>

 Pilih **Sumber data** di panel kiri Grafana. 

 Pilih Tambahkan Sumber Data: 

 Masukkan **oracle** untuk menemukan sumber data. 

 Masukkan detail server Oracle. 

 Masukkan nama host (atau alamat IP) bersama dengan nomor port, dan nama pengguna dan kata sandi untuk terhubung. 

 Dengan opsi tnsnames toggle, entri valid apa pun yang ditemukan di file konfigurasi tnsnames.ora Anda dapat digunakan, bersama dengan otentikasi dasar. 

 Mirip dengan contoh sebelumnya, tetapi menggunakan Kerberos untuk otentikasi. Lihat panduan penyiapan khusus kerberos untuk detail tentang cara mengonfigurasi OS atau wadah docker untuk menggunakan kerberos. 

 Secara opsional mengubah zona waktu yang digunakan untuk terhubung ke server Oracle dan untuk digunakan oleh makro sadar zona waktu. Pengaturan default adalah UTC. 

 Simpan dan Uji sumber data, Anda akan melihat pesan hijau dengan “Koneksi Database OK” 

## Penggunaan
<a name="usage-4"></a>

### Makro
<a name="macros-1"></a>

 Untuk menyederhanakan sintaks dan memungkinkan bagian dinamis, seperti filter rentang tanggal, kueri dapat berisi makro. Nama kolom harus terkandung dalam tanda kutip ganda (`"`). 


|  Contoh makro  |  Deskripsi  | 
| --- | --- | 
|  \$1\$1\$1\$1time (DateColumn) \$1 \$1 Akan diganti dengan ekspresi untuk mengganti nama kolom menjadi `time`. Misalnya, `DateColumn as time` \$1\$1\$1\$1timeEpoch (DateColumn) \$1  |  Akan diganti dengan ekspresi untuk mengganti nama kolom menjadi time dan mengubah nilai menjadi stempel waktu unix (dalam milidetik).  | 
|  \$1\$1\$1\$1TimeFilter (DateColumn) \$1 \$1 Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan. Misalnya, `DateColumn ANTARA TO\$1DATE ('19700101', 'yyyymmdd') \$1 (1/24/60/60/1000) \$1 1500376552001 DAN TO\$1DATE ('19700101', 'yyyymmdd') \$1 (1/24/60/60/1000) \$1 1500376552002` \$1\$1\$1\$1timeFrom () \$1  |  Akan diganti dengan dimulainya pemilihan waktu aktif yang saat ini dikonversi ke tipe DATE data. Misalnya, TO\$1DATE('19700101','yyyymmdd') \$1 (1/24/60/60/1000) \$1 1500376552001.  | 
|  \$1\$1\$1\$1timeTo () \$1 \$1 Akan diganti dengan akhir pemilihan waktu aktif yang saat ini dikonversi ke tipe data `DATE`. \$1\$1\$1\$1TimeGroup (DateColumn, “5m”) \$1  |  Akan diganti dengan ekspresi yang dapat digunakan dalam klausa GROUP BY.  | 
|  \$1\$1\$1\$1TimeGroup (DateColumn, “5m" [, fillvalue]) \$1  |  Akan diganti dengan ekspresi yang dapat digunakan dalam klausa GROUP BY. Memberikan fillValue NULL atau nilai mengambang akan secara otomatis mengisi seri kosong dalam rentang waktu dengan nilai itu. Misalnya, t i m e G r o u p c r e a t e d A t, ′1 m ′, 0. \$1\$1\$1TimeGroup (DateColumn, “5m”, 0) \$1.  | 
|  \$1 t i m e G r o u p (d a t e C o l u m n, '5 m ', N U L L) \$1 \$1 S a m e a s a b o v e b u t U U L l l l l l e u s e e s s s s a v a l u u e e m m i n g p o i n t s. \$1\$1\$1TimeGroup (DateColumn, “5m”, sebelumnya) \$1  |  Sama seperti di atas tetapi nilai sebelumnya dalam seri itu akan digunakan sebagai nilai isi jika tidak ada nilai yang terlihat namun NULL akan digunakan.  | 
|  \$1\$1\$1\$1 unixEpochFilter (DateColumn) \$1 \$1 Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan dengan waktu yang direpresentasikan sebagai stempel waktu unix (dalam milidetik). Misalnya, `DateColumn >= 1500376552001 DAN DateColumn <= 1500376552002` \$1\$1\$1\$1 () \$1 unixEpochFrom  |  Akan diganti dengan dimulainya pemilihan waktu yang sedang aktif sebagai stempel waktu unix. Misalnya, 1500376552001.  | 
|  \$1\$1\$1\$1unixEpochTo()\$1  |  Akan diganti dengan akhir pemilihan waktu yang aktif saat ini sebagai stempel waktu unix. Misalnya, 1500376552002.  | 

 Plugin ini juga mendukung notasi menggunakan kawat gigi`{}`. Gunakan notasi ini ketika kueri diperlukan di dalam parameter. 

**catatan**  
Gunakan satu jenis notasi per kueri. Jika kueri membutuhkan tanda kurung gigi, semua makro dalam kueri harus menggunakan tanda kurung gigi. 

```
$__timeGroup{"dateColumn",'5m'}
$__timeGroup{SYS_DATE_UTC("SDATE"),'5m'}
$__timeGroup{FROM_TZ(CAST("SDATE" as timestamp), 'UTC'), '1h'}
```

 Editor kueri memiliki tautan **SQL yang Dihasilkan** yang muncul setelah kueri berjalan, saat dalam mode edit panel. Ketika Anda memilih link, itu memperluas dan menunjukkan string SQL interpolasi mentah yang dijalankan. 

### Kueri tabel
<a name="table-queries"></a>

 Jika opsi **Format sebagai** kueri diatur ke **Tabel** maka pada dasarnya Anda dapat melakukan semua jenis kueri SQL. Panel tabel akan secara otomatis menampilkan hasil kolom & baris apa pun yang dikembalikan kueri Anda. Anda dapat mengontrol nama kolom panel Tabel dengan menggunakan sintaks pemilihan kolom `as` SQL biasa. 

### Pertanyaan deret waktu
<a name="time-series-queries"></a>

 Jika Anda menyetel **Format sebagai** **deret Waktu**, untuk digunakan dalam panel Grafik misalnya, kueri harus mengembalikan kolom bernama `time` yang mengembalikan datetime SQL atau tipe data numerik apa pun yang mewakili epoch unix dalam hitungan detik. Grafana menafsirkan kolom DATE dan TIMESTAMP tanpa zona waktu eksplisit sebagai UTC. Setiap kolom kecuali `time` dan `metric` diperlakukan sebagai kolom nilai. Anda dapat mengembalikan kolom bernama `metric` yang digunakan sebagai nama metrik untuk kolom nilai. 

 Contoh kode berikut menunjukkan `metric` kolom. 

```
SELECT
  $__timeGroup("time_date_time", '5m') AS time,
  MIN("value_double"),
  'MIN' as metric
FROM test_data
WHERE $__timeFilter("time_date_time")
GROUP BY $__timeGroup("time_date_time", '5m')
ORDER BY time
```

### Lebih banyak kueri — menggunakan oracle-fake-data-gen
<a name="more-queries---using-oracle-fake-data-gen"></a>

```
SELECT
  $__timeGroup("createdAt", '5m') AS time,
  MIN("value"),
  'MIN' as metric
FROM "grafana_metric"
WHERE $__timeFilter("createdAt")
GROUP BY $__timeGroup("createdAt", '5m')
ORDER BY time
```

 Contoh kode berikut menunjukkan deret waktu Data Palsu. 

```
SELECT
  "createdAt",
  "value"
FROM "grafana_metric"
WHERE $__timeFilter("createdAt")
ORDER BY "createdAt" ASC
```

```
SELECT
  "createdAt" as time,
  "value" as value
FROM "grafana_metric"
WHERE $__timeFilter("createdAt")
ORDER BY time ASC
```

 Contoh berikut menunjukkan hasil tabel yang berguna. 

```
select tc.table_name Table_name
,tc.column_id Column_id
,lower(tc.column_name) Column_name
,lower(tc.data_type) Data_type
,nvl(tc.data_precision,tc.data_length) Length
,lower(tc.data_scale) Data_scale
,tc.nullable nullable
FROM all_tab_columns tc
,all_tables t
WHERE tc.table_name = t.table_name
```

### Templating
<a name="templating-3"></a>

 Alih-alih hardcoding hal-hal seperti server, aplikasi dan nama sensor dalam kueri metrik Anda, Anda dapat menggunakan variabel di tempatnya. Variabel ditampilkan sebagai kotak pilih dropdown di bagian atas dasbor. Kotak dropdown ini memudahkan untuk mengubah data yang ditampilkan di dasbor Anda. 

#### Variabel kueri
<a name="query-variable-1"></a>

 Jika Anda menambahkan variabel template dari jenisnya`Query`, Anda dapat menulis kueri Oracle yang dapat mengembalikan hal-hal seperti nama pengukuran, nama kunci atau nilai kunci yang ditampilkan sebagai kotak pilih dropdown. 

 Misalnya, Anda dapat memiliki variabel yang berisi semua nilai untuk `hostname` kolom dalam tabel jika Anda menentukan kueri seperti ini dalam pengaturan *kueri* variabel template. 

```
SELECT "hostname" FROM host
```

 Kueri dapat mengembalikan beberapa kolom dan Grafana akan secara otomatis membuat daftar dari mereka. Misalnya, query berikut akan mengembalikan daftar dengan nilai-nilai dari `hostname` dan`hostname2`. 

```
SELECT "host.hostname", "other_host.hostname2" FROM host JOIN other_host ON host.city = other_host.city
```

 Untuk menggunakan makro yang bergantung pada rentang waktu seperti `$__timeFilter("time_column")` dalam kueri Anda, mode penyegaran variabel template perlu diatur ke *On Time Range Change*. 

```
SELECT "event_name" FROM event_log WHERE $__timeFilter("time_column")
```

 Pilihan lain adalah kueri yang dapat membuat key/value variabel. Query harus mengembalikan dua kolom yang diberi nama `__text` dan`__value`. Nilai `__text` kolom harus unik (jika tidak unik maka nilai pertama digunakan). Opsi dalam daftar dropdown akan memiliki teks dan nilai yang memungkinkan Anda memiliki nama ramah sebagai teks dan id sebagai nilainya. Contoh kode berikut menunjukkan query dengan `hostname` sebagai teks dan `id` sebagai nilai. 

```
SELECT "hostname" AS __text, "id" AS __value FROM host
```

 Anda juga dapat membuat variabel bersarang. Misalnya, jika Anda memiliki variabel lain bernama`region`. Kemudian Anda dapat meminta variabel host hanya menampilkan host dari wilayah yang dipilih saat ini dengan kueri seperti ini (jika `region` adalah variabel multi-nilai maka gunakan operator `IN` perbandingan daripada `=` untuk mencocokkan dengan beberapa nilai). 

```
SELECT "hostname" FROM host WHERE region IN('$region')
```

#### Menggunakan variabel dalam kueri
<a name="using-variables-in-queries-1"></a>

 Nilai variabel template hanya dikutip ketika variabel template adalah`multi-value`. 

 Jika variabel adalah variabel multi-nilai maka gunakan operator `IN` perbandingan daripada `=` untuk mencocokkan dengan beberapa nilai. 

 Ada dua sintaks: 

 `$<varname>`Contoh dengan variabel template bernama`hostname`: 

```
SELECT
  "atimestamp" as time,
  "aint" as value
FROM table
WHERE $__timeFilter("atimestamp") AND "hostname" IN('$hostname')
ORDER BY "atimestamp" ASC
```

 `[[varname]]`Contoh dengan variabel template bernama`hostname`: 

```
SELECT
  "atimestamp" as time,
  "aint" as value
FROM table
WHERE $__timeFilter("atimestamp") AND "hostname" IN('[[hostname]]')
ORDER BY atimestamp ASC
```