Swap utilization is high on Oracle server
Oracle database is a database server and not an operating system, it does not know about virtual memory management and swap usage.
First identify the processes using swap to confirm that it is related to the database:

https://stackoverflow.com/questions/479953/how-to-find-out-which-processes-are-using-swap-space-in-linux

Some common pitfalls related to memory management and swapping when using Oracle database on Linux:


Even senior DBAs often treat pga_aggregate_target as a limit, but it is not a limit, it is a target value. PGA can grow way behind that value, and the value of this parameter should not be used when calculating memory requirements, because it may result in undersized memory amount. You can check the maximum PGA size since instance startup from V$PGASTAT. You may see the maximum PGA allocated to be multiple times of pga_aggregate_target. This requires further investigation in the database.
The value of filesystemio_options parameter is by default none. This means the database does not use direct I/O and because of that I/O operations are cached in the filesystem cache (when using a regular filesystem and not ASM). This coupled with a default high value of vm.swappiness often resulted unnecessarily high memory usage and swapping. filesystemio_options should be set to setall, and it is recommended to decrease vm.swappinness from the default 60/30 value (RHEL6/RHEL7).
It is common knowledge that Oracle databases allocate memory for PGA and SGA. Still most people overlook the fact that database server processes also allocate some memory that is not part of the SGA (obviously, it is not shared memory) and also not part of the PGA (required for e.g. online patching). If you have several hundred or thousands of database processes, these small per process memory allocations may add up to a significant amount of memory. Queuing requests and connection pooling should be implemented in the application server layer, not in the database layer. The number of database processes should be kept relatively low.
Linux keeps track of shared memory usage for each database process seperately. With a large number of processes and a large SGA, this accounting information may take even more memory than the PGA+SGA together. You can check the amount of memory used for this with grep PageTables /proc/meminfo. If you see a significant amount of memory here (like several GBs), that memory is kind of wasted memory, and you should configure your operating system and database to use HugePages. With HugePages configured, typically the database uses 2 MB memory pages instead of 4 KB ones and this 500-fold increase in page size results in 500 times less memory required for accounting shared memory.