Oracle

Oracle Change ManagementOracle Change Management

Oracle'ın en sinsi tarafı, betiğin yarısının geri alınamaz olmasıdır. DDL çalıştığı anda bekleyen değişiklikleri de kalıcı yapar. Ürün bu tuzağı kaydetmeden önce yakalar. The nastiest thing about Oracle is that half a script can become irreversible. The moment a DDL statement runs, it also commits whatever was pending. The product catches that trap before the request is even saved.

AtomiklikAtomicity

Örtülü COMMIT sorunuThe implicit commit problem

Sorun nedirWhat the problem is

Oracle'da DDL, GRANT, REVOKE ve TRUNCATE gibi ifadeler kendilerinden önceki bekleyen değişiklikleri örtülü olarak kalıcı yapar. Bir betikte önce veri güncellemesi, sonra tablo değişikliği varsa, ikincisi hata verse bile birincisi geri alınamaz.In Oracle, statements such as DDL, GRANT, REVOKE and TRUNCATE implicitly commit whatever was pending before them. If a script updates data and then alters a table, the update cannot be rolled back even when the alter fails.

Ürün ne yapıyorWhat the product does

İki ayrı kural bu dizilimi ayrıştırma sırasında tespit eder: veri değişikliğinden sonra örtülü COMMIT üreten bir ifade gelmesi (kurulumda kaydı engeller) ve aynı betikte DDL ile DML'in karışması (uyarı). Betik metninden görülemeyenler için çalıştırma sırasında da izleme yapılır: ürün her PL/SQL bloğundan önce ve sonra Oracle'ın transaction kimliğini okur. Bir yordamın içindeki COMMIT ya da dinamik SQL bir veri değişikliğini kalıcı yaptıktan sonra hata gelirse talep tekrar çalıştırılmaz, uzlaştırmaya alınır.Two separate rules detect this ordering during parsing: a statement that causes an implicit commit appearing after a data change (blocks the save by default), and DDL mixed with DML in the same script (a warning). For what cannot be seen in the script text, execution is tracked too: the product reads Oracle's transaction id before and after every PL/SQL block. If an error comes after a COMMIT inside a procedure or dynamic SQL has made a data change permanent, the request is not executed again and moves to reconciliation.

Kısmi başarı bir durumdur, kaza değil. Oracle tarafında bir çalıştırma yarıda kalabilir. Ürün bunu ayrı bir durum olarak tanır: çalıştırma sırasında düşen bir talep için geri alma betiği üretilmesine ve çalıştırılmasına izin verilir, çünkü geri alınacak kısmi bir değişiklik gerçekten vardır. Partial success is a state, not an accident. On Oracle an execution can stop halfway. The product treats that as its own state: for a request that failed during execution, generating and running a rollback script is allowed, because there really is a partial change to undo.

Oracle tarafında ne yapılıyorWhat happens on the Oracle side

AST tabanlı ayrıştırmaAST based parsing

Oracle betikleri bir dilbilgisi çözümleyicisiyle sözdizimi ağacına dönüştürülür. Kurallar bu ağaç üzerinde çalışır; anonim bloklar, paket gövdeleri ve iç içe yapılar doğru sınıflandırılır. Ağaç kurulamayan yapılarda analiz metin eşleşmesine düşer. DDL, DCL ya da TRUNCATE içeren talep Oracle'da denenemez, çünkü bu ifadeler örtülü COMMIT yapar ve denemenin sonundaki geri alma onları geri almaz.Oracle scripts are turned into a syntax tree by a grammar analyser. Rules run on that tree, so anonymous blocks, package bodies and nested structures are classified correctly. For constructs that cannot be turned into a tree, analysis falls back to text matching. A request containing DDL, DCL or TRUNCATE cannot be tried on Oracle, because these statements commit implicitly and the rollback at the end of the trial would not undo them.

Geri alma üretimiRollback generation

Ürün betikten geri alma betiği üretebilir. Oracle tarafında üretilen betik tekrar çalıştırılabilir olacak şekilde kurgulanır ve tamamı çalıştırılır; kısmi atlama yapılmaz.The product can generate a rollback script. On Oracle the generated script is written to be safely repeatable and is run in full; no partial skipping is applied.

Sunucu bazlı bayraklarPer server flags

Bir sunucu için geri alma betiği zorunlu tutulabilir ve otomatik geri alma üretimi açılabilir. Bu ayarlar sunucu tanımında durur, kurum genelinde tek bir kurala mahkum değildir.A rollback script can be made mandatory for a server, and automatic rollback generation can be enabled. These settings live on the server definition rather than a single organisation wide rule.

Ortak kural setiShared rule set

Kritik nesne koruması, WHERE içermeyen veri değişikliği, yetki değişikliği ve isimlendirme kuralları Oracle'da da aynı kural setinden gelir. Bir kuralın hangi veritabanı tiplerinde geçerli olduğu tanımlıdır.Critical object protection, data changes without a WHERE clause, permission changes and naming rules come from the same rule set on Oracle too. Each rule declares which database types it applies to.

Kapsam notuScope note

Oracle bu üründe yönetilen hedef veritabanı olarak desteklenir: betikler Oracle dilbilgisiyle çözümlenir, Oracle sunucularında çalıştırılır ve nesne tanımları oradan okunur.

Oracle is supported here as a managed target database: scripts are parsed with Oracle grammar, executed on Oracle servers and object definitions are read from them.

Ürünün kendi kayıtlarını tuttuğu veritabanı ise SQL Server üzerinde çalışır. Yani Oracle ortamlarınızı yönetmek için SQL Server 2022 ya da üstünde küçük bir kayıt veritabanına ihtiyaç duyulur.

The database where the product keeps its own records runs on SQL Server. In other words, managing your Oracle estate requires a small record database on SQL Server 2022 or later.

EkranlarScreens

Talep listesi ekranı: durum, risk bandı ve hedef sunucular
Talep listesiRequest list Durum, band ve hedef sunucular bir arada. Status, band and target servers together.
Sunucu yönetimi ekranı: veritabanı tipi, ortam ve geri alma bayrakları
Sunucu tanımıServer definition Veritabanı tipi ve geri alma bayrakları burada. Database type and rollback flags live here.
Değişiklik talebi ekranı: betik ve atomiklik uyarıları
Betik ve uyarılarScript and warnings Atomiklik uyarıları kayıttan önce görünür. Atomicity warnings appear before the save.