需要显示授权
grand select on sys.V_$SESSION to xxx;
说明:不能直接授权给v$session
原因:v$session是公共同义词,不能被授权
(可以通过select * from dba_objects where object_name=’V$SESSION’;查询出来)
note:11gr2版本存在该问题,其他版本暂时未知
Monthly Archives: 三月 2011
数据文件位置调整
1、关闭数据库
shutdown immediate;
2、移动数据文件
mv /u01/ora10g/oradata/ggtarget /u02/ora10g/oradata
3、数据库至于nomount状态
startup nomount;
4、创建pfile
create pfile from spfile;
5、修改pfile中control_files
6、使用pfile把数据库至于mount状态
shutdown immediate;
startup mount pfile=/u01/ora10g/product/10.2.0/db_1/dbs/initggtarge.ora;
7、修改文件位置
--查询select name from v$datafile; alter database rename file '/u01/ora10g/oradata/ggtarge/system01.dbf' to '/u02/ora10g/oradata/ggtarge/system01.dbf'; alter database rename file '/u01/ora10g/oradata/ggtarge/undotbs01.dbf' to '/u02/ora10g/oradata/ggtarge/undotbs01.dbf'; alter database rename file '/u01/ora10g/oradata/ggtarge/sysaux01.dbf' to '/u02/ora10g/oradata/ggtarge/sysaux01.dbf'; alter database rename file '/u01/ora10g/oradata/ggtarge/users01.dbf' to '/u02/ora10g/oradata/ggtarge/users01.dbf'; --查询select member from v$logfile; alter database rename file '/u01/ora10g/oradata/ggtarge/redo01.log' to '/u02/ora10g/oradata/ggtarge/redo01.log'; alter database rename file '/u01/ora10g/oradata/ggtarge/redo02.log' to '/u02/ora10g/oradata/ggtarge/redo02.log'; --查询select name from v$tempfile; alter database rename file '/u01/ora10g/oradata/ggtarge/temp01.dbf' to '/u02/ora10g/oradata/ggtarge/temp01.dbf';
8、创建spfile
create spfile to pfile;
9、重启数据库使用spfile启动
shutdown immediate;
startup;
ssh等效连接配置
1、配置SSH(两台机器上均需执行)
A、以ORACLE用户登陆
mkdir ~/.ssh chmod 700 ~/.ssh
B、使用SSH-KEYGEN生成SSH协议的RSA密钥
ssh-keygen -t rsa
2、添加密钥到授权密钥文件(任意一台机器上执行)
以下三条命令在11.1.1.2上执行
ssh 11.1.1.2 cat /home/oracle/.ssh/id_rsa.pub>>authorized_keys ssh 11.1.1.3 cat /home/oracle/.ssh/id_rsa.pub>>authorized_keys scp authorized_keys 11.1.1.3:/home/oracle/.ssh/ chmod 600 ~/.ssh/authorized_keys (两台机器均需要执行)
3、测试(两台机器上均执行)
ssh 11.1.1.2 date ssh 11.1.1.3 date
如果不要求输入密码就出现系统日期,说明SSH配置成功(第一次可能需要输入yes)
grouping_id()使用
1、创建表
desc test_rollup; Name Type Nullable Default Comments ----------- ------------ -------- ------- -------- TYPE_NAME VARCHAR2(10) Y TYPE_VALUE NUMBER Y TYPE_NAME2 VARCHAR2(10) Y TYPE_VALUE2 NUMBER Y
2、插入数据
select * from test_rollup; TYPE_NAME TYPE_VALUE TYPE_NAME2 TYPE_VALUE2 ---------- ---------- ---------- ----------- a 123 t1 120 a 423 t2 200 a 523 t1 555 b 223 x1 504 b 283 x2 484 c 103 y1 333 c 843 y2 984 c 899 y2 151 c 100 y2 150 d 204 s1 606 10 rows selected
3、使用grouping_id查询结果
select type_name, type_name2, decode(grouping_id(type_name), 0, type_name, '总计')g_type, decode(grouping_id(type_name2), 0, type_name2, decode(grouping_id(type_name),0,'小计','总计'))g2_type, grouping_id(type_name, type_name2)gg_type, sum(type_value), sum(type_value2) from test_rollup group by rollup(type_name, type_name2); TYPE_NAME TYPE_NAME2 G_TYPE G2_TYPE GG_TYPE SUM(TYPE_VALUE) SUM(TYPE_VALUE2) ---------- ---------- ---------- ---------- ---------- --------------- ---------------- a t1 a t1 0 646 675 a t2 a t2 0 423 200 a a 小计 1 1069 875 b x1 b x1 0 223 504 b x2 b x2 0 283 484 b b 小计 1 506 988 c y1 c y1 0 103 333 c y2 c y2 0 1842 1285 c c 小计 1 1945 1618 d s1 d s1 0 204 606 d d 小计 1 204 606 总计 总计 3 3724 4087 12 rows selected
rollup和grouping使用
1、创建表
create table test_rollup ( type_name varchar2(10), type_value number );
2、插入数据结果
select * from test_rollup; a 123 a 423 a 523 b 223 b 283 c 103 c 843 c 899 c 100
3、使用rollup函数
select type_name, sum(type_value) from test_rollup group by rollup(type_name); a 1069 b 506 c 1945 3520
4、使用rollup和grouping函数
select type_name, sum(type_value), grouping(type_name) from test_rollup group by rollup(type_name); a 1069 0 b 506 0 c 1945 0 3520 1
5、显示统计信息
select decode(grouping(type_name), 0, type_name, '总计'), sum(type_value) from test_rollup group by rollup(type_name); a 1069 b 506 c 1945 总计 3520