在夜间计划任务期间,我使用select into然后添加聚集索引从头开始创建一个大表。我想在整个过程中最大限度地减少日志记录量,因为我用于日志备份传送的带宽有限。
如果有帮助,我很乐意考虑另一种方法。
甲骨文 11g。开发人员会在一夜之间让会话保持连接,有时某些 cron 作业会因此而失败。我试图杀死所有用户会话,但我不能。
我登录为:
sqlplus system/[password] as sysdba
Run Code Online (Sandbox Code Playgroud)
我这样做是为了列出会话:
select sid,serial#,program from gv$session where type='USER' and machine!='this-server';
Run Code Online (Sandbox Code Playgroud)
列表如下所示:
SID SERIAL# PROGRAM
Run Code Online (Sandbox Code Playgroud)
10 7883 toad.exe
11 42365 toad.exe
77 22493 toad.exe
Run Code Online (Sandbox Code Playgroud)
然后我这样做:
alter system disconnect session '10,7883' immediate;
Run Code Online (Sandbox Code Playgroud)
并且是说:
System altered.
Run Code Online (Sandbox Code Playgroud)
但什么也没有发生。会话仍然存在。我究竟做错了什么?
PS:我对 Oracle 很陌生,我以前只使用过 MySQL。
我正在尝试将数据导入 SQL Server。我可以通过导入和导出数据向导导入。我无法使用BULK IMPORT或OPENROWSET因为文件不在服务器机器上从我的机器导入。IED 向导如何将数据插入其目标数据库?是一行一行的吗?
从我的机器导入数据还有其他可能的解决方案吗?
我使用xmin系统列来实现一种形式的乐观锁定,有时需要“触摸”行来碰撞xmin而不实际更新行。我目前只是做一个“虚拟”更新:
create table t(id integer);
insert into t(id) values(1);
insert into t(id) values(2);
select xmin::text from t where id=1
/*
| XMIN |
---------
| 87159 |
*/
update t set id=id where id=1
select xmin::text from t where id=1
/*
| XMIN |
---------
| 87196 |
*/
Run Code Online (Sandbox Code Playgroud)
我很好奇是否有另一种方法可以在xid不进行更新的情况下进行碰撞,类似于 unixtouch命令?
是否可以在不询问 DBA 的情况下找到我的密码到期日期?
我的用户没有查看DBA_USERS表的权限。另外,我试过select * from USER_USERS桌子,但它expiry_date是空的。
由于我对模型子句的理解有限,我希望以下三个查询返回相同的结果,因为数据中没有空值,并且函数是等效的:
select *
from (select level k, 100 v from dual connect by level<=2)
model return updated rows
dimension by (k)
measures (v, 0 shr)
rules ( shr[any] = v[cv()]/sum(v)[any] ); --plain sum
/*
K V SHR
---------- ---------- ----------
1 100 0.5
2 100 0.5
*/
select *
from (select level k, 100 v from dual connect by level<=2)
model return updated rows
dimension by (k)
measures (v, 0 shr)
rules ( shr[any] = v[cv()]/nullif(sum(v)[any],0) ); --with nullif
/* …Run Code Online (Sandbox Code Playgroud) BOL 和许多其他来源指出:
FROM
是一个可选关键字,可以在 DELETE 关键字和目标 table_or_view_name 或 rowset_function_limited 之间使用。
我习惯写DELETE没有FROM. 我进行了一些搜索,但找不到FROM强制性的地方。任何人都可以指出应该强制执行的情况吗?还是总是可选的?
查询语言 (SQL) 和 PL/pgSQL 函数对临时表的处理方式不同:
begin;
create table foo(id) as values (1);
select * from foo;
/*
id
----
1
*/
savepoint s;
create function f() returns setof integer language sql as $$
create temporary table foo(id) on commit drop as values (2);
select id from foo;
$$;
select * from f();
/*
f
---
1
*/
rollback to s;
create function f() returns setof integer language plpgsql as $$
begin
create temporary table foo(id) on commit drop as values …Run Code Online (Sandbox Code Playgroud) Postgresdate_trunc对timestampor进行操作interval,并且:
日期和时间类型的值分别自动转换为时间戳或间隔。
换句话说,我们可以使用date_trunc强制转换的date值:
select date_trunc('month',current_date)::date;
??????????????
? date_trunc ?
??????????????
? 2014-12-01 ?
??????????????
Run Code Online (Sandbox Code Playgroud)
但是这个时区是否安全——如果当前日期是夏令时而月份的开始不是,反之亦然会得到正确的日期吗?
我正在尝试使用扩展事件检查一些 T-SQL,就像我以前使用 SQL 探查器一样。我有以下事件会话:
IF EXISTS (SELECT name FROM sys.dm_xe_sessions WHERE Name = 'PySoup tracing')
BEGIN
DROP EVENT SESSION [PySoup tracing] ON SERVER
END
CREATE EVENT SESSION [PySoup tracing] ON SERVER
ADD EVENT sqlserver.rpc_completed (ACTION(sqlserver.client_app_name, sqlserver.sql_text )),
ADD EVENT sqlserver.sp_statement_completed (ACTION(sqlserver.client_app_name, sqlserver.sql_text )),
ADD EVENT sqlserver.sql_batch_completed (ACTION(sqlserver.client_app_name, sqlserver.sql_text )),
ADD EVENT sqlserver.sql_statement_completed (ACTION(sqlserver.client_app_name, sqlserver.sql_text ))
ADD TARGET package0.event_file(SET filename=N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\PySoup tracing.xel')--,
--ADD TARGET package0.ring_buffer(SET max_events_limit=(1000000))
GO
ALTER EVENT SESSION [PySoup tracing] ON SERVER
STATE = START;
Run Code Online (Sandbox Code Playgroud)
我认为 ACTION …
oracle ×3
postgresql ×3
sql-server ×2
delete ×1
functions ×1
import ×1
logs ×1
metadata ×1
oracle-11g ×1
t-sql ×1
timezone ×1