Oracle 中关于database的read only状态和read write状态下普通用户对数据的操作

6 篇文章 0 订阅

当为了防止用户进程修改数据库中的数据时,可以将数据库的状态置为只读,sql语句如下:

startup mount
alter database open read only;
【注意:alter database *** 命令需要在database为mount状态下才行,如果数据库已启动,先要shutdown】

之后执行如下操作登入scott / tiger 用户

sqlplus /nolog     --cmd下执行
conn scott/tiger; --连接scott账户

执行delete操作时会出现如下效果 【这里以dept表为例,与执行下面的emp表作用是一样的,给自己说明一下】



而当修改database状态为 read write时


再次执行上述delete操作,结果如下


【PS: 由于重启了数据库实例,所以之前的会话结束,需要disconnect之后重新登入scott账户。。

当我delete数据完成之后,不加commit操作应该不会写入数据库的,但是数据缓冲区的数据已经被delete掉,这就是脏数据】

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要用Java读取Kafka数据并将其写入Oracle数据库,需要以下步骤: 1. 配置Kafka和Oracle JDBC驱动程序:在Java项目,需要添加Kafka和Oracle JDBC驱动程序的依赖项,以便能够连接到Kafka和Oracle数据库。 2. 创建Kafka消费者:使用Kafka的Java API创建一个消费者,可以使用KafkaConsumer类来实现。 3. 读取Kafka消息:使用消费者的poll()方法从Kafka主题读取消息,然后处理消息。 4. 连接到Oracle数据库:使用JDBC连接到Oracle数据库。 5. 创建数据库表:在Oracle数据创建一个表,用来存储从Kafka读取的数据。 6. 将数据写入Oracle数据库:将读取的Kafka数据插入到Oracle,可以使用JDBC的PreparedStatement类来执行插入操作。 下面是一个简单的Java代码示例,演示如何读取Kafka数据并将其写入Oracle数据: ``` import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Arrays; import java.util.Properties; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.consumer.KafkaConsumer; public class KafkaToOracle { private static final String TOPIC = "my_topic"; private static final String ORACLE_URL = "jdbc:oracle:thin:@localhost:1521:xe"; private static final String ORACLE_USER = "my_user"; private static final String ORACLE_PASSWORD = "my_password"; public static void main(String[] args) throws SQLException { // Kafka consumer configuration Properties props = new Properties(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); props.put(ConsumerConfig.GROUP_ID_CONFIG, "my_group"); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer"); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer"); // Create a Kafka consumer Consumer<String, String> consumer = new KafkaConsumer<>(props); // Subscribe to the Kafka topic consumer.subscribe(Arrays.asList(TOPIC)); // Connect to Oracle database Connection conn = DriverManager.getConnection(ORACLE_URL, ORACLE_USER, ORACLE_PASSWORD); // Create a prepared statement for inserting data into Oracle table PreparedStatement stmt = conn.prepareStatement("INSERT INTO my_table (id, data) VALUES (?, ?)"); // Read Kafka messages and write to Oracle database while (true) { ConsumerRecords<String, String> records = consumer.poll(100); for (ConsumerRecord<String, String> record : records) { // Get the message key and value String key = record.key(); String value = record.value(); // Bind values to the prepared statement stmt.setString(1, key); stmt.setString(2, value); // Execute the insert statement stmt.executeUpdate(); } } } } ``` 这是一个基本的示例,可以根据自己的需求进行修改和扩展。注意,这个示例只是演示如何将Kafka数据写入Oracle数据,实际生产环境可能需要更多的错误处理和数据验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值