如何将 Amazon Relational Database Service(Amazon RDS)Oracle 数据库实例配置为使用共享服务器?
简短描述
Oracle 用户可以使用专用或共享服务器进程连接到 RDS 数据库实例。使用共享服务器之前,请考虑以下事项:
- 使用共享服务器会产生 CPU 开销,这可能会导致性能问题。
- 使用共享服务器意味着 UGA 分配在一个大池内进行。请确保您的 SGA 内有足够的可用空间,可容纳共享服务器。可用空间不足会导致“大池空闲”错误显示在实例提醒日志和跟踪文件中。
- 使用共享服务器可能会导致更频繁的 SGA 内存动态重新分配,这可能会造成性能问题。
- 在数据库重启或故障转移期间,如果 DISPATCHERS 参数相对于连接吞吐量设置的不够高,则大幅增加应用程序连接可能会使调度程序不堪重负。
- 在共享服务器上运行批处理流程、长期运行的查询、重负载或长期运行的 DBA 任务可能会导致其他作业排列等候,继而可能会导致性能问题。对大型作业使用专用服务器。
有关 Oracle 数据库共享服务器和专用服务器架构的更多信息,请参阅了解共享服务器架构的 Oracle 文档。
解决方法
要平衡使用共享服务器的优势和限制:
- 对经常连接和断开连接并执行轻操作的大量 OLTP 会话使用共享服务器。
- 对长期运行的批量操作和创建索引等繁重管理任务使用专用服务器。
**注意:**以下示例是使用指定实例大小(db.r3.large 实例)启用共享服务器的基准。管理员应当应用根据其使用案例优化内存的参数组设置。有关更多信息,请参阅 Amazon RDS 上的 Oracle。
1. 修改自定义参数组,以将下列参数设置为最大允许值或满足您的使用案例的值:
dispatchers=(PROTOCOL=TCP)(DISPATCHERS=30)
max_dispatchers=30
2. 登录实例,然后查看主机大小的 SESSIONS 默认值。如果您不使用默认设置,则使用默认参数组测试实例:
SQL> show parameter sessions
2428
3. 将 SHARED_SERVERS 和 MAX_SHARED_SERVERS 设置为该值的 10%:
sessions=2428
shared_servers=243
max_shared_servers=243
4. 将 LARGE_POOL_SIZE 设置为等于 SHARED_SERVERS 值 * 1 MB(在此情况下,为 243 * 1048576 个字节)。
large_pool_size= 254803968
5. 查询 v$sgastat 以了解 large_pool_size“可用内存”,从而确保大池的大小适当。
SQL> select name, pool, bytes/1024/1024 megs from v$sgastat where name='free memory' and pool='large pool';
Name POOL Megs
-------------- ----------- -------
free memory large pool 243
6. 查看应用于正在运行的 Oracle 实例的参数组设置,然后从实例中运行以下 SQL 查询:
select name, value from v$parameter where name in ('processes', 'sessions', 'shared_servers', 'dispatchers', 'memory_target', 'memory_max_target', 'large_pool_size');
7. 从 Oracle 实例中运行以下 SQL 查询,以查看会话是否以共享方式连接:
SQL> select decode(server,'NONE','SHARED',server), count(*) from v$session
group by decode(server,'NONE','SHARED',server);
要启用专用服务器和共享服务器对相同 Oracle 实例的访问,请在以下示例中使用双 tnsnames.ora 条目:
# make the default shared
dbname =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbname.endpoint.amazonaws.com)(PORT=1521))
)
(CONNECT_DATA=
(SID=dbname)
)
)
# use the dedicated one for batch processes and dba tasks such as creating indexes
dbname_d=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbname.endpoint.amazonaws.com)(PORT=1521))
)
(CONNECT_DATA=
(SID=dbname)
(SERVER=DEDICATED)
)
)
相关信息
tnsnames.ora 文件中本地命名参数
使用数据库参数组
查看数据库参数组的参数值
重启数据库实例