TL;DR
Data-driven testing is when you create oracles based on data set with known characteristics. This post will explain what data set with known characteristics is. The post is aligned with the Black Box Software Testing Foundations course (BBST) designed by Rebecca Fiedler, Cem Kaner, and James Bach.
Data set is a collection of data. That data is usually stored in a database in the same table, where each information is stored in the table column. Known characteristics are when tester knows what output will program produce with the specific dataset.
An example of a data set with known characteristics that produce predictable application output is the ASCII character set. If you type characters from that list in the terminal, you will get output stated in the ASCII table. It could be visible or audible output (e.g., bell sound).
Opposite from the controlled data set would be to use live data from a production system that could be unpredictable.
Advantages
With data sets with known characteristics, the tester is in control. Data sets produce predictable output. That data set could be documented, so new testers could still know how to create it when the data set author leaves the project. With program new versions, the data set could produce not predictable, but still interesting results.
Disadvantages
Know data sets are disconnected from actual oracles. That means that oracle is not embedded in a known data set. When that data is not studied or understood by new testers (when the author leaves), we have Cargo Cult testing. Cargo Cult is when we do or use something, and we do not have a clue why we do it. This is usually inherited and never questioned.