ocp原厂培训笔记(第十天)

scn_wrap.
scn_base


select current_scn from v$database;
察看当前数据库的scn值。
select timestamp_to_scn(sysdate) from dual;
察看时间片对应的scn值
select scn_to_timestamp(959044) from dual;

oracle
平均每5分钟同步表里的信息。 12*12*5
scn 增长,最先增长到 scn_base,
当scn增长到上限,则 scn_wrap自动增一。

select max(scn_bas) from smon_scn_time;
当前最大的scn数值。
select eimp_dp,scn_wrap*65536*65536+scan_base scn from smon_scn_time;

 

 


||||||||||||||||||||||||||
14章
task 任务:
传统 是 exp,imp
10g expdp,impdp
相比exp,imp,
expdp、impdp是一个任务。
任务都可以restart的。
(支持断点续传)

如何用job来创建schema.
job chains在 oracle10g里实现不了。(10g 里面 实现不了,是一个bug)
schedule 自动化任务,
月结,日结,备份,都可以用任务来进行调度。
对应的程序包 dbms_job.
when:什么时间点去执行。
what :要执行什么,

administration->scheduler jobs->create job
name job1,schema scott.
block


execute immediate 'alter index pk_index rebuild';  -- ddl 语句必须这么玩

schedule: repeat
自动做和不自动做


job=program+schedule+job attributes

创建program p460面
database schedule->program
schedul就是一个调度时间安排表,(可以调用program,program可是是一个sh脚本)

job 里面使用schedue,选择predefined schedue.

creating program->creating and using schedules->creating and running a job->monitor a job

准备ocm考试的时候,最好背大量的语句。

根据事件来触发调度:
当某个情况出线,将触发一个schedule( 这个可以查看14章的练习)

建立一个基于事件的job,
db_util_sntp
调度的时候,系统中也有些job。
job 开启了,成功了,失败了


veritas 使用的其实也是 schedule.
在某一天不需要做什么动作。(exclude)
包含某个月的某个日期。(include)
网上公开的设置schedule的办法(什么书)

job1,如果成功了,做job2,如果失败了做job3,如果job2 失败了就返回99,成功了返回0


定义job chain,定义步骤。
步骤定义完了,再定义规则,(满足条件才能执行规格),最后enable jobchain,开始一个chain. p478
name     conditon                    
rule1      1=1                       action
rule2   :step1.state="succeed"       start step1

拷贝ppt:挂接program+schedue.


创建job class
create job class
name:jobclass1
选择resoufce group 组。
可见job class主要就是设置资源组。

job里面,如何挂接 job class.
默认情况下是defualt jobclass.


window:
和schedule 非常相象。

plan 1(包含了 组一和组2的资源分配)
windows 在调度的时候,是受哪个resource plan的限制。
每个window 总是包含了:一个挂接的resouce plan,一个是挂接的schedule,你也可以设置自己的schedule。

job class,预定义的schedule 还是预定义的job.

 


整个job玩的流程。
job的优先级别,优先级别越高,调度的越快。
window 限制了时间窗,做不完就做不完。(for example 早上6点以前自动会停止,下一天晚上才会执行)

ORACLE  transparent Data Encryption:TDE
安全加密
使用加密钥匙

OWM:建立秘钥

调用owm:(oracle 钱包管理)
owm
调用oracle wallet manager
配置 sqlnet.ora 中间就可以包含这些内容了。

配置sqlnet.ora的方法:
  修改sqlnet.ora
ENCRYPTION_WALLET_LOCATION=
 (SOURCE=(METHOD=FILE)(METHOD_DATA=
 (DIRECTORY=/opt/oracle/product/10.2.0/db_1/)))

alter system set encription key identified by  ....;
alter system set encription key identified by zao123wsx;
alter system set encription wallet iedentfied by zao123wsx;
打开之后,再建立表,会出现加密的方式。
create table testt(id number,sal number encrypt,name varcha2(40) encrypt no salt);
(如果不选择no salt,必须要有随机串)
默认的加密算法AES 192


directory 下会出现这样一个文件  ewallet.pl2

 

 


 SYS 用户下,不能被加密,LONG 和 LOB 不能加密。
如果对索引列加密,必须加no  salt.

c/test/testt/

如果没打开wallete ,就不能看到加密的列。如果查询没有 加密的列,是可以找回来的。
拷贝的时候 是,(create table testf as select * from testc;)
这个testf是不会被加密的。

 

DBAI手册:加入老师的群。
 mkstore.

datapump的方法,有一个结果集,删除操作系统文件的时候,oracle仍然会去找。

reject limit unlimited: 导入的时候,把被拒绝的方法放一边,把没拒绝的拿进来。


rman 备份加密:
transparent 加密
password模式加密,restore的时候,必须要口令
dual mode:双重加密,既要带开wallet钱包,又加上口令来加密。


test:
transparent 加密
rman target /
RMAN>show all;
RMAN .CONFIGURE ENCRIPTION FOR DATABASE ON;

password 加密
set encription on identfied by password only
set decryption identfied by password {,password2,...,passwordn)

组合加密:
set encryption on identified by oracle;
RMAN>BACKUP FORMAT ‘/u01/app/oracle/%U.users' tablespace users;

 

test:

set encryption on identified by  oracle only;
backup format '/u01/...test/users.bak' tablespace  users;
rman > restore tablespace users;
这个时候就会报错了。
RMAN> set decryption identfied by oracle;
RMAN>restore tablespace users;
这样才能restore成功。

实验。


查看rman 支持的加密算法:
select * from v$RMAN_ENCRYPTION_ALGORITHMS;


