Collect AWR snapshots at frequent intervals (say 15mins) for the time when performance is bad *and* for when performance is good.
Then generate some representative AWR reports and examine for differences, either manually, or check out the AWR diff facilities.
https://docs.oracle.com/database/121/TGDBA/compare_stats.htm#TGDBA272 In my experience, problems of the "it only happens at certain times" are typically:
1) expensive SQL's run at those certain times,
2) server load is at peak and resources are stretched,
3) both :-)
So as well as AWR, take a look at your server load - it might be max'd out.