小编Lei*_*fel的帖子

如何使用正则表达式查询名称?

如何在列中搜索特定模式?

例如,我喜欢获取以字母 A 或 B 开头的所有用户名。

(顺便说一句:这被标记为oracle,但它可能在其他 RDBMS 中也很有趣)。

oracle regular-expression

7
推荐指数
1
解决办法
7981
查看次数

对于Oracle,我们是将实例挂载到数据库还是将数据库挂载到实例?

以下文字摘自 oracle 文档。

启动实例,并挂载和打开数据库。这可以在无限制模式下完成,允许所有用户访问,或在限制模式下,仅允许数据库管理员访问。

....

要将数据库挂载到先前启动但未打开的实例,请使用 SQL 语句 ALTER DATABASE 和 MOUNT 子句,如下所示:

更改数据库挂载;

您可以直接从http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/start.htm阅读

第一部分给我的印象是我们正在将实例安装到数据库。但是这To mount a database to a previously started, but not opened instance部分给我的印象是我们正在将数据库安装到实例。

哪一种理解是对的?任何人都可以帮忙解释一下吗?

谢谢

oracle instance

7
推荐指数
2
解决办法
4371
查看次数

SQL 2008 中的表分区 - 为什么?

我理解它是如何工作的,但是我正在学习的这本书并没有告诉我你为什么要分区。有人可以解释一下吗?除非我看到它是如何有用的,否则我无法理解任何概念。

sql-server-2008

7
推荐指数
1
解决办法
226
查看次数

安全地公开 sql server 2008 以进行 Windows 身份验证

我的公司希望有大约 100 名销售人员(分布在全国各地)能够从 excel 运行存储过程并将数据返回到电子表格中。

我们有 sql server 2008。我需要找出一种安全的方法来做到这一点。

我将在 excel 中创建一个表单,用户可以在其中按下命令按钮以根据他们选择的参数刷新数据。

  1. 我如何确保从 excel 到 sql server 的连接是安全的?
  2. 如何从excel运行存储过程?

我发现这是非常好的信息:http : //office.microsoft.com/en-us/excel-help/connect-to-import-sql-server-data-HA010217956.aspx

Windows 身份验证 选择此选项以使用当前用户的 Windows 用户名和密码。这是最安全的方法,但当许多用户连接到服务器时,它会影响性能。

但是,我希望您对此提出意见。

是的,销售代表确实有 Windows 登录,但是如果他们实际上要输入指定数据标准,然后将标准发送到存储过程,然后从服务器获取数据,我可以使用这个解决方案吗?

sql-server-2008 authentication security sql-server windows

7
推荐指数
2
解决办法
1763
查看次数

在 Oracle 11g 中授予对特定架构的创建权限

我有两个用户 A 和 B。我想授予 B 创建、删除等 A 架构中所有表的权限。据我所知,我可以授予 B 对所有模式的完全访问权限,而不是特定模式。这样对吗?

oracle security

7
推荐指数
1
解决办法
4万
查看次数

Oracle 高级排队 LIFO

使用 Oracle 的Advanced Queuing是否可以按 LIFO(后进先出)顺序出列消息?有通过缺乏信息的指示,这是不是一种选择,但也许是有办法做到这一点,如以不同的顺序排队。

oracle oracle-11g-r2 plsql

6
推荐指数
1
解决办法
1320
查看次数

使用无间隙的升序值有条件地更新行

用户有一个他们想要更新的表。根据其他列中的数据,他们希望使用从 1 开始的无间隙升序值更新特定列。不包含此升序值的行也需要更新。有没有办法用一个 UPDATE 语句来做到这一点?

创建示例数据:

CREATE TABLE t1 AS (
   SELECT CHR(ASCII('a')+rownum-1) letter, rownum Number1, 0 Number2 
   FROM dual connect by rownum<=7);
Run Code Online (Sandbox Code Playgroud)

分配升序 rownum 的更新语句,但它不是无间隙的:

UPDATE t1 SET Letter=’x’, 
   Number2 = DECODE(letter,’a’,rownum,’d’,rownum,’e’,rownum,NULL);
Run Code Online (Sandbox Code Playgroud)

使用序列返回相同的结果:

CREATE SEQUENCE s1;
UPDATE t1 SET letter=’x’, 
   number2 = DECODE(letter,’a’,s1.nextval,’d’, s1.nextval,’e’, s1.nextval,NULL);
