OCP(D8C)------VPD与国际化

20180530  am


VPD就是介于用户SQL语句和实际执行对象之间的介质层。用户或者应用程序发出的SQL语句在传入到DBMS执行之前,会自动被拦截并且进行额外处理。处理的结果往往反映为在语句where条件中添加特殊的条件式。

创建vpd依赖函数

create table t as select * from dba_objects;

create or replace function f_limit_access

(

vc_schema varchar2,

vc_object varchar2

) return varchar2

as

vc_userid varchar2(100);

begin

select SYS_CONTEXT('USERENV','SESSION_USER')

into vc_userid

from dual;

return 'owner='''||vc_userid||'''';

end;

/

使用dbms_rls包添加vpd策略

exec dbms_rls.add_policy(object_schema => 'VPD',object_name => 'T',policy_name => 'VPD_TEST',function_schema => 'VPD',policy_function => 'F_LIMIT_ACCESS');

查询已添加的vpd策略

select policy_name, SEL, INS, UPD, DEL, IDX, CHK_OPTION, ENABLE from user_policies;

查询t表,只能查询到owner为登录用户的记录。使用autotrace可以发现其实就是在where条件中增加了函数返回的条件

删除vpd策略

exec dbms_rls.drop_policy('VPD','T','VPD_TEST');



pm

调度程序体系结构:

使用dbms_scheduler包来管理调度程序

dba_scheduler_jobs查询所有调度程序作业

cjq0后台进程调度作业执行

job_queue_processes限制调度作业的最大数,设置为0将不会运行调度程序

需要角色SCHEDULER_ADMIN

调度程序可以是存储过程,也可以是shell脚本和操作系统命令

dbms_scheduler.create_job创建作业

dbms_scheduler.create_program创建程序 

dbms_scheduler.create_schedule创建时间表

dbms_scheduler.create_job_class创建作业类

dbms_scheduler.create_window创建窗口

创建一个作业:

create table times(time1 date);

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

begin

dbms_scheduler.create_job(

job_name=>'savedate',

job_type=>'plsql_block',

job_action=>'insert into times values(sysdate);',

start_date=>sysdate,

repeat_interval=>'freq=minutely;interval=1',

enabled=>true,

auto_drop=>false);

 end;

 /

exec dbms_scheduler.disable('savedate');

exec dbms_scheduler.drop_job('savedate');

 

create table test(cnt number);

create or replace procedure mypro as

begin

insert into test values(1);

commit;

end mypro;

/

begin

dbms_scheduler.create_job(

job_name=>'insertnum',

job_type=>'stored_procedure',

job_action=>'mypro',

start_date=>sysdate,

repeat_interval=>'freq=minutely;interval=1',

enabled=>true,

auto_drop=>false);

 end;

 /

 

全球化功能设置

五个全球化功能设置级别(从低到高)

数据库,实例,客户端环境,会话,语句

数据字典:select * from nls_database_parameters where parameter='NLS_CHARACTERSET';

相关参数:show parameter nls

修改显示语言

设置操作系统环境变量

echo $NLS_LANG

export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

alter session set nls_date_format='YYYY-MON-DD';

alter session set nls_date_language='SIMPLIFIED CHINESE';

如果要修改字符集,在修改之前使用csscan扫描数据,获取可能存在问题的报告

以sysdba运行csminst.sql

cd $ORACLE_HOME/rdbms/admin

@csminst.sql

csscan system/oracle full=y tochar=zhs16gbk

如果要修改字符集,目标数据库必须是原数据库的超集

修改字符集需要将数据库启动到mount模式

shutdown immediate;

startup mount;

ALTER SYSTEM ENABLE RESTRICTED SESSION; 

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 

ALTER SYSTEM SET AQ_TM_PROCESSES=0; 

alter database open;

ALTER DATABASE CHARACTER SET  [INTERNAL_USE] al32utf8;

shutdown immediate;

!注意将参数修改回去


ALTER SYSTEM SET JOB_QUEUE_PROCESSES=1000; 


 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值