vivo x20 预计多少钱x20手机qq上能计步吗?

o小白 的BLOG
用户名:o小白
文章数:36
访问量:54671
注册日期:
阅读量:5863
阅读量:12276
阅读量:424307
阅读量:1112768
[匿名]51cto游客:
51CTO推荐博文
Logminer的最终章,START_LOGMNR的参数的介绍。
先说一下参数如何使用:dbms_logmnr.start_logmnr(
&&&&&&& dictfilename =& '/home/oracle/logminer/logminer_dict.ora',options =& dbms_logmnr.PRINT_PRETTY_SQL+dbms_logmnr.COMMITTED_DATA_ONLY+...);
类似于这样来指定多个参数。
通常情况下我们在跑START_LOGMNR这个子程序时不选定任何的选项,但是事实上START_LOGMNR提供了很多选项帮助我们做一些分析:
COMMITTED_DATA_ONLY:字面意思,只有提交了的数据才会在Logminer中显示,简单测试了一下:
SQL&&insert&into&logmnr_test&values&(1);&&1&row&created.&&SQL&&rollback;&&Rollback&complete.
SQL&&@logminer&'/home/oracle/archive/1_25_.dbf'&old&&&5:&&&&&&&&&logfilename&=&&'&1'&);&new&&&5:&&&&&&&&&logfilename&=&&'/home/oracle/archive/1_25_.dbf'&);&&PL/SQL&procedure&successfully&completed.&&SQL&&select&sql_redo&from&v$logmnr_contents&where&table_name='LOGMNR_TEST';&&SQL_REDO&&insert&into&&SYS&.&LOGMNR_TEST&(&ID&)&values&('1');&delete&from&&SYS&.&LOGMNR_TEST&&where&ROWID&=&'AAAR9DAABAAAU3JAAB';&&SQL&&@logminertmp&'/home/oracle/archive/1_25_.dbf'&old&&&5:&&&&&&&&&logfilename&=&&'&1'&);&new&&&5:&&&&&&&&&logfilename&=&&'/home/oracle/archive/1_25_.dbf'&);&&PL/SQL&procedure&successfully&completed.&&SQL&&select&sql_redo&from&v$logmnr_contents&where&table_name='LOGMNR_TEST';&&no&rows&selected&&SQL&&&
在原来的脚本logminer.sql中添加了options =& mitted_data_only成为logminertmp.sql,就可以看到rollback的数据就不再显示了。
SKIP_CORRUPTION:跳过在redo log中损坏的部分,继续显示其他可以挖到的日志部分(不好测试,不测试了)。
DDL_DICT_TRACKING:重点想要说明的一个很实用的参数,我曾经把自己的脚本贴出来过,可以看到每次都重建了一下数据字典文件,为什么要这样做呢?假设我们不这样做,当我们创建一个表,然后对其进行一些dml操作,这时再logminer的时候就只有ddl的内容,dml内容却丢失了,我们再次更改logminertmp中的代码,实验如下:
SQL&&create&table&logmnr_new(id&number);&&Table&created.&&SQL&&insert&into&logmnr_new&values&(1);&&1&row&created.&&SQL&&commit;&&Commit&complete.&&SQL&&alter&system&archive&log&current;&&System&altered.&&SQL&&@logminertmp&'/home/oracle/archive/1_26_.dbf'&old&&&4:&&&&&&&&&logfilename&=&&'&1'&);&new&&&4:&&&&&&&&&logfilename&=&&'/home/oracle/archive/1_26_.dbf'&);&&PL/SQL&procedure&successfully&completed.&&SQL&&select&sql_redo&from&v$logmnr_contents&where&table_name='LOGMNR_NEW';&&SQL_REDO&&create&table&logmnr_new(id&number);
果然,我们看不到insert的那句语句了,那我们使用DDL_DICT_TRACKING这个参数试试。
SQL&&@logminertmp&'/home/oracle/archive/1_26_.dbf'&old&&&4:&&&&&&&&&logfilename&=&&'&1'&);&new&&&4:&&&&&&&&&logfilename&=&&'/home/oracle/archive/1_26_.dbf'&);&&PL/SQL&procedure&successfully&completed.&&SQL&&select&sql_redo&from&v$logmnr_contents&where&table_name='LOGMNR_NEW';&&SQL_REDO&&create&table&logmnr_new(id&number);&insert&into&&SYS&.&LOGMNR_NEW&(&ID&)&values&('1');&
可以明显感觉到跑脚本的时间变长了,但是结果却完整了。DML丢失的问题通过每次重建数据字典文件和指定该参数来解决。(o小白猜其实这个参数就是重建了数据字典文件)
DICT_FROM_ONLINE_CATALOG:使用数据库的数据字典文件而不使用Logminer指定的数据字典文件,使用这个参数就不能使用DDL_DICT_TRACKING这个参数了。
DICT_FROM_REDO_LOGS:在重做日志中找到数据字典文件,就像之前说过的,我们可以指定数据字典文件是普通文件还是重做日志文件。
NO_SQL_DELIMITER:去除sql分界符,那可以防止直接拿里面的数据去执行,而是方便用cursor之类的方法把逻辑整合在一起之后再使用。
NO_ROWID_IN_STMT:也是可以从字面理解的,在数据字典文件里不存ROWID了,而是存其他的信息,详细请看supplemental logging那章,那使用这个参数也请务必保证supplemental logging开启。
PRINT_PRETTY_SQL:使用了以后呢,oracle会把当前的Logminer的显示做些改变,使其对使用者更友好,但是这些sql语句就无法执行了。例如:
SQL&&select&sql_redo&from&v$logmnr_contents&where&table_name='LOGMNR_TEST';&&SQL_REDO&&insert&into&&SYS&.&LOGMNR_TEST&&&values&&&&&&ID&&=&1;&&delete&from&&SYS&.&LOGMNR_TEST&&&where&&&&&ROWID&=&'AAAR9DAABAAAU3JAAB';&
CONTINUOUS_MINE:很智能的一直参数,你只需要指定一个开始scn号/时间,或者开始Logminer的一个日志,指定了以后oracle会自动添加所需的在线的/归档的日志。如果使用这个参数必须保证Logminer所在库跟所分析的库是同一个,且必须开启归档模式。
Logminer到这里就结束了,o小白觉得也算是比较完整对Logminer做了一个交代,一直强调的是工具总是很强大,而如何发挥工具的作用,就看dba是不是强大了。本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)查看: 12639|回复: 21
谁能说说PURGE recyclebin是什么语句?
论坛徽章:7
今天操作中发现流复制环境中,drop table xx 后,再PURGE recyclebin,只有主库是正常执行了后一句了,而目标库上没有执行这句话,
由此想到了PURGE&&recyclebin到底是什么语句?
我的流配置是include_dml =& true,& &include_ddl =& true,
论坛徽章:27
清理回收站
论坛徽章:7
LS,我是说DDL,DML,还是什么我不知道的语句类型?
论坛徽章:85
应该算是ddl吧
论坛徽章:14
应该是DDL吧,
不知道你做流复制的时候是参照什么的?如果是表级的,那这个purge recyclebin参不并是作用在这个表上面的,所以并不能应用到从库中去,
你可做了下库级的,看能不能起作用(我没有实验过)
论坛徽章:30
ddl 语句!
做以下测试:
Table dropped.
SQL& create table t(id int);
Table created.
SQL& insert into t values(100);
1 row created.
SQL& select *
& && &&&ID
----------
& && & 100
SQL& PURGE&&
Recyclebin purged.
这个时候退出! 注意这个是并没有commit 如果它是DML语句的话那么这个“事物”会回滚, 如果是DDL语句那么会“提交”
SQL& select *
& && &&&ID
----------
& && & 100
可见数据已经提交!
至于stream 为什么没有捕捉这个DDL语句,
那是因为STREAM 捕捉DDL语句也是有限制的
论坛徽章:7
原帖由 Charele 于
15:27 发表
应该是DDL吧,
不知道你做流复制的时候是参照什么的?如果是表级的,那这个purge recyclebin参不并是作用在这个表上面的,所以并不能应用到从库中去,
你可做了下库级的,看能不能起作用(我没有实验过)
我做的是SCHEMA级的,应该和库级的是一个道理,不具体到某个表,DML不像,更像是DDL,确实
论坛徽章:7
原帖由 joyw 于
15:38 发表
ddl 语句!
做以下测试:
Table dropped.
SQL& create table t(id int);
Table created.
SQL& insert into t values(100);
1 row created.
SQL& select *
& && &&&ID
----------
& && & 100
SQL& PURGE&&
Recyclebin purged.
这个时候退出! 注意这个是并没有commit 如果它是DML语句的话那么这个“事物”会回滚, 如果是DDL语句那么会“提交”
SQL& select *
& && &&&ID
----------
& && & 100
可见数据已经提交!
至于stream 为什么没有捕捉这个DDL语句,
那是因为STREAM 捕捉DDL语句也是有限制的
谢谢,STREAM捕捉DDL语句有所限制,这个解释应该是对的,
但是上面有句话说的好像不是很对,SQLPLUS中DML语句不显式commit的话,退出后会自动提交,而不是回滚
SQL& show autocommit
autocommit OFF
另外还有上面这个参数,缺省是OFF,如果是ON的话,语句执行完就已经提交了。
论坛徽章:15
The DDL statements are:
ALTER ... (All statements beginning with ALTER)
ASSOCIATE STATISTICS
CREATE ... (All statements beginning with CREATE)
DISASSOCIATE STATISTICS
DROP ... (All statements beginning with DROP)
FLASHBACK ... (All statements beginning with FLASHBACK)
里面有Purge
论坛徽章:30
原帖由 wilson2006 于
16:05 发表
谢谢,STREAM捕捉DDL语句有所限制,这个解释应该是对的,
但是上面有句话说的好像不是很对,SQLPLUS中DML语句不显式commit的话,退出后会自动提交,而不是回滚
SQL& show autocommit
autocommit OFF
另外还有上面这个参数,缺省是OFF,如果是ON的话,语句执行完就已经提交了。
sqlplus 在正常情况下退出是commit&&的, 我是说你用关闭程序的方法“非法”退出程序就不commit 了, 是rollback!
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号Oracle(31)
一、概述:DML (Data Manipulation Language 数据操作语言)
insert 将记录插入到数据库
update 修改数据库的记录
delete 删除数据库的记录
设置回滚点
rollback& &回滚
当执行DML命令如果没有提交,将不会被其他会话看到。除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动发出commit命令,使未提交的DML命令提交。&& &
二、 && sql语句的分类:
&& &&&& DQL: select查询语句
&& &&& &DML:数据操作语言
&& &&& &DDL:数据定义语言
&& &&& &DCL:事务控制语句
三、对DML语言: insert update delete&& & 的测试
&&& (一)测试使用的表: 没有主外键关联 &&& create table t_user(
id number,
name varchar2(50) constraint user_name_nn not null,
email varchar2(50),
gender char(1),
age number,
birthday date,
constraint user_id_pk primary key(id),
constraint user_email_un unique(email),
constraint user_gender_ck check(gender in('f','m'))
); &&& drop table t_&
&&& 3.1.1 insert语句:&
&& &&& &向表中插入数据:
&& &&& &//默认是向表中的每一个列中【依次】插入数据 && &&&
insert into t_user values(1,'tom','abc','f',20,'11-8月-98');
&& &&&& 注:违反任意一种约束那么就插入数据失败
&& &&& &//也可以指明向表中的哪些列插入数据
&& &&& &//注意:可以任意交换下面列名的位置,只有values语句中的值也对应交换即可 && &&&&
insert into t_user(id,name,email,gender,age,birthday) values(2,'tom','abc1','f',20,'11-8月-98');
&& &&& &//列的值可以是null的话,那么也在插入的时候不指定这个列
&& &&& &//注意:unique约束和check约束的值,都可以为null
&& &&& &//注意:主键约束和非空约束的值,都不可以为null && &&
insert into t_user(id,name,email,gender) values(3,'tom','abc3','f');
insert into t_user(id,name,email) values(4,'tom','abc31');
insert into t_user(id,name) values(5,'tom');&& &&&& //使用运行时参数设置需要输入表中的值 && &&&
insert into t_user(id,name) values(&id,'&name');&& &&&& //把查询的结果 插入到表中
&& &&& &//前提是查询的列的顺序和要插入表中列的顺序是一致的,这个一致指的的是数据类型是一种的。 &
insert into t_user(id,name,birthday)
select id,last_name,start_date from s_
如上图示从s_emp表中查询出结果,然后插入到t_user表中
注意:在使用时避免主键重复问题&& & && &
&& 3.1.2 update语句:
&& &&& &//修改表中所有数据的age值为20岁 && &&&&
update t_user set age=20;        
&& &&& &//修改表中所有数据的age和gender的值 && &&&&
update t_user set age=25,gender='m';        
&& &&& &//修改表中id小于10数据的age和gender的值为null && &&&&
update t_user
age=null,gender=null
where id&10;                 
&& &&& &//修改id为18的用户的名字为zhangsan && &&&
update t_user set name='zhangsan' where id=18;     
&& 3.1.3 delete语句
&& &&& &//删除表中id大于20的用户信息 && &&&&
delete from t_user where id&20;        
&& &&& &//删除名字为张三的用户信息 && &&&&
delete from t_user where name='zhangsan';        
&& &&& &//删除表中所有的数据 && &&&&
delete from t_
(二)& 测试使用的表: 主外键关联 &&&
create table t_customer(
id number,
name varchar2(20) constraint customer_name_nn not null,
constraint customer_id_pk primary key(id)
create table t_order(
id number,
price number,
customer_id number,
constraint order_id_pk primary key(id),
constraint order_cid_fk foreign key(customer_id) references t_customer(id)
);    
&& &drop table t_
&& &drop table t_& && &
&& 3.2.1 insert语句:
&& &&& &//t_customer表中插入数据 && &&&
insert into t_customer(id,name) values(1,'tom1');
insert into t_customer(id,name) values(2,'tom2');
insert into t_customer(id,name) values(3,'tom3');&& &&&& //t_order表中插入数据
&& &&& &//customer_id外键列的值必须是t_customer表中出现过的id值 && &&&
insert into t_order(id,price,customer_id) values(1,1000,1);
insert into t_order(id,price,customer_id) values(2,2000,2); 
&& &&& &//下面语句插入出差,因为6这个值并没有在t_customer表中id列出现过的&
insert into t_order(id,price,customer_id) values(3,3000,6); 
&& &&& &//t_order表中插入数据
&& &&& &//默认情况下,外键列上的值是可以为空的 && &&&
insert into t_order(id,price,customer_id) values(3,3000,null);
insert into t_order(id,price) values(4,4000);&& &&&& 注意:如果在外键列上加一个非空约束,那么这个外键列的值就不能为null了(可以给一个列上添加多种约束,使用空格隔开即可) &
&& &&& &//t_order表中插入数据
&& &&& &//默认情况下,外键列上的值是可以重复的 && &&&&
insert into t_order(id,price,customer_id) values(5,5000,1);
insert into t_order(id,price,customer_id) values(6,6000,1);&& &&&& 注意:如果在外键列上加一个唯一约束,那么这个外键列的值就不能重复了(可以给一个列上添加多种约束) &&& &
&& 3.2.2 update语句:
&& &&& &把俩个测试表删除了重新创建,然后向表中插入一些数据
&& &&& &//t_customer表中插入数据
&& &&& &insert into t_customer(id,name) values(1,'tom1');
&& &&& &insert into t_customer(id,name) values(2,'tom2');
&& &&& &insert into t_customer(id,name) values(3,'tom3');
&& &&& &//t_order表中插入数据
&& &&& &insert into t_order(id,price,customer_id) values(1,1000,1);
&& &&& &insert into t_order(id,price,customer_id) values(2,2000,2); && &&& &
&& &&& &//把t_order表中id=1的数据的customer_id列修改为3 && &&&&
update t_order set customer_id = 3 where id = 1;
&& &&& &//把t_order表中id=1的数据的customer_id列修改为null && &&&&
update t_order set customer_id = null where id = 1;    
&& &&& &//把t_order表中id=1的数据的customer_id列修改为20
&& &&& &//sql执行出错,因为就没id=20的顾客 && &&&& update t_order set customer_id = 20 where id = 1; && 3.2.3 delete语句: && &&& &
&& &&& &//删除t_order表中的的所有数据
&& &&& &//可以成功删除,没有问题,因为删除t_order不会对t_costomer表的数据产生任何影响
&& &&& &delete from t_ && &&& &
&& &&& &//t_order表中插入数据
&& &&& &insert into t_order(id,price,customer_id) values(1,1000,1);
&& &&& &insert into t_order(id,price,customer_id) values(2,2000,2); &&& &&& &
&& &&& &//删除t_customer表中id=3的数据
&& &&& &//删除成功,因为t_order表中外键列中没有引用过这个值 && &&&&
delete from t_customer where id = 3;&&& &&&& //删除t_customer表中id=1的数据
&& &&& &//删除失败,因为t_order表中外键列中已经引用了这个值 && &&&&
delete from t_customer where id = 1;
&& &&& 【在这种情况下,on delete 语句就可以起作用了,如下面介绍的on delete】&
&四、on delete语句
&& &&& &on delete no action(默认情况:什么不都写)
&& &&& &on delete cascade
&& &&& &on delete set null && &&& &
&& &&& &on delete语句是在声明外键约束的时候使用的。用户在删除A表中的一条数据,而这条数据被B表中的外键列所引用了,这个时候on delete语句的设置可以告诉oracle这个时候该如何处理 && &&& &&& &&& &
&& &&& &如果在建外键的时候,不加on delete语句,就是on delete no action
&& &&& &例如1: on delete no action && &&&&
create table t_customer(
id number,
name varchar2(20) constraint customer_name_nn not null,
constraint customer_id_pk primary key(id)
);         create table t_order(
id number,
price number,
customer_id number,
constraint order_id_pk primary key(id),
constraint order_cid_fk foreign key(customer_id) references t_customer(id)
);         
&& &&& &drop table t_
&& &&& &drop table t_&
&& &&& &插入测试数据:
&& &&& &//t_customer表中插入数据 && &&&
insert into t_customer(id,name) values(1,'tom1');
insert into t_customer(id,name) values(2,'tom2');
insert into t_customer(id,name) values(3,'tom3');&& &&&& //t_order表中插入数据 && &&&
insert into t_order(id,price,customer_id) values(1,1000,1);
insert into t_order(id,price,customer_id) values(2,2000,2);
&& &&& &//如下面语句进行删除,则显示删除失败
&& &&& &//ORA-02292: 违反完整约束条件 - 已找到子记录 && &&&&
delete from t_customer where id = 1;         
&& &&& &例如2: on delete cascade
&& &&& &建表语句和测试数据上例1相同,只是在声明外键列的时候加入on delete cascade语句 && &&&&
create table t_order(
id number,
price number,
customer_id number,
constraint order_id_pk primary key(id),
constraint order_cid_fk foreign key(customer_id) references t_customer(id) on delete cascade
);             
&& &&& &//同样做删除测试
&& &&& &//删除成功,同时级联(cascade)删除了t_order表中所关联的那条数据 && &&&&
delete from t_customer where id = 1;&& &&& & 这就相当于删除客户的同时删掉客户的订单&& &&
&& &&& &例如3: on delete set null
&& &&& &建表语句和测试数据上例1相同,只是在声明外键列的时候加入on delete set null语句 && &&&
create table t_order(
id number,
price number,
customer_id number,
constraint order_id_pk primary key(id),
constraint order_cid_fk foreign key(customer_id) references t_customer(id) on delete set null
);              
&& &&& &//同样做删除测试
&& &&& &//删除成功,同时把t_order表中所关联的那条数据的外键设置为了null && &&&
delete from t_customer where id = 1; &
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:154272次
积分:3865
积分:3865
排名:第7570名
原创:204篇
转载:106篇
评论:34条
(2)(8)(7)(6)(9)(4)(6)(56)(60)(40)(17)(23)(52)(16)(1)查看: 5492|回复: 12
在什么情况下dml语句才会commit?
论坛徽章:1
假如我执行了一些dml语句,但是没有commit就退出了连接,然后再次登录进来,是否oracle会默认执行commit呢?如果我没有退出,但是执行了一些ddl语句,那么oracle是否会默认执行commit呢?谢谢。
论坛徽章:2
自己做一下实验不就明白了?
论坛徽章:2
没commit退出连接ORACLE自动回滚。ddl会自动发出commit。
论坛徽章:1
最初由 SweetMemory 发布
[B]没commit退出连接ORACLE自动回滚。ddl会自动发出commit。 [/B]
我在oracle9i中尝试的和你说的结果相反啊,ddl不会自动发出commit,但是一退出oracle就会自动commit
论坛徽章:4
把你的试验过程贴出来看一下
论坛徽章:8
sqlplus可以设置是否自动
论坛徽章:8
sqlplus可以设置是否自动
ddl语句应该是自动
论坛徽章:1
最初由 西门吹牛 发布
[B]sqlplus可以设置是否自动
ddl语句应该是自动 [/B]
通过set语句这样来设置是否只是在当前sessin中有效呢?
论坛徽章:1
最初由 sanman 发布
把你的试验过程贴出来看一下 [/B]
我建了一个测试表test,其中有字段owner,object_name。
首先执行insert into test(owner,object_name) values('cyuser','test')。
然后断开连接,再登录,select表test中有数据cyuser存在。
清空表test,执行insert into test(owner,object_name) values('cyuser','test'),再建表test1如下:create table test1 as
select * from test where 1=0,select表test中无数据。
论坛徽章:3
最初由 li_tj 发布
首先执行insert into test(owner,object_name) values('cyuser','test')。
然后断开连接,再登录,select表test中有数据cyuser存在。
在正常退出sqlplus时,即使你没有执行,
也是会隐式地执行commit的所以你的insert后有数据,但是异常状态下退出,就会被rollback。
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号

我要回帖

更多关于 vivo x20估计多少钱 的文章

 

随机推荐