Run Code Online (Sandbox Code Playgroud)

完成后,数据应如下所示:

L    NUMBER1    NUMBER2
- ---------- ----------
x          1          1
x          2
x          3
x          4          2
x          5          3
x          6
x          7
Run Code Online (Sandbox Code Playgroud)

我不是在寻找仅适用于我的特定测试用例的技巧,而是寻找问题的通用解决方案。

oracle oracle-11g-r2 gaps-and-islands

6
推荐指数
1
解决办法
2414
查看次数

DBMS_Resource_Manager.Calibrate_IO 用法

DBMS_Resource_Manager 有一个名为Calibrate_IO的过程,带有一个 Physical Disks 输入参数。文档说这个值应该设置为...

数据库存储中物理磁盘的大约数量

在包含 30 个驱动器的 SAN 磁盘组中,一个逻辑驱动器跨未知数量的磁盘条带化,我不确定这意味着什么。我针对 1 和 30 的值运行了该过程,但 IOPS、MBPS 和延迟几乎相同。

这个数字是仅供参考还是实际使用?如果是后者,那么逻辑盘和物理盘不是一一对应的时候应该怎么设置呢?

块运行程序:

set serveroutput on;

DECLARE
   vDisks         Binary_Integer := 30;
   vMaxLatency    Binary_Integer := null;
   vMaxIOPS       Binary_Integer;
   vMaxMBPS       Binary_Integer;
   vActualLatency Binary_Integer;
BEGIN   
   DBMS_RESOURCE_MANAGER.Calibrate_IO(Num_Physical_Disks => vDisks
      , Max_IOPS => vMaxIOPs, Max_MBPS => vMaxMBPS
      , Actual_Latency => vActualLatency);
   DBMS_OUTPUT.PUT_LINE('      Max IOPS:' || vMaxIOPS);
   DBMS_OUTPUT.PUT_LINE('      Max MBPS:' || vMaxMBPS);
   DBMS_OUTPUT.PUT_LINE('Actual Latency:' || vActualLatency);   
END;
/

select * from dba_rsrc_io_calibrate;
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g-r2

6
推荐指数
1
解决办法
2635
查看次数

按月-年关键面值存储日期的最佳实践

我正在制作一项需要保存按年月组合分组和计算的数据的服务。我知道如何计算数据并将其放在新表上。但是我很困惑应该使用哪种数据类型来存储月 - 年值。这是我所考虑的。

  1. 两个整数列,一个为一年,另一个为一个月(清晰易懂且易于操作(使用此表的任何人都可以轻松使用范围和顺序),但我认为这比其他解决方案占用更多空间。
  2. 使用日期字段,并始终为整个月存储一个日期。(很难向用户解释它是如何工作的以及如何创建 WHERE 子句)
  3. 一个 varchar(7) 列并将其放在那里,例如 2012-02,2013-01。对我来说,这很容易理解,但很难操作。

我应该选哪个?或者有其他解决方案。有人可以根据性能建议哪种方式将是一个好的解决方案,因为大多数查询将在 where 解决方案中使用数据范围,而我的新表将有大约 2-5 百万条记录。

sql-server-2008 database-design datatypes date-format

6
推荐指数
1
解决办法
8474
查看次数

n行的乘积

从这些数据(假设行数事先未知):

with q1 as (select mod(ora_hash(level),5) c1 from dual connect by level <=4)
select * from q1;
/*
C1
--
 2 
 1 
 4 
 1
*/
Run Code Online (Sandbox Code Playgroud)

我想要所有行的 c1 列的乘积。类似于 SUM(c1) 的结果,我希望每个值都乘以其他值而不是相加。在这种情况下,这将是 2 * 1 * 4 * 1 = 8。

/*
X1
--
 8
*/
Run Code Online (Sandbox Code Playgroud)

数据可能包含负数和零,可以使用以下方法进行模拟:

with q1 as (select mod(ora_hash(level),5)-1 c1 from dual connect by level <=4)
select * from q1;
Run Code Online (Sandbox Code Playgroud)

或者

with q1 as (select mod(ora_hash(level),5)-3 c1 from dual connect by level <=4)
select * from q1;
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过自定义聚合函数来完成,但我对本机方法感兴趣。

oracle oracle-11g-r2

6
推荐指数
1
解决办法
307
查看次数