需要显示授权
grand select on sys.V_$SESSION to xxx;
说明:不能直接授权给v$session
原因:v$session是公共同义词,不能被授权
(可以通过select * from dba_objects where object_name=’V$SESSION’;查询出来)
note:11gr2版本存在该问题,其他版本暂时未知
Category Archives: 数据库
数据文件位置调整
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;
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
sql server 2005镜像配置
1、服务器ip地址和数据库版本
主机:192.168.1.1
备机:192.168.1.110
数据库:sql server 2005 sp4
2、主备实例互通
1)创建证书
--主机执行
USE MASTER
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'xifenfei';
GO
USE MASTER
GO
CREATE CERTIFICATE HOST_A_cert
WITH SUBJECT = 'A certificate for database mirroring',
START_DATE = '11/25/2009',
EXPIRY_DATE = '12/31/2199';
GO
--备机执行
USE MASTER
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'xifenfei';
GO
USE MASTER
GO
CREATE CERTIFICATE HOST_B_cert
WITH SUBJECT = 'A certificate for database mirroring',
START_DATE = '11/25/2009',
EXPIRY_DATE = '12/31/2199';
GO
2)创建连接的端点
--主机执行 create endpoint endpoint_mirroring state=started as tcp (listener_port=5022,listener_ip=all) for database_mirroring (authentication=certificate HOST_A_cert,encryption=supported,role=all); --备机执行 create endpoint endpoint_mirroring state=started as tcp (listener_port=5022,listener_ip=all) for database_mirroring (authentication=certificate HOST_B_cert,encryption=supported,role=all);
3)备份证书以备建立互联
--主机执行 backup certificate HOST_A_cert to file='E:\database\key\HOST_A_cert.cer'; --备机执行 backup certificate HOST_B_cert to file='C:\database\mssql\key\HOST_B_cert.cer';
4)互换备份证书
拷贝证书文件到对象文件夹中
5)添加登录名、用户
--主机执行 create login HOST_B_login with password='20091125'; create user HOST_B_user for login HOST_B_login; create certificate HOST_B_cert authorization HOST_B_user from file='C:\database\mssql\key\HOST_B_cert.cer'; grant connect on endpoint::endpoint_mirroring to [HOST_B_login]; --备机执行 create login HOST_A_login with password='20091125'; create user HOST_A_user for login HOST_A_login; create certificate HOST_A_cert authorization HOST_A_user from file='E:\database\key\HOST_A_cert.cer'; grant connect on endpoint::endpoint_mirroring to [HOST_A_login];
3、建立镜像关系
1)备份还原数据库
/*尝试从刚刚使用的全备文件进行还原,在还原数据的时候需要使用”WITH NO RECOVERY“选项。*/ --主机执行 backup database test to disk='D:\sqlbackup\test091124full.bak' backup log test to disk='D:\sqlbackup\test091124log.bak' --备机执行 restore database acmr_10jqka from disk='D:\sqlbackup\test091124full.bak' with replace,norecovery restore log acmr_10jqka from disk='D:\dbbackup\118_sql\acmr_10jqka091125log.bak' with norecovery
2)建立镜像
/*注意:先备机,后主机*/ --备机执行 alter database acmr_10jqka set partner='TCP://192.168.1.1:5022'; --主机执行 alter database test set partner='TCP://192.168.1.110:5022';
3)事务安全性设置
/*默认情况下,事务安全级别的设置为FULL,即“同步运行模式”,而且,SQL SERVER 2005标准版只支持同步模式。*/ /*如果关闭事务安全级别FULL模式,则可以切换到异步运行模式,该模式可使性能达到最佳。*/ --主机执行 use master go alter database test set partner safety full; --事务安全,同步模式 alter database test set partner safety off; --事务不安全,异步模式
4)切换
--主机执行下面命令后,即切换为备机角色 use master go alter database test set partner failover; /*同理,也可以在备机(主体数据库)上执行上面命令,之后切换为备机(备数据库)*/
