Saya tidak tahu tentang Delphi 2007, tapi saya melakukan hal yang sama dengan Delphi 7 dan Oracle 8.
Berikut adalah hal-hal yang saya lakukan:
- Setel TAdoDataSet.CursorLocation sesuai permintaan:
- clUseClient jika kueri mengambil catatan untuk GUI dan kueri relatif "sederhana" - tidak ada pengelompokan atau penjumlahan
- clUseServer jika kueri memiliki semacam agregasi (jumlah, pengelompokan, penghitungan)
- Setel TAdoDataSet.CursorType sesuai permintaan:
- ctForwardOnly untuk laporan di mana Anda tidak perlu menelusuri kembali kumpulan data - hanya berfungsi dengan clUseServer
- ctStatic untuk GUI. Ini hanya mode yang bekerja dengan clUseClient
- Setel TAdoDataSet.LockType sesuai permintaan:
- ltHanya Baca untuk setiap kumpulan data yang tidak digunakan untuk mengedit (kisi, laporan)
- ltOptimis ketika catatan diposting ke database segera setelah perubahan (misalnya pengguna mengedit data pada formulir)
- ltBatchOptimis ketika Anda mengubah sejumlah besar catatan. Ini untuk situasi di mana Anda mengambil sejumlah catatan, kemudian melakukan beberapa pemrosesan pada mereka dan kemudian mengirim pembaruan ke database dalam batch. Ini berfungsi paling baik jika dikombinasikan dengan clUseClient dan ctStatic.
- Dalam pengalaman saya, penyedia Microsoft OLEDB untuk Oracle bekerja lebih baik daripada penyedia Oracle OleDb. Anda harus menguji itu.
Sunting: Periksa komentar Fabricio tentang kemungkinan masalah gumpalan. - Ganti TAdoQUEry dengan TAdoDataSet . TAdoQuery dibuat untuk konversi aplikasi dari BDE ke ADO, tetapi rekomendasi Borland/Codegear adalah menggunakan TAdoDataSet
- Periksa kembali string koneksi Oracle untuk memastikan bahwa Anda tidak memiliki latensi jaringan. Berapa lama untuk terhubung ke Oracle? Berapa lama TnsPing?