1:切换数据库的临时表空间为temp1/ 切换数据库的undo表空间为 undotbs01

1:切换数据库的临时表空间为temp1/ 切换数据库的undo表空间为 undotbs01

要在Oracle中切换数据库的临时表空间为"temp1",可以按照以下步骤进行操作:

  1. 首先,登录到目标数据库实例,可以使用SQL*Plus或任何其他管理工具。

  2. 确保你有管理员或具有适当权限的用户。

  3. 先创建临时表空间:

    CREATE TEMPORARY TABLESPACE temp1 TEMPFILE '/u01/app/oracle/oradata/orcl/temp1_01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 2000M;

  4. 运行以下SQL语句以更改临时表空间:

    ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp1;
    

    这将将默认临时表空间更改为"temp1"。

  5. 查看是否修改成功

    
    SELECT PROPERTY_NAME, PROPERTY_VALUE
    FROM DATABASE_PROPERTIES
    WHERE PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';

    缩短长度便于查看
    col PROPERTY_VALUE format a20

 

如果要切换数据库的UNDO表空间为"undotbs01",可以按照以下步骤进行操作:

  1. 登录到目标数据库实例。

  2. 确保你有管理员或具有适当权限的用户。

  3. 创建undotbs01表

    CREATE UNDO TABLESPACE undotbs01
    DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01_1.dbf' SIZE 100M REUSE
    AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

  4. 运行以下SQL语句以更改UNDO表空间:

    ALTER SYSTEM SET undo_tablespace = undotbs01;
    

    这将将UNDO表空间更改为"undotbs01"。

  5. 查看是否创建成功

SELECT TABLESPACE_NAME, STATUS
FROM DBA_TABLESPACES
WHERE TABLESPACE_NAME = 'UNDOTBS01';

 

完成 

2:创建两个简单表A,B。AB表有相关联的列并在关联列上创建索引。

首先,我们来创建表 A:

CREATE TABLE A (
  id NUMBER,
  name VARCHAR2(50),
  CONSTRAINT pk_a PRIMARY KEY (id)
);

以上语句创建了一个名为 A 的表,包含了一个 id 列和一个 name 列。id 列被定义为主键,使用主键约束 “pk_a”。

接下来,让我们创建表 B,并添加一个与表 A 相关联的外键列:

CREATE TABLE B (
  id NUMBER,
  a_id NUMBER,
  data VARCHAR2(100),
  CONSTRAINT fk_b_a FOREIGN KEY (a_id) REFERENCES A(id)
);

 

以上语句创建了一个名为 B 的表,包含了一个 id 列、一个 a_id 列和一个 data 列。a_id 列被定义为外键,并引用了表 A 中的 id 列。


-- 向表 A 插入数据
INSERT INTO A (id, name) VALUES (1, '张三');
INSERT INTO A (id, name) VALUES (2, '李四');
INSERT INTO A (id, name) VALUES (3, '王五');

-- 向表 B 插入数据,引用表 A 中的数据
INSERT INTO B (id, a_id, data) VALUES (1, 1, 'hsl');
INSERT INTO B (id, a_id, data) VALUES (2, 2, 'zgc');
INSERT INTO B (id, a_id, data) VALUES (3, 3, 'zhf');

现在,我们来在关联列 a_id 上为表 B 创建索引:

CREATE INDEX idx_b_a_id ON B(a_id);

以上语句创建了一个名为 idx_b_a_id 的索引,它是在表 B 的 a_id 列上建立的。

索引的使用:

  1. 使用索引进行简单查询:
SELECT * FROM B WHERE a_id = 1;

这个查询语句将使用索引idx_a_id来查找所有a_id等于1的行,从而提高查询速度。

  1. 使用索引进行连接查询:
SELECT B.data, A.name FROM B
JOIN A ON B.a_id = A.id;

这个查询语句将使用索引idx_a_id来加速表B和表A之间的连接操作,提高查询性能。

  1. 使用索引进行排序:
SELECT * FROM B ORDER BY a_id;

这个查询语句将使用索引idx_a_id来帮助排序结果,提高排序操作的效率。

3:创建一个事务级临时表或者会话级临时表并测试在什么情况下临时表里的数据会消失

  1. 创建会话级临时表
    create global temporary table GG( id int, name char(20));
  2. 插入数据
    
    insert into GG values(1,'hsl');
    insert into GG values(2,'zgc');
    insert into GG values(3,'hjl');
  3. 查看数据
  • ​​​​​​​​​​​​​​

查看t表的结构

select object_name,object_type from user_objects;

 事务提交之后就消失啦

 

查看t表的数据

select * from t;

不提交直接退出,再查看是不是会消失

 

无数据

总结

  • 会话结束:对于会话级临时表,在会话结束后,表中的数据会自动删除。
  • 事务提交:对于全局临时表(模拟事务级临时表),在每个事务提交之后,表中的数据会自动删除。如果您在会话中执行多个事务,并在每个事务中插入数据到临时表中,当每个事务提交时,临时表中的数据都会消失。

4:创建一个小表表空间A。一个大表表空间B并创建一个用户B1默认表空间为B

-- 创建小表表空间 A
CREATE TABLESPACE A
  DATAFILE '/u01/app/oracle/oradata/orcl/datafile_A.dbf'
  SIZE 10M;

-- 创建大表表空间 B
CREATE TABLESPACE B
  DATAFILE '/u01/app/oracle/oradata/orcl/datafile_B.dbf'
  SIZE 1G;

-- 创建用户 B1 并将其默认表空间设置为 B
CREATE USER B1 IDENTIFIED BY password
  DEFAULT TABLESPACE B
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON B;

-- 授权给用户 B1 的权限
GRANT CONNECT, RESOURCE TO B1;

中,/u01/app/oracle/oradata/orcl/datafile_A.dbf 和 /u01/app/oracle/oradata/orcl/datafile_B.dbf 是数据文件所在的路径,需要根据实际情况进行修改。password 是用户 B1 的密码。QUOTA UNLIMITED ON B 则表示用户 B1 在表空间 B 中的可用空间是无限的。

执行以上 SQL 语句后,将创建一个名为 A 的小表表空间,一个名为 B 的大表表空间,并创建一个名为 B1 的用户,其默认表空间为 B。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值