I've heard that "in the database" sentence many times but never got it. PL/SQL is just another programming language VM that happens to have SQL types as native types, and syntax for SQL cursors.
Other than for triggers and possibly indexed deterministic functions (both of which are inessential/questionable), you don't want your code "in the database" due to it lacking basic capabilities such as unit testing.
https://thehelsinkideclaration.blogspot.co.at/2016/09/noplsq...
proves that with flame graphs for a simple workload done from the app server vs. implemented in PL/SQL.
To encapsulate business logic using PL/SQL, however, is crazy IMHO. Rather than coding your business logic in a mainstream language (with incomparably better staffing and tooling), you now have it in a proprietary niche language with awkward or even non-existent debugging.
Also, the relational model is (or should be) the unified access at this level IMHO, rather than some ad-hoc data access layer.
Actually it is way better than the open source alternatives, but maybe my likeness for Ada makes my opinion biased
- ASM
- DataGuard
- FlashBack Query
- RAC
- PL/SQL (the worst language ever but very useful for building packages inside database)
- Window Functions
- Transparent Data Encryption
- online reorg
- RMAN and online backup
Oracle as a company is terrible. But Oracle RDBMS is a mean machine. Do not underestimate it.