如何在列中搜索特定模式?
例如,我喜欢获取以字母 A 或 B 开头的所有用户名。
(顺便说一句:这被标记为oracle,但它可能在其他 RDBMS 中也很有趣)。
以下文字摘自 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部分给我的印象是我们正在将数据库安装到实例。
哪一种理解是对的?任何人都可以帮忙解释一下吗?
谢谢
我理解它是如何工作的,但是我正在学习的这本书并没有告诉我你为什么要分区。有人可以解释一下吗?除非我看到它是如何有用的,否则我无法理解任何概念。
我的公司希望有大约 100 名销售人员(分布在全国各地)能够从 excel 运行存储过程并将数据返回到电子表格中。
我们有 sql server 2008。我需要找出一种安全的方法来做到这一点。
我将在 excel 中创建一个表单,用户可以在其中按下命令按钮以根据他们选择的参数刷新数据。
我发现这是非常好的信息:http : //office.microsoft.com/en-us/excel-help/connect-to-import-sql-server-data-HA010217956.aspx
Windows 身份验证 选择此选项以使用当前用户的 Windows 用户名和密码。这是最安全的方法,但当许多用户连接到服务器时,它会影响性能。
但是,我希望您对此提出意见。
是的,销售代表确实有 Windows 登录,但是如果他们实际上要输入指定数据标准,然后将标准发送到存储过程,然后从服务器获取数据,我可以使用这个解决方案吗?
我有两个用户 A 和 B。我想授予 B 创建、删除等 A 架构中所有表的权限。据我所知,我可以授予 B 对所有模式的完全访问权限,而不是特定模式。这样对吗?
使用 Oracle 的Advanced Queuing是否可以按 LIFO(后进先出)顺序出列消息?有通过缺乏信息的指示,这是不是一种选择,但也许是有办法做到这一点,如以不同的顺序排队。
用户有一个他们想要更新的表。根据其他列中的数据,他们希望使用从 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)
我不是在寻找仅适用于我的特定测试用例的技巧,而是寻找问题的通用解决方案。
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) 我正在制作一项需要保存按年月组合分组和计算的数据的服务。我知道如何计算数据并将其放在新表上。但是我很困惑应该使用哪种数据类型来存储月 - 年值。这是我所考虑的。
我应该选哪个?或者有其他解决方案。有人可以根据性能建议哪种方式将是一个好的解决方案,因为大多数查询将在 where 解决方案中使用数据范围,而我的新表将有大约 2-5 百万条记录。
从这些数据(假设行数事先未知):
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 ×7
security ×2
datatypes ×1
date-format ×1
instance ×1
plsql ×1
sql-server ×1
windows ×1