关于Oracle12C rac DDL日志的测试验证

关于Oracle DDL日志的记录:

[oracle@DBA12C02 ddl]$ sqlplus / as sysdba

 

SQL*Plus: Release 12.1.0.2.0 Production on Mon Dec 15 10:19:03 2014

 

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Advanced Analytics and Real Application Testing options

 

1、在CDB层进行测试:

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    FALSE

SQL> host pwd

/oracle/app/db/diag/rdbms/cdb/CDB2/log/ddl

 

SQL> host ls

 

SQL> alter session set enable_ddl_logging=true;

 

Session altered.

 

SQL> create table guijian (id number,name varchar2(20));

 

Table created.

 

SQL> host ls

log.xml

 

SQL> host cat log.xml

 msg_id='opiexe:4383:2946163730' type='UNKNOWN' group='diag_adl'

 level='16' host_id='DBA12C02' host_addr='10.0.57.15'

 version='1'>

 create table guijian (id number,name varchar2(20))

 

 

SQL> insert into guijian values (1,'guijian');

 

1 row created.

 

SQL> commit;

 

Commit complete.

 

SQL> host cat log.xml

 msg_id='opiexe:4383:2946163730' type='UNKNOWN' group='diag_adl'

 level='16' host_id='DBA12C02' host_addr='10.0.57.15'

 version='1'>

 create table guijian (id number,name varchar2(20))

 

 

可以看到,在CDB层我们开启DDL控制日之后,在系统中有个log.xml的日志,该日志中仅仅日录了DDL操作的信息。对DML操作日志没有任何的记录。

2、在PDB层进行测试:

SQL> host rm -rf log.xml

 

SQL> host ls

 

SQL> alter system set enable_ddl_logging=false;

 

System altered.

 

SQL> alter session set container=pdba;

 

Session altered.

 

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging            boolean   FALSE

SQL> alter system set enable_ddl_logging=true;

 

System altered.

 

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging            boolean   TRUE

 

SQL> show con_name

 

CON_NAME

------------------------------

PDBA

SQL> host ls

      ----------在默认下开启参数设置,并不会立即出现日志。

SQL> create table guijian_ddl (id number,name varchar2(20));

 

Table created.

 

SQL> host ls

log.xml

 

SQL> host cat log.xml

 msg_id='kpdbLogDDL:18370:2946163730' type='UNKNOWN' group='diag_adl'

 level='16' host_id='DBA12C02' host_addr='10.0.57.15'

 version='1'>

 create table guijian_ddl (id number,name varchar2(20))

 

 

SQL> insert into guijian_ddl values (1,'guijian_ddl');

 

1 row created.

 

SQL> commit;

 

Commit complete.

 

SQL> host cat log.xml

 msg_id='kpdbLogDDL:18370:2946163730' type='UNKNOWN' group='diag_adl'

 level='16' host_id='DBA12C02' host_addr='10.0.57.15'

 version='1'>

 create table guijian_ddl (id number,name varchar2(20))

 

同样在PDB下开启参数设置后,DDLlog日志同样出现在了相应的位置。

3、在PDB下设置参数,检验CDBDDL操作影响:

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    TRUE

SQL> show con_name

 

CON_NAME

------------------------------

PDBA

SQL> conn /as sysdba

Connected.

SQL> show con_name

 

CON_NAME

------------------------------

CDB$ROOT

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    FALSE

SQL> create table ddl_guijian as select * from guijian where 1=2;

 

Table created.

 

SQL> host ls

log.xml

 

SQL> host cat log.xml

 msg_id='kpdbLogDDL:18370:2946163730' type='UNKNOWN' group='diag_adl'

 level='16' host_id='DBA12C02' host_addr='10.0.57.15'

 version='1'>

 create table guijian_ddl (id number,name varchar2(20))

 

 

从上面的测试可以看出,在PDB下设定DDL日志参数并不会影响CDB下的参数设定,这也很好理解。PDB属于CDB嘛。那么单个PDB的设定会不会影响所有的PDB呢,我们根据相关理论判断是不会影响其他PDB的,我们可做相关测试如下:

 

SQL> select name,open_mode from v$pdbs;

 

NAME                   OPEN_MODE

------------------------------ ----------

PDB$SEED               READ ONLY

PDBA                   READ WRITE

PDBB                   READ WRITE

 

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    FALSE

SQL> alter session set container=pdba;

 

Session altered.

 

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    TRUE

SQL> alter session set container=pdbb;

 

Session altered.

 

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    FALSE

 

从参数上判断是ok的,不会有影响。

SQL> create table guijian_ddl_pdbb (id number,name varchar2(20));

 

Table created.

 

SQL> host cat log.xml

 msg_id='kpdbLogDDL:18370:2946163730' type='UNKNOWN' group='diag_adl'

 level='16' host_id='DBA12C02' host_addr='10.0.57.15'

 version='1'>

 create table guijian_ddl (id number,name varchar2(20))

 

从上面日志结果可以看到,没有任何的影响。

4、CDB下的参数设定是否影响全部PDB:

SQL> alter session set container=pdba;

 

Session altered.

 

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    TRUE

SQL> alter session set enable_ddl_logging=false;

 

Session altered.

 

SQL> alter session set container=pdbb;

 

Session altered.

 

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    FALSE

SQL> conn / as sysdba

Connected.

SQL> show con_name

 

CON_NAME

------------------------------

CDB$ROOT

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    FALSE

SQL> alter system set enable_ddl_logging=true;

 

System altered.

 

SQL> alter session set container=pdba;

 

Session altered.

 

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    TRUE

SQL> alter session set container=pdbb;

 

Session altered.

 

SQL> show parameter ddl

 

NAME                     TYPE   VALUE

------------------------------------ ----------- ------------------------------

ddl_lock_timeout             integer    0

enable_ddl_logging           boolean    TRUE

从上面的测试结果看,的确CDB的参数设定属于全局性的,当然也可分别制定在哪个PDB中生效,若未指定,则表示在全部的PDB中生效。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28612416/viewspace-1368129/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28612416/viewspace-1368129/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值