rman:configure exclude for tablespace ...
C:Documents and Settingszhaoss>rman target sys/sys@ora nocatalog恢复管理器: Release 10.2.0.1.0 - Production on 星期三 8月 3 17:34:52 2011Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到目标数据库: ORA (DBID=1374610081)使用目标数据库控制文件替代恢复目录RMAN> show exclude;RMAN 配置参数为:RMAN 配置没有存储参数或默认参数RMAN> configure exclude for tablespace users;今后的全部数据库备份将排除表空间 USERS已成功存储新的 RMAN 配置参数RMAN> show exclude;RMAN 配置参数为:CONFIGURE E
往数据类型为clob的表列直接insert或update长度大于4000会报字符串太长错误
SQL> drop table t; Table dropped SQL> create table t(para2 clob); Table created直接更新:SQL> update t set para2 ='***...***';--8000个* update t set para2 ='***...***';--8000个* ORA-01704: string literal too long SQL>直接插入:SQL> insert into t(para2) values('***...***');--8000个* insert into t(para2) values('***...***');--8000个* ORA-01704: string literal too long可以通过PL/SQL用变量实现:SQL> declare 2 v_sql clob; 3 begin 4 v_sql := rpad('*', 4000, '*') || rpad('*'
rpad和lpad
rpad rpad函数从右边对字符串使用指定的字符进行填充 rpad(string,padded_length,[pad_string]) string 表示:被填充的字符串 padded_length 表示:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,rpad函数将会把字符串截取成从左到右的n个字符; pad_string 是个可选参数,这个字符串是要粘贴到string的右边,如果这个参数未写,lpad函数将会在string的右边粘贴空格。示例:SQL> select rpad('tech', 7), length(rpad('tech', 7)) from dual; RPAD('TECH',7) LENGTH(RPAD('TECH',7))-----------
内连接、外连接总结
create table t1(id number,name varchar2(20));create table t2(id number,name varchar2(20));create table t3(id number,name varchar2(20));insert into t1 values(1,'aa');insert into t1 values(2,'bb');insert into t1 values(3,'cc');insert into t2 values(1,'aa');insert into t2 values(4,'dd');insert into t2 values(5,'ee');insert into t3 values(6,'ff');--左连接SQL> select t1.id,t1.name,t2.id,t2.name 2 from t1 left join t2 on t1.id = t2.id; ID NAME ID NAME---------- ---
定义者权限存储过程role无效,必须要有显式授权
对于定义者权限存储过程来说,role权限不可见。比如,用户ljb是dba角色,完全具备更新其他用户任何表的权限。但事实上,ljb用户在sql中可以轻易完成的更新动作,在存储过程中会报以权限不足的错误而无法完成。只有在zhaoss用户显式的将t表授权给ljb用户后,ljb用户在创建存储过程的时候才能更新t表。SQL> create user ljb identified by ljb ;用户已创建。SQL> grant dba to ljb;授权成功。SQL> conn ljb/ljb已连接。SQL> delete zhaoss.t;已删除100000行。SQL> rollback;回退已完成。SQL> create or replace procedure
11g解决imp导入数据时报错:插入数据找不到相应分区
create table t(id number,name varchar2(10),stamptime date)partition by range(stamptime)( partition part_t_20110505 values less than (to_date('20110505','yyyymmdd')), partition part_t_20110506 values less than (to_date('20110506','yyyymmdd')));insert into t values(1,'aa',trunc(sysdate)-1);insert into t values(2,'bb',trunc(sysdate)-1);insert into t values(3,'cc',trunc(sysdate)-1);insert into t values(4,'dd',trunc(sysdate)-1);commit;用exp将数据导出后,改变表结构create table t(id number,name varchar
windows下 statspack安装开始创建包体的时候一直报:SP2-0640: 未连接
出现这种情况一般是因为数据库装了几个实例造成的。请检查E:oracleproduct10.2.0db_1RDBMSADMINspcreate.sql中connect perfstat/&&perfstat_password,改为connect perfstat/&&perfstat_password@orcl。即添加连接到哪个实例下。[@more@]
日志 ** 序列号 ** 无法归档
SQL> startupORACLE 例程已经启动。Total System Global Area 612368384 bytesFixed Size 1250428 bytesVariable Size 230689668 bytesDatabase Buffers 373293056 bytesRedo Buffers 7135232 bytes数据库装载完毕。ORA-16038: 日志 3 序列号 42 无法归档ORA-19809: 超出了恢复文件数的限制ORA-00312: 联机日志 3 线程 1:'E:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG'这种情况可以用三种方法解决:1、暂停数据库归档模式。SQL> shutdown immediate数据库已经关闭。已经卸载
比较符号两边类型保持一致
今天测试的时候搞了半天才弄明白,记录一下。create or replace procedure proc_test(startdate VARCHAR2) as v_date date; --清理时间点 v_GTH_AGT_IN_count number; --需清理的个数 v_query_create varchar2(3000); --存放建立临时表的语句begin v_date := to_date(startdate, 'yyyy-mm-dd'); v_GTH_AGT_IN_count := 0; select count(*) into v_GTH_AGT_IN_count from GTH_AGT_IN t where logdate <= v_date; if v_GTH_AGT_IN_count > 0 then --insert v_query_create := 'inse
表上建立唯一性索引,SQL*Loader用或不用dirdect的区别
表test_table1中原有数据:SQL> select id,name from test_table1; ID NAME 1 AA 2 BB 3 CC 4 DD 5 EE创建表上字段id的唯一性索引:SQL> create unique index idx_test_table1_id on test_table1(id);1、不带direct导入和表中原来数据一样的数据:E:>sqlldr zhaoss/zhaoss@orcl control=result.ctlSQL*Loader: Release 10.2.0.1.0 - Production on 星期四 2月 10 18:30:22 2011Copyright (c) 1982, 2005, Oracle. All rights reserved.达到提交点 - 逻辑记录计数 5查看索引状态,仍然有效:SQL>
查看oracle表空间使用情况
查看表空间使用情况:方法一:SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100, 2), '990.99') "使用比", F.TOTAL_BYTES "空闲空间(M)", F.MAX_BYTES "最大块(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (102
dba和sysdba的区别(转自“三十而立专栏”博客)
dba是实实在在存在在Oracle里的一个角色(屋里对象),而sysdba则指的是一种逻辑概念上的操作对象,在Oracle数据里并不存在。所以说这两个概念是完全不同的。dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是概念上的role是一种登录认证时的身份标识而已。下面我们通过详细的实例来看看他们的区别1. 物理上的role dba 是可以在数据字典里查到的SQL> select * from dba_roles where upper(role) ='DBA';ROLE PASSWORD------------------------------ --------DBA NO而sysdba是逻辑概念上的role,在数据字典里是查不
normal 、sysdba、 sysoper的区别
1、normal:normal是普通数据库用户权限。2、SYSOPER:sysoper即数据库操作员权限,权限包括: 打开数据库服务器 关闭数据库服务器 备份数据库 恢复数据库 日志归档 会话限制3、SYSDBA:sysdba即数据库管理员权限,权限包括: 打开数据库服务器 关闭数据库服务器 备份数据库 恢复数据库 日志归档 会话限制 管理功能 创建数据库显然sysdba比sysoper的权限多了创建数据库和管理数据库功能,sysdba具有最高的数据库权限。以sysdba和sysoper登陆数据库show user查得的用户分别为sys和
修改数据库的归档模式
修改数据库的归档模式:1、以dba身份登录数据库。SQL> conn / as sysdba已连接。2、用 shutdown immediate 或 shutdown normal 关闭数据库。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。3、将数据库启动到 mount 状态。SQL> startup mountORACLE 例程已经启动。Total System Global Area 612368384 bytesFixed Size 1250428 bytesVariable Size 171969412 bytesDatabase Buffers 432013312 bytesRedo Buffers 7135232 bytes数据库装载
恢复oracle中drop掉的表
今天在现场核查了一个昨天刚部署的过程,核查结束后,把测试过程时用的两个临时表给drop掉,完事了啊。不一会现场就有人打电话过来,说表没了。连到现场查看回收站,汗,自己把正式表给误删除了。赶紧把表从回收站给恢复过来,记录下来警示自己:1、删除表操作:drop table test_range_table;2、查询需要找的表是不是在回收站里Select object_name,original_name,partition_name,type,ts_name,createtime,droptimefrom recyclebin WHERE ORIGINAL_NAME = 'TEST_RANGE_TABLE';3、如果在回收站里按下面办法进行恢复FLASHBACK TABLE TEST_RAN
pl/sql动态执行sql语句时报错:ORA-00911: 无效字符 ORA-06512: 在 line 14
今天测试的时候遇到两个错误提醒,写下来给自己提个醒:--建测试表create table test_table(tablename varchar2(50),selectsql clob);insert into test_table values('dual','select sysdate from dual;');commit;--pl/sqlSQL> declare 2 cursor c is select selectsql from test_table; 3 cur c%rowtype; 4 v_selectsql varchar2(30000); 5 v_date date; 6 begin 7 open c; 8 fetch c into cur; 9 if c%notfound then 10 return; 11 end if; 12 v_selectsql := cur.selectsql; 13 execute immediat
借鉴)数据库开发秘诀
开发数据库程序时,有条简单的秘诀:1、 如果可能的话,应该用单条SQL语句完成。2、 如果不能用单条SQL语句完成,那么就用PL/SQL完成工作。3、 如果不能用PL/SQL完成,尝试java存储过程(Java Stored Procedure)4、 如果不能在java中完成,在c外部过程中完成。5、 如果不能在c外部过程中完成,可能要认真考虑下是否有必要完成它。仅作参考。[@more@]
char(n)和varchar2(n)区别
1、 1、varchar2(n):该数据类型用于定义可变长度的字符串,其中n用于指定字符串的长度,其最大值为32767个字节。当使用该数据类型定义变量时,必须指定长度。需要注意的是:当在pl/SQL中使用该数据类型操纵varchar2表列时,其最大长度不超过4000字节。Dbms_output.put_line输出字符串时,允许输出的最大长度为2000个字节。2、 2、 char(n):用于定义固定长度的字符串。其中n用于指定字符串的长度,其最大值为32767字节。当使用该数据类型定义变量时,如果没有指定n则其默认为1,;当在pl/SQL块中使用该数据类型操作char表列时,其数值的长
10g及以前版本execute immediate不支持clob类型,11g已经支持
execute immediate V_INSERTSQL||V_SQL;后面是我拼成的一个insert...select类型为clob类型的语句。昨天在公司测试的时候,公司数据库是11g的,没有问题。今天在家测试,家里电脑是10g,出现错误:PLS-00382: expression is of wrong type上网查了下资料说是:11g已经支持动态sql后clob类型,但是之前各个版本不支持。另外测试length支持的最大字符数是4000 [@more@]
用命令查看当前登录数据库版本(3种方法)
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 7月 22 18:25:32 2010Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options第一种:SQL> select version from v$instance;VERSION-----------------10.2.0.1.0第二种:SQL> select version from product_component_version;VERSION--------------------------------------------------------------------------------10.2.0.1.010.2.