我使用 AWS 作为我的云环境。我将 PostgreSQL 安装在与根实例卷相同的驱动器上。我已将第二个驱动器连接并安装到我的实例上。现在我想将我所有的 PostgreSQL 数据移动到不同的驱动器。我仍处于开发模式,因此如果此时可以更轻松地传输旧数据,我可以删除旧数据。做这个的最好方式是什么?
PostgreSQL 表空间是我应该看的东西吗?
早些时候我创建了一个用户:
SQL>create user suhail identified by password
SQL>User created.
SQL>Grant create session,create table to suhail;
SQL>Grant Succeeded.
Run Code Online (Sandbox Code Playgroud)
但是当我以身份登录suhail并尝试创建一个时,table我收到一条错误消息ORA-01950: no privileges on tablespace 'SYSTEM'。这是什么错误?为什么会发生?
SQL> connect suhail
Enter password:
Connected.
SQL> create table suhail_table(name char(10));
create table suhail_table(name char(10))
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'SYSTEM'
Run Code Online (Sandbox Code Playgroud)
我使用的是 Oracle 数据库 11g 快捷版 11.2.0.2.0 版
当我在 PostgreSQL 中创建一个数据库而没有明确指定默认表空间时,该数据库的创建没有问题(我以pgsys用户身份登录):
postgres=> 创建数据库rich1;
创建数据库
postgres=> \l+
数据库列表
姓名 | 业主 | 编码 | 整理 | 类型 | 访问权限 | 尺寸 | 表空间 | 描述
-----------+----------+----------+-------------+-- -----------+------------------------------------------------+ -----------+------------+------------------------ -------------------
postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7455 KB | pg_default | 默认管理连接数据库
管理员 | 管理员 | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin=CTc/rdsadmin | 无访问权限 | pg_default |
富豪1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7233 KB | pg_default … 我有一个名为 DATA 的表空间,它设置为自动扩展为 false。这个表空间有两个数据文件,并且设置为占用 350 GB 的物理空间。
一周前,我查询了 user_tablespaces 和 dba_data_files,发现它有 20% 的可用逻辑空间。然后我继续清理并从该表空间的表中删除了许多记录。我们期望看到可用空间的大幅增加。不幸的是,当我查询视图时,我注意到可用空间现在是 20.5%。
这可能是由于数据碎片造成的吗?我们可以以某种方式对表空间进行“碎片整理”并恢复丢失的空间吗?还是我们需要从头开始重新创建表空间?
我有一个大小为 90GB 的 Oracle 12c 表空间。几乎 40GB 是免费的。
TB1 54 % 90880 41383 49497 46 98304 50 % ONLINE PERMANENT
Run Code Online (Sandbox Code Playgroud)
表空间有 3 个数据文件。
E:\ORACLE\ORADATA\xx\TB1.DBF 33554416 True 100
F:\ORACLE\ORADATA\xx\TB1_2.DBF 33554416 True 100
G:\ORACLE\ORADATA\xx\TB1_3.DBF 25344000 True 100
Run Code Online (Sandbox Code Playgroud)
如何缩小表空间以回收可用的 40GB(磁盘上的数据文件)?我不能有停机时间。
我对 PostgreSQL 中的表空间感到困惑。是不是类似于 LVM?我的意思是当磁盘已满时,我们可以添加另一个磁盘,然后格式化CREATE TABLESPACE tblspace LOCATION /media/disk2/data吗?够了吗?或者我们应该手动使用ALTER数据库、表或索引来利用它?
Oracle静态数据字典视图中描述的使用量指标(USED_SPACE和TABLESPACE_SIZE列)中使用了哪些单位DBA_TABLESPACE_USAGE_METRICS?
在Oracle数据库参考只告诉他们是“由表所消耗的总空间”和“表空间的总大小”,就不能不提单位。它们以字节为单位吗?兆字节?块?
我在 Oracle 数据库上继承了类似 DBA 的基本职责,但在尝试运行包含大量联接和分组的查询时遇到了 ORA-01652 错误。这是我得到的错误:
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
01652. 00000 - "unable to extend temp segment by %s in tablespace %s"
*Cause: Failed to allocate an extent of the required number of blocks for
a temporary segment in the tablespace indicated.
*Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more
files to the tablespace indicated.
Run Code Online (Sandbox Code Playgroud)
我已经接受了错误消息的建议(或至少尝试过)并创建了一个新的数据文件。这是我用于此的命令:
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/ABCDEFG/temp02.dbf'
SIZE 1024M REUSE AUTOEXTEND ON …Run Code Online (Sandbox Code Playgroud) 我收到一个错误:
ORA-01691: unable to extend lob segment ABC.SYS_LOB0000167347C00131$$ by 1024 in tablespace XYZ
Run Code Online (Sandbox Code Playgroud)
但这对我来说很奇怪,因为表空间打开了 AUTOEXTEND。发生这种情况的可能原因是什么,我该如何克服?
谢谢。
我们已经记不清我们是如何准确到达这里的了,但是我们在 MySQL 启动时收到以下错误(尽管它仍然使用 InnoDB 启动服务):
[ERROR] InnoDB: Cannot open datafile for read-only: './oldschema/tablename.ibd' OS Error: 71
Run Code Online (Sandbox Code Playgroud)
它所引用的表曾经存在于那里,但被重命名为不同的模式,然后被删除,或者可能只是被删除(模糊内存),以便让对它的所有引用都跟随到其他模式中。最终,该表被替换为通过复制有意建立为副本的表。
它不会出现在信息模式中,不会出现在 SHOW TABLES 列表中,无法使用 SELECT 语句进行查询,并且无法在该模式中对该名称进行 DROP/ALTER TABLE(在获取视图后)让我们:
mysql> drop table oldschema.tablename;
ERROR 1051 (42S02): Unknown table 'oldschema.tablename'
mysql> ALTER TABLE oldschema.tablename DISCARD TABLESPACE;
ERROR 1146 (42S02): Table 'oldschema.tablename' doesn't exist
Run Code Online (Sandbox Code Playgroud)
...正如我们所期望的那样。然而,现在在它的位置有一个同名的视图(它引用另一个模式中的新表),并且它有一个相应的 .frm 文件,当然,没有 .ibd 文件,正如我们所期望的那样。
此外,新模式中的表正如预期一样工作,旧模式中为其别名的视图也是如此。事实上,据我们所知,这不会造成任何问题……我们只是不想再担心看到日志的人。我们甚至可以在其位置创建并删除一个表(在移动视图之后并将其放回之前),但仍然会出现该错误。
那么为什么 MySQL 需要在旧模式中使用该名称的 ibd 文件呢?
我们如何说服它忘记?
tablespaces ×10
oracle ×6
postgresql ×3
permissions ×2
amazon-rds ×1
aurora ×1
innodb ×1
mysql ×1
oracle-12c ×1
shrink ×1