我一直在对 MSSQL Server 和 Oracle 中的锁定/阻塞进行一些测试,我注意到一个区别:
在 Oracle 中 - 我在不发出提交或回滚的情况下对一行执行更新,在另一个会话中我可以查看底层记录,当然,我可以查看最后提交的数据,而不是尚未提交的值。
在 MSSQL Server 中 - 当我在另一个会话中执行相同的操作时,SQL Server 一直在等待正在更新的行的提交或回滚。
有人可以解释一下 MSSQL 服务器和 Oracle 之间的锁定机制。
我知道收缩不是一个好的做法,但如果我只执行 ie: dbcc shrinkfile (filename,1024),哪个是默认值?notruncate或者truncateonly?我在文档中没有找到任何有关它的信息。
NOTRUNCATE 在指定或不指定 target_percent 的情况下,将已分配的页从数据文件的末尾移动到文件前面的未分配的页。文件末尾的可用空间不会返回给操作系统,并且文件的物理大小不会更改。因此,如果指定 NOTRUNCATE,文件似乎不会收缩。
NOTRUNCATE 仅适用于数据文件。日志文件不受影响。
FILESTREAM 文件组容器不支持此选项。
....
TRUNCATEONLY 将文件末尾的所有可用空间释放给操作系统,但不在文件内执行任何页面移动。数据文件仅收缩到最后分配的范围。
如果使用 TRUNCATEONLY 指定,则忽略 target_size。
TRUNCATEONLY 选项不会移动日志中的信息,但会从日志文件末尾删除不活动的 VLF。FILESTREAM 文件组容器不支持此选项。
我知道 RMAN 的默认设置是以以下格式添加日期:TAGYYYYMMDDTHHMMSS, 但如果我想要这样的东西:BKP_FULL_11112019。我怎么做?我尝试使用%T但它不起作用。
我想做这样的事情:
backup as compressed backupset incremental level 0 database tag = 'BKP_FULL_current_date_here'
Run Code Online (Sandbox Code Playgroud)
其中 current_date_here 必须是当前日期。
有我可以检查的视图吗?我需要通过(Linux)或(Windows)使用该SUBSTR函数创建一个脚本。/\
SUBSTR('anything', 1, INSTR('anything', '/', 1, 1)) -- Linux
SUBSTR('anything', 1, INSTR('anything', '\\', 1, 1)) -- Windows
Run Code Online (Sandbox Code Playgroud) 这是默认/正常行为吗?当我们开始备份时,它会创建一个 316GB 的文件,只有在备份完成后,它才会缩小到 131GB。没有意义,因为在这种情况下我们需要 316GB 或更大的磁盘来启动备份,即使它被压缩到 131GB。