分类 IT运维 下的文章

Oracle RHP

转载:http://atoracle.cn/index.php?m=Article&a=show&id=371

随着IT信息化的发展。现在数据中心的规模越来越大,对管理员的要求也越来越高。同时,用户希望快速访问始终在线的服务,因此对于企业来说,部署和维护必须高效且对业务运行无干扰。为了跟上步伐,必须减少运维复杂性和手动参与的步骤。Oracle RHP (Rapid Home Provisioning) 的解决方案标准化、简化了软件分发和管理。自动化和高效率是她的特点,她最小化了对大规模部署的影响。

Rapid Home Provisioning (RHP) 代表了一种标准的方法,以统一的方式,在软件基础设施的所有体系结构层 (Oracle Database和其他第三方定制软件) 上进行部署、补丁、升级、迁移等工作,尤其是Oracle集群、数据库的部署、升级、补丁、迁移,以及集群节点的伸缩等操作非常便捷。

转载:https://www.modb.pro/db/101569?xzs=
清理Oracle大表

1、查看表的大小

SQL>select owner,
       segment_name,
       segment_type,
       tablespace_name,
       round(bytes / 1024 / 1024 / 1024, 0) GB
  from dba_segments
 where segment_name='TEST';

OWNER   SEGMENT_NAME  SEGMENT_TYPE   TABLESPACE_NAME     GB
------- ------------  -------         ----------------- ----
SCOTT    TEST          TABLE             USERS           10

2、获取表的定义

set long 999
SQL>select dbms_metadata.get_ddl('TABLE',upper('&i_table_name'),upper('&i_owner')) from dual;

3、查看表的依赖关系

SQL>select * from user_dependencies t where t.referenced_name = 'TEST';

4、查看对象的状态:

SQL>select owner, object_name, object_type, status from dba_objects where object_name in ('TEST_PKG','TEST1_PKG');

5、将表重命名

SQL>alter table TEST rename to TEST_B;

6、根据抽取的表的定义,重建新表

7、查看失效的对象

SQL>select owner, object_name, object_type, status from dba_objects where object_name in ('TEST_PKG','TEST1_PKG')

8、重新编译对象:

SQL>select 'ALTER ' ||
       decode(object_type, 'PACKAGE BODY', 'PACKAGE', object_type) || ' ' ||
       owner || '.' || OBJECT_NAME ||
       decode(object_type,
              'PACKAGE BODY',
              ' COMPILE BODY ; ',
              'PACKAGE',
              ' COMPILE SPECIFICATION ; ',
              ' COMPILE; ') aa
  from dba_objects
 where status <> 'VALID'
   and dba_objects.owner in ('SCOTT')
   AND object_name in ('TEST_PKG','TEST1_PKG');

生成如下的编译脚本:执行编译脚本

ALTER PACKAGE SCOTT.TEST_PKG COMPILE BODY ; 
ALTER PACKAGE SCOTT.TEST1_PKG COMPILE BODY ; 

9、清理旧表:TEST_B

SQL>truncate table TEST_B reuse storage;

分批释放大小:

SQL>ALTER table TEST_B DEALLOCATE UNUSED KEEP 8G;
SQL>ALTER table TEST_B DEALLOCATE UNUSED KEEP 6G;
SQL>ALTER table TEST_B DEALLOCATE UNUSED KEEP 4G;
SQL>ALTER table TEST_B DEALLOCATE UNUSED KEEP 2G;
SQL>ALTER table TEST_B DEALLOCATE UNUSED KEEP 0G;

查看释放后的表的大小:

SQL>select owner,
       segment_name,
       segment_type,
       tablespace_name,
       round(bytes / 1024 / 1024 / 1024, 0) GB
  from dba_segments
 where segment_name='TEST_B';

10、删除旧表

SQL>drop table TEST_B purge;

程序写入数据库的时候,需要经历3个字符集
1、操作系统字符集
locale
2、数据库客户端字符集
SELECT Userenv('language') FROM dual;--客户端
修改:设置环境变量:nls_lang
3、数据库服务器字符集
SELECT * FROM Nls_Database_Parameters;--服务端

当我们的程序中发生乱码时,很有可能就是我们这三处的设置出现了问题,因此首先确认这三处的各自设置的是什么值。

NLS_LANG(客户端)与数据库服务器字符集不一致时,我们的SQL文插入数据,或者查询时就有可能发生乱码。

当两者一致还是乱码时,很有可能就是我们的系统的字符集不支持NLS_LANG所设置的字符集。

注意,当使用scrt或者xshell 时,需要设置软件的字符集和其他保持一致

通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。在locale环境中,有一组变量,代表国际化环境中的不同设置。

1、process不是越大越好。
一是process分配越大,占用的sga内存也会越多。平均150k一个会话数。
二是process越大,pga中保持空闲会话的内存也越多,linux平均一个会话5M,aix8M。

2、实验过程:
process=150
sys@ORCL 16:01:46> select * from v$sgainfo;

NAME BYTES RES


Fixed SGA Size 2253624 No
Redo Buffers 7393280 No
Buffer Cache Size 1174405120 Yes
Shared Pool Size 352321536 Yes
Large Pool Size 33554432 Yes
Java Pool Size 16777216 Yes
Streams Pool Size 0 Yes
Shared IO Pool Size 0 Yes
Granule Size 16777216 No
Maximum SGA Size 1586708480 No
Startup overhead in Shared Pool 91557192 No 87MB
Free SGA Memory Available 0

process=1500
sys@ORCL 24-AUG-21> select * from v$sgainfo;

NAME BYTES RES


Fixed SGA Size 2253624 No
Redo Buffers 7393280 No
Buffer Cache Size 1191182336 Yes
Shared Pool Size 335544320 Yes
Large Pool Size 33554432 Yes
Java Pool Size 16777216 Yes
Streams Pool Size 0 Yes
Shared IO Pool Size 0 Yes
Granule Size 16777216 No
Maximum SGA Size 1586708480 No
Startup overhead in Shared Pool 303860664 No 289MB
Free SGA Memory Available 0

sys@ORCL 15:58:38> select sum(pga_used_mem)/1024 total_used, sum(pga_used_mem)/count(1)/1024 used_avg, sum(pga_alloc_mem)/1024 total_alloc, sum(pga_alloc_mem)/count(1)/1024 alloc_avg from v$process;

TOTAL_USED USED_AVG TOTAL_ALLOC ALLOC_AVG


128314.369 4424.63342 150193.664 5179.09186
平均每个会话分配内存5179.09186 KB
平均每个会话使用内存4424.63342 KB