VPD的作用是什么?
select * from emp;
某个人是10号部门。
限制某个人只看自己部门的。自动在select 后面加 where 条件。
这个就是 VPD。
(自动在访问的时候加一个谓语动词,这个在全库级别设置的,在行级别限制访问容量);
select  * from  abc;(执行时间超过 某个时间段,就不执行)(增加一个加密列,也可以)

强制增加某些限制来访问某些行,这个是可以通过列来指定。
1>谁最先访问,别人访问都只能这么访问。
2>根据users不同,访问的范围有所不同。

oracle 10g new feature里面可以查看1>,2>个属性。

策略类型可以是 index,
策略类型是谓语动词,最大 32K。

用列来控制访问的条件。
dbms_rls.add_policy :增加一个policy

test的过程
sql>desc customers;
sql>select account_mgr_id,count(*) from customers group by account_mgr_id;

 


sql>create context order_ctx using oe.orders_app_pkg; (创建上下文,利用这个package)
创建package
create or replace package oe.orders_app_pkg
IS
   procedure  show_app_context;
   procedure  set_app_context;
function   the_predicate
   (p_schema varchar2,p_name varchar2)
   return varchar2;
end varchar2;
end orders_app_pkg;


要注意的几个环节
生成,打开wallet钱包,
用rman 钱包。


oracle online evaluation
2185314
评估。


字符集的
oracle 下面安装oracle,选择american,字符集合又用成zh**k.
环境变量和字符集不匹配了。
需要修改nls_lang

面向全球支持的字符集:
多语言排序
拼音,比画,部首


ascci-7,单字节,
一般支持128个字符。(ascci-7)
8位码
支持256个字符
zhi16GBK 面向中国的双字节
utf8:面向全亚洲的(2个,3个,4个字节都可以代表一个汉字)
同样的汉字,为什么插入的个数不一样。
繁体字,4个字节(增补字符集)
utf8面向全亚洲的时候,可以用2,3,4代表字节。


AL32UTF8:用不同的宽度代表你的编码。

对于亚洲的字符,一般用3个字符代表,对于增补字符集合,一般用4个字节表示一个字符。
对于汉字来说,某些必须用到增补字符集。48
NLS_LANG:语言地域字符集

desc props$;
select name,values$ from props$ where name like '%CHARACTER%';
select name from  ,values from nls_database_parameters where parameter like '%CHARACTERSET%';
desc database_properties;
desc nls_database_parameters;

国际字符集 本地字符集的区别:
国际字符集是一个增补的过程。
设置的时候避免问题,

不要用props$来修改字符集。
我们只能用:
alter database set characterset 来修改字符集
从单字节改成双字节没有问题。
从双字节改成单字节会有问题。(internal used,不建议修改)


database 怎么修改,
block块size 怎么修改,直接修改blocksize.metalink里面有文档。
character set
nantional character set : union code
exp

选择字符集:
亚洲项目,utf8,兼容中日韩字符集。
数据库字符集和national 字符集
    对于national 字符集,必须设置为 union code.

   基于语言的行为:
   先把语言读进来,用环境变量覆盖初始化参数,session级别可以覆盖环境变量和数据库的方式。
   可以用排序选项(sql function)覆盖上面所有的。


   conn  / as sysdba
   show paramaeter sql_trace;
   alter session set sql_trace=true; 56

 设置正确的语言,地域,字符集。
  language 和地域相关的参数
  dd-mon-rr :千年之后 RR和 yy就没有区别了。
   在荷兰:  ,=小数点  小数点 =千位符


  alter session set NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
  p60面
  
  一般排序,用二进制
  还可以用拼音,笔画,部首排序

 设置  NLS_SORT PARAMETER: 可以修改查询级别,修改默认的一个排序规则。

SQL> ALTER SESSION SET NLS_SORT=BINARY;
Session altered.
SQL> SELECT fr_word
2 FROM words
3 ORDER BY fr_word;
FR_WORD
-------
gelez
gelé
gelée
gèle
SQL> SELECT fr_word
2 FROM words
3 ORDER BY NLSSORT(fr_word,'NLS_SORT=FRENCH_M');
FR_WORD
--------
gèle
gelé
gelée
gelez

NLS_SORT

_AI 不区分重音
_CI 不区分大小写。

 

Specify the linguistic name:
• Examples:
• Specify the sort action for WHERE clauses and
PL/SQL blocks:
• Useful for migrated databases
NLS_SORT = <NLS_sort_name>[_AI | _CI]
NLS_SORT = FRENCH_M_AI
NLS_SORT = XGERMAN_CI
NLS_COMP = BINARY | ANSI | LINGUISTIC


start with: 用一条命令把组织架构图搞出来。
p66

以排序规则设置索引

Linguistic Index Support
• Create an index on linguistically sorted values.
• Rapidly query data without having to specify
ORDER BY clause and NLSSORT:
• Set the NLS_SORT parameter to match the
linguistic definition that you want to use for the
linguistic sort when creating the index.
CREATE INDEX list_word ON list (NLSSORT(word, 'NLS_SORT=French_M'));
SELECT word FROM list;

 

clob->nclob 隐含转换 ,完全透明的。经常会发生在参数传递的过程中。

sqlloader
导入导出 一定要注意字符集。
在不同平台字符集之间导入导出一定要注意字符集是否匹配兼容。


如果字符集不一致,怎么做,需要修改NLS_LANG这个参数。
Globalization Support Features
• Language support
• Territory support
• Character set support
• Linguistic sorting
• Message support
• Date and time formats
• Numeric formats
• Monetary formats

 

关于字符集的测试推荐 盖国强的博客。
sqlplus 只支持中文,
isqlplus 会读取操作系统中间的语言,会给你显示正常的字符集合。


除了rman之外,还可以做导入导出备份。

中国电信不敢开归档。(为什么?因为归档开启后,arc文件生产太多,很快就会把磁盘空间耗尽)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值